<?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>238535</bug_id>
          
          <creation_ts>2022-03-29 20:12:43 -0700</creation_ts>
          <short_desc>[JSC] Store CodeBlock in caller side</short_desc>
          <delta_ts>2022-04-07 13:20:18 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238956</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</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>1856279</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-29 20:12:43 -0700</bug_when>
    <thetext>Let&apos;s not store it in the callee side since the caller typically already knows well about it.
It makes unlinked code simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856280</commentid>
    <comment_count>1</comment_count>
      <attachid>456088</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-29 20:21:36 -0700</bug_when>
    <thetext>Created attachment 456088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856334</commentid>
    <comment_count>2</comment_count>
      <attachid>456103</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 02:14:29 -0700</bug_when>
    <thetext>Created attachment 456103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856349</commentid>
    <comment_count>3</comment_count>
      <attachid>456110</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 03:47:21 -0700</bug_when>
    <thetext>Created attachment 456110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856494</commentid>
    <comment_count>4</comment_count>
      <attachid>456157</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 11:29:01 -0700</bug_when>
    <thetext>Created attachment 456157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856575</commentid>
    <comment_count>5</comment_count>
      <attachid>456176</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 14:44:48 -0700</bug_when>
    <thetext>Created attachment 456176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856638</commentid>
    <comment_count>6</comment_count>
      <attachid>456193</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 19:03:52 -0700</bug_when>
    <thetext>Created attachment 456193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856674</commentid>
    <comment_count>7</comment_count>
      <attachid>456199</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-30 21:14:26 -0700</bug_when>
    <thetext>Created attachment 456199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857088</commentid>
    <comment_count>8</comment_count>
      <attachid>456303</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 18:29:43 -0700</bug_when>
    <thetext>Created attachment 456303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857098</commentid>
    <comment_count>9</comment_count>
      <attachid>456307</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 19:02:13 -0700</bug_when>
    <thetext>Created attachment 456307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857131</commentid>
    <comment_count>10</comment_count>
      <attachid>456317</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 20:39:23 -0700</bug_when>
    <thetext>Created attachment 456317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857167</commentid>
    <comment_count>11</comment_count>
      <attachid>456325</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-31 23:27:24 -0700</bug_when>
    <thetext>Created attachment 456325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857381</commentid>
    <comment_count>12</comment_count>
      <attachid>456395</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-01 13:24:14 -0700</bug_when>
    <thetext>Created attachment 456395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857539</commentid>
    <comment_count>13</comment_count>
      <attachid>456447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-01 22:35:06 -0700</bug_when>
    <thetext>Created attachment 456447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858120</commentid>
    <comment_count>14</comment_count>
      <attachid>456642</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 15:37:02 -0700</bug_when>
    <thetext>Created attachment 456642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858179</commentid>
    <comment_count>15</comment_count>
      <attachid>456642</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-04-04 18:39:01 -0700</bug_when>
    <thetext>Comment on attachment 456642
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        This helps unlinked Baseline and DFG since we no longer need to load CodeBlock from callee via costly dependent loads: unlinked ones

and LLInt

&gt; Source/JavaScriptCore/jit/JIT.cpp:754
&gt; +#if ASSERT_ENABLED
&gt; +        probeDebug([=](Probe::Context&amp; ctx) {
&gt; +            CodeBlock* codeBlock = ctx.fp&lt;CallFrame*&gt;()-&gt;codeBlock();
&gt; +            if (codeBlock-&gt;jitType() != JITType::BaselineJIT) {
&gt; +                dataLogLn(&quot;FP &quot;, RawPointer(ctx.fp&lt;CallFrame*&gt;()));
&gt; +                RELEASE_ASSERT_NOT_REACHED();
&gt; +            }
&gt; +        });
&gt; +#endif

Why do we only do this release assert for function code? It should always be correct. Same for DFG/FTL

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.h:302
&gt; +        return 0;

can you RELEASE_ASSERT_NOT_REACHED here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858180</commentid>
    <comment_count>16</comment_count>
      <attachid>456642</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-04-04 18:39:56 -0700</bug_when>
    <thetext>Comment on attachment 456642
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/JIT.cpp:754
&gt;&gt; +#endif
&gt; 
&gt; Why do we only do this release assert for function code? It should always be correct. Same for DFG/FTL

My unlinked baseline patch might&apos;ve done things this way. But I think it&apos;s worth doing always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858200</commentid>
    <comment_count>17</comment_count>
      <attachid>456642</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 19:11:53 -0700</bug_when>
    <thetext>Comment on attachment 456642
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        This helps unlinked Baseline and DFG since we no longer need to load CodeBlock from callee via costly dependent loads: unlinked ones
&gt; 
&gt; and LLInt

Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/jit/JIT.cpp:754
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; Why do we only do this release assert for function code? It should always be correct. Same for DFG/FTL
&gt; 
&gt; My unlinked baseline patch might&apos;ve done things this way. But I think it&apos;s worth doing always.

Sounds good! Changed.

&gt;&gt; Source/JavaScriptCore/runtime/FunctionExecutable.h:302
&gt;&gt; +        return 0;
&gt; 
&gt; can you RELEASE_ASSERT_NOT_REACHED here?

Nice, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858201</commentid>
    <comment_count>18</comment_count>
      <attachid>456661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 19:14:14 -0700</bug_when>
    <thetext>Created attachment 456661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858213</commentid>
    <comment_count>19</comment_count>
      <attachid>456664</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 20:19:49 -0700</bug_when>
    <thetext>Created attachment 456664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858223</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 21:10:49 -0700</bug_when>
    <thetext>Committed r292372 (249237@trunk): &lt;https://commits.webkit.org/249237@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858224</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-04 21:11:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91276034&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859410</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-04-07 13:20:18 -0700</bug_when>
    <thetext>This broke s390x, see bug #238956</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456088</attachid>
            <date>2022-03-29 20:21:36 -0700</date>
            <delta_ts>2022-03-30 02:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220329202135.patch</filename>
            <type>text/plain</type>
            <size>44763</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MjY0MzAzNWQ0NDk4ZDAyMWFlNjc0OTJhMGZmOWYzZTRiYTE1ZjgyLi5hMWM0NzE0NGE0NTBhNGE2
YzYyYzllNDk4NmI5OWFmYzRkZDkxNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldE1vbm9tb3JwaGlj
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhckNhbGxlZSk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1Yik6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6c2V0U3R1Yik6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmVt
aXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86
OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpvZmZzZXRPZkNv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OmxpbmtNb25vbW9ycGhpY0NhbGwpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jl
cGF0Y2hJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJs
b2NrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91
dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1l
SW5Qcm9sb2d1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAg
ICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVt
b3RlRnVuY3Rpb24pOgorCiAyMDIyLTAzLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIHNwb29sZXJzIGluIEZUTCBPU1IgZXhpdCB0aHVu
awpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApp
bmRleCAzNzE2ZjJhZjg1OWVkYTQxMWM4NTE0MTk2ZmRjZmM4ZmFjMTRlYWM3Li5lODI0ZGNiMmI3
NTAxNGIyNTExYWRkOWU1ZTY3NWJlMmY0NjliNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMTA4LDE3ICsxMDgsMTkgQEAgQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gQ2FsbExpbmtJbmZvOjpkb25lTG9jYXRp
b24oKQogICAgIHJldHVybiBtX2RvbmVMb2NhdGlvbjsKIH0KIAotdm9pZCBDYWxsTGlua0luZm86
OnNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNh
bGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCit2b2lk
IENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlz
RGlyZWN0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
Y2FsbGVlKSAmIHBvbHltb3JwaGljQ2FsbGVlTWFzaykpOwogICAgIG1fY2FsbGVlT3JDb2RlQmxv
Y2suc2V0KHZtLCBvd25lciwgY2FsbGVlKTsKIAotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlm
IChpc0RhdGFJQygpKSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gY29kZUJsb2Nr
OwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gY29kZVB0
cjsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoc3RhdGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxM
aW5rSW5mbyo+KHRoaXMpLT5tX2NhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRy
eVB0clRhZz4oY29kZVB0cikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50
ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24sIGNh
bGxlZSk7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTMwLDEwICsxMzIsMTIgQEAgdm9pZCBDYWxsTGlua0luZm86OmNsZWFyQ2FsbGVlKCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgbV9jYWxsZWVPckNvZGVCbG9jay5j
bGVhcigpOwotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlmIChpc0RhdGFJQygpKSB7CisgICAg
ICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5kYXRhSUMubV9t
b25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7Ci0gICAgZWxzZSBpZiAoIWNsZWFy
ZWRCeUpldHRpc29uKCkpIHsKKyAgICB9IGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7
CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVy
KHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiwgbnVsbHB0
cik7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk4
LDkgKzMwMiwxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1YigpCiAKICAg
ICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7
CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5kYXRh
SUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsK
ICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIo
dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUu
Y29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLCBjYWxsZWVHUFIoKSwgbnVsbHB0cik7CiAjZWxzZQpA
QCAtMzYzLDkgKzM2OSwxOCBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZv
OjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogCiAgICAgICAgIGlm
IChpc1RhaWxDYWxsKSB7CiAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKKworICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hH
UFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZDb2RlQmxvY2so
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworCiAgICAg
ICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7IC8vIFBvbHltb3JwaGljIHN0dWIgaGFu
ZGxlcyB0YWlsIGNhbGwgc3RhY2sgcHJlcC4KICAgICAgICAgICAgIGppdC5mYXJKdW1wKENDYWxs
SGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mTW9ub21vcnBoaWNDYWxs
RGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
Y2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZDb2RlQmxvY2soKSks
IHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworCiAgICAgICAg
ICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7CiAgICAgICAgICAgICBqaXQuY2FsbChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZk1vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAgfQpAQCAtMzc0LDE1ICsz
ODksMjAgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQ
YXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KICAgICAgICAgc2xvd1BhdGguYXBwZW5k
KGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2FsbGVlR1BS
LCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpKSk7CiAK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgICAgIENDYWxsSGVscGVyczo6
RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOwogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewog
ICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBjb2RlQmxvY2tT
dG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOwogICAgICAgICAgICAgY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgfSBl
bHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb2RlQmxvY2tTdG9yZSA9IGppdC5z
dG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgICAg
ICAgICAgY2FsbCA9IGppdC5uZWFyQ2FsbCgpOworICAgICAgICB9CiAKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbyo+KGNhbGxMaW5rSW5mbyktPm1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwogICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGxlZUNoZWNrKTsKICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtNDExLDggKzQzMSwxMCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6c2V0U3R1YihSZWY8
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+JiYgbmV3U3R1YikKIAogICAgIGlmIChpc0RhdGFJ
QygpKSB7CiAgICAgICAgICpiaXR3aXNlX2Nhc3Q8dWludHB0cl90Kj4obV9jYWxsZWVPckNvZGVC
bG9jay5zbG90KCkpID0gcG9seW1vcnBoaWNDYWxsZWVNYXNrOworICAgICAgICB1LmRhdGFJQy5t
X2NvZGVCbG9jayA9IG51bGxwdHI7IC8vIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIHdpbGwg
c2V0IENvZGVCbG9jayBpbnNpZGUgaXQuCiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWND
YWxsRGVzdGluYXRpb24gPSBtX3N0dWItPmNvZGUoKS5jb2RlKCkucmV0YWdnZWQ8SlNFbnRyeVB0
clRhZz4oKTsKICAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBv
aW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxsZWVM
b2NhdGlvbiksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdHViLT5jb2RlKCkuY29kZSgpKSk7CkBAIC00NzYsOSArNDk4LDExIEBAIHZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0KQogCiAgICAgQVNTRVJUKFVzZURhdGFJQzo6Tm8gPT0gdGhpcy0+dXNlRGF0YUlDKCkpOwog
CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyQ2FsbCgp
OwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2Fs
bDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgdS5jb2RlSUMubV9jb2RlQmxvY2tM
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxv
Y2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtC
dWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CkBAIC01MDEsOSArNTI1
LDExIEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlCiAgICAgaml0LmVtaXROb3BzKENDYWxsSGVs
cGVyczo6cGF0Y2hhYmxlSnVtcFNpemUoKSk7CiAKICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsK
KyAgICBhdXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2Fs
bCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgdS5jb2RlSUMubV9jb2RlQmxv
Y2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2Rl
QmxvY2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExp
bmtCdWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CkBAIC01MTQsNiAr
NTQwLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2Fs
bCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEaXJlY3QoKSk7CiAgICAgQVNTRVJUKG1fY2Fs
bExvY2F0aW9uKTsKKyAgICBBU1NFUlQodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbik7CiAg
ICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChmYXN0UGF0aFN0
YXJ0KCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0
YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKQEAgLTUyNiw3ICs1NTMsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86
OmluaXRpYWxpemVEaXJlY3RDYWxsKCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hO
ZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgc2xvd1BhdGhTdGFydCgpKTsKIH0KIAotdm9pZCBPcHRp
bWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVs
PEpTRW50cnlQdHJUYWc+IHRhcmdldCkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0
RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uTGFiZWw8
SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkp
OwogCkBAIC01NDAsNiArNTY3LDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXRE
aXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWcKICAgICB9CiAK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCB0YXJn
ZXQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVC
bG9ja0xvY2F0aW9uLCBjb2RlQmxvY2spOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCBmYjIwZTQ3ODE0NzkzNTIxNzUw
NDM0NDViMjk3NzMxYjk3MTI5ODY3Li4zOTIwODZhMDhkMWI3YTZlMjY3MWZjNTIyYTNmOWNlZmZk
MTY1MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbigpOwogCi0gICAgdm9pZCBzZXRNb25vbW9y
cGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShW
TSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBzZXRTbG93UGF0aENhbGxEZXN0aW5h
dGlvbihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgY2xl
YXJDYWxsZWUoKTsKICAgICBKU09iamVjdCogY2FsbGVlKCk7CkBAIC0zMTcsNiArMzE3LDExIEBA
IGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExp
bmtJbmZvPiB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCBt
X2NhbGxlZU9yQ29kZUJsb2NrKTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQ29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2Fs
bExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRPRihVbmlvblR5cGUsIGRhdGFJQy5tX2NvZGVC
bG9jayk7CisgICAgfQorCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
Q2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRPRihVbmlvblR5cGUsIGRhdGFJQy5tX21v
bm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKTsKQEAgLTQwMSwxNCArNDA2LDE2IEBAIGNsYXNzIENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fc2xvd1BhdGhDYWxs
RGVzdGluYXRpb247CiAgICAgdW5pb24gVW5pb25UeXBlIHsKICAgICAgICAgVW5pb25UeXBlKCkK
LSAgICAgICAgICAgIDogZGF0YUlDIHsgbnVsbHB0ciB9CisgICAgICAgICAgICA6IGRhdGFJQyB7
IG51bGxwdHIsIG51bGxwdHIgfQogICAgICAgICB7IH0KIAogICAgICAgICBzdHJ1Y3QgRGF0YUlD
IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7IC8vIFRoaXMgaXMgd2Vla2x5
IGhlbGQuIEFuZCBjbGVhcmVkIHdoZW5ldmVyIG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24g
aXMgY2hhbmdlZC4KICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uOwogICAgICAgICB9IGRhdGFJQzsKIAog
ICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpT
SW50ZXJuYWxQdHJUYWc+IG1fY29kZUJsb2NrTG9jYXRpb247CiAgICAgICAgICAgICBDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jYWxsZWVMb2NhdGlvbjsKICAg
ICAgICAgfSBjb2RlSUM7CiAgICAgfSB1OwpAQCAtNTAzLDcgKzUxMCw3IEBAIGNsYXNzIE9wdGlt
aXppbmdDYWxsTGlua0luZm8gZmluYWwgOiBwdWJsaWMgQ2FsbExpbmtJbmZvIHsKICAgICB2b2lk
IGVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmKTsKICAgICB2b2lkIGVtaXREaXJlY3RU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJl
cGFyZUZvclRhaWxDYWxsKTsKICAgICB2b2lkIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7Ci0gICAg
dm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
KTsKKyAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9u
TGFiZWw8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgZW1pdFNsb3dQYXRoKFZNJiwgQ0NhbGxI
ZWxwZXJzJik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1pdEZhc3RQYXRoKEND
YWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIFdB
Uk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNo
LmNwcAppbmRleCBlOTc2MGNjYzhlZTQwNTI2NmNmZjRhMGEzMDRkMjlhMTU4YWM4NDE2Li5iYzBl
YmM2YzI1YWU3ZDJlYzMwYjc1MDRiZDFjNjQwMjNmMjY2YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBsaW5r
TW9ub21vcnBoaWNDYWxsKAogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxM
aW5rSW5mby5pc0xpbmtlZCgpKTsKLSAgICBjYWxsTGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxs
ZWUodm0sIG93bmVyLCBjYWxsZWUsIGNvZGVQdHIpOworICAgIGNhbGxMaW5rSW5mby5zZXRNb25v
bW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY2FsbGVlQ29kZUJsb2NrLCBjb2RlUHRy
KTsKICAgICBjYWxsTGlua0luZm8uc2V0TGFzdFNlZW5DYWxsZWUodm0sIG93bmVyLCBjYWxsZWUp
OwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQpA
QCAtMTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBsaW5rRGlyZWN0Q2FsbCgKICAgICBpZiAoc2hvdWxk
RHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxp
bmtpbmcgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5r
SW5mby5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIHBvaW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayks
ICIsIGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwgIlxuIik7CiAKLSAgICBjYWxsTGlua0luZm8u
c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2Rl
UHRyKSk7CisgICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxUYXJnZXQoanNDYXN0PEZ1bmN0
aW9uQ29kZUJsb2NrKj4oY2FsbGVlQ29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRy
eVB0clRhZz4oY29kZVB0cikpOwogCiAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykKICAgICAgICAg
Y2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxGcmFtZSwgJmNhbGxMaW5rSW5m
byk7CkBAIC0xNzg3LDcgKzE3ODcsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgIHdo
aWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewogICAgICAgICBzaXplX3QgY2Fz
ZUluZGV4ID0gYmluYXJ5U3dpdGNoLmNhc2VJbmRleCgpOwogICAgICAgICAKLSAgICAgICAgQ2Fs
bFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAg
ICAgUG9seW1vcnBoaWNDYWxsQ2FzZSYgY2FsbENhc2UgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XTsK
KyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlLnZhcmlhbnQoKTsKICAgICAg
ICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRy
OwogICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsKQEAgLTE4MTAsMTEgKzE4MTEs
MTggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgYm9vbCBuZWVkc0RvbmVKdW1w
ID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZVNodWZmbGVyKSB7CiAgICAgICAgICAgICBDYWxs
RnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdCgpKS5wcmVwYXJl
Rm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAg
ICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0g
c3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8u
aXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNs
b3coKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2Fz
ZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5u
ZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHByb2JhYmx5IHdyb25nIGFzIGl0IGlzIHVzaW5nIG5lYXJDYWxsIC8gbmVhclRhaWxD
YWxsIGhlcmUuCisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAg
ICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2Fs
bENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKICAgICAgICAgICAgIGlmIChpc0RhdGFJQykKICAgICAgICAgICAgICAg
ICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAg
ICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVwYXRjaElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNo
SW5saW5lcy5oCmluZGV4IDUxNzFiYzEyNDAwNTJjM2NjY2Q2ZTZmYWY0NjgyNTMzN2VlM2U3ODku
LmQ4MzkzZThkMDhiYmNhNTRhYjNhZWY5MzcxMjFmNjE3ZGI2NzI1ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCkBAIC0xOTUsMjMgKzE5
NSwyNyBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAgICAgRGVmZXJUcmFwcyBkZWZlclRy
YXBzKHZtKTsgLy8gV2UgY2FuJ3QgamV0dGlzb24gaWYgd2UncmUgZ29pbmcgdG8gY2FsbCB0aGlz
IENvZGVCbG9jay4KIAotICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZv
cihraW5kKSkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLQotICAg
ICAgICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgpIHsKLSAgICAgICAgICAgIHZv
aWQqIHRocm93VGFyZ2V0ID0gdm0uZ2V0Q1RJVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRo
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KHRocm93VGFyZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
bikpOwotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVRocm93RXhjZXB0aW9uKCk7Ci0gICAgICAg
IH0KKyAgICBpZiAoZXhlY3V0YWJsZS0+aW5oZXJpdHM8RnVuY3Rpb25FeGVjdXRhYmxlPih2bSkp
IHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIGlmIChVTkxJS0VM
WSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkpIHsKKworICAgICAgICAgICAgYXV0
byBoYW5kbGVUaHJvd0V4Y2VwdGlvbiA9IFsmXSAoKSB7CisgICAgICAgICAgICAgICAgdm9pZCog
dGhyb3dUYXJnZXQgPSB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGgoKS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KHRocm93VGFyZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdCkgeworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbikpOworICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2Vw
dGlvbigpOworICAgICAgICAgICAgfQogCi0gICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Ns
b3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIGZ1bmN0aW9u
RXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBm
dW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpKTsKKyAgICAgICAg
ICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09mQ29k
ZUJsb2NrKCk7CisgICAgICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVj
dXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29k
ZUJsb2NrU2xvdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGhhbmRsZVRocm93RXhjZXB0aW9uKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNh
bGxlZUZyYW1lLT5zZXRDb2RlQmxvY2soZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Io
a2luZCkpOwogICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNDVmMzQzZjBkZDA1OTA3ZjA5
OTE3ZGIwM2ExZjQxNGRkNjgwMTRjYi4uY2RjOTA2ZjRmNGFlYTQ5MTg0YWJiYjYzOWQzMjg4YzRj
NTcxNjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJh
dG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEsMTQgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBl
bmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4K
ICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4
Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1fcGxhbi5jb2RlQmxvY2so
KS0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0o
UHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOworICAgICAg
ICB9KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVw
UmVnaXN0ZXJzRm9yRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcAppbmRleCAxMTMyY2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3Li40Yzhm
MmVlZGVmYWNiNTI1ZmMyOGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5IEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIDcp
IEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2RlIGJsb2NrLgotICAgIAor
CiAgICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrICsgMSkpID0gY29kZUJsb2NrOwogICAgIAogICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICIsIFJhd1Bv
aW50ZXIoc2NyYXRjaCkpOwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NSRW50cnkoVk0mIHZtLCBD
YWxsRgogCiAgICAgLy8gVGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hPU1JFbnRyeUJ1ZmZlciB3
aWxsIGJlIHplcm9lZCBieSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAgICAgZGZnQ29tbW9uLT5j
YXRjaE9TUkVudHJ5QnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUpICogaW5k
ZXgpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0dGVkIHRvIHRyaWdnZXJp
bmcgYW4gT1NSIGVudHJ5IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVybi4gSGVuY2UsIGl0IGlz
IHNhZmUgdG8gbW9kaWZ5IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1lLT5zZXRDb2RlQmxvY2so
b3B0aW1pemVkQ29kZUJsb2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVudHJ5cG9pbnQtPm1hY2hp
bmVDb2RlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2OTVkNTU2YzgxNTJkNzYu
LmU2ZTc0M2UxZWM1ZDdjOWY0MWY5MGU4OWJkMmEyOGE1MzMwNzkxODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMjE3LDcgKzIy
MTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICAg
ICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3JhcGgo
KS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7
CisgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBp
biBPU1IgZW50cnkuCiAgICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJs
ZUV2ZW50OjpyZXNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcApp
bmRleCA0NGE5YTFhOThmMjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFk
NzMzOTk4ZDliODA0NDVhMjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2lu
Y2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKQEAgLTE0OCw2ICsxNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5m
bzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBo
ZWFkZXIgZnJvbSBzY3JhdGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNv
IHJlcGxhY2VzCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsK
ICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86
OnJlZ1QxKTsKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7
CkBAIC0xNjAsNiArMTYyLDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNv
bihERkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5r
KCZqaXQpOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9i
ZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZw
PENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNl
bmRpZgorCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCBiMWUwMzY5MTQxMGI4MjdiMGMwZWQ0ZDBmZWMyN2Q4NzU1OWM1OTQ0
Li5jY2VkMjEzNjQ5ZTZkYTgzOWE3NDc4OGZiMWVhNGM2NmVhNjEwNGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xOTgsMTUgKzE5OCwx
NCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcHJv
Yy5zZXROdW1FbnRyeXBvaW50cyhtX2dyYXBoLm1fbnVtYmVyT2ZFbnRyeXBvaW50cyk7Ci0gICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgubV9jb2RlQmxvY2s7CiAKICAg
ICAgICAgICAgIFJlZjxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvcj4gY2F0Y2hQcm9sb2d1ZUdl
bmVyYXRvciA9IGNyZWF0ZVNoYXJlZFRhc2s8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3JGdW5j
dGlvbj4oCi0gICAgICAgICAgICAgICAgW2NvZGVCbG9ja10gKENDYWxsSGVscGVycyYgaml0LCBC
Mzo6QWlyOjpDb2RlJiBjb2RlKSB7CisgICAgICAgICAgICAgICAgW10oQ0NhbGxIZWxwZXJzJiBq
aXQsIEIzOjpBaXI6OkNvZGUmIGNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1jb2RlLmZyYW1lU2l6
ZSgpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0U2F2ZShjb2RlLmNh
bGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0
LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihjb2RlQmxvY2ssIFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29kZUJsb2Nr
IGluIHRoZSBzdGFjayBpcyBhbHJlYWR5IHJlcGxhY2VkIGluIEZUTDo6cHJlcGFyZU9TUkVudHJ5
LgogICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNhdGNo
RW50cnlwb2ludEluZGV4IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRJbmRleFRvQ2F0Y2hCeXRlY29k
ZUluZGV4LmtleXMoKSkgewpAQCAtMjcyLDkgKzI3MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV9udW1iZXJUYWctPmtleSgpKTsKICAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX25vdENlbGxNYXNrLT5rZXkoKSk7CiAgICAg
ICAgIAotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdl
YWsgcG9pbnRlciB0byBpdHNlbGYgYmVjYXVzZQotICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNl
IGl0IHRvIGFsd2F5cyBnZXQgY29sbGVjdGVkLgotICAgICAgICBtX291dC5zdG9yZVB0cihtX291
dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIGFkZHJl
c3NGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpKTsKKyAgICAg
ICAgLy8gV2hlbiBydW5uaW5nIEZUTCBjb2RlLCB3ZSBhbHJlYWR5IHN0b3JlIENvZGVCbG9jayB0
byBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2suCiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cg
Q2hlY2suCiAgICAgICAgIHVuc2lnbmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVk
UmVnaXN0ZXJDb3VudEZvckV4aXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggZTljMGVjYzMwZWFjYzY4YzU1OWY4YWM0NjNlMTA2MjIzMWRkZWI2
YS4uMWVhMWEzNWY0MWQ0YjllMjBhNmFlYThlY2ZmY2I0YzFjMGQ2ZThkZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtMjAyLDMwICsyMDIsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dD
YXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1
bmN0aQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29k
ZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FT
U0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0g
ICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBy
ZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxl
ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZyksIHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlm
IChtX3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QoKSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwg
cmVzdWx0KTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7
Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNv
ZGVCbG9jaygpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9z
ZSkKQEAgLTc1MiwxMCArNzI4LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZp
bmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4
KDApKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNp
emVNYXJrZXI7Ci0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVT
dGF0aXN0aWNzKCkpKSB7Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5l
X3Byb2xvZ3VlIik7Ci0gICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGlj
cy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25z
OjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9
IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9z
LCAqdGhpcyk7CiAKICAgICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fz
c2VtYmxlcikKQEAgLTc2Niw4ICs3NDAsMTkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3Ao
KTsKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxp
bmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNv
ZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5
cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQ
b2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
KCJMUiAiLCBSYXdQb2ludGVyKGN0eC5ncHI8dm9pZCo+KEFSTTY0UmVnaXN0ZXJzOjpscikpKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgIH0KIAogICAgIExhYmVsIGJlZ2luTGFiZWwo
dGhpcyk7CiAKQEAgLTgzMCw3ICs4MTUsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBtX2Fy
aXR5Q2hlY2sgPSBsYWJlbCgpOwogCiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0g
ICAgICAgIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZWdUMCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9i
ZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0
eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxv
Y2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1lKj4oKSkpOworICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbigiTFIgIiwgUmF3UG9pbnRlcihjdHguZ3ByPHZvaWQqPihB
Uk02NFJlZ2lzdGVyczo6bHIpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICAgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBy
ZWdUMCk7CiAgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZTaG91bGRBbHdheXNCZUlubGluZWQoKSkpOwogCiAgICAgICAgIGxv
YWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSwgcmVnVDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjhmZGE1ZDFiNDMxNWU5Zjdk
NzA0YzQ2YWFhNWE1YjFiYjAzNDRmYi4uMGQ1MTIyZmI0ZDNmMzljN2E5MGZmMmU1MWJlMzVhZmQ0
NDAzZDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yNjIsOCArMjYyLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbG9hZENvZGVCbG9ja0NvbnN0YW50VGFnKFZpcnR1
YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCk7CiAjZW5kaWYKIAotICAgICAgICB2b2lkIGVtaXRQdXRD
b2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0ID0gcmVnVDApOwotCiAgICAg
ICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1wVG9IYW5kbGVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoanVtcFRvSGFuZGxlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggM2M0YTNh
ZTNhOTg4Y2VlOTY1NjQ0M2ZjNzYxMDkwYWUwZWMzYzU2MS4uZWM0ZmEyZTBlNTIzZTdmYTYxNDdm
OWQyMDhmM2VkMzJmZGZmYWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcApAQCAtMjk1LDYgKzI5NSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2Rl
IG1vCiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNr
Rm9yKGtpbmQpKSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAgIHNsb3dDYXNlLmFwcGVu
ZChqaXQuanVtcCgpKTsgLy8gRklYTUUKICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRl
c3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOwogICAgIAogICAgIC8v
IE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRl
ZCB0byBtYWtpbmcgYSBmYXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYThlN2M3Mzk5ZDU4MWE1OTYwZDBhYTdhYTcy
NDMzNWRiMDM1NGM3NS4uOTU0NGY3YTU1OGVlZTg0M2VlNmM5MzFiZTM1NWY5Zjk0MjRmYzIxNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTUxMSw0NiArMTUxMSw2IEBAIG1hY3JvIGFzc2VydE5vdENvbnN0YW50KHNp
emUsIGluZGV4KQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0
YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5j
dGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFy
ZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
KVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxv
YWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpt
X2NvZGVCbG9ja1t0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8g
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAg
aWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3Rlcgot
ICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJn
ZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9y
UmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0
UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRh
YmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4
cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lz
dGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxv
YWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
cih0YXJnZXRSZWdpc3RlcikKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0
ZXIKLWVuZAotCi1tYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikK
LSAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCi1lbmQKLQotbWFjcm8g
bm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCi0gICAgIyBOb3RoaW5n
IHRvIGRvIQotZW5kCi0KIG1hY3JvIGNvbnZlcnRDYWxsZWVUb1ZNKGNhbGxlZSkKICAgICBidHBu
eiBjYWxsZWUsIChjb25zdGV4cHIgUHJlY2lzZUFsbG9jYXRpb246OmhhbGZBbGlnbm1lbnQpLCAu
cHJlY2lzZUFsbG9jYXRpb24KICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgY2FsbGVlCkBAIC0x
NTYzLDcgKzE1MjMsNyBAQCBlbmQKIAogIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRv
IGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCiAjIGlu
IHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KLW1hY3JvIHByb2xvZ3Vl
KGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93
UGF0aCkKK21hY3JvIHByb2xvZ3VlKG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICMg
U2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHBy
ZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogCkBAIC0xNTcyLDggKzE1MzIsNyBAQCBtYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNl
U2xvd1BhdGgpCiAgICAgICAgIGNhbGxTbG93UGF0aCh0cmFjZVNsb3dQYXRoKQogICAgICAgICBh
ZGRwIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLCBzcAogICAgIGVuZAotICAgIGNvZGVC
bG9ja0dldHRlcih0MSkKLSAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCiAgICAgaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQwCiAgICAgICAgIGJhZGRpcyA1
LCAoVW5saW5rZWRDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlciArIEJhc2VsaW5lRXhl
Y3V0aW9uQ291bnRlcjo6bV9jb3VudGVyKVt0MF0sIC5jb250aW51ZQpAQCAtMTYxMyw3ICsxNTcy
LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9z
clNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRy
VGFnCiAgICAgICAgIGVuZAogICAgIC5yZWNvdmVyOgotICAgICAgICBub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlcih0MSkKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgLmNv
bnRpbnVlOgogICAgIGVuZAogCkBAIC0xNjUyLDcgKzE2MTEsNyBAQCBtYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1Bh
dGgpCiAuc3RhY2tIZWlnaHRPS0dldENvZGVCbG9jazoKICAgICAjIFN0YWNrIGNoZWNrIHNsb3cg
cGF0aCByZXR1cm5lZCB0aGF0IHRoZSBzdGFjayB3YXMgb2suCiAgICAgIyBTaW5jZSB0aGV5IHdl
cmUgY2xvYmJlcmVkLCBuZWVkIHRvIGdldCBDb2RlQmxvY2sgYW5kIG5ldyBzcAotICAgIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQog
ICAgIGdldEZyYW1lUmVnaXN0ZXJTaXplRm9yQ29kZUJsb2NrKHQxLCB0MCkKICAgICBzdWJwIGNm
ciwgdDAsIHQwCiAKQEAgLTIwNTAsMzkgKzIwMDksMzkgQEAgbm9XaWRlKGxsaW50X29wX3dpZGUz
MikKIG5vV2lkZShsbGludF9vcF9lbnRlcikKIAogb3AobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwg
bWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9s
b2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
ciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90
cmFjZV9wcm9sb2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9ldmFsX3By
b2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3Jf
Y2FsbCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Jbml0
aWFsaXphdGlvbigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAgICAgCiAKIG9wKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9w
cm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQogICAgIGRp
c3BhdGNoKDApCiBlbmQpCiAgICAgCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dl
dHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisg
ICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
LCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKICAgICBmdW5jdGlvbkFyaXR5Q2hl
Y2sobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNhbGxC
ZWdpbiwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVnaW46
CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQpAQCAtMjA5MCw3ICsyMDQ5LDcgQEAgb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiBlbmQpCiAKIG9w
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9s
b2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywg
X2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkFyaXR5
Q2hlY2sobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9u
Rm9yQ29uc3RydWN0QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCmluZGV4IGFjZTg3MTE2NzJlNzAyMTZkMzlhNDhkZjE1ZmQ2NmQ2YjU3YzQx
MWUuLjlmYTgzYjU0MDY1MjcyMGI3MjEyNWI5MTI5ODIzZGI1NmI5OTQ0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCkBAIC0yMjYwLDYgKzIyNjAsOCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUs
IHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogLm5v
dFBvbHltb3JwaGljOgogICAgIGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cKICAgICBwcmVwYXJl
Q2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICBzdG9yZXAg
dDIsIENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0K
IAogLmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwg
dDUKQEAgLTIzMzksNiArMjM0MSw4IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwg
c2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAgICAgICAg
IC5ub3RQb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cK
ICAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2Nv
ZGVCbG9ja1t0NV0sIHQyCisgICAgICAgICAgICBzdG9yZXAgdDIsIENvZGVCbG9jayArIFBheWxv
YWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0KIAogICAgICAgICAuZ29Qb2x5bW9y
cGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IDVkZTdiY2M3ZmQwZDRmMDQwZjJkZjk0YmQ0NzM0NWQ4MzU4Njk0NDcuLjQ2
YTkzNTFhODg3MTJjNDc1Y2IzZDIxYjk4NTY3ZGJkMDIwNTM3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0y
NDg0LDYgKzI0ODQsOCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogLm5vdFBvbHltb3JwaGlj
OgogICAgIGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMs
IHQ0LCB0MSkKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICBzdG9yZXAgdDIsIENvZGVCbG9j
ayArIFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0KIAogLmdvUG9seW1v
cnBoaWM6CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKQEAgLTI1NjIs
NiArMjU2NCw4IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAgICAgICAgIC5ub3RQb2x5bW9y
cGhpYzoKICAgICAgICAgICAgIGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKICAgICAgICAgICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0s
IHQyCisgICAgICAgICAgICBzdG9yZXAgdDIsIENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBD
YWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0KIAogICAgICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5k
YXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA3MTM1ZjRmNmZjMjBjYjM5ZTg1
YmFiYzFkMWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIzZjhmNmI1ZjQ1NWJkMGE1YTc3YzU5MzJiZTlm
NjhlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
QEAgLTE0Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29k
ZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFn
CiAgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6Ci0gICAgICAgICAgICBub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKKyAgICAgICAgICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdpc3RlcgogICAgICAgICBlbmQpCiAgICAgZW5k
CiBlbmQKQEAgLTI4Myw3ICsyODMsNyBAQCBtYWNybyByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJD
YWxsKCkKICAgICBzdWJwIGNmciwgd3MxLCBzcAogZW5kCiAKLW1hY3JvIHdhc21Qcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKK21hY3Jv
IHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZy
YW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRD
RlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKQEAgLTI5Myw4ICsyOTMs
OSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIs
IGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fb3duZXJbd2Fz
bUluc3RhbmNlXSwgd3MwCiAgICAgc3RvcmVwIHdzMCwgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nmcl0K
IAotICAgIGNvZGVCbG9ja0dldHRlcih3czApCi0gICAgY29kZUJsb2NrU2V0dGVyKHdzMCkKKyAg
ICBsb2FkcCBDYWxsZWVbY2ZyXSwgd3MwCisgICAgYW5kcCB+Mywgd3MwCisgICAgc3RvcmVwIHdz
MCwgQ29kZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0IG5ldyBzcCBpbiB3czEgYW5kIGNoZWNrIHN0
YWNrIGhlaWdodC4KICAgICBsb2FkaSBXYXNtOjpMTEludENhbGxlZTo6bV9udW1DYWxsZWVMb2Nh
bHNbd3MwXSwgd3MxCkBAIC01MTQsNyArNTE1LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZSwgbWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3
YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0
YW5jZUZyb21UTFMpCisgICAgd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQog
ICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCkBAIC01MjMsNyArNTI0LDcgQEAgb3Ao
d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAg
ICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkKKyAgICB3YXNtUHJvbG9ndWUobWFjcm8gKCkg
ZW5kKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGE2OTkzMTU5MDk5Y2NjMWI3Mzk2YTk3YzU4ZmQ0ZWUz
MWE1YzE4MmUuLjhkYzJmMTc4MmUwYmNkNTQ3MjVlMjc3OWJiZmU2MGZlNzdjNjQ3NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC04OSw2ICs4OSw3IEBAIHN0cnVj
dCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0LCBKU1R5cGU6OlJlZ0V4cE9i
amVjdFR5cGUsIEpTVHlwZTo6UmVnRXhwT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTV2ViQXNz
ZW1ibHlNb2R1bGUsIEpTVHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlLCBKU1R5cGU6OldlYkFz
c2VtYmx5TW9kdWxlVHlwZSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50cywgSlNUeXBlOjpE
aXJlY3RBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUpIFwKKyAgICBt
YWNybyhGdW5jdGlvbkV4ZWN1dGFibGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwg
SlNUeXBlOjpGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1l
bnRzLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6U2NvcGVkQXJndW1lbnRz
VHlwZSkgXAogICAgIG1hY3JvKENsb25lZEFyZ3VtZW50cywgSlNUeXBlOjpDbG9uZWRBcmd1bWVu
dHNUeXBlLCBKU1R5cGU6OkNsb25lZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhKU0dsb2Jh
bE9iamVjdCwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBlLCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5
cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIy
M2JjZGEyNDcxYTAzZWU5MmNiNTIzMzM4MjM4Li5kNmMzYzNlZGJhYmM1N2I3OGNlZDI3MGIwNTEw
OGU1N2MwODYwN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02OTYs
NyArNjk2LDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEJvdW5kRnVuY3Rpb24oYm9vbCBp
c0pTRnVuY3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KQogICAgICAgICAgICAgcmV0dXJuIGNhY2hl
ZDsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAog
ICAgICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbCwKLSAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBCb3Vu
ZEZ1bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5z
aWMgOiBOb0ludHJpbnNpYywgLy8gRklYTUUKICAgICAgICAgICAgIGNhbkNvbnN0cnVjdCA/IChz
bG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgU3Ry
aW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxlPihyZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzIwLDcgKzcyMCw3IEBAIE5hdGl2ZUV4ZWN1dGFi
bGUqIFZNOjpnZXRSZW1vdGVGdW5jdGlvbihib29sIGlzSlNGdW5jdGlvbikKICAgICAgICAgICAg
IHJldHVybiBjYWNoZWQ7CiAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIHJlc3VsdCA9IGdldEhv
c3RGdW5jdGlvbigKICAgICAgICAgICAgIHNsb3dDYXNlID8gcmVtb3RlRnVuY3Rpb25DYWxsR2Vu
ZXJpYyA6IHJlbW90ZUZ1bmN0aW9uQ2FsbEZvckpTRnVuY3Rpb24sCi0gICAgICAgICAgICBzbG93
Q2FzZSA/IE5vSW50cmluc2ljIDogUmVtb3RlRnVuY3Rpb25DYWxsSW50cmluc2ljLAorICAgICAg
ICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IE5vSW50cmluc2ljLCAvLyBGSVhNRQogICAg
ICAgICAgICAgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsIFN0cmluZygp
KTsKICAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4ocmVzdWx0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456103</attachid>
            <date>2022-03-30 02:14:29 -0700</date>
            <delta_ts>2022-03-30 03:47:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220330021428.patch</filename>
            <type>text/plain</type>
            <size>48780</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjUxYmI4ZjIwOTM4NTBlZWRmMDE5YmY5NjAyZDk1MjIyMzRjMTVmLi5mODMxM2JmNDMwNzk4ZWY2
NDBhZWVmMTVmYjdlYTA3YTBjMGY4ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldE1vbm9tb3JwaGlj
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhckNhbGxlZSk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1Yik6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6c2V0U3R1Yik6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmVt
aXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86
OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpvZmZzZXRPZkNv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OmxpbmtNb25vbW9ycGhpY0NhbGwpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jl
cGF0Y2hJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJs
b2NrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91
dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1l
SW5Qcm9sb2d1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAg
ICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVt
b3RlRnVuY3Rpb24pOgorCiAyMDIyLTAzLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIGNvbnN0YW50cyBidWZmZXIgdG8gbG9hZCBKU0ds
b2JhbE9iamVjdCBpbiBCYXNlbGluZUpJVCB0aHVua3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFjODUx
NDE5NmZkY2ZjOGZhYzE0ZWFjNy4uMTE2MWRmMmQxYjg4ZmExMmIwYjM0OWYyYTQ5MzgzYzYwZDUx
NjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKQEAgLTEwOCwxNyArMTA4LDE5IEBAIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IENhbGxMaW5rSW5mbzo6ZG9uZUxvY2F0aW9uKCkKICAgICByZXR1cm4gbV9kb25lTG9j
YXRpb247CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBDYWxsTGlua0luZm86OnNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2Rl
UHRyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSkgJiBwb2x5bW9ycGhpY0NhbGxl
ZU1hc2spKTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLnNldCh2bSwgb3duZXIsIGNhbGxlZSk7
CiAKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1
LmRhdGFJQy5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgdS5kYXRhSUMubV9tb25v
bW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+bV9jYWxsTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9j
YXRpb24sIGNvZGVCbG9jayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRl
cih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMCwxMCArMTMyLDEyIEBAIHZvaWQgQ2Fs
bExpbmtJbmZvOjpjbGVhckNhbGxlZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0
KCkpOwogICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKLSAgICBpZiAoaXNEYXRhSUMo
KSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9
IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24g
PSBudWxscHRyOwotICAgIGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7CisgICAgfSBl
bHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0
aW9uLCBudWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUu
Y29kZUlDLm1fY2FsbGVlTG9jYXRpb24sIG51bGxwdHIpOwogI2Vsc2UKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OCw5ICszMDIsMTEgQEAgdm9pZCBDYWxsTGlu
a0luZm86OnJldmVydENhbGxUb1N0dWIoKQogCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsKICAgICAg
ICAgbV9jYWxsZWVPckNvZGVCbG9jay5jbGVhcigpOworICAgICAgICB1LmRhdGFJQy5tX2NvZGVC
bG9jayA9IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24gPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRp
b24sIG51bGxwdHIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OnJldmVydEp1bXBSZXBsYWNlbWVu
dFRvQnJhbmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFydE9m
QnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uKSwg
Y2FsbGVlR1BSKCksIG51bGxwdHIpOwogI2Vsc2UKQEAgLTM2Myw5ICszNjksMTggQEAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW4KIAogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICAg
ICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
TGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0
aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOyAvLyBQb2x5
bW9ycGhpYyBzdHViIGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHByZXAuCiAgICAgICAgICAgICBq
aXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
Zk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0NhbGxIZWxwZXJzOjpz
ZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNl
dE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihz
Y3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOwogICAgICAgICAg
ICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0
T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAg
IH0KQEAgLTM3NCwxNSArMzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlu
a0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luCiAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIGNhbGxlZUdQUiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihudWxscHRyKSkpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsOworICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tTdG9yZTsKICAgICAgICAgaWYg
KGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAg
ICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSkpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAgIH0g
ZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQu
c3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAg
ICAgICAgIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXpp
bmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAgICAgICAgIH0pOwog
ICAgIH0KQEAgLTQxMSw4ICs0MzEsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldFN0dWIoUmVm
PFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAKICAgICBpZiAoaXNEYXRh
SUMoKSkgewogICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1fY2FsbGVlT3JDb2Rl
QmxvY2suc2xvdCgpKSA9IHBvbHltb3JwaGljQ2FsbGVlTWFzazsKKyAgICAgICAgdS5kYXRhSUMu
bV9jb2RlQmxvY2sgPSBudWxscHRyOyAvLyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSB3aWxs
IHNldCBDb2RlQmxvY2sgaW5zaWRlIGl0LgogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uID0gbV9zdHViLT5jb2RlKCkuY29kZSgpLnJldGFnZ2VkPEpTRW50cnlQ
dHJUYWc+KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQ
b2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29kZUlDLm1fY2FsbGVl
TG9jYXRpb24pLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3R1Yi0+Y29kZSgpLmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5OCwxMSBAQCB2b2lk
IE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCkKIAogICAgIEFTU0VSVChVc2VEYXRhSUM6Ok5vID09IHRoaXMtPnVzZURhdGFJQygpKTsK
IAorICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwo
KTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2Nr
TG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJs
b2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5r
QnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTAxLDkgKzUy
NSwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZh
c3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9wcyhDQ2FsbEhl
bHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyVGFpbENh
bGwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVh
ckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJs
b2NrTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29k
ZUJsb2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChM
aW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTE0LDYg
KzU0MCw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENh
bGwoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogICAgIEFTU0VSVChtX2Nh
bGxMb2NhdGlvbik7CisgICAgQVNTRVJUKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24pOwog
ICAgIGlmIChpc1RhaWxDYWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhT
dGFydCgpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhT
dGFydCgpLCBzY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVy
cyYgaml0KSB7CkBAIC01MjYsNyArNTUzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZv
Ojppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
TmVhckNhbGwobV9jYWxsTG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CiAKLXZvaWQgT3B0
aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJl
bDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNl
dERpcmVjdENhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVs
PEpTRW50cnlQdHJUYWc+IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgp
KTsKIApAQCAtNTQwLDYgKzU2Nyw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0
RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnCiAgICAgfQog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgdGFy
Z2V0KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2Rl
QmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZmIyMGU0NzgxNDc5MzUyMTc1
MDQzNDQ1YjI5NzczMWI5NzEyOTg2Ny4uMzkyMDg2YTA4ZDFiN2E2ZTI2NzFmYzUyMmEzZjljZWZm
ZDE2NTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNr
ZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRpb24oKTsKIAotICAgIHZvaWQgc2V0TW9ub21v
cnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOworICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUo
Vk0mLCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxsRGVzdGlu
YXRpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGNs
ZWFyQ2FsbGVlKCk7CiAgICAgSlNPYmplY3QqIGNhbGxlZSgpOwpAQCAtMzE3LDYgKzMxNywxMSBA
QCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxM
aW5rSW5mbz4gewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywg
bV9jYWxsZWVPckNvZGVCbG9jayk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkNvZGVCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENh
bGxMaW5rSW5mbywgdSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9jb2Rl
QmxvY2spOworICAgIH0KKwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb25vbW9ycGhp
Y0NhbGxEZXN0aW5hdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KENhbGxMaW5rSW5mbywgdSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9t
b25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbik7CkBAIC00MDEsMTQgKzQwNiwxNiBAQCBjbGFzcyBD
YWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4g
ewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX3Nsb3dQYXRoQ2Fs
bERlc3RpbmF0aW9uOwogICAgIHVuaW9uIFVuaW9uVHlwZSB7CiAgICAgICAgIFVuaW9uVHlwZSgp
Ci0gICAgICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIgfQorICAgICAgICAgICAgOiBkYXRhSUMg
eyBudWxscHRyLCBudWxscHRyIH0KICAgICAgICAgeyB9CiAKICAgICAgICAgc3RydWN0IERhdGFJ
QyB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOyAvLyBUaGlzIGlzIHdlZWts
eSBoZWxkLiBBbmQgY2xlYXJlZCB3aGVuZXZlciBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9u
IGlzIGNoYW5nZWQuCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4gbV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbjsKICAgICAgICAgfSBkYXRhSUM7CiAK
ICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxK
U0ludGVybmFsUHRyVGFnPiBtX2NvZGVCbG9ja0xvY2F0aW9uOwogICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2FsbGVlTG9jYXRpb247CiAg
ICAgICAgIH0gY29kZUlDOwogICAgIH0gdTsKQEAgLTUwMyw3ICs1MTAsNyBAQCBjbGFzcyBPcHRp
bWl6aW5nQ2FsbExpbmtJbmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAgICAgdm9p
ZCBlbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJik7CiAgICAgdm9pZCBlbWl0RGlyZWN0
VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHBy
ZXBhcmVGb3JUYWlsQ2FsbCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwotICAg
IHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFn
Pik7CisgICAgdm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayosIENvZGVMb2NhdGlv
bkxhYmVsPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxs
SGVscGVycyYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBX
QVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRj
aC5jcHAKaW5kZXggZTk3NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5YTE1OGFjODQxNi4uOWM2
MzBhZDNiYmE1OTc1OTkwYmU4Y2QwYTM2MDI5Y2ZjZmU0MmVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgbGlu
a01vbm9tb3JwaGljQ2FsbCgKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxs
TGlua0luZm8uaXNMaW5rZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZvLnNldE1vbm9tb3JwaGljQ2Fs
bGVlKHZtLCBvd25lciwgY2FsbGVlLCBjb2RlUHRyKTsKKyAgICBjYWxsTGlua0luZm8uc2V0TW9u
b21vcnBoaWNDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUsIGNhbGxlZUNvZGVCbG9jaywgY29kZVB0
cik7CiAgICAgY2FsbExpbmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVl
KTsKIAogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkK
QEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgbGlua0RpcmVjdENhbGwoCiAgICAgaWYgKHNob3Vs
ZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRhTG9nKCJM
aW5raW5nIGNhbGwgaW4gIiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlu
a0luZm8uY29kZU9yaWdpbigpKSwgIiB0byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2sp
LCAiLCBlbnRyeXBvaW50IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogCi0gICAgY2FsbExpbmtJbmZv
LnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29k
ZVB0cikpOworICAgIGNhbGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KGpzQ2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KGNhbGxlZUNvZGVCbG9jayksIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50
cnlQdHJUYWc+KGNvZGVQdHIpKTsKIAogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCiAgICAgICAg
IGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsRnJhbWUsICZjYWxsTGlua0lu
Zm8pOwpAQCAtMTc4Nyw3ICsxNzg3LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICB3
aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAgICAgICAgc2l6ZV90IGNh
c2VJbmRleCA9IGJpbmFyeVN3aXRjaC5jYXNlSW5kZXgoKTsKICAgICAgICAgCi0gICAgICAgIENh
bGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CisgICAg
ICAgIFBvbHltb3JwaGljQ2FsbENhc2UmIGNhbGxDYXNlID0gY2FsbENhc2VzW2Nhc2VJbmRleF07
CisgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZS52YXJpYW50KCk7CiAgICAg
ICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0
cjsKICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CkBAIC0xODEwLDE0ICsxODEx
LDI2IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGJvb2wgbmVlZHNEb25lSnVt
cCA9IGZhbHNlOwogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewogICAgICAgICAgICAgQ2Fs
bEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFy
ZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsK
KyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhl
bHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRp
Y19jYXN0PGludDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxs
ID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0lu
Zm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2Fs
bFNsb3coKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAg
ICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxs
Q2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwog
ICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwo
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RhdGFJQykKKyAgICAgICAg
ICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7CisgICAgICAgICAgICBpZiAo
aXNEYXRhSUMpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisg
ICAgICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRl
bHRhKCkpKSk7CiAgICAgICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1Ykpp
dC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCBjYWxsaW5nIHlldC4gVGh1cywgc3RhY2tQb2ludGVy
UmVnaXN0ZXIgaXMgbm90IGluY2x1ZGluZyBQQyAmIGZyYW1lUG9pbnRlci4KKyAgICAgICAgICAg
ICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2Fs
bENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FsbHNb
Y2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIG5l
ZWRzRG9uZUp1bXAgPSB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAppbmRleCA1MTcxYmMxMjQwMDUyYzNjY2Nk
NmU2ZmFmNDY4MjUzMzdlZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcwNzE4YjM5NDgyYmIzMDVi
NzBmOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRj
aElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElu
bGluZXMuaApAQCAtMTk1LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5U
eXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAKICAg
ICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBqZXR0aXNvbiBpZiB3ZSdy
ZSBnb2luZyB0byBjYWxsIHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYgKFVOTElLRUxZKCFleGVj
dXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOworICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBhdXRvIGhhbmRsZVRo
cm93RXhjZXB0aW9uID0gWyZdICgpIHsKICAgICAgICAgICAgIHZvaWQqIHRocm93VGFyZ2V0ID0g
dm0uZ2V0Q1RJVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCkuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CkBAIC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJl
dHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9u
RXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhhbmRsZVRocm93RXhjZXB0
aW9uKCkpOwogICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNDVmMzQzZjBkZDA1OTA3ZjA5
OTE3ZGIwM2ExZjQxNGRkNjgwMTRjYi4uY2RjOTA2ZjRmNGFlYTQ5MTg0YWJiYjYzOWQzMjg4YzRj
NTcxNjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJh
dG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEsMTQgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBl
bmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4K
ICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4
Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1fcGxhbi5jb2RlQmxvY2so
KS0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0o
UHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOworICAgICAg
ICB9KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVw
UmVnaXN0ZXJzRm9yRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcAppbmRleCAxMTMyY2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3Li40Yzhm
MmVlZGVmYWNiNTI1ZmMyOGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5IEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIDcp
IEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2RlIGJsb2NrLgotICAgIAor
CiAgICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrICsgMSkpID0gY29kZUJsb2NrOwogICAgIAogICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICIsIFJhd1Bv
aW50ZXIoc2NyYXRjaCkpOwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NSRW50cnkoVk0mIHZtLCBD
YWxsRgogCiAgICAgLy8gVGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hPU1JFbnRyeUJ1ZmZlciB3
aWxsIGJlIHplcm9lZCBieSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAgICAgZGZnQ29tbW9uLT5j
YXRjaE9TUkVudHJ5QnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUpICogaW5k
ZXgpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0dGVkIHRvIHRyaWdnZXJp
bmcgYW4gT1NSIGVudHJ5IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVybi4gSGVuY2UsIGl0IGlz
IHNhZmUgdG8gbW9kaWZ5IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1lLT5zZXRDb2RlQmxvY2so
b3B0aW1pemVkQ29kZUJsb2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVudHJ5cG9pbnQtPm1hY2hp
bmVDb2RlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2OTVkNTU2YzgxNTJkNzYu
LmU2ZTc0M2UxZWM1ZDdjOWY0MWY5MGU4OWJkMmEyOGE1MzMwNzkxODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMjE3LDcgKzIy
MTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICAg
ICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3JhcGgo
KS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7
CisgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBp
biBPU1IgZW50cnkuCiAgICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJs
ZUV2ZW50OjpyZXNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcApp
bmRleCA0NGE5YTFhOThmMjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFk
NzMzOTk4ZDliODA0NDVhMjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2lu
Y2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKQEAgLTE0OCw2ICsxNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5m
bzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBo
ZWFkZXIgZnJvbSBzY3JhdGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNv
IHJlcGxhY2VzCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsK
ICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86
OnJlZ1QxKTsKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7
CkBAIC0xNjAsNiArMTYyLDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNv
bihERkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5r
KCZqaXQpOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9i
ZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZw
PENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNl
bmRpZgorCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCBiMWUwMzY5MTQxMGI4MjdiMGMwZWQ0ZDBmZWMyN2Q4NzU1OWM1OTQ0
Li5jY2VkMjEzNjQ5ZTZkYTgzOWE3NDc4OGZiMWVhNGM2NmVhNjEwNGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xOTgsMTUgKzE5OCwx
NCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcHJv
Yy5zZXROdW1FbnRyeXBvaW50cyhtX2dyYXBoLm1fbnVtYmVyT2ZFbnRyeXBvaW50cyk7Ci0gICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgubV9jb2RlQmxvY2s7CiAKICAg
ICAgICAgICAgIFJlZjxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvcj4gY2F0Y2hQcm9sb2d1ZUdl
bmVyYXRvciA9IGNyZWF0ZVNoYXJlZFRhc2s8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3JGdW5j
dGlvbj4oCi0gICAgICAgICAgICAgICAgW2NvZGVCbG9ja10gKENDYWxsSGVscGVycyYgaml0LCBC
Mzo6QWlyOjpDb2RlJiBjb2RlKSB7CisgICAgICAgICAgICAgICAgW10oQ0NhbGxIZWxwZXJzJiBq
aXQsIEIzOjpBaXI6OkNvZGUmIGNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1jb2RlLmZyYW1lU2l6
ZSgpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogCiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0U2F2ZShjb2RlLmNh
bGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0
LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihjb2RlQmxvY2ssIFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29kZUJsb2Nr
IGluIHRoZSBzdGFjayBpcyBhbHJlYWR5IHJlcGxhY2VkIGluIEZUTDo6cHJlcGFyZU9TUkVudHJ5
LgogICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNhdGNo
RW50cnlwb2ludEluZGV4IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRJbmRleFRvQ2F0Y2hCeXRlY29k
ZUluZGV4LmtleXMoKSkgewpAQCAtMjcyLDkgKzI3MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV9udW1iZXJUYWctPmtleSgpKTsKICAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX25vdENlbGxNYXNrLT5rZXkoKSk7CiAgICAg
ICAgIAotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdl
YWsgcG9pbnRlciB0byBpdHNlbGYgYmVjYXVzZQotICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNl
IGl0IHRvIGFsd2F5cyBnZXQgY29sbGVjdGVkLgotICAgICAgICBtX291dC5zdG9yZVB0cihtX291
dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIGFkZHJl
c3NGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpKTsKKyAgICAg
ICAgLy8gV2hlbiBydW5uaW5nIEZUTCBjb2RlLCB3ZSBhbHJlYWR5IHN0b3JlIENvZGVCbG9jayB0
byBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2suCiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cg
Q2hlY2suCiAgICAgICAgIHVuc2lnbmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVk
UmVnaXN0ZXJDb3VudEZvckV4aXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQx
Mi4uOGY3ZGM2ZTMzYmIwNmUxNjc3NjYzZGUzNjBiNzYyNGE1MGNmM2FhMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtMjAzLDMwICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dD
YXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1
bmN0aQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29k
ZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FT
U0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0g
ICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBy
ZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxl
ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZyksIHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlm
IChtX3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QoKSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwg
cmVzdWx0KTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7
Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNv
ZGVCbG9jaygpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9z
ZSkKQEAgLTc1MywxMCArNzI5LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZp
bmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4
KDApKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNp
emVNYXJrZXI7Ci0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVT
dGF0aXN0aWNzKCkpKSB7Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5l
X3Byb2xvZ3VlIik7Ci0gICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGlj
cy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25z
OjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9
IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9z
LCAqdGhpcyk7CiAKICAgICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fz
c2VtYmxlcikKQEAgLTc2Nyw4ICs3NDEsMTkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3Ao
KTsKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxp
bmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNv
ZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5
cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQ
b2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
KCJMUiAiLCBSYXdQb2ludGVyKGN0eC5ncHI8dm9pZCo+KEFSTTY0UmVnaXN0ZXJzOjpscikpKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgIH0KIAogICAgIExhYmVsIGJlZ2luTGFiZWwo
dGhpcyk7CiAKQEAgLTgzMSw3ICs4MTYsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBtX2Fy
aXR5Q2hlY2sgPSBsYWJlbCgpOwogCiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0g
ICAgICAgIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZWdUMCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9i
ZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0
eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxv
Y2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1lKj4oKSkpOworICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbigiTFIgIiwgUmF3UG9pbnRlcihjdHguZ3ByPHZvaWQqPihB
Uk02NFJlZ2lzdGVyczo6bHIpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICAgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBy
ZWdUMCk7CiAgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZTaG91bGRBbHdheXNCZUlubGluZWQoKSkpOwogCiAgICAgICAgIGxv
YWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSwgcmVnVDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZTVhOWQ0Y2MzNDI4ODc0MmJm
N2IyYTFjNGY1NDQxZWNhZjJmYzI4Zi4uZGFhMmM1MjE4MzZlZTI2YzA4MzM4N2ZkNTI5NGI2N2Uy
ODZmNWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yNjEsOCArMjYxLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbG9hZENvZGVCbG9ja0NvbnN0YW50VGFnKFZpcnR1
YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCk7CiAjZW5kaWYKIAotICAgICAgICB2b2lkIGVtaXRQdXRD
b2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0ID0gcmVnVDApOwotCiAgICAg
ICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1wVG9IYW5kbGVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoanVtcFRvSGFuZGxlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggM2M0YTNh
ZTNhOTg4Y2VlOTY1NjQ0M2ZjNzYxMDkwYWUwZWMzYzU2MS4uZWM0ZmEyZTBlNTIzZTdmYTYxNDdm
OWQyMDhmM2VkMzJmZGZmYWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcApAQCAtMjk1LDYgKzI5NSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2Rl
IG1vCiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNr
Rm9yKGtpbmQpKSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAgIHNsb3dDYXNlLmFwcGVu
ZChqaXQuanVtcCgpKTsgLy8gRklYTUUKICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRl
c3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOwogICAgIAogICAgIC8v
IE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRl
ZCB0byBtYWtpbmcgYSBmYXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2UyYzZkZjYwYTQ3OGNhMTA5YWFkYThjMzNk
NjBjOTk0YjVkM2MwMS4uNWZkYWY2M2VkNTMxY2UzM2RiODk4ZmQ0OTE2ZDliOGZmZjUzNjEwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTE5Miw3ICsxMTkyLDggQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKICAg
ICBlbmQKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwodGVtcDEsIHRlbXAyLCB0
ZW1wMywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwodGVtcDEsIHRlbXAyLCB0
ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQorICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9j
ayArIFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0pCiBlbmQKIAogbWFj
cm8gaW52b2tlRm9yUmVndWxhckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1h
eWJlT2xkQ0ZSLCBjYWxsUHRyVGFnKQpAQCAtMTIwOCw3ICsxMjA5LDcgQEAgZW5kCiAKICMgc3Ag
cG9pbnRzIHRvIHRoZSBuZXcgZnJhbWUgKyBDYWxsZXJGcmFtZUFuZFBDU2l6ZQogIyBXZSBsZWF2
ZSBjZnIgdGVtcDQgdG8gdXNlIGl0IGZvciB1bnRhZ2dpbmcuCi1tYWNybyBwcmVwYXJlRm9yVGFp
bENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yVGFpbENh
bGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgIHJlc3Rv
cmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgpAQCAtMTI2Myw2ICsxMjY0LDEy
IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkK
ICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEsIHNwCisKKyAgICBpZiBBUk12NyBvciBBUk02NCBv
ciBBUk02NEUgb3IgQ19MT09QIG9yIENfTE9PUF9XSU4gb3IgTUlQUyBvciBSSVNDVjY0CisgICAg
ICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFt
ZUFuZFBDU2l6ZVtzcF0pCisgICAgZWxzZQorICAgICAgICBzdG9yZUNvZGVCbG9jayhDb2RlQmxv
Y2sgKyBQYXlsb2FkT2Zmc2V0IC0gUHRyU2l6ZVtzcF0pCisgICAgZW5kCiBlbmQKIAogbWFjcm8g
aW52b2tlRm9yVGFpbENhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1heWJlT2xk
Q0ZSLCBjYWxsUHRyVGFnKQpAQCAtMTMwMyw3ICsxMzEwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JD
YWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxlZSwgY2FsbGVlRnJhbWVQdHIpCiAgICAgICAgICAg
ICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9udFVwZGF0ZVNQCiAgICAgICAgICAgICBtb3ZlIGNh
bGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEp
CisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykg
ZW5kKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgogICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnKQogICAgICAgICBlbmQpCkBAIC0xNDgyLDQ2ICsxNDg5LDYgQEAgbWFjcm8gYXNzZXJ0
Tm90Q29uc3RhbnQoc2l6ZSwgaW5kZXgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIGZ1bmN0aW9u
Rm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQK
LSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAg
ICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0g
ICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNv
bnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2Fk
cCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9u
OjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1
dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIK
LWVuZAotCi1tYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRS
ZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRh
cmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6
bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0g
ICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRh
ZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRh
YmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVj
dXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJl
Z2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6bV9jb2RlQmxvY2tb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNv
dXJjZVJlZ2lzdGVyKQotICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0K
LWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikK
LSAgICAjIE5vdGhpbmcgdG8gZG8hCi1lbmQKLQogbWFjcm8gY29udmVydENhbGxlZVRvVk0oY2Fs
bGVlKQogICAgIGJ0cG56IGNhbGxlZSwgKGNvbnN0ZXhwciBQcmVjaXNlQWxsb2NhdGlvbjo6aGFs
ZkFsaWdubWVudCksIC5wcmVjaXNlQWxsb2NhdGlvbgogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNr
LCBjYWxsZWUKQEAgLTE1MzQsNyArMTUwMSw3IEBAIGVuZAogCiAjIERvIHRoZSBiYXJlIG1pbmlt
dW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENv
ZGVCbG9jayoKICMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgot
bWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQ
YXRoLCB0cmFjZVNsb3dQYXRoKQorbWFjcm8gcHJvbG9ndWUob3NyU2xvd1BhdGgsIHRyYWNlU2xv
d1BhdGgpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKQEAgLTE1NDMsOCArMTUxMCw3
IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JT
bG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1Bh
dGgpCiAgICAgICAgIGFkZHAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwsIHNwCiAgICAg
ZW5kCi0gICAgY29kZUJsb2NrR2V0dGVyKHQxKQotICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBpZiBub3QgKENfTE9PUCBvciBDX0xPT1Bf
V0lOKQogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDAKICAg
ICAgICAgYmFkZGlzIDUsIChVbmxpbmtlZENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVy
ICsgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyOjptX2NvdW50ZXIpW3QwXSwgLmNvbnRpbnVlCkBA
IC0xNTg0LDcgKzE1NTAsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgICAgICBqbXAg
cjAsIEpTRW50cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6Ci0gICAgICAgIG5v
dEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDEKICAgICAuY29udGludWU6CiAgICAgZW5kCiAKQEAgLTE2MjMsNyArMTU4OSw3IEBAIG1h
Y3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0
aCwgdHJhY2VTbG93UGF0aCkKIC5zdGFja0hlaWdodE9LR2V0Q29kZUJsb2NrOgogICAgICMgU3Rh
Y2sgY2hlY2sgc2xvdyBwYXRoIHJldHVybmVkIHRoYXQgdGhlIHN0YWNrIHdhcyBvay4KICAgICAj
IFNpbmNlIHRoZXkgd2VyZSBjbG9iYmVyZWQsIG5lZWQgdG8gZ2V0IENvZGVCbG9jayBhbmQgbmV3
IHNwCi0gICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCiAgICAgZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2sodDEsIHQw
KQogICAgIHN1YnAgY2ZyLCB0MCwgdDAKIApAQCAtMjAyNiwzOSArMTk5MiwzOSBAQCBub1dpZGUo
bGxpbnRfb3Bfd2lkZTMyKQogbm9XaWRlKGxsaW50X29wX2VudGVyKQogCiBvcChsbGludF9wcm9n
cmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2Nr
R2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xs
aW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9v
c3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9w
KGxsaW50X2V2YWxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29z
ciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
X2Z1bmN0aW9uX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKICAg
ICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAK
IAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9n
dWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0
aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JD
YWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVj
a19mb3JfY2FsbCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQogICAgIGZ1
bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1
bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlv
bkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCkBAIC0yMDY2LDcg
KzIwMzIsNyBAQCBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8g
KCkKIGVuZCkKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywg
bWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRl
ciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQogICAg
IGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJp
dHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlh
bGl6YXRpb24oMSkKQEAgLTI1MjcsNyArMjQ5Myw3IEBAIG1hY3JvIGxpbmtTbG93UGF0aEZvcihm
dW5jdGlvbikKICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBidHB6IHIxLCAuZG9Ob3RU
cmFzaAogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkKLSAgICBwcmVwYXJl
Rm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUZvclRhaWxDYWxsKHQxLCB0
MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQ0
CiAuZG9Ob3RUcmFzaDoKICAgICBqbXAgdDAsIEpTRW50cnlQdHJUYWcKQEAgLTI1NTAsMTIgKzI1
MTYsMTMgQEAgbWFjcm8gdmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNo
ZWNrLCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZSwKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9h
ZHAgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tbdDFdLCB0MQogICAgIGJ0cHogdDEsIHNs
b3dDYXNlCisgICAgam1wIHNsb3dDYXNlICMgRklYTUUKIC5jYWxsQ29kZToKLSAgICBwcmVwYXJl
Q2FsbCh0NSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCwgbWFj
cm8oYWRkcmVzcykgZW5kKQogICAgIGptcCB0MSwgSlNFbnRyeVB0clRhZwogLm5vdEpTRnVuY3Rp
b246CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwg
c2xvd0Nhc2UKLSAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlQ2Fs
bCh0NSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgIGptcCBpbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZQogZW5kCiAKQEAgLTI1NzAsNyArMjUzNyw3IEBAIGVuZCkKICMgdDIg
aXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxp
bnRfdmlydHVhbF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9y
KEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9p
bnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRl
bXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFi
bGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9m
dW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCwgc3RvcmVDb2RlQmxvY2spIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxpbmtT
bG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU3OSw3ICsyNTQ2LDcg
QEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFs
T2JqZWN0CiBvcChsbGludF92aXJ0dWFsX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAoKQot
ICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBv
bGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkK
KyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0cnVj
dFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1w
b2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2sp
IGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRf
dmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU4OCw5ICsyNTU1LDkgQEAgZW5kKQogIyB0MiBpcyBD
YWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92
aXJ0dWFsX3RhaWxfY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0Zv
cihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRf
aW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0
ZW1wMywgdGVtcDQpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3Ry
YW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxv
Y2spCiAgICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKLSAgICAg
ICAgcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgICAg
ICBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29k
ZUJsb2NrKQogICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdGVtcDQKICAgICBlbmQsIC5zbG93
Q2FzZSkKIC5zbG93Q2FzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggYWNlODcxMTY3MmU3MDIxNmQz
OWE0OGRmMTVmZDY2ZDZiNTdjNDExZS4uOWZhODNiNTQwNjUyNzIwYjcyMTI1YjkxMjk4MjNkYjU2
Yjk5NDQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIyNjAsNiArMjI2MCw4IEBAIG1hY3JvIGNh
bGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmlydHVhCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnBuZXEgdDAsIHQzLCAub3BD
YWxsU2xvdwogICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgIGxvYWRwICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tb
dDVdLCB0MgorICAgIHN0b3JlcCB0MiwgQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxl
ckZyYW1lQW5kUENTaXplW3NwXQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWND
YWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjMzOSw2ICsyMzQxLDggQEAgbWFjcm8gZG9DYWxs
VmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmkKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnBuZXEg
dDAsIHQzLCAub3BDYWxsU2xvdwogICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwg
dDEpCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlcCB0
MiwgQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXplW3NwXQog
CiAgICAgICAgIC5nb1BvbHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERl
c3RpbmF0aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRi
ZDQ3MzQ1ZDgzNTg2OTQ0Ny4uOGNkN2RiZTJhNGEyNTkwNjQzNjFkMzZmNTZmOGNiM2U0OTUwOWRi
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KQEAgLTI0ODMsNyArMjQ4MywxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9w
Y29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwot
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0Mywg
dDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAg
ICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1f
bW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjU2MSw3ICsyNTY0LDEwIEBA
IG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAg
ICAgICAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNh
bGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0
MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAg
ICAgICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAg
ICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvblt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2Vi
QXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFz
bQppbmRleCA3MTM1ZjRmNmZjMjBjYjM5ZTg1YmFiYzFkMWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIz
ZjhmNmI1ZjQ1NWJkMGE1YTc3YzU5MzJiZTlmNjhlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE0Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVj
a1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgICAgICAg
ICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCiAgICAgICAgICAgICBlbmQKICAgICAgICAgLnJl
Y292ZXI6Ci0gICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tS
ZWdpc3RlcikKKyAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdp
c3RlcgogICAgICAgICBlbmQpCiAgICAgZW5kCiBlbmQKQEAgLTI4Myw3ICsyODMsNyBAQCBtYWNy
byByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAgICBzdWJwIGNmciwgd3MxLCBzcAog
ZW5kCiAKLW1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRl
ciwgbG9hZFdhc21JbnN0YW5jZSkKK21hY3JvIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNl
KQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NS
LgogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNV
c2VkQnlXYXNtKCkKQEAgLTI5Myw4ICsyOTMsOSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJs
b2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAg
V2FzbTo6SW5zdGFuY2U6Om1fb3duZXJbd2FzbUluc3RhbmNlXSwgd3MwCiAgICAgc3RvcmVwIHdz
MCwgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nmcl0KIAotICAgIGNvZGVCbG9ja0dldHRlcih3czApCi0g
ICAgY29kZUJsb2NrU2V0dGVyKHdzMCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgd3MwCisgICAg
YW5kcCB+Mywgd3MwCisgICAgc3RvcmVwIHdzMCwgQ29kZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0
IG5ldyBzcCBpbiB3czEgYW5kIGNoZWNrIHN0YWNrIGhlaWdodC4KICAgICBsb2FkaSBXYXNtOjpM
TEludENhbGxlZTo6bV9udW1DYWxsZWVMb2NhbHNbd3MwXSwgd3MxCkBAIC01MTQsNyArNTE1LDcg
QEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgbWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAg
ICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZUZyb21UTFMpCisgICAgd2FzbVByb2xvZ3Vl
KGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5k
KQogCkBAIC01MjMsNyArNTI0LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMs
IG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUod2Fz
bUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkK
KyAgICB3YXNtUHJvbG9ndWUobWFjcm8gKCkgZW5kKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24o
KQogZW5kKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGE2OTkz
MTU5MDk5Y2NjMWI3Mzk2YTk3YzU4ZmQ0ZWUzMWE1YzE4MmUuLjhkYzJmMTc4MmUwYmNkNTQ3MjVl
Mjc3OWJiZmU2MGZlNzdjNjQ3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Fz
dC5oCkBAIC04OSw2ICs4OSw3IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oUmVn
RXhwT2JqZWN0LCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUsIEpTVHlwZTo6UmVnRXhwT2JqZWN0
VHlwZSkgXAogICAgIG1hY3JvKEpTV2ViQXNzZW1ibHlNb2R1bGUsIEpTVHlwZTo6V2ViQXNzZW1i
bHlNb2R1bGVUeXBlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSkgXAogICAgIG1hY3Jv
KERpcmVjdEFyZ3VtZW50cywgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkRp
cmVjdEFyZ3VtZW50c1R5cGUpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGUsIEpTVHlw
ZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgSlNUeXBlOjpGdW5jdGlvbkV4ZWN1dGFibGVUeXBl
KSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5
cGUsIEpTVHlwZTo6U2NvcGVkQXJndW1lbnRzVHlwZSkgXAogICAgIG1hY3JvKENsb25lZEFyZ3Vt
ZW50cywgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkNsb25lZEFyZ3VtZW50
c1R5cGUpIFwKICAgICBtYWNybyhKU0dsb2JhbE9iamVjdCwgSlNUeXBlOjpHbG9iYWxPYmplY3RU
eXBlLCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEyNDcxYTAzZWU5MmNiNTIzMzM4MjM4Li5k
NmMzYzNlZGJhYmM1N2I3OGNlZDI3MGIwNTEwOGU1N2MwODYwN2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02OTYsNyArNjk2LDcgQEAgTmF0aXZlRXhlY3V0YWJsZSog
Vk06OmdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0
KQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSog
cmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1
bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKLSAgICAgICAgICAgIHNs
b3dDYXNlID8gTm9JbnRyaW5zaWMgOiBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAg
ICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBOb0ludHJpbnNpYywgLy8gRklYTUUKICAg
ICAgICAgICAgIGNhbkNvbnN0cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgU3RyaW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxO
YXRpdmVFeGVjdXRhYmxlPihyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzIw
LDcgKzcyMCw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRSZW1vdGVGdW5jdGlvbihib29s
IGlzSlNGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CiAgICAgICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIHJlc3VsdCA9IGdldEhvc3RGdW5jdGlvbigKICAgICAgICAgICAgIHNsb3dD
YXNlID8gcmVtb3RlRnVuY3Rpb25DYWxsR2VuZXJpYyA6IHJlbW90ZUZ1bmN0aW9uQ2FsbEZvckpT
RnVuY3Rpb24sCi0gICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogUmVtb3RlRnVu
Y3Rpb25DYWxsSW50cmluc2ljLAorICAgICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6
IE5vSW50cmluc2ljLCAvLyBGSVhNRQogICAgICAgICAgICAgY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IsIG51bGxwdHIsIFN0cmluZygpKTsKICAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZl
RXhlY3V0YWJsZT4ocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456110</attachid>
            <date>2022-03-30 03:47:21 -0700</date>
            <delta_ts>2022-03-30 11:29:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220330034720.patch</filename>
            <type>text/plain</type>
            <size>48656</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjUxYmI4ZjIwOTM4NTBlZWRmMDE5YmY5NjAyZDk1MjIyMzRjMTVmLi5mODMxM2JmNDMwNzk4ZWY2
NDBhZWVmMTVmYjdlYTA3YTBjMGY4ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldE1vbm9tb3JwaGlj
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhckNhbGxlZSk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1Yik6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6c2V0U3R1Yik6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmVt
aXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86
OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpvZmZzZXRPZkNv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OmxpbmtNb25vbW9ycGhpY0NhbGwpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jl
cGF0Y2hJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJs
b2NrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91
dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1l
SW5Qcm9sb2d1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAg
ICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVt
b3RlRnVuY3Rpb24pOgorCiAyMDIyLTAzLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIGNvbnN0YW50cyBidWZmZXIgdG8gbG9hZCBKU0ds
b2JhbE9iamVjdCBpbiBCYXNlbGluZUpJVCB0aHVua3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFjODUx
NDE5NmZkY2ZjOGZhYzE0ZWFjNy4uZTk0Yzg3MDljYjQ3MTc4MzM1YzFjODJlYWI1YTE0MDBhZDVj
N2Q4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKQEAgLTEwOCwxNyArMTA4LDE5IEBAIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IENhbGxMaW5rSW5mbzo6ZG9uZUxvY2F0aW9uKCkKICAgICByZXR1cm4gbV9kb25lTG9j
YXRpb247CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBDYWxsTGlua0luZm86OnNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2Rl
UHRyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSkgJiBwb2x5bW9ycGhpY0NhbGxl
ZU1hc2spKTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLnNldCh2bSwgb3duZXIsIGNhbGxlZSk7
CiAKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1
LmRhdGFJQy5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgdS5kYXRhSUMubV9tb25v
bW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+bV9jYWxsTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9j
YXRpb24sIGNvZGVCbG9jayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRl
cih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMCwxMCArMTMyLDEyIEBAIHZvaWQgQ2Fs
bExpbmtJbmZvOjpjbGVhckNhbGxlZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0
KCkpOwogICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKLSAgICBpZiAoaXNEYXRhSUMo
KSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9
IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24g
PSBudWxscHRyOwotICAgIGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7CisgICAgfSBl
bHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0
aW9uLCBudWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUu
Y29kZUlDLm1fY2FsbGVlTG9jYXRpb24sIG51bGxwdHIpOwogI2Vsc2UKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OCw5ICszMDIsMTEgQEAgdm9pZCBDYWxsTGlu
a0luZm86OnJldmVydENhbGxUb1N0dWIoKQogCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsKICAgICAg
ICAgbV9jYWxsZWVPckNvZGVCbG9jay5jbGVhcigpOworICAgICAgICB1LmRhdGFJQy5tX2NvZGVC
bG9jayA9IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24gPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRp
b24sIG51bGxwdHIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OnJldmVydEp1bXBSZXBsYWNlbWVu
dFRvQnJhbmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFydE9m
QnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uKSwg
Y2FsbGVlR1BSKCksIG51bGxwdHIpOwogI2Vsc2UKQEAgLTM2Myw5ICszNjksMTggQEAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW4KIAogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICAg
ICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
TGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0
aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOyAvLyBQb2x5
bW9ycGhpYyBzdHViIGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHByZXAuCiAgICAgICAgICAgICBq
aXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
Zk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0NhbGxIZWxwZXJzOjpz
ZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNl
dE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihz
Y3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOwogICAgICAgICAg
ICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0
T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAg
IH0KQEAgLTM3NCwxNSArMzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlu
a0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luCiAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIGNhbGxlZUdQUiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihudWxscHRyKSkpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsOworICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tTdG9yZTsKICAgICAgICAgaWYg
KGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAg
ICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSkpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAgIH0g
ZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQu
c3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAg
ICAgICAgIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXpp
bmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAgICAgICAgIH0pOwog
ICAgIH0KQEAgLTQxMSw4ICs0MzEsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldFN0dWIoUmVm
PFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAKICAgICBpZiAoaXNEYXRh
SUMoKSkgewogICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1fY2FsbGVlT3JDb2Rl
QmxvY2suc2xvdCgpKSA9IHBvbHltb3JwaGljQ2FsbGVlTWFzazsKKyAgICAgICAgdS5kYXRhSUMu
bV9jb2RlQmxvY2sgPSBudWxscHRyOyAvLyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSB3aWxs
IHNldCBDb2RlQmxvY2sgaW5zaWRlIGl0LgogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uID0gbV9zdHViLT5jb2RlKCkuY29kZSgpLnJldGFnZ2VkPEpTRW50cnlQ
dHJUYWc+KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQ
b2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29kZUlDLm1fY2FsbGVl
TG9jYXRpb24pLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3R1Yi0+Y29kZSgpLmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5OCwxMSBAQCB2b2lk
IE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCkKIAogICAgIEFTU0VSVChVc2VEYXRhSUM6Ok5vID09IHRoaXMtPnVzZURhdGFJQygpKTsK
IAorICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwo
KTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2Nr
TG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJs
b2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5r
QnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTAxLDkgKzUy
NSwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZh
c3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9wcyhDQ2FsbEhl
bHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0
YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsKICAgICBqaXQu
YWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAg
IG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5h
bFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwog
ICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewog
ICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTE0LDYgKzU0MCw3IEBAIHZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogICAgIEFTU0VSVChtX2NhbGxMb2NhdGlvbik7Cisg
ICAgQVNTRVJUKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24pOwogICAgIGlmIChpc1RhaWxD
YWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRM
YW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC01
MjYsNyArNTUzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGly
ZWN0Q2FsbCgpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxs
TG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CiAKLXZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFn
PiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJn
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKIApAQCAtNTQwLDYg
KzU2Nyw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdl
dChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnCiAgICAgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwg
Y29kZUJsb2NrKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZmIyMGU0NzgxNDc5MzUyMTc1MDQzNDQ1YjI5NzczMWI5
NzEyOTg2Ny4uMzkyMDg2YTA4ZDFiN2E2ZTI2NzFmYzUyMmEzZjljZWZmZDE2NTJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaApAQCAtMTk5LDcg
KzE5OSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBkb25lTG9jYXRpb24oKTsKIAotICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0m
LCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOworICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBK
U09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOwogICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGNsZWFyQ2FsbGVlKCk7CiAg
ICAgSlNPYmplY3QqIGNhbGxlZSgpOwpAQCAtMzE3LDYgKzMxNywxMSBAQCBjbGFzcyBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgbV9jYWxsZWVPckNvZGVC
bG9jayk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgdSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9jb2RlQmxvY2spOworICAgIH0K
KwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
bigpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywg
dSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbik7CkBAIC00MDEsMTQgKzQwNiwxNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uOwog
ICAgIHVuaW9uIFVuaW9uVHlwZSB7CiAgICAgICAgIFVuaW9uVHlwZSgpCi0gICAgICAgICAgICA6
IGRhdGFJQyB7IG51bGxwdHIgfQorICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyLCBudWxs
cHRyIH0KICAgICAgICAgeyB9CiAKICAgICAgICAgc3RydWN0IERhdGFJQyB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOyAvLyBUaGlzIGlzIHdlZWtseSBoZWxkLiBBbmQgY2xl
YXJlZCB3aGVuZXZlciBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uIGlzIGNoYW5nZWQuCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tb25vbW9y
cGhpY0NhbGxEZXN0aW5hdGlvbjsKICAgICAgICAgfSBkYXRhSUM7CiAKICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFn
PiBtX2NvZGVCbG9ja0xvY2F0aW9uOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
UHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2FsbGVlTG9jYXRpb247CiAgICAgICAgIH0gY29kZUlD
OwogICAgIH0gdTsKQEAgLTUwMyw3ICs1MTAsNyBAQCBjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAgICAgdm9pZCBlbWl0RGlyZWN0RmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJik7CiAgICAgdm9pZCBlbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2Fs
bCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwotICAgIHZvaWQgc2V0RGlyZWN0
Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBz
ZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayosIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KTsKICAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYpOwogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggZTk3
NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5YTE1OGFjODQxNi4uOWM2MzBhZDNiYmE1OTc1OTkw
YmU4Y2QwYTM2MDI5Y2ZjZmU0MmVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXBhdGNoLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgbGlua01vbm9tb3JwaGljQ2Fs
bCgKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5r
ZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwg
Y2FsbGVlLCBjb2RlUHRyKTsKKyAgICBjYWxsTGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUo
dm0sIG93bmVyLCBjYWxsZWUsIGNhbGxlZUNvZGVCbG9jaywgY29kZVB0cik7CiAgICAgY2FsbExp
bmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlKTsKIAogICAgIGlmIChz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKQEAgLTE1NjQsNyArMTU2
NCw3IEBAIHZvaWQgbGlua0RpcmVjdENhbGwoCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJs
eUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRhTG9nKCJMaW5raW5nIGNhbGwgaW4g
IiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY29kZU9yaWdp
bigpKSwgIiB0byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spLCAiLCBlbnRyeXBvaW50
IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogCi0gICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxU
YXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOworICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KGpzQ2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KGNhbGxlZUNvZGVCbG9jayksIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQ
dHIpKTsKIAogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCiAgICAgICAgIGNhbGxlZUNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsRnJhbWUsICZjYWxsTGlua0luZm8pOwpAQCAtMTc4Nyw3
ICsxNzg3LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICB3aGlsZSAoYmluYXJ5U3dp
dGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGJpbmFy
eVN3aXRjaC5jYXNlSW5kZXgoKTsKICAgICAgICAgCi0gICAgICAgIENhbGxWYXJpYW50IHZhcmlh
bnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CisgICAgICAgIFBvbHltb3JwaGlj
Q2FsbENhc2UmIGNhbGxDYXNlID0gY2FsbENhc2VzW2Nhc2VJbmRleF07CisgICAgICAgIENhbGxW
YXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cjsKICAgICAgICAgaWYg
KHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CkBAIC0xODEwLDE0ICsxODExLDI2IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGJvb2wgbmVlZHNEb25lSnVtcCA9IGZhbHNlOwogICAg
ICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewogICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIo
c3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAg
ICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5j
b2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+
KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFy
VGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgp
KSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKKyAgICAg
ICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2so
KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5
SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgY2Fs
bHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RhdGFJQykKKyAgICAgICAgICAgIEFTU0VSVCghY2Fs
bExpbmtJbmZvLmlzVGFpbENhbGwoKSk7CisgICAgICAgICAgICBpZiAoaXNEYXRhSUMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNl
LmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAg
ICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwo
KTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
V2UgYXJlIG5vdCBjYWxsaW5nIHlldC4gVGh1cywgc3RhY2tQb2ludGVyUmVnaXN0ZXIgaXMgbm90
IGluY2x1ZGluZyBQQyAmIGZyYW1lUG9pbnRlci4KKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxs
ID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIG5lZWRzRG9uZUp1bXAgPSB0
cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVwYXRjaElubGluZXMuaAppbmRleCA1MTcxYmMxMjQwMDUyYzNjY2NkNmU2ZmFmNDY4MjUzMzdl
ZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcwNzE4YjM5NDgyYmIzMDViNzBmOTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaApAQCAtMTk1
LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JX
aXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAKICAgICBEZWZlclRyYXBzIGRl
ZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBqZXR0aXNvbiBpZiB3ZSdyZSBnb2luZyB0byBjYWxs
IHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYgKFVOTElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRD
b2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwor
ICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0g
WyZdICgpIHsKICAgICAgICAgICAgIHZvaWQqIHRocm93VGFyZ2V0ID0gdm0uZ2V0Q1RJVGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CkBA
IC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVh
bEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0s
IGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhhbmRsZVRocm93RXhjZXB0aW9uKCkpOwogICAgIH0K
KwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
ZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKaW5kZXggNDVmMzQzZjBkZDA1OTA3ZjA5OTE3ZGIwM2ExZjQxNGRk
NjgwMTRjYi4uY2RjOTA2ZjRmNGFlYTQ5MTg0YWJiYjYzOWQzMjg4YzRjNTcxNjRhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgorI2luY2x1
ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1
ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3RhY2sg
bGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3RoIG5v
cm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
KS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1fcGxhbi5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSA9
PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQm
IGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZy
YW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOworICAgICAgICB9KTsKKyAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50
cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAppbmRleCAxMTMy
Y2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3Li40YzhmMmVlZGVmYWNiNTI1ZmMy
OGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYg
dm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBm
cmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2RlIGJsb2NrLgotICAgIAorCiAgICAgKmJpdHdpc2Vf
Y2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICsgMSkp
ID0gY29kZUJsb2NrOwogICAgIAogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICIsIFJhd1BvaW50ZXIoc2NyYXRjaCkp
OwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NSRW50cnkoVk0mIHZtLCBDYWxsRgogCiAgICAgLy8g
VGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hPU1JFbnRyeUJ1ZmZlciB3aWxsIGJlIHplcm9lZCBi
eSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAgICAgZGZnQ29tbW9uLT5jYXRjaE9TUkVudHJ5QnVm
ZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUpICogaW5kZXgpOworCisgICAgLy8g
QXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0dGVkIHRvIHRyaWdnZXJpbmcgYW4gT1NSIGVudHJ5
IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVybi4gSGVuY2UsIGl0IGlzIHNhZmUgdG8gbW9kaWZ5
IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1lLT5zZXRDb2RlQmxvY2sob3B0aW1pemVkQ29kZUJs
b2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVudHJ5cG9pbnQtPm1hY2hpbmVDb2RlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2OTVkNTU2YzgxNTJkNzYuLmU2ZTc0M2UxZWM1ZDdj
OWY0MWY5MGU4OWJkMmEyOGE1MzMwNzkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3JhcGgoKS5mcmFtZVJlZ2lzdGVy
Q291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
ICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQuZW1p
dFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVj
a1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9q
aXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgICAgIC8vIENv
ZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBpbiBPU1IgZW50cnkuCiAg
ICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRleCA0NGE5YTFhOThm
Mjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFkNzMzOTk4ZDliODA0NDVh
MjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0OCw2ICsx
NDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMiwgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBoZWFkZXIgZnJvbSBzY3Jh
dGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNvIHJlcGxhY2VzCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKICAgICBq
aXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xNjAsNiArMTYy
LDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVu
a0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdVbnJlYXNvbmFi
bGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5rKCZqaXQpOworCisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9iZTo6Q29udGV4dCYgY3R4
KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCkt
PmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgaml0
LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9w
RW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCBiMWUwMzY5MTQxMGI4MjdiMGMwZWQ0ZDBmZWMyN2Q4NzU1OWM1OTQ0Li5jY2VkMjEzNjQ5ZTZk
YTgzOWE3NDc4OGZiMWVhNGM2NmVhNjEwNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xOTgsMTUgKzE5OCwxNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcHJvYy5zZXROdW1FbnRyeXBv
aW50cyhtX2dyYXBoLm1fbnVtYmVyT2ZFbnRyeXBvaW50cyk7Ci0gICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgubV9jb2RlQmxvY2s7CiAKICAgICAgICAgICAgIFJlZjxC
Mzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvcj4gY2F0Y2hQcm9sb2d1ZUdlbmVyYXRvciA9IGNyZWF0
ZVNoYXJlZFRhc2s8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3JGdW5jdGlvbj4oCi0gICAgICAg
ICAgICAgICAgW2NvZGVCbG9ja10gKENDYWxsSGVscGVycyYgaml0LCBCMzo6QWlyOjpDb2RlJiBj
b2RlKSB7CisgICAgICAgICAgICAgICAgW10oQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNv
ZGUmIGNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1jb2RlLmZyYW1lU2l6ZSgpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
CiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0U2F2ZShjb2RlLmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihjb2RlQmxvY2ssIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29kZUJsb2NrIGluIHRoZSBzdGFjayBp
cyBhbHJlYWR5IHJlcGxhY2VkIGluIEZUTDo6cHJlcGFyZU9TUkVudHJ5LgogICAgICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNhdGNoRW50cnlwb2ludEluZGV4
IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRJbmRleFRvQ2F0Y2hCeXRlY29kZUluZGV4LmtleXMoKSkg
ewpAQCAtMjcyLDkgKzI3MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fcHJv
Yy5hZGRGYXN0Q29uc3RhbnQobV9udW1iZXJUYWctPmtleSgpKTsKICAgICAgICAgbV9wcm9jLmFk
ZEZhc3RDb25zdGFudChtX25vdENlbGxNYXNrLT5rZXkoKSk7CiAgICAgICAgIAotICAgICAgICAv
LyBXZSBkb24ndCB3YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdlYWsgcG9pbnRlciB0byBp
dHNlbGYgYmVjYXVzZQotICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFsd2F5cyBn
ZXQgY29sbGVjdGVkLgotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIGFkZHJlc3NGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpKTsKKyAgICAgICAgLy8gV2hlbiBydW5u
aW5nIEZUTCBjb2RlLCB3ZSBhbHJlYWR5IHN0b3JlIENvZGVCbG9jayB0byBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2suCiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCiAgICAgICAg
IHVuc2lnbmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQxMi4uODY3NTFkYjFlYWMy
ZmRlNjI3ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMjAzLDMwICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aQogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUlu
UHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2Vk
Q29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0gICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZXN1bHQpOwotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFy
ZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gYnJhbmNoVGVzdFB0
cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJh
cmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3Vs
dCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlmIChtX3VubGlua2VkQ29k
ZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQs
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSksIHJl
c3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlv
bkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsKLQotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om9mZnNl
dE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihy
ZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNl
bGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MywxMCAr
NzI5LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFw
cGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBz
dGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7
Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0g
ICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlk
LCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVK
SVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVT
dGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAg
ICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2
Nyw4ICs3NDEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmco
SklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBl
KCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJv
bG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5j
dGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+
Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAg
IHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklU
KSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxD
YWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBM
YWJlbCBiZWdpbkxhYmVsKHRoaXMpOwogCkBAIC04MzEsNyArODE1LDE3IEBAIHZvaWQgSklUOjpj
b21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKICAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUo
cmVnVDApOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJv
YmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAg
ICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsK
KyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxG
cmFtZSo+KCkpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAg
ICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZlNob3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxv
YWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0
NDFlY2FmMmZjMjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVy
LCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1Rv
RnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBl
eGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAzYzRhM2FlM2E5ODhjZWU5
NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi5lYzRmYTJlMGU1MjNlN2ZhNjE0N2Y5ZDIwOGYzZWQz
MmZkZmZhZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KICAgICBq
aXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Q0
LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkp
LAogICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5qdW1w
KCkpOyAvLyBGSVhNRQogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtu
b3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2lu
ZyBhIGZhc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQppbmRleCAzZTJjNmRmNjBhNDc4Y2ExMDlhYWRhOGMzM2Q2MGM5OTRiNWQz
YzAxLi41ZmRhZjYzZWQ1MzFjZTMzZGI4OThmZDQ5MTZkOWI4ZmZmNTM2MTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBA
IC0xMTkyLDcgKzExOTIsOCBAQCBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogICAgIGVuZAogZW5k
CiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCkKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCwgc3RvcmVDb2RlQmxvY2spCisgICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9h
ZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXplW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VG
b3JSZWd1bGFyQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIs
IGNhbGxQdHJUYWcpCkBAIC0xMjA4LDcgKzEyMDksNyBAQCBlbmQKIAogIyBzcCBwb2ludHMgdG8g
dGhlIG5ldyBmcmFtZSArIENhbGxlckZyYW1lQW5kUENTaXplCiAjIFdlIGxlYXZlIGNmciB0ZW1w
NCB0byB1c2UgaXQgZm9yIHVudGFnZ2luZy4KLW1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1w
MSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwg
dGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMjYzLDYgKzEyNjQsMTIgQEAgbWFjcm8g
cHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAgIGVuZAog
CiAgICAgbW92ZSB0ZW1wMSwgc3AKKworICAgIGlmIEFSTXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBv
ciBDX0xPT1Agb3IgQ19MT09QX1dJTiBvciBNSVBTIG9yIFJJU0NWNjQKKyAgICAgICAgc3RvcmVD
b2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXpl
W3NwXSkKKyAgICBlbHNlCisgICAgICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxv
YWRPZmZzZXQgLSBQdHJTaXplW3NwXSkKKyAgICBlbmQKIGVuZAogCiBtYWNybyBpbnZva2VGb3JU
YWlsQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQ
dHJUYWcpCkBAIC0xMzAzLDcgKzEzMTAsNyBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAg
ICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAgICAgICAgICAgIGJ0cHogY2Fs
bGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQ
dHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAg
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAg
ICAgIC5kb250VXBkYXRlU1A6CiAgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29k
ZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAg
ICAgICAgIGVuZCkKQEAgLTE0ODIsNDYgKzE0ODksNiBAQCBtYWNybyBhc3NlcnROb3RDb25zdGFu
dChzaXplLCBpbmRleCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29k
ZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRw
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBidHB6IHRhcmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlv
blJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRh
VGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAg
ICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1h
Y3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQot
ICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0
ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBidHB6IHRh
cmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhl
Y3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29u
c3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAg
ICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjptX2NvZGVCbG9ja1t0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0
ZXIpCi0gICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQotZW5kCi0KLW1h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgICMgTm90
aGluZyB0byBkbyEKLWVuZAotCiBtYWNybyBjb252ZXJ0Q2FsbGVlVG9WTShjYWxsZWUpCiAgICAg
YnRwbnogY2FsbGVlLCAoY29uc3RleHByIFByZWNpc2VBbGxvY2F0aW9uOjpoYWxmQWxpZ25tZW50
KSwgLnByZWNpc2VBbGxvY2F0aW9uCiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIGNhbGxlZQpA
QCAtMTUzNCw3ICsxNTAxLDcgQEAgZW5kCiAKICMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJl
ZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgog
IyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCi1tYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNl
U2xvd1BhdGgpCittYWNybyBwcm9sb2d1ZShvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAg
ICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAg
ICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKIApAQCAtMTU0Myw4ICsxNTEwLDcgQEAgbWFjcm8g
cHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0
cmFjZVNsb3dQYXRoKQogICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0aCkKICAgICAg
ICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc3AKICAgICBlbmQKLSAgICBj
b2RlQmxvY2tHZXR0ZXIodDEpCi0gICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQogICAgIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAg
ICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0MAogICAgICAgICBiYWRk
aXMgNSwgKFVubGlua2VkQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBCYXNlbGlu
ZUV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlcilbdDBdLCAuY29udGludWUKQEAgLTE1ODQsNyAr
MTU1MCw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVy
LCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgICAgIGptcCByMCwgSlNFbnRy
eVB0clRhZwogICAgICAgICBlbmQKICAgICAucmVjb3ZlcjoKLSAgICAgICAgbm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIodDEpCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAg
IC5jb250aW51ZToKICAgICBlbmQKIApAQCAtMTYyMyw3ICsxNTg5LDcgQEAgbWFjcm8gcHJvbG9n
dWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNs
b3dQYXRoKQogLnN0YWNrSGVpZ2h0T0tHZXRDb2RlQmxvY2s6CiAgICAgIyBTdGFjayBjaGVjayBz
bG93IHBhdGggcmV0dXJuZWQgdGhhdCB0aGUgc3RhY2sgd2FzIG9rLgogICAgICMgU2luY2UgdGhl
eSB3ZXJlIGNsb2JiZXJlZCwgbmVlZCB0byBnZXQgQ29kZUJsb2NrIGFuZCBuZXcgc3AKLSAgICBu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKICAgICBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayh0MSwgdDApCiAgICAgc3Vi
cCBjZnIsIHQwLCB0MAogCkBAIC0yMDI2LDM5ICsxOTkyLDM5IEBAIG5vV2lkZShsbGludF9vcF93
aWRlMzIpCiBub1dpZGUobGxpbnRfb3BfZW50ZXIpCiAKIG9wKGxsaW50X3Byb2dyYW1fcHJvbG9n
dWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5v
dEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2Vf
cHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfbW9kdWxlX3Byb2dy
YW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZXZh
bF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dl
dHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NhbGwpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2Fs
bCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oMCkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3Vl
KGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1Nl
dHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9sb2d1ZShfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAg
ICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Bcml0
eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JD
YWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKQEAgLTIwNjYsNyArMjAzMiw3IEBA
IG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQogZW5kKQog
CiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQot
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAg
cHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25B
cml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQog
LmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigx
KQpAQCAtMjUyNyw3ICsyNDkzLDcgQEAgbWFjcm8gbGlua1Nsb3dQYXRoRm9yKGZ1bmN0aW9uKQog
ICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIGJ0cHogcjEsIC5kb05vdFRyYXNoCiAgICAg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKQotICAgIHByZXBhcmVGb3JUYWlsQ2Fs
bCh0MSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQs
IG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDQKIC5kb05vdFRy
YXNoOgogICAgIGptcCB0MCwgSlNFbnRyeVB0clRhZwpAQCAtMjU1MCwxMiArMjUxNiwxMyBAQCBt
YWNybyB2aXJ0dWFsVGh1bmtGb3Iob2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIGludGVy
bmFsRnVuY3Rpb25UcmFtcG9saW5lLAogLmlzRXhlY3V0YWJsZToKICAgICBsb2FkcCBvZmZzZXRP
ZkpJVENvZGVXaXRoQXJpdHlDaGVja1t0MV0sIHQxCiAgICAgYnRweiB0MSwgc2xvd0Nhc2UKKyAg
ICBqbXAgc2xvd0Nhc2UgIyBGSVhNRQogLmNhbGxDb2RlOgotICAgIHByZXBhcmVDYWxsKHQ1LCB0
MiwgdDMsIHQ0KQorICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNz
KSBlbmQpCiAgICAgam1wIHQxLCBKU0VudHJ5UHRyVGFnCiAubm90SlNGdW5jdGlvbjoKICAgICBi
Ym5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEludGVybmFsRnVuY3Rpb25UeXBlLCBzbG93Q2FzZQot
ICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0KQorICAgIHByZXBhcmVDYWxsKHQ1LCB0Miwg
dDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgam1wIGludGVybmFsRnVuY3Rpb25UcmFt
cG9saW5lCiBlbmQKIApAQCAtMjU3MCw3ICsyNTM3LDcgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlu
a0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFs
X2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJs
ZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1f
aml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2Nh
bGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNv
ZGVCbG9jaykgZW5kLCAuc2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9y
KF9sbGludF92aXJ0dWFsX2NhbGwpCiBlbmQpCkBAIC0yNTc5LDcgKzI1NDYsNyBAQCBlbmQpCiAj
IHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9w
KGxsaW50X3ZpcnR1YWxfY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVh
bFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlD
aGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNy
byAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQorICAgIHZpcnR1
YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFj
cm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykgZW5kLCAuc2xv
d0Nhc2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92aXJ0dWFsX2Nh
bGwpCiBlbmQpCkBAIC0yNTg4LDkgKzI1NTUsOSBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5m
byoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfdGFp
bF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFi
bGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9m
dW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxX
aXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwg
bWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKICAgICAg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHRlbXAxKQotICAgICAgICBwcmVwYXJl
Rm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgICAgIHByZXBhcmVG
b3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAg
ICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1wNAogICAgIGVuZCwgLnNsb3dDYXNlKQogLnNs
b3dDYXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBhY2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYxNWZk
NjZkNmI1N2M0MTFlLi45ZmE4M2I1NDA2NTI3MjBiNzIxMjViOTEyOTgyM2RiNTZiOTk0NDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMjI2MCw2ICsyMjYwLDggQEAgbWFjcm8gY2FsbEhlbHBlcihv
cGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWEKIC5ub3RQb2x5bW9ycGhpYzoKICAgICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93CiAg
ICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisg
ICAgc3RvcmVwIHQyLCBDb2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gQ2FsbGVyRnJhbWVBbmRQ
Q1NpemVbc3BdCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvblt0NV0sIHQ1CkBAIC0yMzM5LDYgKzIzNDEsOCBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKG9w
Y29kZU5hbWUsIHNpemUsIGdldCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aQogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBicG5lcSB0MCwgdDMsIC5v
cENhbGxTbG93CiAgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5k
YXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAgICAgc3RvcmVwIHQyLCBDb2RlQmxv
Y2sgKyBQYXlsb2FkT2Zmc2V0IC0gQ2FsbGVyRnJhbWVBbmRQQ1NpemVbc3BdCiAKICAgICAgICAg
LmdvUG9seW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25b
dDVdLCB0NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQppbmRleCA1ZGU3YmNjN2ZkMGQ0ZjA0MGYyZGY5NGJkNDczNDVkODM1
ODY5NDQ3Li44Y2Q3ZGJlMmE0YTI1OTA2NDM2MWQzNmY1NmY4Y2IzZTQ5NTA5ZGI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQpAQCAtMjQ4Myw3ICsyNDgzLDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwg
c2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAKIC5u
b3RQb2x5bW9ycGhpYzoKICAgICBicW5lcSB0MCwgdDEsIC5vcENhbGxTbG93Ci0gICAgcHJlcGFy
ZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1h
Y3JvKGFkZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICBzdG9yZXAg
dDIsIGFkZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhp
Y0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yNTYxLDcgKzI1NjQsMTAgQEAgbWFjcm8gZG9D
YWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBi
cW5lcSB0MCwgdDEsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMs
IHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhh
ZGRyZXNzKQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAgICAg
ICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAgICAgIC5nb1Bv
bHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwg
dDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDcx
MzVmNGY2ZmMyMGNiMzllODViYWJjMWQxY2YxZWFiNThiNjJiZDYuLjI0YzE0YjNmOGY2YjVmNDU1
YmQwYTVhNzdjNTkzMmJlOWY2OGVlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9K
SVRGb3JQcm9sb2d1ZShjb2RlQmxvY2tSZWdpc3RlcikKICAgICAgICAgICAgICAgICBqbXAgd3Mw
LCBXYXNtRW50cnlQdHJUYWcKICAgICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKLSAg
ICAgICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKGNvZGVCbG9ja1JlZ2lzdGVyKQor
ICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNvZGVCbG9ja1JlZ2lzdGVyCiAgICAg
ICAgIGVuZCkKICAgICBlbmQKIGVuZApAQCAtMjgzLDcgKzI4Myw3IEBAIG1hY3JvIHJlc3RvcmVT
dGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIHN1YnAgY2ZyLCB3czEsIHNwCiBlbmQKIAotbWFj
cm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2Fz
bUluc3RhbmNlKQorbWFjcm8gd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgIyBT
ZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJl
c2VydmVDYWxsZXJQQ0FuZENGUigpCiAgICAgcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20o
KQpAQCAtMjkzLDggKzI5Myw5IEBAIG1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIs
IGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKICAgICBsb2FkcCBXYXNtOjpJbnN0
YW5jZTo6bV9vd25lclt3YXNtSW5zdGFuY2VdLCB3czAKICAgICBzdG9yZXAgd3MwLCBUaGlzQXJn
dW1lbnRPZmZzZXRbY2ZyXQogCi0gICAgY29kZUJsb2NrR2V0dGVyKHdzMCkKLSAgICBjb2RlQmxv
Y2tTZXR0ZXIod3MwKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB3czAKKyAgICBhbmRwIH4zLCB3
czAKKyAgICBzdG9yZXAgd3MwLCBDb2RlQmxvY2tbY2ZyXQogCiAgICAgIyBHZXQgbmV3IHNwIGlu
IHdzMSBhbmQgY2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxvYWRpIFdhc206OkxMSW50Q2FsbGVl
OjptX251bUNhbGxlZUxvY2Fsc1t3czBdLCB3czEKQEAgLTUxNCw3ICs1MTUsNyBAQCBvcCh3YXNt
X2Z1bmN0aW9uX3Byb2xvZ3VlLCBtYWNybyAoKQogICAgICAgICBlcnJvcgogICAgIGVuZAogCi0g
ICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBsb2FkV2FzbUluc3RhbmNlRnJvbVRMUykKKyAgICB3YXNtUHJvbG9ndWUobG9hZFdhc21J
bnN0YW5jZUZyb21UTFMpCiAgICAgd2FzbU5leHRJbnN0cnVjdGlvbigpCiBlbmQpCiAKQEAgLTUy
Myw3ICs1MjQsNyBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgbWFjcm8gKCkK
ICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbWFjcm8gKCkgZW5kKQorICAgIHdhc21Q
cm9sb2d1ZShtYWNybyAoKSBlbmQpCiAgICAgd2FzbU5leHRJbnN0cnVjdGlvbigpCiBlbmQpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggYTY5OTMxNTkwOTljY2Mx
YjczOTZhOTdjNThmZDRlZTMxYTVjMTgyZS4uOGRjMmYxNzgyZTBiY2Q1NDcyNWUyNzc5YmJmZTYw
ZmU3N2M2NDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTg5
LDYgKzg5LDcgQEAgc3RydWN0IEpTVHlwZVJhbmdlIHsKICAgICBtYWNybyhSZWdFeHBPYmplY3Qs
IEpTVHlwZTo6UmVnRXhwT2JqZWN0VHlwZSwgSlNUeXBlOjpSZWdFeHBPYmplY3RUeXBlKSBcCiAg
ICAgbWFjcm8oSlNXZWJBc3NlbWJseU1vZHVsZSwgSlNUeXBlOjpXZWJBc3NlbWJseU1vZHVsZVR5
cGUsIEpTVHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJn
dW1lbnRzLCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6RGlyZWN0QXJndW1l
bnRzVHlwZSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZSwgSlNUeXBlOjpGdW5jdGlv
bkV4ZWN1dGFibGVUeXBlLCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpIFwKICAgICBt
YWNybyhTY29wZWRBcmd1bWVudHMsIEpTVHlwZTo6U2NvcGVkQXJndW1lbnRzVHlwZSwgSlNUeXBl
OjpTY29wZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8oQ2xvbmVkQXJndW1lbnRzLCBKU1R5
cGU6OkNsb25lZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlwZSkgXAog
ICAgIG1hY3JvKEpTR2xvYmFsT2JqZWN0LCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUsIEpTVHlw
ZTo6R2xvYmFsT2JqZWN0VHlwZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IGUzMmRjYjBhZDM0YjIzYmNkYTI0NzFhMDNlZTkyY2I1MjMzMzgyMzguLmQ2YzNjM2VkYmFi
YzU3Yjc4Y2VkMjcwYjA1MTA4ZTU3YzA4NjA3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTY5Niw3ICs2OTYsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0Qm91
bmRGdW5jdGlvbihib29sIGlzSlNGdW5jdGlvbiwgYm9vbCBjYW5Db25zdHJ1Y3QpCiAgICAgICAg
ICAgICByZXR1cm4gY2FjaGVkOwogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiByZXN1bHQgPSBn
ZXRIb3N0RnVuY3Rpb24oCiAgICAgICAgICAgICBzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25DYWxs
IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsLAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBO
b0ludHJpbnNpYyA6IEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljLAorICAgICAgICAgICAgc2xv
d0Nhc2UgPyBOb0ludHJpbnNpYyA6IE5vSW50cmluc2ljLCAvLyBGSVhNRQogICAgICAgICAgICAg
Y2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLCBudWxscHRyLCBTdHJpbmcoKSk7CiAgICAgICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1
dGFibGU+KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MjAsNyArNzIwLDcg
QEAgTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldFJlbW90ZUZ1bmN0aW9uKGJvb2wgaXNKU0Z1bmN0
aW9uKQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJs
ZSogcmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2UgPyByZW1v
dGVGdW5jdGlvbkNhbGxHZW5lcmljIDogcmVtb3RlRnVuY3Rpb25DYWxsRm9ySlNGdW5jdGlvbiwK
LSAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBSZW1vdGVGdW5jdGlvbkNhbGxJ
bnRyaW5zaWMsCisgICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogTm9JbnRyaW5z
aWMsIC8vIEZJWE1FCiAgICAgICAgICAgICBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
bnVsbHB0ciwgU3RyaW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxl
PihyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456157</attachid>
            <date>2022-03-30 11:29:01 -0700</date>
            <delta_ts>2022-03-30 14:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220330112900.patch</filename>
            <type>text/plain</type>
            <size>48720</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjUxYmI4ZjIwOTM4NTBlZWRmMDE5YmY5NjAyZDk1MjIyMzRjMTVmLi5mODMxM2JmNDMwNzk4ZWY2
NDBhZWVmMTVmYjdlYTA3YTBjMGY4ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldE1vbm9tb3JwaGlj
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjbGVhckNhbGxlZSk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1Yik6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6c2V0U3R1Yik6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmVt
aXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86
OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpvZmZzZXRPZkNv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OmxpbmtNb25vbW9ycGhpY0NhbGwpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jl
cGF0Y2hJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJs
b2NrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91
dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1l
SW5Qcm9sb2d1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAg
ICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVt
b3RlRnVuY3Rpb24pOgorCiAyMDIyLTAzLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIGNvbnN0YW50cyBidWZmZXIgdG8gbG9hZCBKU0ds
b2JhbE9iamVjdCBpbiBCYXNlbGluZUpJVCB0aHVua3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFjODUx
NDE5NmZkY2ZjOGZhYzE0ZWFjNy4uZTk0Yzg3MDljYjQ3MTc4MzM1YzFjODJlYWI1YTE0MDBhZDVj
N2Q4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKQEAgLTEwOCwxNyArMTA4LDE5IEBAIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IENhbGxMaW5rSW5mbzo6ZG9uZUxvY2F0aW9uKCkKICAgICByZXR1cm4gbV9kb25lTG9j
YXRpb247CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBDYWxsTGlua0luZm86OnNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2Rl
UHRyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSkgJiBwb2x5bW9ycGhpY0NhbGxl
ZU1hc2spKTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLnNldCh2bSwgb3duZXIsIGNhbGxlZSk7
CiAKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1
LmRhdGFJQy5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgdS5kYXRhSUMubV9tb25v
bW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+bV9jYWxsTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9j
YXRpb24sIGNvZGVCbG9jayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRl
cih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMCwxMCArMTMyLDEyIEBAIHZvaWQgQ2Fs
bExpbmtJbmZvOjpjbGVhckNhbGxlZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0
KCkpOwogICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKLSAgICBpZiAoaXNEYXRhSUMo
KSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9
IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24g
PSBudWxscHRyOwotICAgIGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7CisgICAgfSBl
bHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0
aW9uLCBudWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUu
Y29kZUlDLm1fY2FsbGVlTG9jYXRpb24sIG51bGxwdHIpOwogI2Vsc2UKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OCw5ICszMDIsMTEgQEAgdm9pZCBDYWxsTGlu
a0luZm86OnJldmVydENhbGxUb1N0dWIoKQogCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsKICAgICAg
ICAgbV9jYWxsZWVPckNvZGVCbG9jay5jbGVhcigpOworICAgICAgICB1LmRhdGFJQy5tX2NvZGVC
bG9jayA9IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24gPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRp
b24sIG51bGxwdHIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OnJldmVydEp1bXBSZXBsYWNlbWVu
dFRvQnJhbmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFydE9m
QnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uKSwg
Y2FsbGVlR1BSKCksIG51bGxwdHIpOwogI2Vsc2UKQEAgLTM2Myw5ICszNjksMTggQEAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW4KIAogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICAg
ICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
TGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0
aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOyAvLyBQb2x5
bW9ycGhpYyBzdHViIGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHByZXAuCiAgICAgICAgICAgICBq
aXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
Zk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0NhbGxIZWxwZXJzOjpz
ZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNl
dE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihz
Y3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOwogICAgICAgICAg
ICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0
T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAg
IH0KQEAgLTM3NCwxNSArMzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlu
a0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luCiAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIGNhbGxlZUdQUiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihudWxscHRyKSkpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsOworICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tTdG9yZTsKICAgICAgICAgaWYg
KGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAg
ICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSkpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAgIH0g
ZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQu
c3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAg
ICAgICAgIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXpp
bmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAgICAgICAgIH0pOwog
ICAgIH0KQEAgLTQxMSw4ICs0MzEsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldFN0dWIoUmVm
PFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAKICAgICBpZiAoaXNEYXRh
SUMoKSkgewogICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1fY2FsbGVlT3JDb2Rl
QmxvY2suc2xvdCgpKSA9IHBvbHltb3JwaGljQ2FsbGVlTWFzazsKKyAgICAgICAgdS5kYXRhSUMu
bV9jb2RlQmxvY2sgPSBudWxscHRyOyAvLyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSB3aWxs
IHNldCBDb2RlQmxvY2sgaW5zaWRlIGl0LgogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uID0gbV9zdHViLT5jb2RlKCkuY29kZSgpLnJldGFnZ2VkPEpTRW50cnlQ
dHJUYWc+KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQ
b2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29kZUlDLm1fY2FsbGVl
TG9jYXRpb24pLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3R1Yi0+Y29kZSgpLmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5OCwxMSBAQCB2b2lk
IE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCkKIAogICAgIEFTU0VSVChVc2VEYXRhSUM6Ok5vID09IHRoaXMtPnVzZURhdGFJQygpKTsK
IAorICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwo
KTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2Nr
TG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJs
b2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5r
QnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTAxLDkgKzUy
NSwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZh
c3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9wcyhDQ2FsbEhl
bHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0
YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsKICAgICBqaXQu
YWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAg
IG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5h
bFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwog
ICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewog
ICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTE0LDYgKzU0MCw3IEBAIHZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogICAgIEFTU0VSVChtX2NhbGxMb2NhdGlvbik7Cisg
ICAgQVNTRVJUKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24pOwogICAgIGlmIChpc1RhaWxD
YWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRM
YW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC01
MjYsNyArNTUzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGly
ZWN0Q2FsbCgpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxs
TG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CiAKLXZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFn
PiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJn
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKIApAQCAtNTQwLDYg
KzU2Nyw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdl
dChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnCiAgICAgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwg
Y29kZUJsb2NrKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZmIyMGU0NzgxNDc5MzUyMTc1MDQzNDQ1YjI5NzczMWI5
NzEyOTg2Ny4uMzkyMDg2YTA4ZDFiN2E2ZTI2NzFmYzUyMmEzZjljZWZmZDE2NTJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaApAQCAtMTk5LDcg
KzE5OSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBkb25lTG9jYXRpb24oKTsKIAotICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0m
LCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOworICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBK
U09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOwogICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGNsZWFyQ2FsbGVlKCk7CiAg
ICAgSlNPYmplY3QqIGNhbGxlZSgpOwpAQCAtMzE3LDYgKzMxNywxMSBAQCBjbGFzcyBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgbV9jYWxsZWVPckNvZGVC
bG9jayk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgdSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9jb2RlQmxvY2spOworICAgIH0K
KwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
bigpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywg
dSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbik7CkBAIC00MDEsMTQgKzQwNiwxNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uOwog
ICAgIHVuaW9uIFVuaW9uVHlwZSB7CiAgICAgICAgIFVuaW9uVHlwZSgpCi0gICAgICAgICAgICA6
IGRhdGFJQyB7IG51bGxwdHIgfQorICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyLCBudWxs
cHRyIH0KICAgICAgICAgeyB9CiAKICAgICAgICAgc3RydWN0IERhdGFJQyB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOyAvLyBUaGlzIGlzIHdlZWtseSBoZWxkLiBBbmQgY2xl
YXJlZCB3aGVuZXZlciBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uIGlzIGNoYW5nZWQuCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tb25vbW9y
cGhpY0NhbGxEZXN0aW5hdGlvbjsKICAgICAgICAgfSBkYXRhSUM7CiAKICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFn
PiBtX2NvZGVCbG9ja0xvY2F0aW9uOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
UHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2FsbGVlTG9jYXRpb247CiAgICAgICAgIH0gY29kZUlD
OwogICAgIH0gdTsKQEAgLTUwMyw3ICs1MTAsNyBAQCBjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAgICAgdm9pZCBlbWl0RGlyZWN0RmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJik7CiAgICAgdm9pZCBlbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2Fs
bCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwotICAgIHZvaWQgc2V0RGlyZWN0
Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBz
ZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayosIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KTsKICAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYpOwogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggZTk3
NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5YTE1OGFjODQxNi4uOWM2MzBhZDNiYmE1OTc1OTkw
YmU4Y2QwYTM2MDI5Y2ZjZmU0MmVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXBhdGNoLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgbGlua01vbm9tb3JwaGljQ2Fs
bCgKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5r
ZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwg
Y2FsbGVlLCBjb2RlUHRyKTsKKyAgICBjYWxsTGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUo
dm0sIG93bmVyLCBjYWxsZWUsIGNhbGxlZUNvZGVCbG9jaywgY29kZVB0cik7CiAgICAgY2FsbExp
bmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlKTsKIAogICAgIGlmIChz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKQEAgLTE1NjQsNyArMTU2
NCw3IEBAIHZvaWQgbGlua0RpcmVjdENhbGwoCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJs
eUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRhTG9nKCJMaW5raW5nIGNhbGwgaW4g
IiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY29kZU9yaWdp
bigpKSwgIiB0byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spLCAiLCBlbnRyeXBvaW50
IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogCi0gICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxU
YXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOworICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KGpzQ2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KGNhbGxlZUNvZGVCbG9jayksIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQ
dHIpKTsKIAogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCiAgICAgICAgIGNhbGxlZUNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsRnJhbWUsICZjYWxsTGlua0luZm8pOwpAQCAtMTc4Nyw3
ICsxNzg3LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICB3aGlsZSAoYmluYXJ5U3dp
dGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGJpbmFy
eVN3aXRjaC5jYXNlSW5kZXgoKTsKICAgICAgICAgCi0gICAgICAgIENhbGxWYXJpYW50IHZhcmlh
bnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CisgICAgICAgIFBvbHltb3JwaGlj
Q2FsbENhc2UmIGNhbGxDYXNlID0gY2FsbENhc2VzW2Nhc2VJbmRleF07CisgICAgICAgIENhbGxW
YXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cjsKICAgICAgICAgaWYg
KHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CkBAIC0xODEwLDE0ICsxODExLDI2IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGJvb2wgbmVlZHNEb25lSnVtcCA9IGZhbHNlOwogICAg
ICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewogICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIo
c3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAg
ICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5j
b2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+
KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFy
VGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgp
KSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKKyAgICAg
ICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2so
KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5
SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgY2Fs
bHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RhdGFJQykKKyAgICAgICAgICAgIEFTU0VSVCghY2Fs
bExpbmtJbmZvLmlzVGFpbENhbGwoKSk7CisgICAgICAgICAgICBpZiAoaXNEYXRhSUMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNl
LmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAg
ICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwo
KTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
V2UgYXJlIG5vdCBjYWxsaW5nIHlldC4gVGh1cywgc3RhY2tQb2ludGVyUmVnaXN0ZXIgaXMgbm90
IGluY2x1ZGluZyBQQyAmIGZyYW1lUG9pbnRlci4KKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxs
ID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAgICAgIG5lZWRzRG9uZUp1bXAgPSB0
cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVwYXRjaElubGluZXMuaAppbmRleCA1MTcxYmMxMjQwMDUyYzNjY2NkNmU2ZmFmNDY4MjUzMzdl
ZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcwNzE4YjM5NDgyYmIzMDViNzBmOTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaApAQCAtMTk1
LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JX
aXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAKICAgICBEZWZlclRyYXBzIGRl
ZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBqZXR0aXNvbiBpZiB3ZSdyZSBnb2luZyB0byBjYWxs
IHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYgKFVOTElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRD
b2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwor
ICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0g
WyZdICgpIHsKICAgICAgICAgICAgIHZvaWQqIHRocm93VGFyZ2V0ID0gdm0uZ2V0Q1RJVGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CkBA
IC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVh
bEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0s
IGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhhbmRsZVRocm93RXhjZXB0aW9uKCkpOwogICAgIH0K
KwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
ZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKaW5kZXggNDVmMzQzZjBkZDA1OTA3ZjA5OTE3ZGIwM2ExZjQxNGRk
NjgwMTRjYi4uY2RjOTA2ZjRmNGFlYTQ5MTg0YWJiYjYzOWQzMjg4YzRjNTcxNjRhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgorI2luY2x1
ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1
ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3RhY2sg
bGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3RoIG5v
cm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
KS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1fcGxhbi5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSA9
PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQm
IGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZy
YW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOworICAgICAgICB9KTsKKyAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50
cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAppbmRleCAxMTMy
Y2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3Li40YzhmMmVlZGVmYWNiNTI1ZmMy
OGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYg
dm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBm
cmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2RlIGJsb2NrLgotICAgIAorCiAgICAgKmJpdHdpc2Vf
Y2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICsgMSkp
ID0gY29kZUJsb2NrOwogICAgIAogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICIsIFJhd1BvaW50ZXIoc2NyYXRjaCkp
OwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NSRW50cnkoVk0mIHZtLCBDYWxsRgogCiAgICAgLy8g
VGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hPU1JFbnRyeUJ1ZmZlciB3aWxsIGJlIHplcm9lZCBi
eSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAgICAgZGZnQ29tbW9uLT5jYXRjaE9TUkVudHJ5QnVm
ZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUpICogaW5kZXgpOworCisgICAgLy8g
QXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0dGVkIHRvIHRyaWdnZXJpbmcgYW4gT1NSIGVudHJ5
IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVybi4gSGVuY2UsIGl0IGlzIHNhZmUgdG8gbW9kaWZ5
IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1lLT5zZXRDb2RlQmxvY2sob3B0aW1pemVkQ29kZUJs
b2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVudHJ5cG9pbnQtPm1hY2hpbmVDb2RlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2OTVkNTU2YzgxNTJkNzYuLmU2ZTc0M2UxZWM1ZDdj
OWY0MWY5MGU4OWJkMmEyOGE1MzMwNzkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3JhcGgoKS5mcmFtZVJlZ2lzdGVy
Q291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
ICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQuZW1p
dFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVj
a1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9q
aXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgICAgIC8vIENv
ZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBpbiBPU1IgZW50cnkuCiAg
ICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRleCA0NGE5YTFhOThm
Mjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFkNzMzOTk4ZDliODA0NDVh
MjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0OCw2ICsx
NDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMiwgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBoZWFkZXIgZnJvbSBzY3Jh
dGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNvIHJlcGxhY2VzCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKICAgICBq
aXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xNjAsNiArMTYy
LDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVu
a0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdVbnJlYXNvbmFi
bGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5rKCZqaXQpOworCisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9iZTo6Q29udGV4dCYgY3R4
KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCkt
PmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgaml0
LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9w
RW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCBiMWUwMzY5MTQxMGI4MjdiMGMwZWQ0ZDBmZWMyN2Q4NzU1OWM1OTQ0Li5jY2VkMjEzNjQ5ZTZk
YTgzOWE3NDc4OGZiMWVhNGM2NmVhNjEwNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xOTgsMTUgKzE5OCwxNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcHJvYy5zZXROdW1FbnRyeXBv
aW50cyhtX2dyYXBoLm1fbnVtYmVyT2ZFbnRyeXBvaW50cyk7Ci0gICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgubV9jb2RlQmxvY2s7CiAKICAgICAgICAgICAgIFJlZjxC
Mzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvcj4gY2F0Y2hQcm9sb2d1ZUdlbmVyYXRvciA9IGNyZWF0
ZVNoYXJlZFRhc2s8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3JGdW5jdGlvbj4oCi0gICAgICAg
ICAgICAgICAgW2NvZGVCbG9ja10gKENDYWxsSGVscGVycyYgaml0LCBCMzo6QWlyOjpDb2RlJiBj
b2RlKSB7CisgICAgICAgICAgICAgICAgW10oQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNv
ZGUmIGNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1jb2RlLmZyYW1lU2l6ZSgpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
CiAgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0U2F2ZShjb2RlLmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihjb2RlQmxvY2ssIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29kZUJsb2NrIGluIHRoZSBzdGFjayBp
cyBhbHJlYWR5IHJlcGxhY2VkIGluIEZUTDo6cHJlcGFyZU9TUkVudHJ5LgogICAgICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNhdGNoRW50cnlwb2ludEluZGV4
IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRJbmRleFRvQ2F0Y2hCeXRlY29kZUluZGV4LmtleXMoKSkg
ewpAQCAtMjcyLDkgKzI3MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fcHJv
Yy5hZGRGYXN0Q29uc3RhbnQobV9udW1iZXJUYWctPmtleSgpKTsKICAgICAgICAgbV9wcm9jLmFk
ZEZhc3RDb25zdGFudChtX25vdENlbGxNYXNrLT5rZXkoKSk7CiAgICAgICAgIAotICAgICAgICAv
LyBXZSBkb24ndCB3YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdlYWsgcG9pbnRlciB0byBp
dHNlbGYgYmVjYXVzZQotICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFsd2F5cyBn
ZXQgY29sbGVjdGVkLgotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIGFkZHJlc3NGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpKTsKKyAgICAgICAgLy8gV2hlbiBydW5u
aW5nIEZUTCBjb2RlLCB3ZSBhbHJlYWR5IHN0b3JlIENvZGVCbG9jayB0byBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2suCiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCiAgICAgICAg
IHVuc2lnbmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQxMi4uODY3NTFkYjFlYWMy
ZmRlNjI3ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMjAzLDMwICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aQogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUlu
UHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2Vk
Q29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0gICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZXN1bHQpOwotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFy
ZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gYnJhbmNoVGVzdFB0
cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJh
cmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3Vs
dCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlmIChtX3VubGlua2VkQ29k
ZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQs
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSksIHJl
c3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlv
bkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsKLQotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om9mZnNl
dE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihy
ZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNl
bGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MywxMCAr
NzI5LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFw
cGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBz
dGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7
Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0g
ICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlk
LCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVK
SVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVT
dGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAg
ICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2
Nyw4ICs3NDEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmco
SklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBl
KCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJv
bG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5j
dGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+
Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAg
IHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklU
KSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxD
YWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBM
YWJlbCBiZWdpbkxhYmVsKHRoaXMpOwogCkBAIC04MzEsNyArODE1LDE3IEBAIHZvaWQgSklUOjpj
b21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKICAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUo
cmVnVDApOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJv
YmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAg
ICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsK
KyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxG
cmFtZSo+KCkpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAg
ICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZlNob3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxv
YWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0
NDFlY2FmMmZjMjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVy
LCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1Rv
RnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBl
eGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAzYzRhM2FlM2E5ODhjZWU5
NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi5lYzRmYTJlMGU1MjNlN2ZhNjE0N2Y5ZDIwOGYzZWQz
MmZkZmZhZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KICAgICBq
aXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Q0
LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkp
LAogICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5qdW1w
KCkpOyAvLyBGSVhNRQogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtu
b3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2lu
ZyBhIGZhc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQppbmRleCAzZTJjNmRmNjBhNDc4Y2ExMDlhYWRhOGMzM2Q2MGM5OTRiNWQz
YzAxLi41ZmRhZjYzZWQ1MzFjZTMzZGI4OThmZDQ5MTZkOWI4ZmZmNTM2MTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBA
IC0xMTkyLDcgKzExOTIsOCBAQCBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogICAgIGVuZAogZW5k
CiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCkKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCwgc3RvcmVDb2RlQmxvY2spCisgICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9h
ZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXplW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VG
b3JSZWd1bGFyQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIs
IGNhbGxQdHJUYWcpCkBAIC0xMjA4LDcgKzEyMDksNyBAQCBlbmQKIAogIyBzcCBwb2ludHMgdG8g
dGhlIG5ldyBmcmFtZSArIENhbGxlckZyYW1lQW5kUENTaXplCiAjIFdlIGxlYXZlIGNmciB0ZW1w
NCB0byB1c2UgaXQgZm9yIHVudGFnZ2luZy4KLW1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1w
MSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwg
dGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMjYzLDYgKzEyNjQsMTIgQEAgbWFjcm8g
cHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAgIGVuZAog
CiAgICAgbW92ZSB0ZW1wMSwgc3AKKworICAgIGlmIEFSTXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBv
ciBDX0xPT1Agb3IgQ19MT09QX1dJTiBvciBNSVBTIG9yIFJJU0NWNjQKKyAgICAgICAgc3RvcmVD
b2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXpl
W3NwXSkKKyAgICBlbHNlCisgICAgICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxv
YWRPZmZzZXQgLSBQdHJTaXplW3NwXSkKKyAgICBlbmQKIGVuZAogCiBtYWNybyBpbnZva2VGb3JU
YWlsQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQ
dHJUYWcpCkBAIC0xMzAzLDcgKzEzMTAsNyBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAg
ICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAgICAgICAgICAgIGJ0cHogY2Fs
bGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQ
dHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAg
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAg
ICAgIC5kb250VXBkYXRlU1A6CiAgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29k
ZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAg
ICAgICAgIGVuZCkKQEAgLTE0ODIsNDYgKzE0ODksNiBAQCBtYWNybyBhc3NlcnROb3RDb25zdGFu
dChzaXplLCBpbmRleCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29k
ZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRw
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBidHB6IHRhcmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlv
blJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRh
VGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAg
ICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1h
Y3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQot
ICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0
ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBidHB6IHRh
cmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhl
Y3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29u
c3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAg
ICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjptX2NvZGVCbG9ja1t0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0
ZXIpCi0gICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQotZW5kCi0KLW1h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgICMgTm90
aGluZyB0byBkbyEKLWVuZAotCiBtYWNybyBjb252ZXJ0Q2FsbGVlVG9WTShjYWxsZWUpCiAgICAg
YnRwbnogY2FsbGVlLCAoY29uc3RleHByIFByZWNpc2VBbGxvY2F0aW9uOjpoYWxmQWxpZ25tZW50
KSwgLnByZWNpc2VBbGxvY2F0aW9uCiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIGNhbGxlZQpA
QCAtMTUzNCw3ICsxNTAxLDcgQEAgZW5kCiAKICMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJl
ZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgog
IyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCi1tYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNl
U2xvd1BhdGgpCittYWNybyBwcm9sb2d1ZShvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAg
ICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAg
ICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKIApAQCAtMTU0Myw4ICsxNTEwLDcgQEAgbWFjcm8g
cHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0
cmFjZVNsb3dQYXRoKQogICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0aCkKICAgICAg
ICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc3AKICAgICBlbmQKLSAgICBj
b2RlQmxvY2tHZXR0ZXIodDEpCi0gICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQogICAgIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAg
ICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0MAogICAgICAgICBiYWRk
aXMgNSwgKFVubGlua2VkQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBCYXNlbGlu
ZUV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlcilbdDBdLCAuY29udGludWUKQEAgLTE1ODQsNyAr
MTU1MCw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVy
LCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgICAgIGptcCByMCwgSlNFbnRy
eVB0clRhZwogICAgICAgICBlbmQKICAgICAucmVjb3ZlcjoKLSAgICAgICAgbm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIodDEpCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAg
IC5jb250aW51ZToKICAgICBlbmQKIApAQCAtMTYyMyw3ICsxNTg5LDcgQEAgbWFjcm8gcHJvbG9n
dWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNs
b3dQYXRoKQogLnN0YWNrSGVpZ2h0T0tHZXRDb2RlQmxvY2s6CiAgICAgIyBTdGFjayBjaGVjayBz
bG93IHBhdGggcmV0dXJuZWQgdGhhdCB0aGUgc3RhY2sgd2FzIG9rLgogICAgICMgU2luY2UgdGhl
eSB3ZXJlIGNsb2JiZXJlZCwgbmVlZCB0byBnZXQgQ29kZUJsb2NrIGFuZCBuZXcgc3AKLSAgICBu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKICAgICBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayh0MSwgdDApCiAgICAgc3Vi
cCBjZnIsIHQwLCB0MAogCkBAIC0yMDI2LDM5ICsxOTkyLDM5IEBAIG5vV2lkZShsbGludF9vcF93
aWRlMzIpCiBub1dpZGUobGxpbnRfb3BfZW50ZXIpCiAKIG9wKGxsaW50X3Byb2dyYW1fcHJvbG9n
dWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5v
dEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2Vf
cHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfbW9kdWxlX3Byb2dy
YW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZXZh
bF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dl
dHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NhbGwpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2Fs
bCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oMCkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3Vl
KGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1Nl
dHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9sb2d1ZShfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAg
ICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Bcml0
eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JD
YWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKQEAgLTIwNjYsNyArMjAzMiw3IEBA
IG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQogZW5kKQog
CiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQot
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAg
cHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25B
cml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQog
LmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigx
KQpAQCAtMjUyNyw3ICsyNDkzLDcgQEAgbWFjcm8gbGlua1Nsb3dQYXRoRm9yKGZ1bmN0aW9uKQog
ICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIGJ0cHogcjEsIC5kb05vdFRyYXNoCiAgICAg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKQotICAgIHByZXBhcmVGb3JUYWlsQ2Fs
bCh0MSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQs
IG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDQKIC5kb05vdFRy
YXNoOgogICAgIGptcCB0MCwgSlNFbnRyeVB0clRhZwpAQCAtMjU1MCwxMiArMjUxNiwxMyBAQCBt
YWNybyB2aXJ0dWFsVGh1bmtGb3Iob2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIGludGVy
bmFsRnVuY3Rpb25UcmFtcG9saW5lLAogLmlzRXhlY3V0YWJsZToKICAgICBsb2FkcCBvZmZzZXRP
ZkpJVENvZGVXaXRoQXJpdHlDaGVja1t0MV0sIHQxCiAgICAgYnRweiB0MSwgc2xvd0Nhc2UKKyAg
ICBqbXAgc2xvd0Nhc2UgIyBGSVhNRQogLmNhbGxDb2RlOgotICAgIHByZXBhcmVDYWxsKHQ1LCB0
MiwgdDMsIHQ0KQorICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNz
KSBlbmQpCiAgICAgam1wIHQxLCBKU0VudHJ5UHRyVGFnCiAubm90SlNGdW5jdGlvbjoKICAgICBi
Ym5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEludGVybmFsRnVuY3Rpb25UeXBlLCBzbG93Q2FzZQot
ICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0KQorICAgIHByZXBhcmVDYWxsKHQ1LCB0Miwg
dDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgam1wIGludGVybmFsRnVuY3Rpb25UcmFt
cG9saW5lCiBlbmQKIApAQCAtMjU3MCw3ICsyNTM3LDcgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlu
a0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFs
X2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJs
ZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1f
aml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2Nh
bGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNv
ZGVCbG9jaykgZW5kLCAuc2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9y
KF9sbGludF92aXJ0dWFsX2NhbGwpCiBlbmQpCkBAIC0yNTc5LDcgKzI1NDYsNyBAQCBlbmQpCiAj
IHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9w
KGxsaW50X3ZpcnR1YWxfY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVh
bFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlD
aGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNy
byAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQorICAgIHZpcnR1
YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFj
cm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykgZW5kLCAuc2xv
d0Nhc2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92aXJ0dWFsX2Nh
bGwpCiBlbmQpCkBAIC0yNTg4LDkgKzI1NTUsOSBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5m
byoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfdGFp
bF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFi
bGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9m
dW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxX
aXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwg
bWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKICAgICAg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHRlbXAxKQotICAgICAgICBwcmVwYXJl
Rm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgICAgIHByZXBhcmVG
b3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAg
ICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1wNAogICAgIGVuZCwgLnNsb3dDYXNlKQogLnNs
b3dDYXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBhY2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYxNWZk
NjZkNmI1N2M0MTFlLi5hZDI1MDE3ZWYwYjQ3ZmMwYjA1MDQ3NDdkYjU3NWI5MTUwMThhZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMjI1OSw3ICsyMjU5LDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIo
b3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhCiAKIC5ub3RQb2x5bW9ycGhpYzoKICAgICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93
Ci0gICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQz
LCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAg
ICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMu
bV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yMzM4LDcgKzIzNDEsMTAg
QEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAg
ICAgICAgICAgICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJl
Q2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQs
IHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0Mgor
ICAgICAgICAgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5kKQogCiAg
ICAgICAgIC5nb1BvbHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3Rp
bmF0aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3
MzQ1ZDgzNTg2OTQ0Ny4uOGNkN2RiZTJhNGEyNTkwNjQzNjFkMzZmNTZmOGNiM2U0OTUwOWRiOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTI0ODMsNyArMjQ4MywxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQs
IHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAg
c3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9u
b21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjU2MSw3ICsyNTY0LDEwIEBAIG1h
Y3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAg
ICAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwo
dDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwg
bWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAg
ICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAg
ICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
blt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNz
ZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpp
bmRleCA3MTM1ZjRmNmZjMjBjYjM5ZTg1YmFiYzFkMWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIzZjhm
NmI1ZjQ1NWJkMGE1YTc3YzU5MzJiZTlmNjhlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE0Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVja1N3
aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAg
am1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCiAgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292
ZXI6Ci0gICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdp
c3RlcikKKyAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdpc3Rl
cgogICAgICAgICBlbmQpCiAgICAgZW5kCiBlbmQKQEAgLTI4Myw3ICsyODMsNyBAQCBtYWNybyBy
ZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAgICBzdWJwIGNmciwgd3MxLCBzcAogZW5k
CiAKLW1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwg
bG9hZFdhc21JbnN0YW5jZSkKK21hY3JvIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlKQog
ICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgog
ICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2Vk
QnlXYXNtKCkKQEAgLTI5Myw4ICsyOTMsOSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2Nr
R2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgV2Fz
bTo6SW5zdGFuY2U6Om1fb3duZXJbd2FzbUluc3RhbmNlXSwgd3MwCiAgICAgc3RvcmVwIHdzMCwg
VGhpc0FyZ3VtZW50T2Zmc2V0W2Nmcl0KIAotICAgIGNvZGVCbG9ja0dldHRlcih3czApCi0gICAg
Y29kZUJsb2NrU2V0dGVyKHdzMCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgd3MwCisgICAgYW5k
cCB+Mywgd3MwCisgICAgc3RvcmVwIHdzMCwgQ29kZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0IG5l
dyBzcCBpbiB3czEgYW5kIGNoZWNrIHN0YWNrIGhlaWdodC4KICAgICBsb2FkaSBXYXNtOjpMTElu
dENhbGxlZTo6bV9udW1DYWxsZWVMb2NhbHNbd3MwXSwgd3MxCkBAIC01MTQsNyArNTE1LDcgQEAg
b3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgbWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAgICBl
bmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVC
bG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZUZyb21UTFMpCisgICAgd2FzbVByb2xvZ3VlKGxv
YWRXYXNtSW5zdGFuY2VGcm9tVExTKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQog
CkBAIC01MjMsNyArNTI0LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1h
Y3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNv
ZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkKKyAg
ICB3YXNtUHJvbG9ndWUobWFjcm8gKCkgZW5kKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQog
ZW5kKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGE2OTkzMTU5
MDk5Y2NjMWI3Mzk2YTk3YzU4ZmQ0ZWUzMWE1YzE4MmUuLjhkYzJmMTc4MmUwYmNkNTQ3MjVlMjc3
OWJiZmU2MGZlNzdjNjQ3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5o
CkBAIC04OSw2ICs4OSw3IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oUmVnRXhw
T2JqZWN0LCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUsIEpTVHlwZTo6UmVnRXhwT2JqZWN0VHlw
ZSkgXAogICAgIG1hY3JvKEpTV2ViQXNzZW1ibHlNb2R1bGUsIEpTVHlwZTo6V2ViQXNzZW1ibHlN
b2R1bGVUeXBlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSkgXAogICAgIG1hY3JvKERp
cmVjdEFyZ3VtZW50cywgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkRpcmVj
dEFyZ3VtZW50c1R5cGUpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGUsIEpTVHlwZTo6
RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgSlNUeXBlOjpGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKSBc
CiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUs
IEpTVHlwZTo6U2NvcGVkQXJndW1lbnRzVHlwZSkgXAogICAgIG1hY3JvKENsb25lZEFyZ3VtZW50
cywgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkNsb25lZEFyZ3VtZW50c1R5
cGUpIFwKICAgICBtYWNybyhKU0dsb2JhbE9iamVjdCwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBl
LCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEyNDcxYTAzZWU5MmNiNTIzMzM4MjM4Li5kNmMz
YzNlZGJhYmM1N2I3OGNlZDI3MGIwNTEwOGU1N2MwODYwN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC02OTYsNyArNjk2LDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogVk06
OmdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KQog
ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVz
dWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0
aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKLSAgICAgICAgICAgIHNsb3dD
YXNlID8gTm9JbnRyaW5zaWMgOiBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAgICAg
ICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBOb0ludHJpbnNpYywgLy8gRklYTUUKICAgICAg
ICAgICAgIGNhbkNvbnN0cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3Qg
OiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0aW9uQXND
b25zdHJ1Y3RvciwgbnVsbHB0ciwgU3RyaW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRp
dmVFeGVjdXRhYmxlPihyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzIwLDcg
KzcyMCw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRSZW1vdGVGdW5jdGlvbihib29sIGlz
SlNGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CiAgICAgICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIHJlc3VsdCA9IGdldEhvc3RGdW5jdGlvbigKICAgICAgICAgICAgIHNsb3dDYXNl
ID8gcmVtb3RlRnVuY3Rpb25DYWxsR2VuZXJpYyA6IHJlbW90ZUZ1bmN0aW9uQ2FsbEZvckpTRnVu
Y3Rpb24sCi0gICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogUmVtb3RlRnVuY3Rp
b25DYWxsSW50cmluc2ljLAorICAgICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IE5v
SW50cmluc2ljLCAvLyBGSVhNRQogICAgICAgICAgICAgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IsIG51bGxwdHIsIFN0cmluZygpKTsKICAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhl
Y3V0YWJsZT4ocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456176</attachid>
            <date>2022-03-30 14:44:48 -0700</date>
            <delta_ts>2022-03-30 19:03:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220330144447.patch</filename>
            <type>text/plain</type>
            <size>54496</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzRkYWQ3MzVjYTJhYjQwNjE0ZDgwNmRlODhlNGJkOTlhNWZkYjdmLi4xNDUwYWEyYTcyMTEzODMw
MTk0YzU2ZTFhODg3M2UwM2EwNDg2ZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExM
aW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93
ZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhv
dXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFt
ZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjpnZXRCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OmdldFJl
bW90ZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6ZG9PU1JFbnRyeSk6CisKIDIwMjItMDMtMzAgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSAtLXVzZVByb2JlT1NS
RXhpdCBvcHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0NQVS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuaAppbmRleCBiM2I3
Y2U1NDgzY2ZlNmQ0YTkzOGY0MDAzNjkyYjczM2RmYzE4NGM5Li4xMjVlYjZmODYxYWQwZjRkYTA0
ZjliZWUxYzI2MmYyYjEyNjVmNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0NQVS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BV
LmgKQEAgLTE2OCw1ICsxNjgsMjMgQEAgQUxXQVlTX0lOTElORSBpbnQ2NF90IGh3TDNDYWNoZVNp
emUoKSB7IHJldHVybiAwOyB9CiBBTFdBWVNfSU5MSU5FIGludDMyX3QgaHdQaHlzaWNhbENQVU1h
eCgpIHsgcmV0dXJuIGtlcm5UQ1NNQXdhcmVOdW1iZXJPZlByb2Nlc3NvckNvcmVzKCk7IH0KICNl
bmRpZgogCitjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQorewor
I2lmIEVOQUJMRShDX0xPT1ApCisgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRl
clJlZ2lzdGVyIGFuZCBsaW5rUmVnaXN0ZXIKKyAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7
CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1l
UG9pbnRlclJlZ2lzdGVyCisgICAgcmV0dXJuIHNpemVvZih2b2lkKik7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCisgICAg
Ly8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCBsaW5rUmVnaXN0
ZXIKKyAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7CisjZWxzZQorI2Vycm9yIHVuc3VwcG9y
dGVkIGFyY2hpdGVjdHVyZXMKKyNlbmRpZgorfQorCisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5k
ZXggMzcxNmYyYWY4NTllZGE0MTFjODUxNDE5NmZkY2ZjOGZhYzE0ZWFjNy4uYWZhZWMxZTZhMzE4
ZjVlNzg4NmU3YTA2NjM5MDgzZWVhYmI0ZWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTEwOCwxNyArMTA4LDE5IEBAIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IENhbGxMaW5rSW5mbzo6ZG9uZUxvY2F0aW9u
KCkKICAgICByZXR1cm4gbV9kb25lTG9jYXRpb247CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpz
ZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxs
ZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBD
YWxsTGlua0luZm86OnNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
SlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Rp
cmVjdCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNh
bGxlZSkgJiBwb2x5bW9ycGhpY0NhbGxlZU1hc2spKTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2Nr
LnNldCh2bSwgb3duZXIsIGNhbGxlZSk7CiAKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAo
aXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsK
ICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7
Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlu
a0luZm8qPih0aGlzKS0+bV9jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KGNvZGVQdHIpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVy
KHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIGNvZGVCbG9jayk7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxs
ZWUpOwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEz
MCwxMCArMTMyLDEyIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpjbGVhckNhbGxlZSgpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0KCkpOwogICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xl
YXIoKTsKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAg
ICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9u
b21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBudWxscHRyOwotICAgIGVsc2UgaWYgKCFjbGVhcmVk
QnlKZXR0aXNvbigpKSB7CisgICAgfSBlbHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgewog
I2lmIEVOQUJMRShKSVQpCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1
LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24sIG51bGxwdHIp
OwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OCw5
ICszMDIsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnJldmVydENhbGxUb1N0dWIoKQogCiAgICAg
aWYgKGlzRGF0YUlDKCkpIHsKICAgICAgICAgbV9jYWxsZWVPckNvZGVCbG9jay5jbGVhcigpOwor
ICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlD
Lm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAj
aWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUu
Y29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBDQ2FsbEhlbHBl
cnM6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNv
ZGVJQy5tX2NhbGxlZUxvY2F0aW9uKSwgY2FsbGVlR1BSKCksIG51bGxwdHIpOwogI2Vsc2UKQEAg
LTM2Myw5ICszNjksMTggQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6
ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KIAogICAgICAgICBpZiAo
aXNUYWlsQ2FsbCkgewogICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BS
KGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkp
LCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9p
bnRlckRlbHRhKCkpKSk7CisKICAgICAgICAgICAgIGdvUG9seW1vcnBoaWMubGluaygmaml0KTsg
Ly8gUG9seW1vcnBoaWMgc3R1YiBoYW5kbGVzIHRhaWwgY2FsbCBzdGFjayBwcmVwLgogICAgICAg
ICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwg
b2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVs
cGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQUik7CisgICAg
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BS
LCBvZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3Rv
cmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSk7CisKICAgICAgICAgICAgIGdvUG9seW1vcnBoaWMubGluaygmaml0KTsKICAg
ICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIs
IG9mZnNldE9mTW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwog
ICAgICAgICB9CkBAIC0zNzQsMTUgKzM4OSwyMCBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgog
ICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaFB0cldpdGhQYXRjaChDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIGNhbGxlZUNoZWNrLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobnVsbHB0cikpKTsKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbDsK
KyAgICAgICAgQ0NhbGxIZWxwZXJzOjpEYXRhTGFiZWxQdHIgY29kZUJsb2NrU3RvcmU7CiAgICAg
ICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsK
KyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAg
ICAgICAgICAgY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgfSBlbHNlCisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldp
dGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgICAgICAgICAgY2Fs
bCA9IGppdC5uZWFyQ2FsbCgpOworICAgICAgICB9CiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Y2FsbExpbmtJbmZvKTsKICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxMaW5r
SW5mbyo+KGNhbGxMaW5rSW5mbyktPm1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwogICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT51LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGNhbGxlZUNoZWNrKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAt
NDExLDggKzQzMSwxMCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6c2V0U3R1YihSZWY8UG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmU+JiYgbmV3U3R1YikKIAogICAgIGlmIChpc0RhdGFJQygpKSB7CiAg
ICAgICAgICpiaXR3aXNlX2Nhc3Q8dWludHB0cl90Kj4obV9jYWxsZWVPckNvZGVCbG9jay5zbG90
KCkpID0gcG9seW1vcnBoaWNDYWxsZWVNYXNrOworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9j
ayA9IG51bGxwdHI7IC8vIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIHdpbGwgc2V0IENvZGVC
bG9jayBpbnNpZGUgaXQuCiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24gPSBtX3N0dWItPmNvZGUoKS5jb2RlKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsK
ICAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5j
b2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBsYWNlV2l0aEp1bXAoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRP
ZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiks
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dHViLT5jb2RlKCkuY29kZSgpKSk7CkBAIC00NzYsOSArNDk4LDExIEBAIHZvaWQgT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0KQogCiAg
ICAgQVNTRVJUKFVzZURhdGFJQzo6Tm8gPT0gdGhpcy0+dXNlRGF0YUlDKCkpOwogCisgICAgYXV0
byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgIGpp
dC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAg
ICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVy
bmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgdS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7
CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7
CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CkBAIC01MDEsOSArNTI1LDExIEBAIHZv
aWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFNjb3BlCiAgICAgaml0LmVtaXROb3BzKENDYWxsSGVscGVyczo6cGF0
Y2hhYmxlSnVtcFNpemUoKSk7CiAKICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICBhdXRv
IGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8
aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgIGF1dG8gY2FsbCA9
IGppdC5uZWFyVGFpbENhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUu
Y29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlu
a1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2Fs
bCgpOwpAQCAtNTE0LDYgKzU0MCw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5p
dGlhbGl6ZURpcmVjdENhbGwoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwog
ICAgIEFTU0VSVChtX2NhbGxMb2NhdGlvbik7CisgICAgQVNTRVJUKHUuY29kZUlDLm1fY29kZUJs
b2NrTG9jYXRpb24pOwogICAgIGlmIChpc1RhaWxDYWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29k
ZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4o
WyZdKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC01MjYsNyArNTUzLDcgQEAgdm9pZCBPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7
CiB9CiAKLXZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChD
b2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdD
YWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChpc0RpcmVjdCgpKTsKIApAQCAtNTQwLDYgKzU2Nyw3IEBAIHZvaWQgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5
UHRyVGFnCiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2Nh
bGxMb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIo
dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZmIy
MGU0NzgxNDc5MzUyMTc1MDQzNDQ1YjI5NzczMWI5NzEyOTg2Ny4uMzkyMDg2YTA4ZDFiN2E2ZTI2
NzFmYzUyMmEzZjljZWZmZDE2NTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIENhbGxMaW5rSW5m
byA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRpb24oKTsKIAotICAg
IHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOworICAgIHZvaWQgc2V0TW9u
b21vcnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sq
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgc2V0U2xv
d1BhdGhDYWxsRGVzdGluYXRpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
KTsKICAgICB2b2lkIGNsZWFyQ2FsbGVlKCk7CiAgICAgSlNPYmplY3QqIGNhbGxlZSgpOwpAQCAt
MzE3LDYgKzMxNywxMSBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2Vu
dGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KENhbGxMaW5rSW5mbywgbV9jYWxsZWVPckNvZGVCbG9jayk7CiAgICAgfQogCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgdSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBl
LCBkYXRhSUMubV9jb2RlQmxvY2spOworICAgIH0KKwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgdSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25U
eXBlLCBkYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbik7CkBAIC00MDEsMTQgKzQw
NiwxNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2Rl
PENhbGxMaW5rSW5mbz4gewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uOwogICAgIHVuaW9uIFVuaW9uVHlwZSB7CiAgICAg
ICAgIFVuaW9uVHlwZSgpCi0gICAgICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIgfQorICAgICAg
ICAgICAgOiBkYXRhSUMgeyBudWxscHRyLCBudWxscHRyIH0KICAgICAgICAgeyB9CiAKICAgICAg
ICAgc3RydWN0IERhdGFJQyB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOyAv
LyBUaGlzIGlzIHdlZWtseSBoZWxkLiBBbmQgY2xlYXJlZCB3aGVuZXZlciBtX21vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uIGlzIGNoYW5nZWQuCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbjsKICAgICAg
ICAgfSBkYXRhSUM7CiAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIENvZGVMb2NhdGlv
bkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NvZGVCbG9ja0xvY2F0aW9uOwogICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2Fs
bGVlTG9jYXRpb247CiAgICAgICAgIH0gY29kZUlDOwogICAgIH0gdTsKQEAgLTUwMyw3ICs1MTAs
NyBAQCBjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5r
SW5mbyB7CiAgICAgdm9pZCBlbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJik7CiAgICAg
dm9pZCBlbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1i
ZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGly
ZWN0Q2FsbCgpOwotICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJl
bDxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9j
ayosIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGVtaXRTbG93
UGF0aChWTSYsIENDYWxsSGVscGVycyYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2Fs
bExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggZTk3NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5
YTE1OGFjODQxNi4uOTY2NTA3ZDU5MDdmZDMzN2I4ZmYxOWYxZTI2MjkyNDZkZTA4MjA5NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgbGlua01vbm9tb3JwaGljQ2FsbCgKICAgICBBU1NFUlQob3duZXIpOwogCiAg
ICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5rZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZvLnNl
dE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlLCBjb2RlUHRyKTsKKyAgICBjYWxs
TGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUsIGNhbGxlZUNv
ZGVCbG9jaywgY29kZVB0cik7CiAgICAgY2FsbExpbmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKHZt
LCBvd25lciwgY2FsbGVlKTsKIAogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2Fs
bGVyQ29kZUJsb2NrKSkKQEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgbGlua0RpcmVjdENhbGwo
CiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAg
ICAgICBkYXRhTG9nKCJMaW5raW5nIGNhbGwgaW4gIiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyQ29k
ZUJsb2NrLCBjYWxsTGlua0luZm8uY29kZU9yaWdpbigpKSwgIiB0byAiLCBwb2ludGVyRHVtcChj
YWxsZWVDb2RlQmxvY2spLCAiLCBlbnRyeXBvaW50IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogCi0g
ICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNF
bnRyeVB0clRhZz4oY29kZVB0cikpOworICAgIGNhbGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFy
Z2V0KGpzQ2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGNhbGxlZUNvZGVCbG9jayksIENvZGVMb2Nh
dGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKIAogICAgIGlmIChjYWxsZWVDb2Rl
QmxvY2spCiAgICAgICAgIGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsRnJh
bWUsICZjYWxsTGlua0luZm8pOwpAQCAtMTc4Nyw3ICsxNzg3LDggQEAgdm9pZCBsaW5rUG9seW1v
cnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDYWwKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAg
ICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGJpbmFyeVN3aXRjaC5jYXNlSW5kZXgoKTsKICAgICAg
ICAgCi0gICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52
YXJpYW50KCk7CisgICAgICAgIFBvbHltb3JwaGljQ2FsbENhc2UmIGNhbGxDYXNlID0gY2FsbENh
c2VzW2Nhc2VJbmRleF07CisgICAgICAgIENhbGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZS52
YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gY29kZVB0cjsKICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CkBA
IC0xODEwLDE0ICsxODExLDI1IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGJv
b2wgbmVlZHNEb25lSnVtcCA9IGZhbHNlOwogICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewog
ICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoc3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25h
cHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICBpZiAoY2FsbENhc2Uu
Y29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRP
ZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkp
KSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWls
Q2FsbCgpOwogICAgICAgICB9IGVsc2UgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsK
ICAgICAgICAgICAgIHN0dWJKaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOworICAgICAgICAg
ICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygpKQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0g
c3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
IChpc0RhdGFJQykKKyAgICAgICAgICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzVGFpbENhbGwo
KSk7CisgICAgICAgICAgICBpZiAoaXNEYXRhSUMpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2Fs
bENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0
dWJKaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBub3QgY2FsbGluZyB5ZXQuIFRodXMsIHN0YWNrUG9p
bnRlclJlZ2lzdGVyIGlzIG5vdCBpbmNsdWRpbmcgUEMgJiBmcmFtZVBvaW50ZXIuCisgICAgICAg
ICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNh
bGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAg
ICBuZWVkc0RvbmVKdW1wID0gdHJ1ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmgKaW5kZXggNTE3MWJjMTI0MDA1MmMz
Y2NjZDZlNmZhZjQ2ODI1MzM3ZWUzZTc4OS4uOTU4ZDdmYjhiM2IzNzcxMDQ3MDcxOGIzOTQ4MmJi
MzA1YjcwZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
cGF0Y2hJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0
Y2hJbmxpbmVzLmgKQEAgLTE5NSw4ICsxOTUsOCBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0
dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgog
CiAgICAgRGVmZXJUcmFwcyBkZWZlclRyYXBzKHZtKTsgLy8gV2UgY2FuJ3QgamV0dGlzb24gaWYg
d2UncmUgZ29pbmcgdG8gY2FsbCB0aGlzIENvZGVCbG9jay4KIAotICAgIGlmIChVTkxJS0VMWSgh
ZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkp
IHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAgYXV0byBoYW5k
bGVUaHJvd0V4Y2VwdGlvbiA9IFsmXSAoKSB7CiAgICAgICAgICAgICB2b2lkKiB0aHJvd1Rhcmdl
dCA9IHZtLmdldENUSVRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aCgpLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpOwpAQCAtMjEyLDYgKzIxMiw3IEBAIEFMV0FZU19JTkxJTkUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBoYW5kbGVUaHJvd0V4
Y2VwdGlvbigpKTsKICAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCB3YXNtIElDLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGQ1ZWE5ZDY3NTk3NTVh
Mzk0ZDZmNTVlZDdkNzI2YWZmZWFmNzZhMWQuLmQ4NWUwNjUxMTU4YmMyNGI1NmVmZWQxODIwNjM5
MGVhMTI4ZjFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dl
bmVyYXRvcnMuaCIKICNpbmNsdWRlICJWTS5oIgogCkBAIC0xMTAsNyArMTExLDE0IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCiAgICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUg
ZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlz
IGluCiAgICAgLy8gYm90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBh
biBleGNlcHRpb24gaGFuZGxlcikuCiAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBpZiAobV9ncmFwaC5tX3BsYW4uY29kZUJs
b2NrKCktPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7CisgICAgICAgIHByb2JlRGVidWco
Wz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6REZHSklUKTsKKyAg
ICAgICAgfSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVT
ZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAKaW5kZXggMTEzMmNmMGQ5ZjY1YjEzOTdmZWI5ZWI5NTcxNDFlYjRkMTE1ODVmNy4u
NGM4ZjJlZWRlZmFjYjUyNWZjMjhjODJhMjNjN2UzNmVjNzc4NGI1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKQEAgLTMzNCw5ICszMzQsOSBAQCB2b2lkKiBw
cmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjbwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgCisKICAgICAv
LyA3KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8gaGF2ZSB0aGUgcmlnaHQgY29kZSBibG9jay4KLSAg
ICAKKwogICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHBpdm90IC0gKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayArIDEpKSA9IGNvZGVCbG9jazsKICAgICAKICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NSIHJldHVybmluZyBkYXRhIGJ1ZmZlciAiLCBS
YXdQb2ludGVyKHNjcmF0Y2gpKTsKQEAgLTQwOCw2ICs0MDgsMTAgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IHByZXBhcmVDYXRjaE9TUkVudHJ5KFZNJiB2
bSwgQ2FsbEYKIAogICAgIC8vIFRoZSBhY3RpdmUgbGVuZ3RoIG9mIGNhdGNoT1NSRW50cnlCdWZm
ZXIgd2lsbCBiZSB6ZXJvZWQgYnkgQ2xlYXJDYXRjaExvY2FscyBub2RlLgogICAgIGRmZ0NvbW1v
bi0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+c2V0QWN0aXZlTGVuZ3RoKHNpemVvZihKU1ZhbHVlKSAq
IGluZGV4KTsKKworICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlJ3JlIGNvbW1pdHRlZCB0byB0cmln
Z2VyaW5nIGFuIE9TUiBlbnRyeSBpbW1lZGlhdGVseSBhZnRlciB3ZSByZXR1cm4uIEhlbmNlLCBp
dCBpcyBzYWZlIHRvIG1vZGlmeSBzdGFjayBoZXJlLgorICAgIGNhbGxGcmFtZS0+c2V0Q29kZUJs
b2NrKG9wdGltaXplZENvZGVCbG9jayk7CisKICAgICByZXR1cm4gY2F0Y2hFbnRyeXBvaW50LT5t
YWNoaW5lQ29kZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCA1NWVmNzYxNTRkMjA1MWIyMmM5ZWRkNzg3Njk1ZDU1NmM4MTUy
ZDc2Li5lNmU3NDNlMWVjNWQ3YzlmNDFmOTBlODliZDJhMjhhNTMzMDc5MTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjIxNyw3
ICsyMjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAg
ICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtKG1faml0Lmdy
YXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAgbV9qaXQuZW1p
dE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKLSAgICAgICAgbV9qaXQuZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spOworICAgICAgICAvLyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFj
ZWQgaW4gT1NSIGVudHJ5LgogICAgIH0KIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFy
aWFibGVFdmVudDo6cmVzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAKaW5kZXggNDRhOWExYTk4ZjI3OTRhMjcwMjI5YzZkNzJjMWI5MzYwNTUwOGM4OS4uY2M2YzA1
MjMxZDczMzk5OGQ5YjgwNDQ1YTIxODMyOGQzZGNiYmFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8u
aCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkBAIC0xNDgsNiArMTQ5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQubmVnUHRyKEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmdldEVmZmVjdGl2ZUFkZHJl
c3MoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6cmVnVDIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAKKyAgICAvLyBDb3B5aW5nIGxvY2FscyBh
bmQgaGVhZGVyIGZyb20gc2NyYXRjaCBidWZmZXIgdG8gdGhlIG5ldyBDYWxsRnJhbWUuIFRoaXMg
YWxzbyByZXBsYWNlcwogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wID0gaml0LmxhYmVs
KCk7CiAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVn
VDQpOwpAQCAtMTYwLDYgKzE2MiwxNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5hYm9ydFdpdGhS
ZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24pOwogCiAgICAgb2su
bGluaygmaml0KTsKKworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaml0LnByb2JlRGVidWcoW10o
UHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0
eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgfSk7
CisjZW5kaWYKKwogICAgIGppdC5yZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVU
YWdDaGVja1JlZ2lzdGVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApp
bmRleCAyOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4Li4zZWY0YWE0OGZm
ZTRjNjg3NmRjNDljM2MxNGI5MDY1YWVmZTJkNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlcjsKIAogICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBmcmFtZSA9IENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PGludDMyX3Q+KEFz
c2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CisgICAgICAgIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKICAgICAKICAgICBzd2l0Y2ggKGdyYXBoLm1f
cGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYjFlMDM2
OTE0MTBiODI3YjBjMGVkNGQwZmVjMjdkODc1NTljNTk0NC4uY2NlZDIxMzY0OWU2ZGE4MzlhNzQ3
ODhmYjFlYTRjNjZlYTYxMDRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtMTk4LDE1ICsxOTgsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICB7CiAgICAgICAgICAgICBtX3Byb2Muc2V0TnVtRW50cnlwb2ludHMobV9n
cmFwaC5tX251bWJlck9mRW50cnlwb2ludHMpOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLm1fY29kZUJsb2NrOwogCiAgICAgICAgICAgICBSZWY8QjM6OkFpcjo6
UHJvbG9ndWVHZW5lcmF0b3I+IGNhdGNoUHJvbG9ndWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRU
YXNrPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yRnVuY3Rpb24+KAotICAgICAgICAgICAgICAg
IFtjb2RlQmxvY2tdIChDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgewor
ICAgICAgICAgICAgICAgIFtdKENDYWxsSGVscGVycyYgaml0LCBCMzo6QWlyOjpDb2RlJiBjb2Rl
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFtZVNpemUoKSksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAg
ICAgICAgICAgICAgICBqaXQuZW1pdFNhdmUoY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFk
ZXIoY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7
CisgICAgICAgICAgICAgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFk
eSByZXBsYWNlZCBpbiBGVEw6OnByZXBhcmVPU1JFbnRyeS4KICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjYXRjaEVudHJ5cG9pbnRJbmRleCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0ZWNvZGVJbmRleC5rZXlzKCkpIHsKQEAgLTI3
Miw5ICsyNzEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX3Byb2MuYWRkRmFz
dENvbnN0YW50KG1fbnVtYmVyVGFnLT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29u
c3RhbnQobV9ub3RDZWxsTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJl
Y2F1c2UKLSAgICAgICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxl
Y3RlZC4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9j
YXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKSk7CisgICAgICAgIC8vIFdoZW4gcnVubmluZyBGVEwg
Y29kZSwgd2UgYWxyZWFkeSBzdG9yZSBDb2RlQmxvY2sgdG8gQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrLgogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgogICAgICAgICB1bnNpZ25l
ZCBleGl0RnJhbWVTaXplID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKaW5kZXggMjdkZDU5NzkwYjcxZjk4YTIxN2IxMjU4Nzc2NzcxNjVhYzY4ZWUwYy4u
Nzc0N2QzYWQ4YjUzNWZhODU0N2U3NDAyYmE3YjMyNGQ1OWI3NWVkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC00MDYsMTIgKzQwNiw2IEBAIGNs
YXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiAj
aWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAgIC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhl
IGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0gICAgICAgIHJldHVybiBzaXplb2Yodm9pZCopOwotICAg
IH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVz
aChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CkBAIC00NzcsMTIgKzQ3MSw2IEBAIGNsYXNzIEFzc2Vt
Ymx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYgLy8gQ1BVKFg4Nl82
NCkKIAogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAv
LyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3Rl
cgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBl
bWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7
CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShNSVBTKQotICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8g
UHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNz
UmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAg
IHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CkBAIC01NjgsMTIgKzU1
MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAj
ZW5kaWYKIAogI2lmIENQVShSSVNDVjY0KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2
ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAg
ICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIGxpbmtSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEy
MzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3YjRjNjQxMi4uODY3NTFkYjFlYWMyZmRlNjI3
ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
MjAzLDMwICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aQogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9n
dWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJs
b2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZXN1bHQpOwotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEo
KSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gYnJhbmNoVGVzdFB0cihaZXJv
LCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJhcmVEYXRh
VGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3VsdCk7Ci0g
ICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlmIChtX3VubGlua2VkQ29kZUJsb2Nr
LT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7
Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1
dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsKLQotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29k
ZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHBy
b2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJ
VCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MywxMCArNzI5LDgg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRp
b25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0
ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9w
dGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAg
ICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAg
IHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhp
cyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXpl
U3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0
aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJl
bCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2Nyw4ICs3
NDEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0g
RnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUo
KTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5
cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2Jl
RGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAg
ICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJh
bWUqPigpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBi
ZWdpbkxhYmVsKHRoaXMpOwogCkBAIC04MzEsNyArODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxl
QW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAg
ICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDAp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgp
ID09IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1
ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBp
ZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+
KCkpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAg
c3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZlNob3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2Fm
MmZjMjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdp
c3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJ
blByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRp
b25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAzYzRhM2FlM2E5ODhjZWU5NjU2NDQz
ZmM3NjEwOTBhZTBlYzNjNTYxLi5lYzRmYTJlMGU1MjNlN2ZhNjE0N2Y5ZDIwOGYzZWQzMmZkZmZh
ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KICAgICBqaXQubG9h
ZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Q0LCBFeGVj
dXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkpLAogICAg
ICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5qdW1wKCkpOyAv
LyBGSVhNRQogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhh
dCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZh
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCAzZTJjNmRmNjBhNDc4Y2ExMDlhYWRhOGMzM2Q2MGM5OTRiNWQzYzAxLi43
MTZkZmJiYzA1ODA4MjU4ZmMxMWJlYTE3OTljZmE3NmQwNzcwY2RkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzAs
NiArMTcwLDcgQEAgY29uc3QgU3RhY2tBbGlnbm1lbnRTbG90cyA9IGNvbnN0ZXhwciAoc3RhY2tB
bGlnbm1lbnRSZWdpc3RlcnMoKSkKIGNvbnN0IFN0YWNrQWxpZ25tZW50TWFzayA9IFN0YWNrQWxp
Z25tZW50IC0gMQogCiBjb25zdCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9IGNvbnN0ZXhwciAoc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorY29uc3QgUHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSA9
IGNvbnN0ZXhwciAoc2l6ZW9mKHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpCiAKIGNvbnN0
IENhbGxlckZyYW1lID0gMAogY29uc3QgUmV0dXJuUEMgPSBDYWxsZXJGcmFtZSArIE1hY2hpbmVS
ZWdpc3RlclNpemUKQEAgLTExOTIsNyArMTE5Myw4IEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlv
bihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
CiAgICAgZW5kCiBlbmQKIAotbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKHRlbXAxLCB0ZW1w
MiwgdGVtcDMsIHRlbXA0KQorbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKHRlbXAxLCB0ZW1w
MiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKKyAgICBzdG9yZUNvZGVCbG9jayhDb2Rl
QmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gQ2FsbGVyRnJhbWVBbmRQQ1NpemVbc3BdKQogZW5kCiAK
IG1hY3JvIGludm9rZUZvclJlZ3VsYXJDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVl
LCBtYXliZU9sZENGUiwgY2FsbFB0clRhZykKQEAgLTEyMDgsNyArMTIxMCw3IEBAIGVuZAogCiAj
IHNwIHBvaW50cyB0byB0aGUgbmV3IGZyYW1lICsgQ2FsbGVyRnJhbWVBbmRQQ1NpemUKICMgV2Ug
bGVhdmUgY2ZyIHRlbXA0IHRvIHVzZSBpdCBmb3IgdW50YWdnaW5nLgotbWFjcm8gcHJlcGFyZUZv
clRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorbWFjcm8gcHJlcGFyZUZvclRh
aWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKICAgICBy
ZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdGVtcDIKQEAgLTEyNjMsNiArMTI2
NSw4IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCkKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEsIHNwCisKKyAgICBzdG9yZUNvZGVCbG9jayhD
b2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gUHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YVtzcF0p
CiBlbmQKIAogbWFjcm8gaW52b2tlRm9yVGFpbENhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBj
YWxsZWUsIG1heWJlT2xkQ0ZSLCBjYWxsUHRyVGFnKQpAQCAtMTMwMyw3ICsxMzA3LDcgQEAgbWFj
cm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxlZSwgY2FsbGVlRnJhbWVQ
dHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9udFVwZGF0ZVNQCiAgICAg
ICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAgICAgcHJlcGFyZUNhbGwo
dDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwg
bWFjcm8oYWRkcmVzcykgZW5kKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgogICAgICAgICAgICAg
Y2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCkBAIC0xNDgyLDQ2ICsxNDg2LDYg
QEAgbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoc2l6ZSwgaW5kZXgpCiAgICAgZW5kKQogZW5kCiAK
LW1hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAg
ICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVy
Ci0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRh
cmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxl
T3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJn
ZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1
dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0
ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRw
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwg
dGFyZ2V0UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9j
a0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRh
cmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0
aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJl
RGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykp
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9hZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgIHN0b3JlcCBzb3VyY2VSZWdpc3Rlciwg
Q29kZUJsb2NrW2Nmcl0KLWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihz
b3VyY2VSZWdpc3RlcikKLSAgICAjIE5vdGhpbmcgdG8gZG8hCi1lbmQKLQogbWFjcm8gY29udmVy
dENhbGxlZVRvVk0oY2FsbGVlKQogICAgIGJ0cG56IGNhbGxlZSwgKGNvbnN0ZXhwciBQcmVjaXNl
QWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCksIC5wcmVjaXNlQWxsb2NhdGlvbgogICAgIGFuZHAg
TWFya2VkQmxvY2tNYXNrLCBjYWxsZWUKQEAgLTE1MzQsNyArMTQ5OCw3IEBAIGVuZAogCiAjIERv
IHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQ
QywgbGVhdmUgdGhlIENvZGVCbG9jayoKICMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9n
dWUgZW50cnkgT1NSLgotbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tT
ZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQorbWFjcm8gcHJvbG9ndWUob3NyU2xv
d1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNo
ZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKQEAg
LTE1NDMsOCArMTUwNyw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgY2FsbFNsb3dQ
YXRoKHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGFkZHAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwsIHNwCiAgICAgZW5kCi0gICAgY29kZUJsb2NrR2V0dGVyKHQxKQotICAgIGNvZGVCbG9j
a1NldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBpZiBub3QgKENf
TE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRD
b2RlW3QxXSwgdDAKICAgICAgICAgYmFkZGlzIDUsIChVbmxpbmtlZENvZGVCbG9jazo6bV9sbGlu
dEV4ZWN1dGVDb3VudGVyICsgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyOjptX2NvdW50ZXIpW3Qw
XSwgLmNvbnRpbnVlCkBAIC0xNTg0LDcgKzE1NDcsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAg
ICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAgLnJlY292
ZXI6Ci0gICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQorICAgICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICAuY29udGludWU6CiAgICAgZW5kCiAKQEAgLTE2MjMs
NyArMTU4Niw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0
dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKIC5zdGFja0hlaWdodE9LR2V0Q29kZUJs
b2NrOgogICAgICMgU3RhY2sgY2hlY2sgc2xvdyBwYXRoIHJldHVybmVkIHRoYXQgdGhlIHN0YWNr
IHdhcyBvay4KICAgICAjIFNpbmNlIHRoZXkgd2VyZSBjbG9iYmVyZWQsIG5lZWQgdG8gZ2V0IENv
ZGVCbG9jayBhbmQgbmV3IHNwCi0gICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JD
b2RlQmxvY2sodDEsIHQwKQogICAgIHN1YnAgY2ZyLCB0MCwgdDAKIApAQCAtMjAyNiwzOSArMTk4
OSwzOSBAQCBub1dpZGUobGxpbnRfb3Bfd2lkZTMyKQogbm9XaWRlKGxsaW50X29wX2VudGVyKQog
CiBvcChsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9l
bnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQog
CiAKIG9wKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xv
Z3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3Vl
KF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgw
KQogZW5kKQogCiAKIG9wKGxsaW50X2V2YWxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9n
dWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUo
X2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDAp
CiBlbmQpCiAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUsIG1hY3JvICgp
Ci0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9l
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlv
bl9mb3JfY2FsbCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2go
MCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dl
dHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKICAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRf
dHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zv
cl9jYWxsKQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlD
aGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9u
KDApCkBAIC0yMDY2LDcgKzIwMjksNyBAQCBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaywgbWFjcm8gKCkKIGVuZCkKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVj
dENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlD
aGVja19mb3JfY29uc3RydWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3Jf
Y29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0
aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAg
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKQEAgLTI1MjcsNyArMjQ5MCw3IEBAIG1hY3JvIGxp
bmtTbG93UGF0aEZvcihmdW5jdGlvbikKICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBi
dHB6IHIxLCAuZG9Ob3RUcmFzaAogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0
MSkKLSAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUZv
clRhaWxDYWxsKHQxLCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgdW50YWdS
ZXR1cm5BZGRyZXNzIHQ0CiAuZG9Ob3RUcmFzaDoKICAgICBqbXAgdDAsIEpTRW50cnlQdHJUYWcK
QEAgLTI1NTAsMTIgKzI1MTMsMTMgQEAgbWFjcm8gdmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklU
Q29kZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZSwKIC5pc0V4ZWN1
dGFibGU6CiAgICAgbG9hZHAgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tbdDFdLCB0MQog
ICAgIGJ0cHogdDEsIHNsb3dDYXNlCisgICAgam1wIHNsb3dDYXNlICMgRklYTUUKIC5jYWxsQ29k
ZToKLSAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwg
dDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgIGptcCB0MSwgSlNFbnRyeVB0clRh
ZwogLm5vdEpTRnVuY3Rpb246CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBJbnRlcm5h
bEZ1bmN0aW9uVHlwZSwgc2xvd0Nhc2UKLSAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCkK
KyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAg
IGptcCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZQogZW5kCiAKQEAgLTI1NzAsNyArMjUzNCw3
IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2Jh
bE9iamVjdAogb3AobGxpbnRfdmlydHVhbF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAg
dmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRo
dW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9s
bGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVt
cDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dD
YXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAt
MjU3OSw3ICsyNTQzLDcgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNh
bGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX2NvbnN0cnVjdF90cmFtcG9s
aW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9j
b25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBl
bmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25f
Y29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwg
c3RvcmVDb2RlQmxvY2spIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93
UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU4OCw5ICsyNTUyLDkgQEAg
ZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2Jq
ZWN0CiBvcChsbGludF92aXJ0dWFsX3RhaWxfY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQotICAg
IHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAo
dGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFi
bGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9m
dW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1w
NCwgc3RvcmVDb2RlQmxvY2spCiAgICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCh0ZW1wMSkKLSAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMs
IHRlbXA0KQorICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywg
dGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdGVtcDQK
ICAgICBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggYWNl
ODcxMTY3MmU3MDIxNmQzOWE0OGRmMTVmZDY2ZDZiNTdjNDExZS4uYWQyNTAxN2VmMGI0N2ZjMGIw
NTA0NzQ3ZGI1NzViOTE1MDE4YWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIyNTksNyArMjI1
OSwxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAg
YnBuZXEgdDAsIHQzLCAub3BDYWxsU2xvdwotICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQx
KQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlD
Lm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5k
KQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVd
LCB0NQpAQCAtMjMzOCw3ICsyMzQxLDEwIEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFt
ZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAg
ICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnBuZXEgdDAsIHQzLCAub3BDYWxs
U2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAg
ICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAg
ICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0
YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJl
c3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAg
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRh
SUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDVk
ZTdiY2M3ZmQwZDRmMDQwZjJkZjk0YmQ0NzM0NWQ4MzU4Njk0NDcuLjhjZDdkYmUyYTRhMjU5MDY0
MzYxZDM2ZjU2ZjhjYjNlNDk1MDlkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yNDgzLDcgKzI0ODMsMTAg
QEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKIAogLm5vdFBvbHltb3JwaGljOgogICAgIGJxbmVx
IHQwLCB0MSwgLm9wQ2FsbFNsb3cKLSAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAg
ICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2Nv
ZGVCbG9ja1t0NV0sIHQyCisgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgIGVuZCkKIAog
LmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUK
QEAgLTI1NjEsNyArMjU2NCwxMCBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNp
emUsIGdldCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogCiAgICAgICAg
IC5ub3RQb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cK
LSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgcHJl
cGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgICAgICAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5t
X2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgICAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisg
ICAgICAgICAgICBlbmQpCiAKICAgICAgICAgLmdvUG9seW1vcnBoaWM6CiAgICAgICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1f
bW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5kZXggNzEzNWY0ZjZmYzIwY2IzOWU4NWJhYmMxZDFj
ZjFlYWI1OGI2MmJkNi4uMjRjMTRiM2Y4ZjZiNWY0NTViZDBhNWE3N2M1OTMyYmU5ZjY4ZWVhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0xNDcs
NyArMTQ3LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKGNvZGVCbG9ja1Jl
Z2lzdGVyKQogICAgICAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZwogICAgICAg
ICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgotICAgICAgICAgICAgbm90RnVuY3Rpb25Db2Rl
QmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIpCisgICAgICAgICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgY29kZUJsb2NrUmVnaXN0ZXIKICAgICAgICAgZW5kKQogICAgIGVuZAogZW5kCkBA
IC0yODMsNyArMjgzLDcgQEAgbWFjcm8gcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAg
ICAgc3VicCBjZnIsIHdzMSwgc3AKIGVuZAogCi1tYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2Nr
R2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCittYWNybyB3YXNtUHJv
bG9ndWUobG9hZFdhc21JbnN0YW5jZSkKICAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQg
Y2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAgICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKICAg
ICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCkBAIC0yOTMsOCArMjkzLDkgQEAgbWFj
cm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2Fz
bUluc3RhbmNlKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX293bmVyW3dhc21JbnN0YW5j
ZV0sIHdzMAogICAgIHN0b3JlcCB3czAsIFRoaXNBcmd1bWVudE9mZnNldFtjZnJdCiAKLSAgICBj
b2RlQmxvY2tHZXR0ZXIod3MwKQotICAgIGNvZGVCbG9ja1NldHRlcih3czApCisgICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHdzMAorICAgIGFuZHAgfjMsIHdzMAorICAgIHN0b3JlcCB3czAsIENvZGVC
bG9ja1tjZnJdCiAKICAgICAjIEdldCBuZXcgc3AgaW4gd3MxIGFuZCBjaGVjayBzdGFjayBoZWln
aHQuCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMF0s
IHdzMQpAQCAtNTE0LDcgKzUxNSw3IEBAIG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsIG1hY3Jv
ICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2VGcm9t
VExTKQorICAgIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlRnJvbVRMUykKICAgICB3YXNt
TmV4dEluc3RydWN0aW9uKCkKIGVuZCkKIApAQCAtNTIzLDcgKzUyNCw3IEBAIG9wKHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAoKQogICAgICAgICBlcnJvcgogICAgIGVuZAog
Ci0gICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBtYWNybyAoKSBlbmQpCisgICAgd2FzbVByb2xvZ3VlKG1hY3JvICgpIGVuZCkKICAg
ICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Nhc3QuaAppbmRleCBhNjk5MzE1OTA5OWNjYzFiNzM5NmE5N2M1OGZkNGVlMzFhNWMxODJl
Li44ZGMyZjE3ODJlMGJjZDU0NzI1ZTI3NzliYmZlNjBmZTc3YzY0Nzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtODksNiArODksNyBAQCBzdHJ1Y3QgSlNUeXBl
UmFuZ2UgewogICAgIG1hY3JvKFJlZ0V4cE9iamVjdCwgSlNUeXBlOjpSZWdFeHBPYmplY3RUeXBl
LCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU1dlYkFzc2VtYmx5TW9k
dWxlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSwgSlNUeXBlOjpXZWJBc3NlbWJseU1v
ZHVsZVR5cGUpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHMsIEpTVHlwZTo6RGlyZWN0QXJn
dW1lbnRzVHlwZSwgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlKSBcCisgICAgbWFjcm8oRnVu
Y3Rpb25FeGVjdXRhYmxlLCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIEpTVHlwZTo6
RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSkgXAogICAgIG1hY3JvKFNjb3BlZEFyZ3VtZW50cywgSlNU
eXBlOjpTY29wZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUpIFwK
ICAgICBtYWNybyhDbG9uZWRBcmd1bWVudHMsIEpTVHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlwZSwg
SlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8oSlNHbG9iYWxPYmplY3Qs
IEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTMyZGNiMGFkMzRiMjNiY2RhMjQ3
MWEwM2VlOTJjYjUyMzMzODIzOC4uZDZjM2MzZWRiYWJjNTdiNzhjZWQyNzBiMDUxMDhlNTdjMDg2
MDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjk2LDcgKzY5Niw3
IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRCb3VuZEZ1bmN0aW9uKGJvb2wgaXNKU0Z1bmN0
aW9uLCBib29sIGNhbkNvbnN0cnVjdCkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CiAgICAg
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIHJlc3VsdCA9IGdldEhvc3RGdW5jdGlvbigKICAgICAgICAg
ICAgIHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNhbGwgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNhbGwsCi0gICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogQm91bmRGdW5jdGlv
bkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogTm9J
bnRyaW5zaWMsIC8vIEZJWE1FCiAgICAgICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2Ug
PyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1
Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsIFN0cmluZygpKTsK
ICAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4ocmVzdWx0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTcyMCw3ICs3MjAsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6
Z2V0UmVtb3RlRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4g
Y2FjaGVkOwogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiByZXN1bHQgPSBnZXRIb3N0RnVuY3Rp
b24oCiAgICAgICAgICAgICBzbG93Q2FzZSA/IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyaWMgOiBy
ZW1vdGVGdW5jdGlvbkNhbGxGb3JKU0Z1bmN0aW9uLAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBO
b0ludHJpbnNpYyA6IFJlbW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAgICAgICAgIHNs
b3dDYXNlID8gTm9JbnRyaW5zaWMgOiBOb0ludHJpbnNpYywgLy8gRklYTUUKICAgICAgICAgICAg
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLCBTdHJpbmcoKSk7CiAgICAg
ICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KHJlc3VsdCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5j
cHAKaW5kZXggYmI0NmY4YTgxMzJkMWVkNTVlMWMzNGFmNmEwMGYwZDI0OWZmMGZjMy4uNTE0NjQ1
NzJmMWNmMmVjMWYwY2FhZjU4ZGRiNzg0YWZjZmIzNjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtMTkyLDE0ICsxOTIsMTQgQEAgc3Rh
dGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBj
b250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICAvLyBwb3AoZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwog
ICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJhbWVQb2lu
dGVyKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAxOwotICAgIHN0YXRpY19h
c3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6
ZW9mKHZvaWQqKSAqIDEpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKICNlbGlmIENQVShBUk02NEUpIHx8IENQVShB
Uk02NCkKICAgICAvLyBtb3ZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CiAgICAgLy8gcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVy
KTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1l
UG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2Vf
Y2FzdDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2ludGVyICsgMSkpOwogICAgIGNvbnRleHQuc3Ao
KSA9IGZyYW1lUG9pbnRlciArIDI7Ci0gICAgc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7CisgICAg
c3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQq
KSAqIDIpOwogI2lmIENQVShBUk02NEUpCiAgICAgLy8gTFIgbmVlZHMgdG8gYmUgdW50YWdnZWQg
c2luY2UgT1NSIGVudHJ5IGZ1bmN0aW9uIHByb2xvZ3VlIHdpbGwgdGFnIGl0IHdpdGggU1AuIFRo
aXMgaXMgc2ltaWxhciB0byB0YWlsLWNhbGwuCiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3Rl
cnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KHVudGFnQ29kZVB0cldpdGhTdGFj
a1BvaW50ZXJGb3JKSVRDYWxsKGNvbnRleHQuZ3ByPHZvaWQqPihBUk02NFJlZ2lzdGVyczo6bHIp
LCBjb250ZXh0LnNwKCkpKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBkb09TUkVu
dHJ5KEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvYmU6OkNvbnRleHQmIGNvbnRleHQsIEJCUUNhbGxl
ZSYgYwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJh
bWVQb2ludGVyKTsKICAgICBjb250ZXh0LmdwcihSSVNDVjY0UmVnaXN0ZXJzOjpyYSkgPSBiaXR3
aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEpKTsKICAgICBjb250ZXh0
LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOwor
ICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2
b2lkKikgKiAyKTsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456193</attachid>
            <date>2022-03-30 19:03:52 -0700</date>
            <delta_ts>2022-03-30 21:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220330190351.patch</filename>
            <type>text/plain</type>
            <size>54523</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi41ZDg0Zjg0MTNlMTA4Yjky
YjJiMzg1YTZiN2QzODhjMjczYjIwN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExM
aW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93
ZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhv
dXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFt
ZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjpnZXRCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OmdldFJl
bW90ZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6ZG9PU1JFbnRyeSk6CisKIDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9m
IGEgSlNDOjpJZGVudGlmaWVyIGZyb20gYW4gQVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9DUFUuaAppbmRleCBiM2I3Y2U1NDgzY2ZlNmQ0YTkzOGY0MDAzNjkyYjczM2Rm
YzE4NGM5Li4xMjVlYjZmODYxYWQwZjRkYTA0ZjliZWUxYzI2MmYyYjEyNjVmNjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKQEAgLTE2OCw1ICsxNjgsMjMgQEAgQUxXQVlT
X0lOTElORSBpbnQ2NF90IGh3TDNDYWNoZVNpemUoKSB7IHJldHVybiAwOyB9CiBBTFdBWVNfSU5M
SU5FIGludDMyX3QgaHdQaHlzaWNhbENQVU1heCgpIHsgcmV0dXJuIGtlcm5UQ1NNQXdhcmVOdW1i
ZXJPZlByb2Nlc3NvckNvcmVzKCk7IH0KICNlbmRpZgogCitjb25zdGV4cHIgc2l6ZV90IHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKQoreworI2lmIEVOQUJMRShDX0xPT1ApCisgICAgLy8gUHJv
bG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCBsaW5rUmVnaXN0ZXIKKyAg
ICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIC8vIFBy
b2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCisgICAgcmV0dXJuIHNp
emVvZih2b2lkKik7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUo
TUlQUykgfHwgQ1BVKFJJU0NWNjQpCisgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9p
bnRlclJlZ2lzdGVyIGFuZCBsaW5rUmVnaXN0ZXIKKyAgICByZXR1cm4gMiAqIHNpemVvZih2b2lk
Kik7CisjZWxzZQorI2Vycm9yIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMKKyNlbmRpZgorfQor
CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFjODUxNDE5NmZk
Y2ZjOGZhYzE0ZWFjNy4uYWZhZWMxZTZhMzE4ZjVlNzg4NmU3YTA2NjM5MDgzZWVhYmI0ZWVkNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAK
QEAgLTEwOCwxNyArMTA4LDE5IEBAIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IENhbGxMaW5rSW5mbzo6ZG9uZUxvY2F0aW9uKCkKICAgICByZXR1cm4gbV9kb25lTG9jYXRpb247
CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBDYWxsTGlua0luZm86OnNldE1vbm9tb3JwaGljQ2Fs
bGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSkgJiBwb2x5bW9ycGhpY0NhbGxlZU1hc2sp
KTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLnNldCh2bSwgb3duZXIsIGNhbGxlZSk7CiAKLSAg
ICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJ
Qy5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhp
Y0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHN0
YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+bV9jYWxsTG9jYXRpb24s
IENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24s
IGNvZGVCbG9jayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNv
ZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMCwxMCArMTMyLDEyIEBAIHZvaWQgQ2FsbExpbmtJ
bmZvOjpjbGVhckNhbGxlZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0KCkpOwog
ICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAg
ICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxw
dHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBudWxs
cHRyOwotICAgIGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7CisgICAgfSBlbHNlIGlm
ICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBu
dWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlD
Lm1fY2FsbGVlTG9jYXRpb24sIG51bGxwdHIpOwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OCw5ICszMDIsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86
OnJldmVydENhbGxUb1N0dWIoKQogCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsKICAgICAgICAgbV9j
YWxsZWVPckNvZGVCbG9jay5jbGVhcigpOworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9
IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24g
PSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51
bGxwdHIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJh
bmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFydE9mQnJhbmNo
UHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uKSwgY2FsbGVl
R1BSKCksIG51bGxwdHIpOwogI2Vsc2UKQEAgLTM2Myw5ICszNjksMTggQEAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW4KIAogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICAgICAgcHJl
cGFyZUZvclRhaWxDYWxsKCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0Nh
bGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsK
KyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0lu
Zm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CisKICAgICAgICAgICAg
IGdvUG9seW1vcnBoaWMubGluaygmaml0KTsgLy8gUG9seW1vcnBoaWMgc3R1YiBoYW5kbGVzIHRh
aWwgY2FsbCBzdGFjayBwcmVwLgogICAgICAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVH
UFIsIGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRj
aEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisKICAgICAgICAgICAgIGdv
UG9seW1vcnBoaWMubGluaygmaml0KTsKICAgICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mTW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAgICB9CkBAIC0zNzQsMTUgKzM4OSwyMCBA
QCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBs
KENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJy
YW5jaFB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIGNhbGxl
ZUNoZWNrLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0cikpKTsKIAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpEYXRhTGFi
ZWxQdHIgY29kZUJsb2NrU3RvcmU7CiAgICAgICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAg
ICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0g
aml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgY2FsbCA9IGppdC5uZWFyVGFpbENh
bGwoKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb2Rl
QmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogICAgICAgICAgICAgY2FsbCA9IGppdC5uZWFyQ2FsbCgpOworICAgICAgICB9
CiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxMaW5rSW5mbyo+KGNhbGxMaW5rSW5mbyktPm1fY2FsbExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4o
Y2FsbCk7CisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY29kZUJsb2NrTG9j
YXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2Nr
U3RvcmUpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NhbGxlZUxvY2F0
aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGxlZUNoZWNr
KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtNDExLDggKzQzMSwxMCBAQCB2b2lkIENhbGxMaW5r
SW5mbzo6c2V0U3R1YihSZWY8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+JiYgbmV3U3R1YikK
IAogICAgIGlmIChpc0RhdGFJQygpKSB7CiAgICAgICAgICpiaXR3aXNlX2Nhc3Q8dWludHB0cl90
Kj4obV9jYWxsZWVPckNvZGVCbG9jay5zbG90KCkpID0gcG9seW1vcnBoaWNDYWxsZWVNYXNrOwor
ICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxwdHI7IC8vIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lIHdpbGwgc2V0IENvZGVCbG9jayBpbnNpZGUgaXQuCiAgICAgICAgIHUuZGF0
YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBtX3N0dWItPmNvZGUoKS5jb2RlKCku
cmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKICAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVs
bHB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIo
dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdHViLT5jb2RlKCkuY29kZSgpKSk7CkBAIC00NzYs
OSArNDk4LDExIEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0KQogCiAgICAgQVNTRVJUKFVzZURhdGFJQzo6Tm8gPT0gdGhp
cy0+dXNlRGF0YUlDKCkpOwogCisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0
cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIGF1dG8gY2Fs
bCA9IGppdC5uZWFyQ2FsbCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgdS5j
b2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVy
bmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5r
VGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxs
KCk7CkBAIC01MDEsOSArNTI1LDExIEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1p
dERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlCiAgICAgaml0
LmVtaXROb3BzKENDYWxsSGVscGVyczo6cGF0Y2hhYmxlSnVtcFNpemUoKSk7CiAKICAgICBwcmVw
YXJlRm9yVGFpbENhbGwoKTsKKyAgICBhdXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRy
V2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsKICAgICBqaXQu
YWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAg
IG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5h
bFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwog
ICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewog
ICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTE0LDYgKzU0MCw3IEBAIHZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogICAgIEFTU0VSVChtX2NhbGxMb2NhdGlvbik7Cisg
ICAgQVNTRVJUKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24pOwogICAgIGlmIChpc1RhaWxD
YWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRM
YW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC01
MjYsNyArNTUzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGly
ZWN0Q2FsbCgpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxs
TG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CiAKLXZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFn
PiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJn
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKIApAQCAtNTQwLDYg
KzU2Nyw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdl
dChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnCiAgICAgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwg
Y29kZUJsb2NrKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZmIyMGU0NzgxNDc5MzUyMTc1MDQzNDQ1YjI5NzczMWI5
NzEyOTg2Ny4uMzkyMDg2YTA4ZDFiN2E2ZTI2NzFmYzUyMmEzZjljZWZmZDE2NTJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaApAQCAtMTk5LDcg
KzE5OSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBkb25lTG9jYXRpb24oKTsKIAotICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0m
LCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOworICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBK
U09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOwogICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGNsZWFyQ2FsbGVlKCk7CiAg
ICAgSlNPYmplY3QqIGNhbGxlZSgpOwpAQCAtMzE3LDYgKzMxNywxMSBAQCBjbGFzcyBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgbV9jYWxsZWVPckNvZGVC
bG9jayk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgdSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9jb2RlQmxvY2spOworICAgIH0K
KwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
bigpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywg
dSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbik7CkBAIC00MDEsMTQgKzQwNiwxNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uOwog
ICAgIHVuaW9uIFVuaW9uVHlwZSB7CiAgICAgICAgIFVuaW9uVHlwZSgpCi0gICAgICAgICAgICA6
IGRhdGFJQyB7IG51bGxwdHIgfQorICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyLCBudWxs
cHRyIH0KICAgICAgICAgeyB9CiAKICAgICAgICAgc3RydWN0IERhdGFJQyB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOyAvLyBUaGlzIGlzIHdlZWtseSBoZWxkLiBBbmQgY2xl
YXJlZCB3aGVuZXZlciBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uIGlzIGNoYW5nZWQuCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tb25vbW9y
cGhpY0NhbGxEZXN0aW5hdGlvbjsKICAgICAgICAgfSBkYXRhSUM7CiAKICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFn
PiBtX2NvZGVCbG9ja0xvY2F0aW9uOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
UHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2FsbGVlTG9jYXRpb247CiAgICAgICAgIH0gY29kZUlD
OwogICAgIH0gdTsKQEAgLTUwMyw3ICs1MTAsNyBAQCBjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAgICAgdm9pZCBlbWl0RGlyZWN0RmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJik7CiAgICAgdm9pZCBlbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2Fs
bCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwotICAgIHZvaWQgc2V0RGlyZWN0
Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBz
ZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayosIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KTsKICAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYpOwogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggZTk3
NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5YTE1OGFjODQxNi4uOTY2NTA3ZDU5MDdmZDMzN2I4
ZmYxOWYxZTI2MjkyNDZkZTA4MjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXBhdGNoLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgbGlua01vbm9tb3JwaGljQ2Fs
bCgKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5r
ZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwg
Y2FsbGVlLCBjb2RlUHRyKTsKKyAgICBjYWxsTGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUo
dm0sIG93bmVyLCBjYWxsZWUsIGNhbGxlZUNvZGVCbG9jaywgY29kZVB0cik7CiAgICAgY2FsbExp
bmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlKTsKIAogICAgIGlmIChz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKQEAgLTE1NjQsNyArMTU2
NCw3IEBAIHZvaWQgbGlua0RpcmVjdENhbGwoCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJs
eUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRhTG9nKCJMaW5raW5nIGNhbGwgaW4g
IiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY29kZU9yaWdp
bigpKSwgIiB0byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spLCAiLCBlbnRyeXBvaW50
IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogCi0gICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxU
YXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOworICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KGpzQ2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KGNhbGxlZUNvZGVCbG9jayksIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQ
dHIpKTsKIAogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCiAgICAgICAgIGNhbGxlZUNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsRnJhbWUsICZjYWxsTGlua0luZm8pOwpAQCAtMTc4Nyw3
ICsxNzg3LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICB3aGlsZSAoYmluYXJ5U3dp
dGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGJpbmFy
eVN3aXRjaC5jYXNlSW5kZXgoKTsKICAgICAgICAgCi0gICAgICAgIENhbGxWYXJpYW50IHZhcmlh
bnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CisgICAgICAgIFBvbHltb3JwaGlj
Q2FsbENhc2UmIGNhbGxDYXNlID0gY2FsbENhc2VzW2Nhc2VJbmRleF07CisgICAgICAgIENhbGxW
YXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cjsKICAgICAgICAgaWYg
KHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CkBAIC0xODEwLDE0ICsxODExLDI1IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGJvb2wgbmVlZHNEb25lSnVtcCA9IGZhbHNlOwogICAg
ICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewogICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIo
c3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29k
ZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5k
ZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICB9IGVsc2UgaWYgKGNh
bGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKICAgICAgICAgICAgIHN0dWJKaXQucHJlcGFyZUZv
clRhaWxDYWxsU2xvdygpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygpKQor
ICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAg
ICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RhdGFJQykKKyAgICAgICAgICAgIEFTU0VS
VCghY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7CisgICAgICAgICAgICBpZiAoaXNEYXRhSUMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAg
ICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNh
bGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8
aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgICAg
IGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNh
bGxDYXNlLmNvZGVCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qg
Y2FsbGluZyB5ZXQuIFRodXMsIHN0YWNrUG9pbnRlclJlZ2lzdGVyIGlzIG5vdCBpbmNsdWRpbmcg
UEMgJiBmcmFtZVBvaW50ZXIuCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQu
bmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICBuZWVkc0RvbmVKdW1wID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBh
dGNoSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxp
bmVzLmgKaW5kZXggNTE3MWJjMTI0MDA1MmMzY2NjZDZlNmZhZjQ2ODI1MzM3ZWUzZTc4OS4uOTU4
ZDdmYjhiM2IzNzcxMDQ3MDcxOGIzOTQ4MmJiMzA1YjcwZjk5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmgKQEAgLTE5NSw4ICsxOTUsOCBA
QCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAgICAgRGVmZXJUcmFwcyBkZWZlclRyYXBzKHZt
KTsgLy8gV2UgY2FuJ3QgamV0dGlzb24gaWYgd2UncmUgZ29pbmcgdG8gY2FsbCB0aGlzIENvZGVC
bG9jay4KIAotICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5k
KSkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICBpZiAoIWV4
ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSk7CiAKICAgICAgICAgYXV0byBoYW5kbGVUaHJvd0V4Y2VwdGlvbiA9IFsmXSAoKSB7CiAg
ICAgICAgICAgICB2b2lkKiB0aHJvd1RhcmdldCA9IHZtLmdldENUSVRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwpAQCAtMjEyLDYgKzIx
Miw3IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwg
c2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpKTsKICAgICB9CisKICAgICAvLyBG
SVhNRTogU3VwcG9ydCB3YXNtIElDLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCmluZGV4IGQ1ZWE5ZDY3NTk3NTVhMzk0ZDZmNTVlZDdkNzI2YWZmZWFmNzZhMWQuLmQ4
NWUwNjUxMTU4YmMyNGI1NmVmZWQxODIwNjM5MGVhMTI4ZjFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKKyNpbmNsdWRlICJQcm9iZUNv
bnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJWTS5oIgog
CkBAIC0xMTAsNyArMTExLDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCiAg
ICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdl
J2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCiAgICAgLy8gYm90aCBub3JtYWwgcmV0dXJu
IGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCiAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2Rl
QmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICBpZiAobV9ncmFwaC5tX3BsYW4uY29kZUJsb2NrKCktPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKSB7CisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNv
ZGVCbG9jaygpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6REZHSklUKTsKKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggMTEzMmNmMGQ5ZjY1YjEz
OTdmZWI5ZWI5NTcxNDFlYjRkMTE1ODVmNy4uNGM4ZjJlZWRlZmFjYjUyNWZjMjhjODJhMjNjN2Uz
NmVjNzc4NGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAK
QEAgLTMzNCw5ICszMzQsOSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCi0gICAgCisKICAgICAvLyA3KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8gaGF2
ZSB0aGUgcmlnaHQgY29kZSBibG9jay4KLSAgICAKKwogICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJs
b2NrKio+KHBpdm90IC0gKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayArIDEpKSA9IGNvZGVCbG9j
azsKICAgICAKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NS
IHJldHVybmluZyBkYXRhIGJ1ZmZlciAiLCBSYXdQb2ludGVyKHNjcmF0Y2gpKTsKQEAgLTQwOCw2
ICs0MDgsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IHByZXBhcmVDYXRjaE9TUkVudHJ5KFZNJiB2bSwgQ2FsbEYKIAogICAgIC8vIFRoZSBhY3RpdmUg
bGVuZ3RoIG9mIGNhdGNoT1NSRW50cnlCdWZmZXIgd2lsbCBiZSB6ZXJvZWQgYnkgQ2xlYXJDYXRj
aExvY2FscyBub2RlLgogICAgIGRmZ0NvbW1vbi0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+c2V0QWN0
aXZlTGVuZ3RoKHNpemVvZihKU1ZhbHVlKSAqIGluZGV4KTsKKworICAgIC8vIEF0IHRoaXMgcG9p
bnQsIHdlJ3JlIGNvbW1pdHRlZCB0byB0cmlnZ2VyaW5nIGFuIE9TUiBlbnRyeSBpbW1lZGlhdGVs
eSBhZnRlciB3ZSByZXR1cm4uIEhlbmNlLCBpdCBpcyBzYWZlIHRvIG1vZGlmeSBzdGFjayBoZXJl
LgorICAgIGNhbGxGcmFtZS0+c2V0Q29kZUJsb2NrKG9wdGltaXplZENvZGVCbG9jayk7CisKICAg
ICByZXR1cm4gY2F0Y2hFbnRyeXBvaW50LT5tYWNoaW5lQ29kZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA1NWVmNzYxNTRk
MjA1MWIyMmM5ZWRkNzg3Njk1ZDU1NmM4MTUyZDc2Li5lNmU3NDNlMWVjNWQ3YzlmNDFmOTBlODli
ZDJhMjhhNTMzMDc5MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMjIxNyw3ICsyMjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigtKG1faml0LmdyYXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCkgKiBz
aXplb2YoUmVnaXN0ZXIpKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVl
U2F2ZXMoKTsKICAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKLSAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9j
aygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgICAgICAvLyBDb2RlQmxvY2sgaW4g
dGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFjZWQgaW4gT1NSIGVudHJ5LgogICAgIH0KIAogICAg
IG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggNDRhOWExYTk4ZjI3OTRhMjcwMjI5
YzZkNzJjMWI5MzYwNTUwOGM4OS4uY2M2YzA1MjMxZDczMzk5OGQ5YjgwNDQ1YTIxODMyOGQzZGNi
YmFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0xNDgsNiArMTQ5LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9y
KFZNJiB2bSkKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7
CiAgICAgaml0LmdldEVmZmVjdGl2ZUFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAKKyAgICAvLyBDb3B5aW5nIGxvY2FscyBhbmQgaGVhZGVyIGZyb20gc2NyYXRjaCBidWZmZXIg
dG8gdGhlIG5ldyBDYWxsRnJhbWUuIFRoaXMgYWxzbyByZXBsYWNlcwogICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBsb29wID0gaml0LmxhYmVsKCk7CiAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0Lm5lZ1B0cihH
UFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOwpAQCAtMTYwLDYgKzE2MiwxNCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3Io
Vk0mIHZtKQogICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlK
dW1wRGVzdGluYXRpb24pOwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgaml0LnByb2JlRGVidWcoW10oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVC
bG9jay0+aml0VHlwZSgpKSk7CisgICAgfSk7CisjZW5kaWYKKwogICAgIGppdC5yZXN0b3JlQ2Fs
bGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUp
OwogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAyOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1
NzQ4NjE2YmQzYjhjZjY4Li4zZWY0YWE0OGZmZTRjNjg3NmRjNDljM2MxNGI5MDY1YWVmZTJkNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4g
bGlua0J1ZmZlcjsKIAogICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmcmFtZSA9IENDYWxsSGVs
cGVyczo6QWRkcmVzcygKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgLXN0YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsK
ICAgICAKICAgICBzd2l0Y2ggKGdyYXBoLm1fcGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENv
bXBpbGF0aW9uTW9kZTo6RlRMOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggYjFlMDM2OTE0MTBiODI3YjBjMGVkNGQwZmVjMjdkODc1NTlj
NTk0NC4uY2NlZDIxMzY0OWU2ZGE4MzlhNzQ3ODhmYjFlYTRjNjZlYTYxMDRhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTk4LDE1ICsx
OTgsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICB7CiAgICAgICAgICAgICBt
X3Byb2Muc2V0TnVtRW50cnlwb2ludHMobV9ncmFwaC5tX251bWJlck9mRW50cnlwb2ludHMpOwot
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLm1fY29kZUJsb2NrOwog
CiAgICAgICAgICAgICBSZWY8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3I+IGNhdGNoUHJvbG9n
dWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9y
RnVuY3Rpb24+KAotICAgICAgICAgICAgICAgIFtjb2RlQmxvY2tdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgeworICAgICAgICAgICAgICAgIFtdKENDYWxsSGVscGVy
cyYgaml0LCBCMzo6QWlyOjpDb2RlJiBjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFt
ZVNpemUoKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFNhdmUoY29k
ZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIENvZGVC
bG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBpbiBGVEw6OnByZXBhcmVPU1JF
bnRyeS4KICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBj
YXRjaEVudHJ5cG9pbnRJbmRleCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0
ZWNvZGVJbmRleC5rZXlzKCkpIHsKQEAgLTI3Miw5ICsyNzEsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbnVtYmVyVGFnLT5rZXkoKSk7
CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV9ub3RDZWxsTWFzay0+a2V5KCkpOwog
ICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUg
YSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKLSAgICAgICAgLy8gdGhhdCB3b3VsZCBj
YXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBh
ZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKSk7Cisg
ICAgICAgIC8vIFdoZW4gcnVubmluZyBGVEwgY29kZSwgd2UgYWxyZWFkeSBzdG9yZSBDb2RlQmxv
Y2sgdG8gQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLgogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJm
bG93IENoZWNrLgogICAgICAgICB1bnNpZ25lZCBleGl0RnJhbWVTaXplID0gbV9ncmFwaC5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjdkZDU5NzkwYjcxZjk4
YTIxN2IxMjU4Nzc2NzcxNjVhYzY4ZWUwYy4uNzc0N2QzYWQ4YjUzNWZhODU0N2U3NDAyYmE3YjMy
NGQ1OWI3NWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCkBAIC00MDYsMTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAg
IC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0gICAgICAg
IHJldHVybiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CkBAIC00
NzcsMTIgKzQ3MSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2Vt
YmxlciB7CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2
b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewog
ICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNsYXNzIEFz
c2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQ
VShNSVBTKQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVy
RGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRl
clJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBz
aXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQog
ICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJl
c3NSZWdpc3Rlcik7CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShSSVNDVjY0KQotICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAg
IHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFu
ZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCop
OwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAg
ICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3
YjRjNjQxMi4uODY3NTFkYjFlYWMyZmRlNjI3ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjAzLDMwICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93
UGF0aEZ1bmN0aQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxF
QVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSk7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCByZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVj
dXRhYmxlID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
c3VsdCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9u
OjpyYXJlRGF0YVRhZyksIHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwot
ICAgIGlmIChtX3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2Fs
bCgpKSwgcmVzdWx0KTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0K
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYg
Y3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+
KCktPmNvZGVCbG9jaygpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5
cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6
dmVyYm9zZSkKQEAgLTc1MywxMCArNzI5LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29k
ZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJr
ZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJ
VFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJh
c2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3Rh
dGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1h
cmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xv
Z3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmICht
X2Rpc2Fzc2VtYmxlcikKQEAgLTc2Nyw4ICs3NDEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRM
aW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAg
ICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0
Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgp
IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+
KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9
IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAi
LCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisj
ZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBiZWdpbkxhYmVsKHRoaXMpOwogCkBAIC04MzEsNyAr
ODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsK
IAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Vu
bGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgewor
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+
Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklU
VHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJh
d1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyNlbmRp
ZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVz
cyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNob3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAK
ICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRj
YzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2FmMmZjMjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3
ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsy
NjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3Rh
bnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZv
aWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdU
MCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5k
bGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApp
bmRleCAzYzRhM2FlM2E5ODhjZWU5NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi5lYzRmYTJlMGU1
MjNlN2ZhNjE0N2Y5ZDIwOGYzZWQzMmZkZmZhZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2
bSwgQ2FsbE1vZGUgbW8KICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1Q0LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0
aEFyaXR5Q2hlY2tGb3Ioa2luZCkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgc2xv
d0Nhc2UuYXBwZW5kKGppdC5qdW1wKCkpOyAvLyBGSVhNRQogICAgIHNsb3dDYXNlLmFwcGVuZChq
aXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAg
ICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2Un
cmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzZTJjNmRmNjBhNDc4Y2Ex
MDlhYWRhOGMzM2Q2MGM5OTRiNWQzYzAxLi43MTZkZmJiYzA1ODA4MjU4ZmMxMWJlYTE3OTljZmE3
NmQwNzcwY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzAsNiArMTcwLDcgQEAgY29uc3QgU3RhY2tBbGlnbm1l
bnRTbG90cyA9IGNvbnN0ZXhwciAoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKIGNvbnN0IFN0
YWNrQWxpZ25tZW50TWFzayA9IFN0YWNrQWxpZ25tZW50IC0gMQogCiBjb25zdCBDYWxsZXJGcmFt
ZUFuZFBDU2l6ZSA9IGNvbnN0ZXhwciAoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorY29uc3Qg
UHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSA9IGNvbnN0ZXhwciAoc2l6ZW9mKHByb2xvZ3VlU3Rh
Y2tQb2ludGVyRGVsdGEoKSkpCiAKIGNvbnN0IENhbGxlckZyYW1lID0gMAogY29uc3QgUmV0dXJu
UEMgPSBDYWxsZXJGcmFtZSArIE1hY2hpbmVSZWdpc3RlclNpemUKQEAgLTExOTIsNyArMTE5Myw4
IEBAIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gcHJlcGFy
ZUZvclJlZ3VsYXJDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorbWFjcm8gcHJlcGFy
ZUZvclJlZ3VsYXJDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9j
aykKKyAgICBzdG9yZUNvZGVCbG9jayhDb2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gQ2FsbGVy
RnJhbWVBbmRQQ1NpemVbc3BdKQogZW5kCiAKIG1hY3JvIGludm9rZUZvclJlZ3VsYXJDYWxsKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBtYXliZU9sZENGUiwgY2FsbFB0clRhZykKQEAg
LTEyMDgsNyArMTIxMCw3IEBAIGVuZAogCiAjIHNwIHBvaW50cyB0byB0aGUgbmV3IGZyYW1lICsg
Q2FsbGVyRnJhbWVBbmRQQ1NpemUKICMgV2UgbGVhdmUgY2ZyIHRlbXA0IHRvIHVzZSBpdCBmb3Ig
dW50YWdnaW5nLgotbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMs
IHRlbXA0KQorbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0LCBzdG9yZUNvZGVCbG9jaykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgp
CiAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNb
Y2ZyXSwgdGVtcDIKQEAgLTEyNjMsNiArMTI2NSw4IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2Fs
bCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEs
IHNwCisKKyAgICBzdG9yZUNvZGVCbG9jayhDb2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gUHJv
bG9ndWVTdGFja1BvaW50ZXJEZWx0YVtzcF0pCiBlbmQKIAogbWFjcm8gaW52b2tlRm9yVGFpbENh
bGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1heWJlT2xkQ0ZSLCBjYWxsUHRyVGFn
KQpAQCAtMTMwMyw3ICsxMzA3LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUs
IHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAg
bWFjcm8gKGNhbGxlZSwgY2FsbGVlRnJhbWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZy
YW1lUHRyLCAuZG9udFVwZGF0ZVNQCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBz
cAotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBw
cmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgICAgICAu
ZG9udFVwZGF0ZVNQOgogICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1l
JV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAg
ICBlbmQpCkBAIC0xNDgyLDQ2ICsxNDg2LDYgQEAgbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoc2l6
ZSwgaW5kZXgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9j
a0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRh
cmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0
aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJl
RGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykp
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1f
Y29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBm
dW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAgICBp
ZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0g
ICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JS
YXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJnZXRS
ZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFi
bGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhw
ciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0
ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgbG9h
ZHAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6bV9jb2RlQmxvY2tbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
KHRhcmdldFJlZ2lzdGVyKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3Rl
cgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQot
ICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KLWVuZAotCi1tYWNybyBu
b3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKLSAgICAjIE5vdGhpbmcg
dG8gZG8hCi1lbmQKLQogbWFjcm8gY29udmVydENhbGxlZVRvVk0oY2FsbGVlKQogICAgIGJ0cG56
IGNhbGxlZSwgKGNvbnN0ZXhwciBQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCksIC5w
cmVjaXNlQWxsb2NhdGlvbgogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCBjYWxsZWUKQEAgLTE1
MzQsNyArMTQ5OCw3IEBAIGVuZAogCiAjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8g
ZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKICMgaW4g
dDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgotbWFjcm8gcHJvbG9ndWUo
Y29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQ
YXRoKQorbWFjcm8gcHJvbG9ndWUob3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgIyBT
ZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJl
c2VydmVDYWxsZXJQQ0FuZENGUigpCiAKQEAgLTE1NDMsOCArMTUwNyw3IEBAIG1hY3JvIHByb2xv
Z3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VT
bG93UGF0aCkKICAgICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGFk
ZHAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwsIHNwCiAgICAgZW5kCi0gICAgY29kZUJs
b2NrR2V0dGVyKHQxKQotICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKICAgICBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDAKICAgICAgICAgYmFkZGlzIDUs
IChVbmxpbmtlZENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyICsgQmFzZWxpbmVFeGVj
dXRpb25Db3VudGVyOjptX2NvdW50ZXIpW3QwXSwgLmNvbnRpbnVlCkBAIC0xNTg0LDcgKzE1NDcs
NyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3Ny
U2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJU
YWcKICAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6Ci0gICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyKHQxKQorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICAuY29u
dGludWU6CiAgICAgZW5kCiAKQEAgLTE2MjMsNyArMTU4Niw3IEBAIG1hY3JvIHByb2xvZ3VlKGNv
ZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0
aCkKIC5zdGFja0hlaWdodE9LR2V0Q29kZUJsb2NrOgogICAgICMgU3RhY2sgY2hlY2sgc2xvdyBw
YXRoIHJldHVybmVkIHRoYXQgdGhlIHN0YWNrIHdhcyBvay4KICAgICAjIFNpbmNlIHRoZXkgd2Vy
ZSBjbG9iYmVyZWQsIG5lZWQgdG8gZ2V0IENvZGVCbG9jayBhbmQgbmV3IHNwCi0gICAgbm90RnVu
Y3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAg
ICAgZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2sodDEsIHQwKQogICAgIHN1YnAgY2Zy
LCB0MCwgdDAKIApAQCAtMjAyNiwzOSArMTk4OSwzOSBAQCBub1dpZGUobGxpbnRfb3Bfd2lkZTMy
KQogbm9XaWRlKGxsaW50X29wX2VudGVyKQogCiBvcChsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCBt
YWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X21vZHVsZV9wcm9ncmFtX3By
b2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X2V2YWxfcHJv
bG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIs
IG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNl
X3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
YWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKICAgICBmdW5jdGlvbkluaXRp
YWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5j
dGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlz
cGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAg
ICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ss
IF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9uQXJpdHlDaGVj
ayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoK
ICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCkBAIC0yMDY2LDcgKzIwMjksNyBAQCBvcChs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKIGVuZCkKIAogb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBw
cm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIHByb2xv
Z3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBf
bGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlD
aGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25G
b3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKQEAg
LTI1MjcsNyArMjQ5MCw3IEBAIG1hY3JvIGxpbmtTbG93UGF0aEZvcihmdW5jdGlvbikKICAgICB1
bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBidHB6IHIxLCAuZG9Ob3RUcmFzaAogICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkKLSAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEs
IHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUZvclRhaWxDYWxsKHQxLCB0MiwgdDMsIHQ0LCBtYWNy
byhhZGRyZXNzKSBlbmQpCiAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQ0CiAuZG9Ob3RUcmFzaDoK
ICAgICBqbXAgdDAsIEpTRW50cnlQdHJUYWcKQEAgLTI1NTAsMTIgKzI1MTMsMTMgQEAgbWFjcm8g
dmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZSwKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9hZHAgb2Zmc2V0T2ZKSVRD
b2RlV2l0aEFyaXR5Q2hlY2tbdDFdLCB0MQogICAgIGJ0cHogdDEsIHNsb3dDYXNlCisgICAgam1w
IHNsb3dDYXNlICMgRklYTUUKIC5jYWxsQ29kZToKLSAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQz
LCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5k
KQogICAgIGptcCB0MSwgSlNFbnRyeVB0clRhZwogLm5vdEpTRnVuY3Rpb246CiAgICAgYmJuZXEg
SlNDZWxsOjptX3R5cGVbdDBdLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgc2xvd0Nhc2UKLSAgICBw
cmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0
NCwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgIGptcCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGlu
ZQogZW5kCiAKQEAgLTI1NzAsNyArMjUzNCw3IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZv
KgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF9jYWxs
X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNl
OjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlv
bl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5k
LCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3Ry
YW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxv
Y2spIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxp
bnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU3OSw3ICsyNTQzLDcgQEAgZW5kKQogIyB0MiBp
cyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGlu
dF92aXJ0dWFsX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVu
a0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ss
IF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1
bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
LCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spIGVuZCwgLnNsb3dDYXNl
KQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQog
ZW5kKQpAQCAtMjU4OCw5ICsyNTUyLDkgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAj
IHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX3RhaWxfY2Fs
bF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFz
ZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rp
b25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisg
ICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3Jv
ICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgICAgIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKLSAgICAgICAgcHJlcGFyZUZvclRh
aWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgICAgICBwcmVwYXJlRm9yVGFp
bENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgICAg
ICB1bnRhZ1JldHVybkFkZHJlc3MgdGVtcDQKICAgICBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2Fz
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggYWNlODcxMTY3MmU3MDIxNmQzOWE0OGRmMTVmZDY2ZDZi
NTdjNDExZS4uYWQyNTAxN2VmMGI0N2ZjMGIwNTA0NzQ3ZGI1NzViOTE1MDE4YWZlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTIyNTksNyArMjI1OSwxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnBuZXEgdDAsIHQzLCAub3BDYWxsU2xvdwotICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQs
IHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAg
c3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9u
b21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjMzOCw3ICsyMzQxLDEwIEBAIG1h
Y3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAg
ICAgICAgYnBuZXEgdDAsIHQzLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwo
dDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwg
bWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAg
ICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAg
ICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
blt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IDVkZTdiY2M3ZmQwZDRmMDQwZjJkZjk0YmQ0NzM0NWQ4
MzU4Njk0NDcuLjhjZDdkYmUyYTRhMjU5MDY0MzYxZDM2ZjU2ZjhjYjNlNDk1MDlkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCkBAIC0yNDgzLDcgKzI0ODMsMTAgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1l
LCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKIAog
Lm5vdFBvbHltb3JwaGljOgogICAgIGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKLSAgICBwcmVw
YXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwg
bWFjcm8oYWRkcmVzcykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgIHN0b3Jl
cCB0MiwgYWRkcmVzcworICAgIGVuZCkKIAogLmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3Jw
aGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKQEAgLTI1NjEsNyArMjU2NCwxMCBAQCBtYWNybyBk
b0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIGdldCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaQogCiAgICAgICAgIC5ub3RQb2x5bW9ycGhpYzoKICAgICAgICAgICAg
IGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0
MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3Jv
KGFkZHJlc3MpCisgICAgICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgICAg
ICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgLmdv
UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVd
LCB0NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5kZXgg
NzEzNWY0ZjZmYzIwY2IzOWU4NWJhYmMxZDFjZjFlYWI1OGI2MmJkNi4uMjRjMTRiM2Y4ZjZiNWY0
NTViZDBhNWE3N2M1OTMyYmU5ZjY4ZWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0xNDcsNyArMTQ3LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hU
b0pJVEZvclByb2xvZ3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogICAgICAgICAgICAgICAgIGptcCB3
czAsIFdhc21FbnRyeVB0clRhZwogICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgot
ICAgICAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIp
CisgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY29kZUJsb2NrUmVnaXN0ZXIKICAg
ICAgICAgZW5kKQogICAgIGVuZAogZW5kCkBAIC0yODMsNyArMjgzLDcgQEAgbWFjcm8gcmVzdG9y
ZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgc3VicCBjZnIsIHdzMSwgc3AKIGVuZAogCi1t
YWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRX
YXNtSW5zdGFuY2UpCittYWNybyB3YXNtUHJvbG9ndWUobG9hZFdhc21JbnN0YW5jZSkKICAgICAj
IFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAgICBw
cmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2Fz
bSgpCkBAIC0yOTMsOCArMjkzLDkgQEAgbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogICAgIGxvYWRwIFdhc206Oklu
c3RhbmNlOjptX293bmVyW3dhc21JbnN0YW5jZV0sIHdzMAogICAgIHN0b3JlcCB3czAsIFRoaXNB
cmd1bWVudE9mZnNldFtjZnJdCiAKLSAgICBjb2RlQmxvY2tHZXR0ZXIod3MwKQotICAgIGNvZGVC
bG9ja1NldHRlcih3czApCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHdzMAorICAgIGFuZHAgfjMs
IHdzMAorICAgIHN0b3JlcCB3czAsIENvZGVCbG9ja1tjZnJdCiAKICAgICAjIEdldCBuZXcgc3Ag
aW4gd3MxIGFuZCBjaGVjayBzdGFjayBoZWlnaHQuCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxs
ZWU6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMF0sIHdzMQpAQCAtNTE0LDcgKzUxNSw3IEBAIG9wKHdh
c21fZnVuY3Rpb25fcHJvbG9ndWUsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAK
LSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQorICAgIHdhc21Qcm9sb2d1ZShsb2FkV2Fz
bUluc3RhbmNlRnJvbVRMUykKICAgICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkKIApAQCAt
NTIzLDcgKzUyNCw3IEBAIG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAo
KQogICAgICAgICBlcnJvcgogICAgIGVuZAogCi0gICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBtYWNybyAoKSBlbmQpCisgICAgd2Fz
bVByb2xvZ3VlKG1hY3JvICgpIGVuZCkKICAgICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBhNjk5MzE1OTA5OWNj
YzFiNzM5NmE5N2M1OGZkNGVlMzFhNWMxODJlLi44ZGMyZjE3ODJlMGJjZDU0NzI1ZTI3NzliYmZl
NjBmZTc3YzY0Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAt
ODksNiArODksNyBAQCBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIG1hY3JvKFJlZ0V4cE9iamVj
dCwgSlNUeXBlOjpSZWdFeHBPYmplY3RUeXBlLCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUpIFwK
ICAgICBtYWNybyhKU1dlYkFzc2VtYmx5TW9kdWxlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxl
VHlwZSwgSlNUeXBlOjpXZWJBc3NlbWJseU1vZHVsZVR5cGUpIFwKICAgICBtYWNybyhEaXJlY3RB
cmd1bWVudHMsIEpTVHlwZTo6RGlyZWN0QXJndW1lbnRzVHlwZSwgSlNUeXBlOjpEaXJlY3RBcmd1
bWVudHNUeXBlKSBcCisgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlLCBKU1R5cGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSkgXAogICAg
IG1hY3JvKFNjb3BlZEFyZ3VtZW50cywgSlNUeXBlOjpTY29wZWRBcmd1bWVudHNUeXBlLCBKU1R5
cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhDbG9uZWRBcmd1bWVudHMsIEpT
VHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlwZSwgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSBc
CiAgICAgbWFjcm8oSlNHbG9iYWxPYmplY3QsIEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSwgSlNU
eXBlOjpHbG9iYWxPYmplY3RUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggZTMyZGNiMGFkMzRiMjNiY2RhMjQ3MWEwM2VlOTJjYjUyMzMzODIzOC4uZDZjM2MzZWRi
YWJjNTdiNzhjZWQyNzBiMDUxMDhlNTdjMDg2MDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRC
b3VuZEZ1bmN0aW9uKGJvb2wgaXNKU0Z1bmN0aW9uLCBib29sIGNhbkNvbnN0cnVjdCkKICAgICAg
ICAgICAgIHJldHVybiBjYWNoZWQ7CiAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIHJlc3VsdCA9
IGdldEhvc3RGdW5jdGlvbigKICAgICAgICAgICAgIHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNh
bGwgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCi0gICAgICAgICAgICBzbG93Q2FzZSA/
IE5vSW50cmluc2ljIDogQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBz
bG93Q2FzZSA/IE5vSW50cmluc2ljIDogTm9JbnRyaW5zaWMsIC8vIEZJWE1FCiAgICAgICAgICAg
ICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IsIG51bGxwdHIsIFN0cmluZygpKTsKICAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhl
Y3V0YWJsZT4ocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTcyMCw3ICs3MjAs
NyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0UmVtb3RlRnVuY3Rpb24oYm9vbCBpc0pTRnVu
Y3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gY2FjaGVkOwogICAgICAgICBOYXRpdmVFeGVjdXRh
YmxlKiByZXN1bHQgPSBnZXRIb3N0RnVuY3Rpb24oCiAgICAgICAgICAgICBzbG93Q2FzZSA/IHJl
bW90ZUZ1bmN0aW9uQ2FsbEdlbmVyaWMgOiByZW1vdGVGdW5jdGlvbkNhbGxGb3JKU0Z1bmN0aW9u
LAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IFJlbW90ZUZ1bmN0aW9uQ2Fs
bEludHJpbnNpYywKKyAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBOb0ludHJp
bnNpYywgLy8gRklYTUUKICAgICAgICAgICAgIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9y
LCBudWxscHRyLCBTdHJpbmcoKSk7CiAgICAgICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1dGFi
bGU+KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggYmI0NmY4YTgxMzJkMWVkNTVlMWMz
NGFmNmEwMGYwZDI0OWZmMGZjMy4uNTE0NjQ1NzJmMWNmMmVjMWYwY2FhZjU4ZGRiNzg0YWZjZmIz
NjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNw
cApAQCAtMTkyLDE0ICsxOTIsMTQgQEAgc3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSog
aW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICAvLyBw
b3AoZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2Fz
dDxVQ1BVUmVnaXN0ZXIqPigqZnJhbWVQb2ludGVyKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFt
ZVBvaW50ZXIgKyAxOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1
ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDEpOworICAgIHN0YXRpY19h
c3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsK
ICNlbGlmIENQVShBUk02NEUpIHx8IENQVShBUk02NCkKICAgICAvLyBtb3ZlKGZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgLy8gcG9wUGFpcihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNl
X2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoQVJN
NjRSZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2lu
dGVyICsgMSkpOwogICAgIGNvbnRleHQuc3AoKSA9IGZyYW1lUG9pbnRlciArIDI7Ci0gICAgc3Rh
dGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9
PSBzaXplb2Yodm9pZCopICogMik7CisgICAgc3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9p
bnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOwogI2lmIENQVShBUk02NEUpCiAgICAg
Ly8gTFIgbmVlZHMgdG8gYmUgdW50YWdnZWQgc2luY2UgT1NSIGVudHJ5IGZ1bmN0aW9uIHByb2xv
Z3VlIHdpbGwgdGFnIGl0IHdpdGggU1AuIFRoaXMgaXMgc2ltaWxhciB0byB0YWlsLWNhbGwuCiAg
ICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVn
aXN0ZXI+KHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKGNvbnRleHQuZ3By
PHZvaWQqPihBUk02NFJlZ2lzdGVyczo6bHIpLCBjb250ZXh0LnNwKCkpKTsKQEAgLTIxMCw3ICsy
MTAsNyBAQCBzdGF0aWMgdm9pZCBkb09TUkVudHJ5KEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvYmU6
OkNvbnRleHQmIGNvbnRleHQsIEJCUUNhbGxlZSYgYwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdp
c2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJhbWVQb2ludGVyKTsKICAgICBjb250ZXh0LmdwcihS
SVNDVjY0UmVnaXN0ZXJzOjpyYSkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1l
UG9pbnRlciArIDEpKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAg
IHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRh
KCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKICNlbHNlCiAjZXJyb3IgVW5z
dXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456199</attachid>
            <date>2022-03-30 21:14:26 -0700</date>
            <delta_ts>2022-03-31 18:29:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220330211426.patch</filename>
            <type>text/plain</type>
            <size>54515</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDE3MTc2YmU2MThhZGY2NWU5ZTE1MGIxYjhkNTdjYzEyZmU3MzFkLi41ZDg0Zjg0MTNlMTA4Yjky
YjJiMzg1YTZiN2QzODhjMjczYjIwN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExM
aW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93
ZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhv
dXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFt
ZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjpnZXRCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OmdldFJl
bW90ZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6ZG9PU1JFbnRyeSk6CisKIDIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9m
IGEgSlNDOjpJZGVudGlmaWVyIGZyb20gYW4gQVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9DUFUuaAppbmRleCBiM2I3Y2U1NDgzY2ZlNmQ0YTkzOGY0MDAzNjkyYjczM2Rm
YzE4NGM5Li4xMjVlYjZmODYxYWQwZjRkYTA0ZjliZWUxYzI2MmYyYjEyNjVmNjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKQEAgLTE2OCw1ICsxNjgsMjMgQEAgQUxXQVlT
X0lOTElORSBpbnQ2NF90IGh3TDNDYWNoZVNpemUoKSB7IHJldHVybiAwOyB9CiBBTFdBWVNfSU5M
SU5FIGludDMyX3QgaHdQaHlzaWNhbENQVU1heCgpIHsgcmV0dXJuIGtlcm5UQ1NNQXdhcmVOdW1i
ZXJPZlByb2Nlc3NvckNvcmVzKCk7IH0KICNlbmRpZgogCitjb25zdGV4cHIgc2l6ZV90IHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKQoreworI2lmIEVOQUJMRShDX0xPT1ApCisgICAgLy8gUHJv
bG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCBsaW5rUmVnaXN0ZXIKKyAg
ICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIC8vIFBy
b2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCisgICAgcmV0dXJuIHNp
emVvZih2b2lkKik7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUo
TUlQUykgfHwgQ1BVKFJJU0NWNjQpCisgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9p
bnRlclJlZ2lzdGVyIGFuZCBsaW5rUmVnaXN0ZXIKKyAgICByZXR1cm4gMiAqIHNpemVvZih2b2lk
Kik7CisjZWxzZQorI2Vycm9yIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMKKyNlbmRpZgorfQor
CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFjODUxNDE5NmZk
Y2ZjOGZhYzE0ZWFjNy4uYWZhZWMxZTZhMzE4ZjVlNzg4NmU3YTA2NjM5MDgzZWVhYmI0ZWVkNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAK
QEAgLTEwOCwxNyArMTA4LDE5IEBAIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IENhbGxMaW5rSW5mbzo6ZG9uZUxvY2F0aW9uKCkKICAgICByZXR1cm4gbV9kb25lTG9jYXRpb247
CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBDYWxsTGlua0luZm86OnNldE1vbm9tb3JwaGljQ2Fs
bGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSkgJiBwb2x5bW9ycGhpY0NhbGxlZU1hc2sp
KTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLnNldCh2bSwgb3duZXIsIGNhbGxlZSk7CiAKLSAg
ICBpZiAoaXNEYXRhSUMoKSkKKyAgICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJ
Qy5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhp
Y0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHN0
YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+bV9jYWxsTG9jYXRpb24s
IENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24s
IGNvZGVCbG9jayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNv
ZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMCwxMCArMTMyLDEyIEBAIHZvaWQgQ2FsbExpbmtJ
bmZvOjpjbGVhckNhbGxlZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0KCkpOwog
ICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKLSAgICBpZiAoaXNEYXRhSUMoKSkKKyAg
ICBpZiAoaXNEYXRhSUMoKSkgeworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxw
dHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBudWxs
cHRyOwotICAgIGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7CisgICAgfSBlbHNlIGlm
ICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBu
dWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlD
Lm1fY2FsbGVlTG9jYXRpb24sIG51bGxwdHIpOwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OCw5ICszMDIsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86
OnJldmVydENhbGxUb1N0dWIoKQogCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsKICAgICAgICAgbV9j
YWxsZWVPckNvZGVCbG9jay5jbGVhcigpOworICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9
IG51bGxwdHI7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24g
PSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51
bGxwdHIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJh
bmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFydE9mQnJhbmNo
UHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uKSwgY2FsbGVl
R1BSKCksIG51bGxwdHIpOwogI2Vsc2UKQEAgLTM2Myw5ICszNjksMTggQEAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW4KIAogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICAgICAgcHJl
cGFyZUZvclRhaWxDYWxsKCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0Nh
bGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsK
KyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0lu
Zm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CisKICAgICAgICAgICAg
IGdvUG9seW1vcnBoaWMubGluaygmaml0KTsgLy8gUG9seW1vcnBoaWMgc3R1YiBoYW5kbGVzIHRh
aWwgY2FsbCBzdGFjayBwcmVwLgogICAgICAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVH
UFIsIGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRj
aEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisKICAgICAgICAgICAgIGdv
UG9seW1vcnBoaWMubGluaygmaml0KTsKICAgICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mTW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAgICB9CkBAIC0zNzQsMTUgKzM4OSwyMCBA
QCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBs
KENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJy
YW5jaFB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIGNhbGxl
ZUNoZWNrLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0cikpKTsKIAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbDsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpEYXRhTGFi
ZWxQdHIgY29kZUJsb2NrU3RvcmU7CiAgICAgICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAg
ICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0g
aml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgY2FsbCA9IGppdC5uZWFyVGFpbENh
bGwoKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb2Rl
QmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwogICAgICAgICAgICAgY2FsbCA9IGppdC5uZWFyQ2FsbCgpOworICAgICAgICB9
CiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxMaW5rSW5mbyo+KGNhbGxMaW5rSW5mbyktPm1fY2FsbExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4o
Y2FsbCk7CisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY29kZUJsb2NrTG9j
YXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2Nr
U3RvcmUpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NhbGxlZUxvY2F0
aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGxlZUNoZWNr
KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtNDExLDggKzQzMSwxMCBAQCB2b2lkIENhbGxMaW5r
SW5mbzo6c2V0U3R1YihSZWY8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+JiYgbmV3U3R1YikK
IAogICAgIGlmIChpc0RhdGFJQygpKSB7CiAgICAgICAgICpiaXR3aXNlX2Nhc3Q8dWludHB0cl90
Kj4obV9jYWxsZWVPckNvZGVCbG9jay5zbG90KCkpID0gcG9seW1vcnBoaWNDYWxsZWVNYXNrOwor
ICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxwdHI7IC8vIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lIHdpbGwgc2V0IENvZGVCbG9jayBpbnNpZGUgaXQuCiAgICAgICAgIHUuZGF0
YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBtX3N0dWItPmNvZGUoKS5jb2RlKCku
cmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKICAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVs
bHB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIo
dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdHViLT5jb2RlKCkuY29kZSgpKSk7CkBAIC00NzYs
OSArNDk4LDExIEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0KQogCiAgICAgQVNTRVJUKFVzZURhdGFJQzo6Tm8gPT0gdGhp
cy0+dXNlRGF0YUlDKCkpOwogCisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0
cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIGF1dG8gY2Fs
bCA9IGppdC5uZWFyQ2FsbCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgdS5j
b2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVy
bmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5r
VGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxs
KCk7CkBAIC01MDEsOSArNTI1LDExIEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1p
dERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlCiAgICAgaml0
LmVtaXROb3BzKENDYWxsSGVscGVyczo6cGF0Y2hhYmxlSnVtcFNpemUoKSk7CiAKICAgICBwcmVw
YXJlRm9yVGFpbENhbGwoKTsKKyAgICBhdXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRy
V2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpKSkpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsKICAgICBqaXQu
YWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAg
IG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5h
bFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwog
ICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewog
ICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTE0LDYgKzU0MCw3IEBAIHZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogICAgIEFTU0VSVChtX2NhbGxMb2NhdGlvbik7Cisg
ICAgQVNTRVJUKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24pOwogICAgIGlmIChpc1RhaWxD
YWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRM
YW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC01
MjYsNyArNTUzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGly
ZWN0Q2FsbCgpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxs
TG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CiAKLXZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFn
PiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJn
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKIApAQCAtNTQwLDYg
KzU2Nyw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdl
dChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnCiAgICAgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwg
Y29kZUJsb2NrKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZmIyMGU0NzgxNDc5MzUyMTc1MDQzNDQ1YjI5NzczMWI5
NzEyOTg2Ny4uMzkyMDg2YTA4ZDFiN2E2ZTI2NzFmYzUyMmEzZjljZWZmZDE2NTJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaApAQCAtMTk5LDcg
KzE5OSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBkb25lTG9jYXRpb24oKTsKIAotICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0m
LCBKU0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOworICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mLCBKU0NlbGwqLCBK
U09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4pOwogICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIGNsZWFyQ2FsbGVlKCk7CiAg
ICAgSlNPYmplY3QqIGNhbGxlZSgpOwpAQCAtMzE3LDYgKzMxNywxMSBAQCBjbGFzcyBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgbV9jYWxsZWVPckNvZGVC
bG9jayk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgdSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9jb2RlQmxvY2spOworICAgIH0K
KwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
bigpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywg
dSkgKyBPQkpFQ1RfT0ZGU0VUT0YoVW5pb25UeXBlLCBkYXRhSUMubV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbik7CkBAIC00MDEsMTQgKzQwNiwxNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uOwog
ICAgIHVuaW9uIFVuaW9uVHlwZSB7CiAgICAgICAgIFVuaW9uVHlwZSgpCi0gICAgICAgICAgICA6
IGRhdGFJQyB7IG51bGxwdHIgfQorICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyLCBudWxs
cHRyIH0KICAgICAgICAgeyB9CiAKICAgICAgICAgc3RydWN0IERhdGFJQyB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOyAvLyBUaGlzIGlzIHdlZWtseSBoZWxkLiBBbmQgY2xl
YXJlZCB3aGVuZXZlciBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uIGlzIGNoYW5nZWQuCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tb25vbW9y
cGhpY0NhbGxEZXN0aW5hdGlvbjsKICAgICAgICAgfSBkYXRhSUM7CiAKICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFn
PiBtX2NvZGVCbG9ja0xvY2F0aW9uOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
UHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2FsbGVlTG9jYXRpb247CiAgICAgICAgIH0gY29kZUlD
OwogICAgIH0gdTsKQEAgLTUwMyw3ICs1MTAsNyBAQCBjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAgICAgdm9pZCBlbWl0RGlyZWN0RmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJik7CiAgICAgdm9pZCBlbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2Fs
bCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwotICAgIHZvaWQgc2V0RGlyZWN0
Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBz
ZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayosIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KTsKICAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYpOwogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggZTk3
NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5YTE1OGFjODQxNi4uOTY2NTA3ZDU5MDdmZDMzN2I4
ZmYxOWYxZTI2MjkyNDZkZTA4MjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXBhdGNoLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgbGlua01vbm9tb3JwaGljQ2Fs
bCgKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5r
ZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwg
Y2FsbGVlLCBjb2RlUHRyKTsKKyAgICBjYWxsTGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUo
dm0sIG93bmVyLCBjYWxsZWUsIGNhbGxlZUNvZGVCbG9jaywgY29kZVB0cik7CiAgICAgY2FsbExp
bmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlKTsKIAogICAgIGlmIChz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKQEAgLTE1NjQsNyArMTU2
NCw3IEBAIHZvaWQgbGlua0RpcmVjdENhbGwoCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJs
eUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRhTG9nKCJMaW5raW5nIGNhbGwgaW4g
IiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY29kZU9yaWdp
bigpKSwgIiB0byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spLCAiLCBlbnRyeXBvaW50
IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogCi0gICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxU
YXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOworICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KGpzQ2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KGNhbGxlZUNvZGVCbG9jayksIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQ
dHIpKTsKIAogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCiAgICAgICAgIGNhbGxlZUNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsRnJhbWUsICZjYWxsTGlua0luZm8pOwpAQCAtMTc4Nyw3
ICsxNzg3LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICB3aGlsZSAoYmluYXJ5U3dp
dGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGJpbmFy
eVN3aXRjaC5jYXNlSW5kZXgoKTsKICAgICAgICAgCi0gICAgICAgIENhbGxWYXJpYW50IHZhcmlh
bnQgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XS52YXJpYW50KCk7CisgICAgICAgIFBvbHltb3JwaGlj
Q2FsbENhc2UmIGNhbGxDYXNlID0gY2FsbENhc2VzW2Nhc2VJbmRleF07CisgICAgICAgIENhbGxW
YXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZS52YXJpYW50KCk7CiAgICAgICAgIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cjsKICAgICAgICAgaWYg
KHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CkBAIC0xODEwLDE0ICsxODExLDI1IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGJvb2wgbmVlZHNEb25lSnVtcCA9IGZhbHNlOwogICAg
ICAgICBpZiAoZnJhbWVTaHVmZmxlcikgewogICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIo
c3R1YkppdCwgZnJhbWVTaHVmZmxlci0+c25hcHNob3QoKSkucHJlcGFyZUZvclRhaWxDYWxsKCk7
CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29k
ZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5k
ZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICB9IGVsc2UgaWYgKGNh
bGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKICAgICAgICAgICAgIHN0dWJKaXQucHJlcGFyZUZv
clRhaWxDYWxsU2xvdygpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygpKQor
ICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAg
ICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RhdGFJQykKKyAgICAgICAgICAgIEFTU0VS
VCghY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7CisgICAgICAgICAgICBpZiAoaXNEYXRhSUMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAg
ICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNh
bGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8
aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAgICAgICAgICAg
IGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNh
bGxDYXNlLmNvZGVCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qg
Y2FsbGluZyB5ZXQuIFRodXMsIHN0YWNrUG9pbnRlclJlZ2lzdGVyIGlzIG5vdCBpbmNsdWRpbmcg
UEMgJiBmcmFtZVBvaW50ZXIuCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQu
bmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICBuZWVkc0RvbmVKdW1wID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBh
dGNoSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxp
bmVzLmgKaW5kZXggNTE3MWJjMTI0MDA1MmMzY2NjZDZlNmZhZjQ2ODI1MzM3ZWUzZTc4OS4uOTU4
ZDdmYjhiM2IzNzcxMDQ3MDcxOGIzOTQ4MmJiMzA1YjcwZjk5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmgKQEAgLTE5NSw4ICsxOTUsOCBA
QCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAgICAgRGVmZXJUcmFwcyBkZWZlclRyYXBzKHZt
KTsgLy8gV2UgY2FuJ3QgamV0dGlzb24gaWYgd2UncmUgZ29pbmcgdG8gY2FsbCB0aGlzIENvZGVC
bG9jay4KIAotICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5k
KSkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICBpZiAoIWV4
ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSk7CiAKICAgICAgICAgYXV0byBoYW5kbGVUaHJvd0V4Y2VwdGlvbiA9IFsmXSAoKSB7CiAg
ICAgICAgICAgICB2b2lkKiB0aHJvd1RhcmdldCA9IHZtLmdldENUSVRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwpAQCAtMjEyLDYgKzIx
Miw3IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwg
c2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpKTsKICAgICB9CisKICAgICAvLyBG
SVhNRTogU3VwcG9ydCB3YXNtIElDLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCmluZGV4IGQ1ZWE5ZDY3NTk3NTVhMzk0ZDZmNTVlZDdkNzI2YWZmZWFmNzZhMWQuLmQ4
NWUwNjUxMTU4YmMyNGI1NmVmZWQxODIwNjM5MGVhMTI4ZjFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKKyNpbmNsdWRlICJQcm9iZUNv
bnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJWTS5oIgog
CkBAIC0xMTAsNyArMTExLDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCiAg
ICAgLy8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdl
J2QgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCiAgICAgLy8gYm90aCBub3JtYWwgcmV0dXJu
IGNvZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCiAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2Rl
QmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICBpZiAobV9ncmFwaC5tX3BsYW4uY29kZUJsb2NrKCktPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKSB7CisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNv
ZGVCbG9jaygpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6REZHSklUKTsKKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggMTEzMmNmMGQ5ZjY1YjEz
OTdmZWI5ZWI5NTcxNDFlYjRkMTE1ODVmNy4uNGM4ZjJlZWRlZmFjYjUyNWZjMjhjODJhMjNjN2Uz
NmVjNzc4NGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAK
QEAgLTMzNCw5ICszMzQsOSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCi0gICAgCisKICAgICAvLyA3KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8gaGF2
ZSB0aGUgcmlnaHQgY29kZSBibG9jay4KLSAgICAKKwogICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJs
b2NrKio+KHBpdm90IC0gKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayArIDEpKSA9IGNvZGVCbG9j
azsKICAgICAKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NS
IHJldHVybmluZyBkYXRhIGJ1ZmZlciAiLCBSYXdQb2ludGVyKHNjcmF0Y2gpKTsKQEAgLTQwOCw2
ICs0MDgsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IHByZXBhcmVDYXRjaE9TUkVudHJ5KFZNJiB2bSwgQ2FsbEYKIAogICAgIC8vIFRoZSBhY3RpdmUg
bGVuZ3RoIG9mIGNhdGNoT1NSRW50cnlCdWZmZXIgd2lsbCBiZSB6ZXJvZWQgYnkgQ2xlYXJDYXRj
aExvY2FscyBub2RlLgogICAgIGRmZ0NvbW1vbi0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+c2V0QWN0
aXZlTGVuZ3RoKHNpemVvZihKU1ZhbHVlKSAqIGluZGV4KTsKKworICAgIC8vIEF0IHRoaXMgcG9p
bnQsIHdlJ3JlIGNvbW1pdHRlZCB0byB0cmlnZ2VyaW5nIGFuIE9TUiBlbnRyeSBpbW1lZGlhdGVs
eSBhZnRlciB3ZSByZXR1cm4uIEhlbmNlLCBpdCBpcyBzYWZlIHRvIG1vZGlmeSBzdGFjayBoZXJl
LgorICAgIGNhbGxGcmFtZS0+c2V0Q29kZUJsb2NrKG9wdGltaXplZENvZGVCbG9jayk7CisKICAg
ICByZXR1cm4gY2F0Y2hFbnRyeXBvaW50LT5tYWNoaW5lQ29kZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA1NWVmNzYxNTRk
MjA1MWIyMmM5ZWRkNzg3Njk1ZDU1NmM4MTUyZDc2Li5lNmU3NDNlMWVjNWQ3YzlmNDFmOTBlODli
ZDJhMjhhNTMzMDc5MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMjIxNyw3ICsyMjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigtKG1faml0LmdyYXBoKCkuZnJhbWVSZWdpc3RlckNvdW50KCkgKiBz
aXplb2YoUmVnaXN0ZXIpKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVl
U2F2ZXMoKTsKICAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKLSAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9j
aygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgICAgICAvLyBDb2RlQmxvY2sgaW4g
dGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFjZWQgaW4gT1NSIGVudHJ5LgogICAgIH0KIAogICAg
IG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggNDRhOWExYTk4ZjI3OTRhMjcwMjI5
YzZkNzJjMWI5MzYwNTUwOGM4OS4uY2M2YzA1MjMxZDczMzk5OGQ5YjgwNDQ1YTIxODMyOGQzZGNi
YmFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0xNDgsNiArMTQ5LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9y
KFZNJiB2bSkKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7
CiAgICAgaml0LmdldEVmZmVjdGl2ZUFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAKKyAgICAvLyBDb3B5aW5nIGxvY2FscyBhbmQgaGVhZGVyIGZyb20gc2NyYXRjaCBidWZmZXIg
dG8gdGhlIG5ldyBDYWxsRnJhbWUuIFRoaXMgYWxzbyByZXBsYWNlcwogICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBsb29wID0gaml0LmxhYmVsKCk7CiAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0Lm5lZ1B0cihH
UFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOwpAQCAtMTYwLDYgKzE2MiwxNCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3Io
Vk0mIHZtKQogICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlK
dW1wRGVzdGluYXRpb24pOwogCiAgICAgb2subGluaygmaml0KTsKKworI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgaml0LnByb2JlRGVidWcoW10oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVC
bG9jay0+aml0VHlwZSgpKSk7CisgICAgfSk7CisjZW5kaWYKKwogICAgIGppdC5yZXN0b3JlQ2Fs
bGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUp
OwogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAyOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1
NzQ4NjE2YmQzYjhjZjY4Li4zZWY0YWE0OGZmZTRjNjg3NmRjNDljM2MxNGI5MDY1YWVmZTJkNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4g
bGlua0J1ZmZlcjsKIAogICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmcmFtZSA9IENDYWxsSGVs
cGVyczo6QWRkcmVzcygKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgLXN0YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsK
ICAgICAKICAgICBzd2l0Y2ggKGdyYXBoLm1fcGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENv
bXBpbGF0aW9uTW9kZTo6RlRMOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggYjFlMDM2OTE0MTBiODI3YjBjMGVkNGQwZmVjMjdkODc1NTlj
NTk0NC4uY2NlZDIxMzY0OWU2ZGE4MzlhNzQ3ODhmYjFlYTRjNjZlYTYxMDRhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTk4LDE1ICsx
OTgsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICB7CiAgICAgICAgICAgICBt
X3Byb2Muc2V0TnVtRW50cnlwb2ludHMobV9ncmFwaC5tX251bWJlck9mRW50cnlwb2ludHMpOwot
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLm1fY29kZUJsb2NrOwog
CiAgICAgICAgICAgICBSZWY8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3I+IGNhdGNoUHJvbG9n
dWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9y
RnVuY3Rpb24+KAotICAgICAgICAgICAgICAgIFtjb2RlQmxvY2tdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgeworICAgICAgICAgICAgICAgIFtdKENDYWxsSGVscGVy
cyYgaml0LCBCMzo6QWlyOjpDb2RlJiBjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFt
ZVNpemUoKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFNhdmUoY29k
ZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIENvZGVC
bG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBpbiBGVEw6OnByZXBhcmVPU1JF
bnRyeS4KICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBj
YXRjaEVudHJ5cG9pbnRJbmRleCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0
ZWNvZGVJbmRleC5rZXlzKCkpIHsKQEAgLTI3Miw5ICsyNzEsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbnVtYmVyVGFnLT5rZXkoKSk7
CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV9ub3RDZWxsTWFzay0+a2V5KCkpOwog
ICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUg
YSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKLSAgICAgICAgLy8gdGhhdCB3b3VsZCBj
YXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBh
ZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKSk7Cisg
ICAgICAgIC8vIFdoZW4gcnVubmluZyBGVEwgY29kZSwgd2UgYWxyZWFkeSBzdG9yZSBDb2RlQmxv
Y2sgdG8gQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLgogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJm
bG93IENoZWNrLgogICAgICAgICB1bnNpZ25lZCBleGl0RnJhbWVTaXplID0gbV9ncmFwaC5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjdkZDU5NzkwYjcxZjk4
YTIxN2IxMjU4Nzc2NzcxNjVhYzY4ZWUwYy4uNzc0N2QzYWQ4YjUzNWZhODU0N2U3NDAyYmE3YjMy
NGQ1OWI3NWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCkBAIC00MDYsMTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAg
IC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0gICAgICAg
IHJldHVybiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CkBAIC00
NzcsMTIgKzQ3MSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2Vt
YmxlciB7CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2
b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewog
ICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNsYXNzIEFz
c2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQ
VShNSVBTKQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVy
RGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRl
clJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBz
aXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQog
ICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJl
c3NSZWdpc3Rlcik7CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShSSVNDVjY0KQotICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAg
IHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFu
ZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCop
OwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAg
ICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjEyMzU1NzgyMGMzNGY4NzYyYzE4YTk1MDNmM2E5NmY3
YjRjNjQxMi4uODY3NTFkYjFlYWMyZmRlNjI3ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjAzLDMwICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93
UGF0aEZ1bmN0aQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxF
QVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSk7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlLCByZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVj
dXRhYmxlID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
c3VsdCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9u
OjpyYXJlRGF0YVRhZyksIHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwot
ICAgIGlmIChtX3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2Fs
bCgpKSwgcmVzdWx0KTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0K
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYg
Y3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+
KCktPmNvZGVCbG9jaygpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5
cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6
dmVyYm9zZSkKQEAgLTc1MywxMCArNzI5LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29k
ZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJr
ZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJ
VFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJh
c2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3Rh
dGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1h
cmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xv
Z3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmICht
X2Rpc2Fzc2VtYmxlcikKQEAgLTc2Nyw4ICs3NDEsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRM
aW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAg
ICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0
Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgp
IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+
KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9
IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAi
LCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisj
ZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBiZWdpbkxhYmVsKHRoaXMpOwogCkBAIC04MzEsNyAr
ODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsK
IAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Vu
bGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgewor
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+
Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklU
VHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJh
d1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyNlbmRp
ZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVz
cyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNob3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAK
ICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRj
YzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2FmMmZjMjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3
ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsy
NjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3Rh
bnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZv
aWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdU
MCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5k
bGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApp
bmRleCAzYzRhM2FlM2E5ODhjZWU5NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi5lYzRmYTJlMGU1
MjNlN2ZhNjE0N2Y5ZDIwOGYzZWQzMmZkZmZhZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2
bSwgQ2FsbE1vZGUgbW8KICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1Q0LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0
aEFyaXR5Q2hlY2tGb3Ioa2luZCkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgc2xv
d0Nhc2UuYXBwZW5kKGppdC5qdW1wKCkpOyAvLyBGSVhNRQogICAgIHNsb3dDYXNlLmFwcGVuZChq
aXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAg
ICAgCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2Un
cmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzZTJjNmRmNjBhNDc4Y2Ex
MDlhYWRhOGMzM2Q2MGM5OTRiNWQzYzAxLi4zNWRjYTAwMDM4MmM1ZWNmNjBmY2EzMjA0MDY5MGY0
ZWQ2ZTE4MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzAsNiArMTcwLDcgQEAgY29uc3QgU3RhY2tBbGlnbm1l
bnRTbG90cyA9IGNvbnN0ZXhwciAoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKIGNvbnN0IFN0
YWNrQWxpZ25tZW50TWFzayA9IFN0YWNrQWxpZ25tZW50IC0gMQogCiBjb25zdCBDYWxsZXJGcmFt
ZUFuZFBDU2l6ZSA9IGNvbnN0ZXhwciAoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorY29uc3Qg
UHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSA9IGNvbnN0ZXhwciAocHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpKQogCiBjb25zdCBDYWxsZXJGcmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0gQ2Fs
bGVyRnJhbWUgKyBNYWNoaW5lUmVnaXN0ZXJTaXplCkBAIC0xMTkyLDcgKzExOTMsOCBAQCBtYWNy
byBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaQogICAgIGVuZAogZW5kCiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1
bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JSZWd1
bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCisgICAg
c3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5k
UENTaXplW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VGb3JSZWd1bGFyQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQdHJUYWcpCkBAIC0xMjA4LDcg
KzEyMTAsNyBAQCBlbmQKIAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZSArIENhbGxlckZy
YW1lQW5kUENTaXplCiAjIFdlIGxlYXZlIGNmciB0ZW1wNCB0byB1c2UgaXQgZm9yIHVudGFnZ2lu
Zy4KLW1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkK
K21hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3Rv
cmVDb2RlQmxvY2spCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRl
bXAyCkBAIC0xMjYzLDYgKzEyNjUsOCBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEs
IHRlbXAyLCB0ZW1wMywgdGVtcDQpCiAgICAgZW5kCiAKICAgICBtb3ZlIHRlbXAxLCBzcAorCisg
ICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIFByb2xvZ3VlU3Rh
Y2tQb2ludGVyRGVsdGFbc3BdKQogZW5kCiAKIG1hY3JvIGludm9rZUZvclRhaWxDYWxsKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBtYXliZU9sZENGUiwgY2FsbFB0clRhZykKQEAgLTEz
MDMsNyArMTMwNyw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1CiAgICAgICAgIG1hY3JvIChj
YWxsZWUsIGNhbGxlZUZyYW1lUHRyKQogICAgICAgICAgICAgYnRweiBjYWxsZWVGcmFtZVB0ciwg
LmRvbnRVcGRhdGVTUAogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AKLSAgICAg
ICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNh
bGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICAgICAgLmRvbnRVcGRh
dGVTUDoKICAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoLCBjYWxsZWUsIEpTRW50cnlTbG93UGF0aFB0clRhZykKICAgICAgICAgZW5kKQpA
QCAtMTQ4Miw0NiArMTQ4Niw2IEBAIG1hY3JvIGFzc2VydE5vdENvbnN0YW50KHNpemUsIGluZGV4
KQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIo
dGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtj
ZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVu
Y3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdp
c3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFy
ZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1f
ZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0
UmVnaXN0ZXIKLSAgICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjptX2NvZGVCbG9j
a1t0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25G
b3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxV
RTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UK
LSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3Rl
cgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIs
IChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAg
bG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5j
dGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNF
eGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGxvYWRwIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om1fY29kZUJsb2NrW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0
UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRS
ZWdpc3RlcikKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAot
Ci1tYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKLSAgICBzdG9y
ZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCi1lbmQKLQotbWFjcm8gbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCi0gICAgIyBOb3RoaW5nIHRvIGRvIQot
ZW5kCi0KIG1hY3JvIGNvbnZlcnRDYWxsZWVUb1ZNKGNhbGxlZSkKICAgICBidHBueiBjYWxsZWUs
IChjb25zdGV4cHIgUHJlY2lzZUFsbG9jYXRpb246OmhhbGZBbGlnbm1lbnQpLCAucHJlY2lzZUFs
bG9jYXRpb24KICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgY2FsbGVlCkBAIC0xNTM0LDcgKzE0
OTgsNyBAQCBlbmQKIAogIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUg
Y29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCiAjIGluIHQxLiBNYXkg
YWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KLW1hY3JvIHByb2xvZ3VlKGNvZGVCbG9j
a0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKK21h
Y3JvIHByb2xvZ3VlKG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICMgU2V0IHVwIHRo
ZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHByZXNlcnZlQ2Fs
bGVyUENBbmRDRlIoKQogCkBAIC0xNTQzLDggKzE1MDcsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2Rl
QmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgp
CiAgICAgICAgIGNhbGxTbG93UGF0aCh0cmFjZVNsb3dQYXRoKQogICAgICAgICBhZGRwIG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLCBzcAogICAgIGVuZAotICAgIGNvZGVCbG9ja0dldHRl
cih0MSkKLSAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCiAgICAgaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQwCiAgICAgICAgIGJhZGRpcyA1LCAoVW5saW5r
ZWRDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlciArIEJhc2VsaW5lRXhlY3V0aW9uQ291
bnRlcjo6bV9jb3VudGVyKVt0MF0sIC5jb250aW51ZQpAQCAtMTU4NCw3ICsxNTQ3LDcgQEAgbWFj
cm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRo
LCB0cmFjZVNsb3dQYXRoKQogICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCiAgICAg
ICAgIGVuZAogICAgIC5yZWNvdmVyOgotICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
cih0MSkKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgLmNvbnRpbnVlOgog
ICAgIGVuZAogCkBAIC0xNjIzLDcgKzE1ODYsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tH
ZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAuc3Rh
Y2tIZWlnaHRPS0dldENvZGVCbG9jazoKICAgICAjIFN0YWNrIGNoZWNrIHNsb3cgcGF0aCByZXR1
cm5lZCB0aGF0IHRoZSBzdGFjayB3YXMgb2suCiAgICAgIyBTaW5jZSB0aGV5IHdlcmUgY2xvYmJl
cmVkLCBuZWVkIHRvIGdldCBDb2RlQmxvY2sgYW5kIG5ldyBzcAotICAgIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrR2V0dGVyKHQxKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGdldEZy
YW1lUmVnaXN0ZXJTaXplRm9yQ29kZUJsb2NrKHQxLCB0MCkKICAgICBzdWJwIGNmciwgdDAsIHQw
CiAKQEAgLTIwMjYsMzkgKzE5ODksMzkgQEAgbm9XaWRlKGxsaW50X29wX3dpZGUzMikKIG5vV2lk
ZShsbGludF9vcF9lbnRlcikKIAogb3AobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgbWFjcm8gKCkK
LSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAg
ICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAg
ZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwg
bWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9s
b2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9ldmFsX3Byb2xvZ3VlLCBt
YWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9j
a0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKyAg
ICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlv
bigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAgICAgCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQogICAgIGRpc3BhdGNoKDAp
CiBlbmQpCiAgICAgCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBt
YWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgcHJvbG9n
dWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRf
dHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKICAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX3Ns
b3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CiAgICAgZnVu
Y3Rpb25Jbml0aWFsaXphdGlvbigwKQpAQCAtMjA2Niw3ICsyMDI5LDcgQEAgb3AobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiBlbmQpCiAKIG9wKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywg
X2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9sb2d1ZShfbGxp
bnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3Ry
YWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCkBAIC0yNTI3LDcg
KzI0OTAsNyBAQCBtYWNybyBsaW5rU2xvd1BhdGhGb3IoZnVuY3Rpb24pCiAgICAgdW50YWdSZXR1
cm5BZGRyZXNzIHNwCiAgICAgYnRweiByMSwgLmRvTm90VHJhc2gKICAgICBwcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwodDEpCi0gICAgcHJlcGFyZUZvclRhaWxDYWxsKHQxLCB0MiwgdDMs
IHQ0KQorICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0MSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVz
cykgZW5kKQogICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0NAogLmRvTm90VHJhc2g6CiAgICAgam1w
IHQwLCBKU0VudHJ5UHRyVGFnCkBAIC0yNTUwLDEyICsyNTEzLDEzIEBAIG1hY3JvIHZpcnR1YWxU
aHVua0ZvcihvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVjaywgaW50ZXJuYWxGdW5jdGlvblRy
YW1wb2xpbmUsCiAuaXNFeGVjdXRhYmxlOgogICAgIGxvYWRwIG9mZnNldE9mSklUQ29kZVdpdGhB
cml0eUNoZWNrW3QxXSwgdDEKICAgICBidHB6IHQxLCBzbG93Q2FzZQorICAgIGptcCBzbG93Q2Fz
ZSAjIEZJWE1FCiAuY2FsbENvZGU6Ci0gICAgcHJlcGFyZUNhbGwodDUsIHQyLCB0MywgdDQpCisg
ICAgcHJlcGFyZUNhbGwodDUsIHQyLCB0MywgdDQsIG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICBq
bXAgdDEsIEpTRW50cnlQdHJUYWcKIC5ub3RKU0Z1bmN0aW9uOgogICAgIGJibmVxIEpTQ2VsbDo6
bV90eXBlW3QwXSwgSW50ZXJuYWxGdW5jdGlvblR5cGUsIHNsb3dDYXNlCi0gICAgcHJlcGFyZUNh
bGwodDUsIHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUNhbGwodDUsIHQyLCB0MywgdDQsIG1hY3Jv
KGFkZHJlc3MpIGVuZCkKICAgICBqbXAgaW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUKIGVuZAog
CkBAIC0yNTcwLDcgKzI1MzQsNyBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMg
aXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY2FsbF90cmFtcG9s
aW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90
cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dD
YXNlKQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5l
LCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKSBlbmQs
IC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKICAgICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1
YWxfY2FsbCkKIGVuZCkKQEAgLTI1NzksNyArMjU0Myw3IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExp
bmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVh
bF9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhl
Y3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBfbGxpbnRf
aW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVt
cDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4
ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgX2xsaW50
X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRl
bXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKSBlbmQsIC5zbG93Q2FzZSkKIC5zbG93
Q2FzZToKICAgICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkKQEAg
LTI1ODgsOSArMjU1Miw5IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBj
YWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF90YWlsX2NhbGxfdHJhbXBv
bGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0
Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxf
dHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgIHZpcnR1
YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
LCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEs
IHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgICAgICBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwodGVtcDEpCi0gICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKKyAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKICAgICAgICAgdW50YWdS
ZXR1cm5BZGRyZXNzIHRlbXA0CiAgICAgZW5kLCAuc2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCmluZGV4IGFjZTg3MTE2NzJlNzAyMTZkMzlhNDhkZjE1ZmQ2NmQ2YjU3YzQxMWUu
LmFkMjUwMTdlZjBiNDdmYzBiMDUwNDc0N2RiNTc1YjkxNTAxOGFmZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCkBAIC0yMjU5LDcgKzIyNTksMTAgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKIAogLm5v
dFBvbHltb3JwaGljOgogICAgIGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cKLSAgICBwcmVwYXJl
Q2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFj
cm8oYWRkcmVzcykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgIHN0b3JlcCB0
MiwgYWRkcmVzcworICAgIGVuZCkKIAogLmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKQEAgLTIzMzgsNyArMjM0MSwxMCBAQCBtYWNybyBkb0Nh
bGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIGdldCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaQogCiAgICAgICAgIC5ub3RQb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGJw
bmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0Mywg
dDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFk
ZHJlc3MpCisgICAgICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgICAgICAg
ICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgLmdvUG9s
eW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0
NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCA1ZGU3YmNjN2ZkMGQ0ZjA0MGYyZGY5NGJkNDczNDVkODM1ODY5NDQ3
Li44Y2Q3ZGJlMmE0YTI1OTA2NDM2MWQzNmY1NmY4Y2IzZTQ5NTA5ZGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpA
QCAtMjQ4Myw3ICsyNDgzLDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1Bh
dGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAKIC5ub3RQb2x5
bW9ycGhpYzoKICAgICBicW5lcSB0MCwgdDEsIC5vcENhbGxTbG93Ci0gICAgcHJlcGFyZUNhbGwo
dDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFk
ZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICBzdG9yZXAgdDIsIGFk
ZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yNTYxLDcgKzI1NjQsMTAgQEAgbWFjcm8gZG9DYWxsVmFy
YXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBicW5lcSB0
MCwgdDEsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0
MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNz
KQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAgICAgICAgIHN0
b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAgICAgIC5nb1BvbHltb3Jw
aGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDcxMzVmNGY2
ZmMyMGNiMzllODViYWJjMWQxY2YxZWFiNThiNjJiZDYuLjI0YzE0YjNmOGY2YjVmNDU1YmQwYTVh
NzdjNTkzMmJlOWY2OGVlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JQ
cm9sb2d1ZShjb2RlQmxvY2tSZWdpc3RlcikKICAgICAgICAgICAgICAgICBqbXAgd3MwLCBXYXNt
RW50cnlQdHJUYWcKICAgICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAg
ICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKGNvZGVCbG9ja1JlZ2lzdGVyKQorICAgICAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNvZGVCbG9ja1JlZ2lzdGVyCiAgICAgICAgIGVu
ZCkKICAgICBlbmQKIGVuZApAQCAtMjgzLDcgKzI4Myw3IEBAIG1hY3JvIHJlc3RvcmVTdGFja1Bv
aW50ZXJBZnRlckNhbGwoKQogICAgIHN1YnAgY2ZyLCB3czEsIHNwCiBlbmQKIAotbWFjcm8gd2Fz
bVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3Rh
bmNlKQorbWFjcm8gd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgIyBTZXQgdXAg
dGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJlc2VydmVD
YWxsZXJQQ0FuZENGUigpCiAgICAgcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQpAQCAt
MjkzLDggKzI5Myw5IEBAIG1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKICAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6
bV9vd25lclt3YXNtSW5zdGFuY2VdLCB3czAKICAgICBzdG9yZXAgd3MwLCBUaGlzQXJndW1lbnRP
ZmZzZXRbY2ZyXQogCi0gICAgY29kZUJsb2NrR2V0dGVyKHdzMCkKLSAgICBjb2RlQmxvY2tTZXR0
ZXIod3MwKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB3czAKKyAgICBhbmRwIH4zLCB3czAKKyAg
ICBzdG9yZXAgd3MwLCBDb2RlQmxvY2tbY2ZyXQogCiAgICAgIyBHZXQgbmV3IHNwIGluIHdzMSBh
bmQgY2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxvYWRpIFdhc206OkxMSW50Q2FsbGVlOjptX251
bUNhbGxlZUxvY2Fsc1t3czBdLCB3czEKQEAgLTUxNCw3ICs1MTUsNyBAQCBvcCh3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlLCBtYWNybyAoKQogICAgICAgICBlcnJvcgogICAgIGVuZAogCi0gICAgd2Fz
bVByb2xvZ3VlKHdhc21Db2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBs
b2FkV2FzbUluc3RhbmNlRnJvbVRMUykKKyAgICB3YXNtUHJvbG9ndWUobG9hZFdhc21JbnN0YW5j
ZUZyb21UTFMpCiAgICAgd2FzbU5leHRJbnN0cnVjdGlvbigpCiBlbmQpCiAKQEAgLTUyMyw3ICs1
MjQsNyBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgbWFjcm8gKCkKICAgICAg
ICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbWFjcm8gKCkgZW5kKQorICAgIHdhc21Qcm9sb2d1
ZShtYWNybyAoKSBlbmQpCiAgICAgd2FzbU5leHRJbnN0cnVjdGlvbigpCiBlbmQpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggYTY5OTMxNTkwOTljY2MxYjczOTZh
OTdjNThmZDRlZTMxYTVjMTgyZS4uOGRjMmYxNzgyZTBiY2Q1NDcyNWUyNzc5YmJmZTYwZmU3N2M2
NDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTg5LDYgKzg5
LDcgQEAgc3RydWN0IEpTVHlwZVJhbmdlIHsKICAgICBtYWNybyhSZWdFeHBPYmplY3QsIEpTVHlw
ZTo6UmVnRXhwT2JqZWN0VHlwZSwgSlNUeXBlOjpSZWdFeHBPYmplY3RUeXBlKSBcCiAgICAgbWFj
cm8oSlNXZWJBc3NlbWJseU1vZHVsZSwgSlNUeXBlOjpXZWJBc3NlbWJseU1vZHVsZVR5cGUsIEpT
VHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRz
LCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6RGlyZWN0QXJndW1lbnRzVHlw
ZSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZSwgSlNUeXBlOjpGdW5jdGlvbkV4ZWN1
dGFibGVUeXBlLCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpIFwKICAgICBtYWNybyhT
Y29wZWRBcmd1bWVudHMsIEpTVHlwZTo6U2NvcGVkQXJndW1lbnRzVHlwZSwgSlNUeXBlOjpTY29w
ZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8oQ2xvbmVkQXJndW1lbnRzLCBKU1R5cGU6OkNs
b25lZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlwZSkgXAogICAgIG1h
Y3JvKEpTR2xvYmFsT2JqZWN0LCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUsIEpTVHlwZTo6R2xv
YmFsT2JqZWN0VHlwZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGUz
MmRjYjBhZDM0YjIzYmNkYTI0NzFhMDNlZTkyY2I1MjMzMzgyMzguLmQ2YzNjM2VkYmFiYzU3Yjc4
Y2VkMjcwYjA1MTA4ZTU3YzA4NjA3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKQEAgLTY5Niw3ICs2OTYsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0Qm91bmRGdW5j
dGlvbihib29sIGlzSlNGdW5jdGlvbiwgYm9vbCBjYW5Db25zdHJ1Y3QpCiAgICAgICAgICAgICBy
ZXR1cm4gY2FjaGVkOwogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiByZXN1bHQgPSBnZXRIb3N0
RnVuY3Rpb24oCiAgICAgICAgICAgICBzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25DYWxsIDogYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsLAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJp
bnNpYyA6IEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljLAorICAgICAgICAgICAgc2xvd0Nhc2Ug
PyBOb0ludHJpbnNpYyA6IE5vSW50cmluc2ljLCAvLyBGSVhNRQogICAgICAgICAgICAgY2FuQ29u
c3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05v
QXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBu
dWxscHRyLCBTdHJpbmcoKSk7CiAgICAgICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MjAsNyArNzIwLDcgQEAgTmF0
aXZlRXhlY3V0YWJsZSogVk06OmdldFJlbW90ZUZ1bmN0aW9uKGJvb2wgaXNKU0Z1bmN0aW9uKQog
ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVz
dWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2UgPyByZW1vdGVGdW5j
dGlvbkNhbGxHZW5lcmljIDogcmVtb3RlRnVuY3Rpb25DYWxsRm9ySlNGdW5jdGlvbiwKLSAgICAg
ICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBSZW1vdGVGdW5jdGlvbkNhbGxJbnRyaW5z
aWMsCisgICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogTm9JbnRyaW5zaWMsIC8v
IEZJWE1FCiAgICAgICAgICAgICBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0
ciwgU3RyaW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxlPihyZXN1
bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9wZXJhdGlvbnMuY3BwCmluZGV4IGJiNDZmOGE4MTMyZDFlZDU1ZTFjMzRhZjZhMDBm
MGQyNDlmZjBmYzMuLjUxNDY0NTcyZjFjZjJlYzFmMGNhYWY1OGRkYjc4NGFmY2ZiMzY5MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKQEAgLTE5
MiwxNCArMTkyLDE0IEBAIHN0YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmNl
LCBQcm9iZTo6Q29udGV4dCYgY29udGV4dCwgQkJRQ2FsbGVlJiBjCiAgICAgLy8gcG9wKGZyYW1l
UG9pbnRlclJlZ2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJl
Z2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVy
ICsgMTsKLSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMSk7CiAjZWxpZiBD
UFUoQVJNNjRFKSB8fCBDUFUoQVJNNjQpCiAgICAgLy8gbW92ZShmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIC8vIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIGxpbmtSZWdpc3Rlcik7CiAgICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9jYXN0PFVD
UFVSZWdpc3Rlcio+KCpmcmFtZVBvaW50ZXIpOwogICAgIGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0
ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEp
KTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3Nl
cnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9m
KHZvaWQqKSAqIDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKICNpZiBDUFUoQVJNNjRFKQogICAgIC8vIExSIG5l
ZWRzIHRvIGJlIHVudGFnZ2VkIHNpbmNlIE9TUiBlbnRyeSBmdW5jdGlvbiBwcm9sb2d1ZSB3aWxs
IHRhZyBpdCB3aXRoIFNQLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGFpbC1jYWxsLgogICAgIGNvbnRl
eHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPih1
bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChjb250ZXh0Lmdwcjx2b2lkKj4o
QVJNNjRSZWdpc3RlcnM6OmxyKSwgY29udGV4dC5zcCgpKSk7CkBAIC0yMTAsNyArMjEwLDcgQEAg
c3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0
JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8
VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoUklTQ1Y2NFJl
Z2lzdGVyczo6cmEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFtZVBvaW50ZXIg
KyAxKSk7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMjsKLSAgICBzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNp
emVvZih2b2lkKikgKiAyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVy
RGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7CiAjZWxzZQogI2Vycm9yIFVuc3VwcG9ydGVk
IGFyY2hpdGVjdHVyZS4KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456303</attachid>
            <date>2022-03-31 18:29:43 -0700</date>
            <delta_ts>2022-03-31 19:11:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220331182942.patch</filename>
            <type>text/plain</type>
            <size>62098</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZWEzZGZiNDczNDZiN2Y4N2EzYjA4ZDc4ZWU0NTZmNTQ0OWNlZjg0Li45ZTViM2Y4MWJhN2MyOTgw
MWNlODkzNWVjNmFiMzFjZjIxZWZjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAyMi0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExM
aW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93
ZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhv
dXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFt
ZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJB
VElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAgICAg
ICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpyZW1v
dGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBs
bGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldFJlbW90ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6ZG9PU1JFbnRyeSk6CisKIDIwMjItMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKaW5kZXggYjNiN2NlNTQ4M2NmZTZk
NGE5MzhmNDAwMzY5MmI3MzNkZmMxODRjOS4uMTI1ZWI2Zjg2MWFkMGY0ZGEwNGY5YmVlMWMyNjJm
MmIxMjY1ZjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9D
UFUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCkBAIC0xNjgs
NSArMTY4LDIzIEBAIEFMV0FZU19JTkxJTkUgaW50NjRfdCBod0wzQ2FjaGVTaXplKCkgeyByZXR1
cm4gMDsgfQogQUxXQVlTX0lOTElORSBpbnQzMl90IGh3UGh5c2ljYWxDUFVNYXgoKSB7IHJldHVy
biBrZXJuVENTTUF3YXJlTnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyB9CiAjZW5kaWYKIAorY29u
c3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKK3sKKyNpZiBFTkFCTEUo
Q19MT09QKQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBh
bmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOworI2VsaWYgQ1BV
KFg4Nl82NCkKKyAgICAvLyBQcm9sb2d1ZSBvbmx5IHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdp
c3RlcgorICAgIHJldHVybiBzaXplb2Yodm9pZCopOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8
IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQorICAgIC8vIFByb2xvZ3Vl
IHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCisgICAgcmV0
dXJuIDIgKiBzaXplb2Yodm9pZCopOworI2Vsc2UKKyNlcnJvciB1bnN1cHBvcnRlZCBhcmNoaXRl
Y3R1cmVzCisjZW5kaWYKK30KKworCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDM3MTZmMmFm
ODU5ZWRhNDExYzg1MTQxOTZmZGNmYzhmYWMxNGVhYzcuLmFmYWVjMWU2YTMxOGY1ZTc4ODZlN2Ew
NjYzOTA4M2VlYWJiNGVlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwCkBAIC0xMDgsMTcgKzEwOCwxOSBAQCBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlua0luZm86OmRvbmVMb2NhdGlvbigpCiAgICAgcmV0
dXJuIG1fZG9uZUxvY2F0aW9uOwogfQogCi12b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBo
aWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKK3ZvaWQgQ2FsbExpbmtJbmZv
OjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBj
YWxsZWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gY29kZVB0cikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsZWUpICYgcG9s
eW1vcnBoaWNDYWxsZWVNYXNrKSk7CiAgICAgbV9jYWxsZWVPckNvZGVCbG9jay5zZXQodm0sIG93
bmVyLCBjYWxsZWUpOwogCi0gICAgaWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkp
IHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgICAgIHUu
ZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBjb2RlUHRyOwotICAgIGVsc2Ug
eworICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4odGhp
cyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2Rl
UHRyKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5t
X2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxvY2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiwgY2FsbGVlKTsKICNlbHNl
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzAsMTAgKzEzMiwx
MiBAQCB2b2lkIENhbGxMaW5rSW5mbzo6Y2xlYXJDYWxsZWUoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0RpcmVjdCgpKTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAg
aWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMu
bV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uID0gbnVsbHB0cjsKLSAgICBlbHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24o
KSkgeworICAgIH0gZWxzZSBpZiAoIWNsZWFyZWRCeUpldHRpc29uKCkpIHsKICNpZiBFTkFCTEUo
SklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9j
b2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBudWxscHRyKTsKICNlbHNlCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTgsOSArMzAyLDExIEBA
IHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKCkKIAogICAgIGlmIChpc0RhdGFJ
QygpKSB7CiAgICAgICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgdS5k
YXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3Jw
aGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShK
SVQpCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2Nv
ZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpyZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCgKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxs
ZWVMb2NhdGlvbiksIGNhbGxlZUdQUigpLCBudWxscHRyKTsKICNlbHNlCkBAIC0zNjMsOSArMzY5
LDE4IEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0
aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luCiAKICAgICAgICAgaWYgKGlzVGFpbENhbGwp
IHsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworCisgICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIs
IGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgp
KSkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7IC8vIFBvbHltb3Jw
aGljIHN0dWIgaGFuZGxlcyB0YWlsIGNhbGwgc3RhY2sgcHJlcC4KICAgICAgICAgICAgIGppdC5m
YXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mTW9u
b21vcnBoaWNDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZD
b2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7CiAgICAgICAgICAgICBq
aXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZk1v
bm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAgfQpA
QCAtMzc0LDE1ICszODksMjAgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5m
bzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KICAgICAgICAgc2xv
d1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgY2FsbGVlR1BSLCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51
bGxwdHIpKSk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgICAgIEND
YWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOwogICAgICAgICBpZiAoaXNU
YWlsQ2FsbCkgewogICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAg
ICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0
PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpKTsKICAgICAgICAgICAgIGNh
bGwgPSBqaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVh
ckNhbGwoKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5m
byk7CiAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxs
TGlua0luZm8pLT5tX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
PEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNv
ZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJu
YWxQdHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dS5j
b2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihjYWxsZWVDaGVjayk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTQxMSw4ICs0MzEs
MTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldFN0dWIoUmVmPFBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lPiYmIG5ld1N0dWIpCiAKICAgICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICAqYml0
d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1fY2FsbGVlT3JDb2RlQmxvY2suc2xvdCgpKSA9IHBvbHlt
b3JwaGljQ2FsbGVlTWFzazsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRy
OyAvLyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSB3aWxsIHNldCBDb2RlQmxvY2sgaW5zaWRl
IGl0LgogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbV9z
dHViLT5jb2RlKCkuY29kZSgpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgfSBlbHNl
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29k
ZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFj
ZVdpdGhKdW1wKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJX
aXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLAogICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3R1Yi0+Y29kZSgp
LmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5OCwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0lu
Zm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKIAogICAgIEFTU0VSVChV
c2VEYXRhSUM6Ok5vID09IHRoaXMtPnVzZURhdGFJQygpKTsKIAorICAgIGF1dG8gY29kZUJsb2Nr
U3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rh
c2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4o
Y2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwogICAgIH0pOwog
ICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBp
bml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTAxLDkgKzUyNSwxMSBAQCB2b2lkIE9wdGltaXpp
bmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9wcyhDQ2FsbEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBT
aXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgYXV0byBjb2RlQmxvY2tT
dG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhclRh
aWxDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlu
a0J1ZmZlcikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25P
Zk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJQy5tX2Nv
ZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KGNvZGVCbG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlz
XSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKQEAgLTUx
NCw2ICs1NDAsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJl
Y3RDYWxsKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKICAgICBBU1NFUlQo
bV9jYWxsTG9jYXRpb24pOworICAgIEFTU0VSVCh1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9u
KTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZhc3RQ
YXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZhc3RQ
YXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhl
bHBlcnMmIGppdCkgewpAQCAtNTI2LDcgKzU1Myw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOwogfQogCi12b2lk
IE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9u
TGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQordm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZv
OjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEaXJl
Y3QoKSk7CiAKQEAgLTU0MCw2ICs1NjcsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86
OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZwogICAg
IH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9jYXRpb24s
IHRhcmdldCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1f
Y29kZUJsb2NrTG9jYXRpb24sIGNvZGVCbG9jayk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IGZiMjBlNDc4MTQ3OTM1
MjE3NTA0MzQ0NWIyOTc3MzFiOTcxMjk4NjcuLjM5MjA4NmEwOGQxYjdhNmUyNjcxZmM1MjJhM2Y5
Y2VmZmQxNjUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMg
UGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogCiAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKCk7CiAKLSAgICB2b2lkIHNldE1v
bm9tb3JwaGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldE1vbm9tb3JwaGljQ2Fs
bGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIHNldFNsb3dQYXRoQ2FsbERl
c3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9p
ZCBjbGVhckNhbGxlZSgpOwogICAgIEpTT2JqZWN0KiBjYWxsZWUoKTsKQEAgLTMxNyw2ICszMTcs
MTEgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxD
YWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxsTGlua0lu
Zm8sIG1fY2FsbGVlT3JDb2RlQmxvY2spOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZDb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0YUlDLm1f
Y29kZUJsb2NrKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTW9ub21v
cnBoaWNDYWxsRGVzdGluYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0YUlD
Lm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24pOwpAQCAtNDAxLDE0ICs0MDYsMTYgQEAgY2xh
c3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0lu
Zm8+IHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9zbG93UGF0
aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlvblR5cGUgewogICAgICAgICBVbmlvblR5
cGUoKQotICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyIH0KKyAgICAgICAgICAgIDogZGF0
YUlDIHsgbnVsbHB0ciwgbnVsbHB0ciB9CiAgICAgICAgIHsgfQogCiAgICAgICAgIHN0cnVjdCBE
YXRhSUMgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsgLy8gVGhpcyBpcyB3
ZWVrbHkgaGVsZC4gQW5kIGNsZWFyZWQgd2hlbmV2ZXIgbV9tb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvbiBpcyBjaGFuZ2VkLgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50
cnlQdHJUYWc+IG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb247CiAgICAgICAgIH0gZGF0YUlD
OwogCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQ
dHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jb2RlQmxvY2tMb2NhdGlvbjsKICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxlZUxvY2F0aW9u
OwogICAgICAgICB9IGNvZGVJQzsKICAgICB9IHU7CkBAIC01MDMsNyArNTEwLDcgQEAgY2xhc3Mg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbyBmaW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8gewogICAg
IHZvaWQgZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYpOwogICAgIHZvaWQgZW1pdERp
cmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4m
JiBwcmVwYXJlRm9yVGFpbENhbGwpOwogICAgIHZvaWQgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsK
LSAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0
clRhZz4pOworICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBlbWl0U2xvd1BhdGgoVk0mLCBD
Q2FsbEhlbHBlcnMmKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQ
UikgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
cGF0Y2guY3BwCmluZGV4IGU5NzYwY2NjOGVlNDA1MjY2Y2ZmNGEwYTMwNGQyOWExNThhYzg0MTYu
Ljk2NjUwN2Q1OTA3ZmQzMzdiOGZmMTlmMWUyNjI5MjQ2ZGUwODIwOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IGxpbmtNb25vbW9ycGhpY0NhbGwoCiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCgh
Y2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5zZXRNb25vbW9ycGhp
Y0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY29kZVB0cik7CisgICAgY2FsbExpbmtJbmZvLnNl
dE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlLCBjYWxsZWVDb2RlQmxvY2ssIGNv
ZGVQdHIpOwogICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZSh2bSwgb3duZXIsIGNh
bGxlZSk7CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9j
aykpCkBAIC0xNTY0LDcgKzE1NjQsNyBAQCB2b2lkIGxpbmtEaXJlY3RDYWxsKAogICAgIGlmIChz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAgZGF0YUxv
ZygiTGlua2luZyBjYWxsIGluICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9jaywgY2Fs
bExpbmtJbmZvLmNvZGVPcmlnaW4oKSksICIgdG8gIiwgcG9pbnRlckR1bXAoY2FsbGVlQ29kZUJs
b2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2RlUHRyLCAiXG4iKTsKIAotICAgIGNhbGxMaW5r
SW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
KGNvZGVQdHIpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChqc0Nhc3Q8
RnVuY3Rpb25Db2RlQmxvY2sqPihjYWxsZWVDb2RlQmxvY2spLCBDb2RlTG9jYXRpb25MYWJlbDxK
U0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAKICAgICBpZiAoY2FsbGVlQ29kZUJsb2NrKQogICAg
ICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbEZyYW1lLCAmY2FsbExp
bmtJbmZvKTsKQEAgLTE3ODcsNyArMTc4Nyw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAg
ICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CiAgICAgICAgIHNpemVf
dCBjYXNlSW5kZXggPSBiaW5hcnlTd2l0Y2guY2FzZUluZGV4KCk7CiAgICAgICAgIAotICAgICAg
ICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFudCgpOwor
ICAgICAgICBQb2x5bW9ycGhpY0NhbGxDYXNlJiBjYWxsQ2FzZSA9IGNhbGxDYXNlc1tjYXNlSW5k
ZXhdOworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2UudmFyaWFudCgpOwog
ICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNv
ZGVQdHI7CiAgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKSkgewpAQCAtMTgxMCwxNCAr
MTgxMSwyNSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBib29sIG5lZWRzRG9u
ZUp1bXAgPSBmYWxzZTsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKICAgICAgICAgICAg
IENhbGxGcmFtZVNodWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90KCkpLnBy
ZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygp
KQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAg
ICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAg
ICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKKyAgICAgICAgICAgIGlmIChjYWxs
Q2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQubmVh
clRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaXNEYXRhSUMp
CisgICAgICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpOworICAgICAg
ICAgICAgaWYgKGlzRGF0YUlDKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVC
bG9jaygpKQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9m
ZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkp
KTsKICAgICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJU
YWlsQ2FsbCgpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBXZSBhcmUgbm90IGNhbGxpbmcgeWV0LiBUaHVzLCBzdGFja1BvaW50ZXJSZWdpc3Rl
ciBpcyBub3QgaW5jbHVkaW5nIFBDICYgZnJhbWVQb2ludGVyLgorICAgICAgICAgICAgICAgICAg
ICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5j
b2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5k
ZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgbmVlZHNEb25l
SnVtcCA9IHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCmluZGV4IDUxNzFiYzEyNDAwNTJjM2NjY2Q2ZTZmYWY0
NjgyNTMzN2VlM2U3ODkuLjk1OGQ3ZmI4YjNiMzc3MTA0NzA3MThiMzk0ODJiYjMwNWI3MGY5OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5o
CkBAIC0xOTUsOCArMTk1LDggQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgdmly
dHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIAogICAgIERlZmVy
VHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNhbid0IGpldHRpc29uIGlmIHdlJ3JlIGdvaW5n
IHRvIGNhbGwgdGhpcyBDb2RlQmxvY2suCiAKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUt
Pmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSk7CisgICAgaWYgKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCiAgICAgICAgIGF1dG8gaGFuZGxlVGhyb3dFeGNl
cHRpb24gPSBbJl0gKCkgewogICAgICAgICAgICAgdm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRD
VElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGgoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKQEAgLTIxMiw2ICsyMTIsNyBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlw
ZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgaGFuZGxlVGhyb3dFeGNlcHRpb24oKSk7
CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgd2FzbSBJQy4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzM5CiAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBkNWVhOWQ2NzU5NzU1YTM5NGQ2ZjU1ZWQ3
ZDcyNmFmZmVhZjc2YTFkLi5kODVlMDY1MTE1OGJjMjRiNTZlZmVkMTgyMDYzOTBlYTEyOGYxYzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgi
CisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgi
CiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDcgKzExMSwxNCBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBv
biBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8v
IGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9u
IGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgaWYgKG1fZ3JhcGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5m
cDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7CisgICAgICAgIH0pOwor
ICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3Rl
cnNGb3JFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmlu
ZGV4IDExMzJjZjBkOWY2NWIxMzk3ZmViOWViOTU3MTQxZWI0ZDExNTg1ZjcuLjRjOGYyZWVkZWZh
Y2I1MjVmYzI4YzgyYTIzYzdlMzZlYzc3ODRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCkBAIC0zMzQsOSArMzM0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY28KICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgLy8gNykgRml4IHRo
ZSBjYWxsIGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCi0gICAgCisKICAgICAq
Yml0d2lzZV9jYXN0PENvZGVCbG9jayoqPihwaXZvdCAtIChDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2sgKyAxKSkgPSBjb2RlQmxvY2s7CiAgICAgCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZU9TUigpLCAiICAgIE9TUiByZXR1cm5pbmcgZGF0YSBidWZmZXIgIiwgUmF3UG9pbnRlcihz
Y3JhdGNoKSk7CkBAIC00MDgsNiArNDA4LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShWTSYgdm0sIENhbGxGCiAK
ICAgICAvLyBUaGUgYWN0aXZlIGxlbmd0aCBvZiBjYXRjaE9TUkVudHJ5QnVmZmVyIHdpbGwgYmUg
emVyb2VkIGJ5IENsZWFyQ2F0Y2hMb2NhbHMgbm9kZS4KICAgICBkZmdDb21tb24tPmNhdGNoT1NS
RW50cnlCdWZmZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisK
KyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSdyZSBjb21taXR0ZWQgdG8gdHJpZ2dlcmluZyBhbiBP
U1IgZW50cnkgaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgcmV0dXJuLiBIZW5jZSwgaXQgaXMgc2FmZSB0
byBtb2RpZnkgc3RhY2sgaGVyZS4KKyAgICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhvcHRpbWl6
ZWRDb2RlQmxvY2spOworCiAgICAgcmV0dXJuIGNhdGNoRW50cnlwb2ludC0+bWFjaGluZUNvZGU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNTVlZjc2MTU0ZDIwNTFiMjJjOWVkZDc4NzY5NWQ1NTZjODE1MmQ3Ni4uZTZlNzQz
ZTFlYzVkN2M5ZjQxZjkwZTg5YmQyYTI4YTUzMzA3OTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIyMTcsNyArMjIxNyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2soKQogICAgICAgICBtX2pp
dC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1l
UmVnaXN0ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBt
X2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6
ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICAg
ICAgLy8gQ29kZUJsb2NrIGluIHRoZSBzdGFjayBpcyBhbHJlYWR5IHJlcGxhY2VkIGluIE9TUiBl
bnRyeS4KICAgICB9CiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6
OnJlc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IDQ0
YTlhMWE5OGYyNzk0YTI3MDIyOWM2ZDcyYzFiOTM2MDU1MDhjODkuLmNjNmMwNTIzMWQ3MzM5OThk
OWI4MDQ0NWEyMTgzMjhkM2RjYmJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAt
MTQ4LDYgKzE0OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3Ny
RW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdU
MSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5nZXRFZmZlY3RpdmVBZGRyZXNzKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QyLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAgICAgCisgICAgLy8gQ29weWluZyBsb2NhbHMgYW5kIGhlYWRlciBm
cm9tIHNjcmF0Y2ggYnVmZmVyIHRvIHRoZSBuZXcgQ2FsbEZyYW1lLiBUaGlzIGFsc28gcmVwbGFj
ZXMKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwogICAgIGpp
dC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEp
OwogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKQEAgLTE2
MCw2ICsxNjIsMTQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JF
bnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1Vu
cmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7
CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGppdC5wcm9iZURlYnVnKFtdKFByb2JlOjpDb250
ZXh0JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZy
YW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0pOworI2VuZGlmCisK
ICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdp
c3RlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggMjhiZGVl
M2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OC4uM2VmNGFhNDhmZmU0YzY4NzZkYzQ5
YzNjMTRiOTA2NWFlZmUyZDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXI7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAgIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBl
cnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgCiAgICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSgp
KSB7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGIxZTAzNjkxNDEwYjgyN2Iw
YzBlZDRkMGZlYzI3ZDg3NTU5YzU5NDQuLmEyOTYwMzYzOGUyMjQ5ZGQ4YTQzYjc4YTkwYzg5Y2E4
MjdhODEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTE5OCwxNSArMTk4LDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgewogICAgICAgICAgICAgbV9wcm9jLnNldE51bUVudHJ5cG9pbnRzKG1fZ3JhcGgubV9udW1i
ZXJPZkVudHJ5cG9pbnRzKTsKLSAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5tX2NvZGVCbG9jazsKIAogICAgICAgICAgICAgUmVmPEIzOjpBaXI6OlByb2xvZ3VlR2Vu
ZXJhdG9yPiBjYXRjaFByb2xvZ3VlR2VuZXJhdG9yID0gY3JlYXRlU2hhcmVkVGFzazxCMzo6QWly
OjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigKLSAgICAgICAgICAgICAgICBbY29kZUJsb2Nr
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNvZGUmIGNvZGUpIHsKKyAgICAgICAgICAg
ICAgICBbXShDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgewogICAgICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICAgICAgICAgICAgICAg
ICAgaml0LmVtaXRTYXZlKGNvZGUuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwot
ICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGNvZGVCbG9j
aywgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgICAgICAg
ICAgICAgICAgICAvLyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFjZWQg
aW4gRlRMOjpwcmVwYXJlT1NSRW50cnkuCiAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgY2F0Y2hFbnRyeXBvaW50SW5kZXggOiBtX2dyYXBoLm1fZW50cnlw
b2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5kZXgua2V5cygpKSB7CkBAIC0yNzIsOSArMjcxLDkg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudCht
X251bWJlclRhZy0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbm90
Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAgCi0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhl
IENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCi0gICAg
ICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCi0gICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSkpOworICAgICAgICAvLyBXaGVuIHJ1bm5pbmcgRlRMIGNvZGUsIHdlIGFs
cmVhZHkgc3RvcmUgQ29kZUJsb2NrIHRvIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jay4KKyAgICAg
ICAgYm9vbCBpc0Z1bmN0aW9uQ29kZSA9IG1fZ3JhcGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZTsKKyAgICAgICAgVU5VU0VEX1ZBUklBQkxFKGlzRnVuY3Rp
b25Db2RlKTsKIAogICAgICAgICAvLyBTdGFjayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5z
aWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhp
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTI5Myw2ICsyOTIsMTUgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdGxGcmFtZVNpemUgPSBwYXJhbXMu
cHJvYygpLmZyYW1lU2l6ZSgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1heEZyYW1lU2l6
ZSA9IHN0ZDo6bWF4KGV4aXRGcmFtZVNpemUsIGZ0bEZyYW1lU2l6ZSk7CiAKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uQ29kZSkgeworICAgICAgICAg
ICAgICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUq
PigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgICAgICAgICAg
aml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZVNpemUpLCBm
cCwgc2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHN0
YWNrT3ZlcmZsb3c7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1heEZyYW1lU2l6ZSA+
IE9wdGlvbnM6OnJlc2VydmVkWm9uZVNpemUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyN2RkNTk3OTBiNzFmOThhMjE3YjEyNTg3NzY3NzE2
NWFjNjhlZTBjLi43NzQ3ZDNhZDhiNTM1ZmE4NTQ3ZTc0MDJiYTdiMzI0ZDU5Yjc1ZWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTQwNiwxMiAr
NDA2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgb25s
eSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIHNpemVvZih2
b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewog
ICAgICAgICBwdXNoKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTQ3NywxMiArNDcxLDYgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZiAv
LyBDUFUoWDg2XzY0KQogCiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkKLSAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7
Ci0gICAgICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBhbmQg
bGlua1JlZ2lzdGVyCi0gICAgICAgIHJldHVybiAyICogc2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0K
ICAgICB2b2lkIGVtaXRGdW5jdGlvblByb2xvZ3VlKCkKICAgICB7CiAgICAgICAgIHRhZ1JldHVy
bkFkZHJlc3MoKTsKQEAgLTUyOCwxMiArNTE2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogCiAjaWYgQ1BVKE1JUFMpCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCi0gICAgewot
ICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIHJl
dHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7Ci0g
ICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAgICBw
dXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKQEAg
LTU2OCwxMiArNTUwLDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICNlbmRpZgogCiAjaWYgQ1BVKFJJU0NWNjQpCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQ
cm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIHJldHVybkFkZHJlc3NS
ZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAg
dm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAgICBwdXNoUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCBlZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0NjcwOTAwZThiZTliLi44Njc1MWRi
MWVhYzJmZGU2Mjc4NjBkNzYwYTU5ZDUzZWI1NGM2NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC0yMDMsMjggKzIwMyw2IEBAIHZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3RpCiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0Zy
YW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQotewotICAgIFJFTEVBU0VfQVNTRVJUKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKLSAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlc3VsdCk7Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxl
T3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBicmFuY2hU
ZXN0UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlv
bjo6cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwg
cmVzdWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7Ci0gICAgaWYgKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
c3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgp
KSwgcmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLCByZXN1bHQpOwot
ICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6
Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgfSk7Ci0jZW5kaWYK
LX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogewogICAgIGlmIChKSVRJ
bnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MSwxMCArNzI5LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAg
IG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdp
bihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0
aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBC
YXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAgICAgIFN0cmluZyBpZCA9IG1ha2VT
dHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5q
aXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkKKyAgICAg
ICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoIkJhc2Vs
aW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJlbCBlbnRyeUxhYmVsKHRoaXMpOwog
ICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2NSw4ICs3NDEsMTggQEAgdm9pZCBKSVQ6OmNv
bXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0
KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYg
KG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAg
ICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICBpZiAobV91bmxpbmtl
ZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUp
OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250
ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0
VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBiZWdpbkxhYmVsKHRoaXMpOwogCkBA
IC04MjksNyArODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6
aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgbV9hcml0eUNoZWNrID0g
bGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQm
IGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZy
YW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBl
KCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkpKTsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigw
KSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNob3VsZEFsd2F5c0JlSW5saW5l
ZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2FmMmZjMjhmLi5kYWEyYzUyMTgzNmVl
MjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJs
b2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0g
ICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1
bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hh
bmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChq
dW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IGY4MWRkZjI1Nzg0MjRjOGY5ZWFhNDhjMzFkNTU4ZTVjMWVlMzQzYTYuLmViMzgz
NzBjYjkxNjI4ODVhMTk3N2YxN2JmMzliN2Y1ZDcwZTk0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JDYWxsZXIsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNSCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoZ2V0V3JhcHBlZFZhbHVlKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSkpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCB2b2lkKiwgKEpT
UmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIFNsb3dQYXRoUmV0dXJuVHlw
ZSwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCB2b2lkKiwg
KEoKICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMgYXJpdHkgZW50cnlw
b2ludC4KICAgICB7CiAgICAgICAgIERlZmVyVHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNh
bid0IGpldHRpc29uIGFueSBjb2RlIHVudGlsIGFmdGVyIHdlIGxpbmsgdGhlIGNhbGwuCisgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrU2xvdCA9IG51bGxwdHI7CiAgICAgICAgIGlmICghZXhl
Y3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAgICAgICAgICAgSlNTY29wZSogc2NvcGUg
PSB0YXJnZXRGdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICAgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1Ns
b3QgPSBudWxscHRyOwogICAgICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIHRhcmdldEZ1bmN0aW9uLCBzY29wZSwg
Q29kZUZvckNhbGwsIGNvZGVCbG9ja1Nsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwg
TXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNr
QXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNvZGVCbG9ja1Nsb3QpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBkOGEyMzc0MTM0
YzRmNTU5OGRhMGJmNjRiMjg4NDVjNDVmYjgxODY2Li5iOWU4MzBjYWQzYjNkNWYzYTQzMjAzMzky
YjRkNzdhNmMwOTE0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtMTYxLDcgKzE2MSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmssIHZvaWQsIChKU0dsCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVj
dCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JDYWxsZXIsIEVuY29kZWRKU1ZhbHVlLCAoSlNSZW1v
dGVGdW5jdGlvbiosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvclRhcmdldCwgRW5jb2RlZEpTVmFsdWUsIChKU1Jl
bW90ZUZ1bmN0aW9uKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIHZvaWQqLCAo
SlNSZW1vdGVGdW5jdGlvbiopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIFNsb3dQYXRoUmV0dXJuVHlwZSwg
KEpTUmVtb3RlRnVuY3Rpb24qKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blRocm93UmVtb3RlRnVuY3Rpb25FeGNlcHRpb24sIEVuY29kZWRKU1ZhbHVlLCAoSlNSZW1vdGVG
dW5jdGlvbiopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvciwgdm9pZCwgKENvZGVCbG9jayopKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAzYzRhM2FlM2E5ODhjZWU5NjU2
NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi45NWVlNDQ0MGJhYmQ0MDM2YjJlZmFhODUyMTQ2MDAxMzA1
M2NlODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KICAgICBqaXQu
bG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Q0LCBF
eGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkpLAog
ICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5qdW1wKCkp
OyAvLyBGSVhNRQogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cg
dGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBh
IGZhc3QKQEAgLTEzODYsMTEgKzEzODcsMjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0Lmxv
YWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tG
b3IoQ29kZUZvckNhbGwpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0NvZGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgR1BSSW5mbzo6cmVnVDEpOworICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0NvZGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OnJlZ1QxKTsKKworICAgIGF1dG8gaXNOYXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RU
eXBlKEdQUkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKTsKKyAgICBqaXQubG9h
ZFB0cigKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDAsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkp
LAorICAgICAgICBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpy
ZWdUMiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CisKKyAgICBpc05hdGl2ZS5saW5rKCZqaXQpOwogICAgIAotICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwLCBKU0VudHJ5UHRyVGFnKTsKLSAgICBqaXQu
Y2FsbChHUFJJbmZvOjpyZWdUMCwgSlNFbnRyeVB0clRhZyk7CisgICAgZW1pdFBvaW50ZXJWYWxp
ZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5jYWxs
KEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKQEAgLTE1MzIsMzMgKzE1NDIsNDUgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0
b3IoVk0mIHZtKQogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9m
SklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCi0gICAgICAgIEdQUkluZm86
OnJlZ1QxKTsKLSAgICBhdXRvIGNvZGVFeGlzdHMgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgR1BSSW5mbzo6cmVnVDIp
OworICAgIGF1dG8gY29kZUV4aXN0cyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6
Tm9uWmVybywgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgLy8gVGhlIGNhbGxzIHRvIG9wZXJhdGlv
bkdldFdyYXBwZWRWYWx1ZUZvclRhcmdldCBhYm92ZSBtYXkgR0MsIGFuZCBhbnkgR0MgY2FuIHBv
dGVudGlhbGx5IGpldHRpc29uIHRoZSBKSVQgY29kZSBpbiB0aGUgdGFyZ2V0IEpTRnVuY3Rpb24u
CiAgICAgLy8gSWYgd2UgZmluZCB0aGF0IHRoZSBKSVQgY29kZSBpcyBudWxsIChpLmUuIGhhcyBi
ZWVuIGpldHRpc29uZWQpLCB0aGVuIHdlIG5lZWQgdG8gcmUtbWF0ZXJpYWxpemUgaXQgZm9yIHRo
ZSBjYWxsIGJlbG93LiBOb3RlIHRoYXQgd2Uga25vdwogICAgIC8vIHRoYXQgb3BlcmF0aW9uTWF0
ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUgc2hvdWxkIGJlIGFibGUgdG8gcmUtbWF0
ZXJpYWxpemUgdGhlIEpJVCBjb2RlIChleGNlcHQgZm9yIGFueSBPT01FKSBiZWNhdXNlIHdlIG9u
bHkKICAgICAvLyB3ZW50IGRvd24gdGhpcyBjb2RlIHBhdGggYWZ0ZXIgd2UgZm91bmQgYSBub24t
bnVsbCBKSVQgY29kZSAoaW4gdGhlIG5vQ29kZSBjaGVjaykgYWJvdmUgaS5lLiBpdCBzaG91bGQg
YmUgcG9zc2libGUgdG8gbWF0ZXJpYWxpemUgdGhlIEpJVCBjb2RlLgorICAgIC8vIEZJWE1FOiBX
aW5kb3dzIHg2NCBpcyBub3Qgc3VwcG9ydGVkIHNpbmNlIG9wZXJhdGlvbk1hdGVyaWFsaXplUmVt
b3RlRnVuY3Rpb25UYXJnZXRDb2RlIHJldHVybnMgU2xvd1BhdGhSZXR1cm5UeXBlLgogICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0
aW9uVGFyZ2V0Q29kZSk+KEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0
aW9uVGFyZ2V0Q29kZSkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZh
bGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAg
IGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgZXhj
ZXB0aW9uQ2hlY2tzLmFwcGVuZChqaXQuZW1pdEp1bXBJZkV4Y2VwdGlvbih2bSkpOwotICAgIGpp
dC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0
LnN0b3JlQ2VsbChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIENDYWxsSGVscGVyczo6Y2FsbGVl
RnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgIGppdC5tb3ZlKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBtYXRlcmlhbGl6
ZWQgPSBqaXQuanVtcCgpOwogCiAgICAgY29kZUV4aXN0cy5saW5rKCZqaXQpOworICAgIGF1dG8g
aXNOYXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QxLCBGdW5jdGlvbkV4
ZWN1dGFibGVUeXBlKTsKKyAgICBqaXQubG9hZFB0cigKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLAorICAgICAgICBHUFJJbmZvOjpyZWdUMyk7Cisg
ICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFt
ZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisKKyAgICBpc05hdGl2ZS5saW5rKCZq
aXQpOworICAgIG1hdGVyaWFsaXplZC5saW5rKCZqaXQpOwogICAgIC8vIEJhc2VkIG9uIHRoZSBj
aGVjayBhYm92ZSwgd2Ugc2hvdWxkIGJlIGdvb2Qgd2l0aCB0aGlzLiBPbiBBUk02NCwgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uIHdpbGwgZG8gdGhpcy4KICNpZiBBU1NFUlRfRU5BQkxFRCAmJiAhQ1BV
KEFSTTY0RSkKICAgICB7Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjaGVja05vdE51bGwg
PSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNoZWNrTm90TnVsbCA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICBq
aXQuYWJvcnRXaXRoUmVhc29uKFRHSW52YWxpZFBvaW50ZXIpOwogICAgICAgICBjaGVja05vdE51
bGwubGluaygmaml0KTsKICAgICB9CiAjZW5kaWYKIAotICAgIGVtaXRQb2ludGVyVmFsaWRhdGlv
bihqaXQsIEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKLSAgICBqaXQuY2FsbChHUFJJ
bmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGpp
dCwgR1BSSW5mbzo6cmVnVDIsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5jYWxsKEdQUkluZm86
OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIC8vIFdyYXAgcmV0dXJuIHZhbHVlCiAjaWYg
VVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxZmRiNGE1N2Q1OTRiZWVhNmViYjgwYWE2OTdiZGFk
NDNmOTBmODczLi4zNWRjYTAwMDM4MmM1ZWNmNjBmY2EzMjA0MDY5MGY0ZWQ2ZTE4MmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0xNzAsNiArMTcwLDcgQEAgY29uc3QgU3RhY2tBbGlnbm1lbnRTbG90cyA9IGNvbnN0
ZXhwciAoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKIGNvbnN0IFN0YWNrQWxpZ25tZW50TWFz
ayA9IFN0YWNrQWxpZ25tZW50IC0gMQogCiBjb25zdCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9IGNv
bnN0ZXhwciAoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorY29uc3QgUHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSA9IGNvbnN0ZXhwciAocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKQogCiBj
b25zdCBDYWxsZXJGcmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0gQ2FsbGVyRnJhbWUgKyBNYWNo
aW5lUmVnaXN0ZXJTaXplCkBAIC0xMTkyLDcgKzExOTMsOCBAQCBtYWNybyBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaQogICAgIGVuZAogZW5kCiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwg
dGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwg
dGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCisgICAgc3RvcmVDb2RlQmxvY2so
Q29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXplW3NwXSkKIGVu
ZAogCiBtYWNybyBpbnZva2VGb3JSZWd1bGFyQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNh
bGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQdHJUYWcpCkBAIC0xMjA4LDcgKzEyMTAsNyBAQCBlbmQK
IAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZSArIENhbGxlckZyYW1lQW5kUENTaXplCiAj
IFdlIGxlYXZlIGNmciB0ZW1wNCB0byB1c2UgaXQgZm9yIHVudGFnZ2luZy4KLW1hY3JvIHByZXBh
cmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVG
b3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAg
ICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMjYzLDYg
KzEyNjUsOCBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywg
dGVtcDQpCiAgICAgZW5kCiAKICAgICBtb3ZlIHRlbXAxLCBzcAorCisgICAgc3RvcmVDb2RlQmxv
Y2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGFb
c3BdKQogZW5kCiAKIG1hY3JvIGludm9rZUZvclRhaWxDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCwgY2FsbGVlLCBtYXliZU9sZENGUiwgY2FsbFB0clRhZykKQEAgLTEzMDMsNyArMTMwNyw3IEBA
IG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1CiAgICAgICAgIG1hY3JvIChjYWxsZWUsIGNhbGxlZUZy
YW1lUHRyKQogICAgICAgICAgICAgYnRweiBjYWxsZWVGcmFtZVB0ciwgLmRvbnRVcGRhdGVTUAog
ICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AKLSAgICAgICAgICAgIHByZXBhcmVD
YWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwg
dDEsIG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKICAgICAgICAg
ICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxs
ZWUsIEpTRW50cnlTbG93UGF0aFB0clRhZykKICAgICAgICAgZW5kKQpAQCAtMTQ4Miw0NCArMTQ4
Niw2IEBAIG1hY3JvIGFzc2VydE5vdENvbnN0YW50KHNpemUsIGluZGV4KQogICAgIGVuZCkKIGVu
ZAogCi1tYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
Ci0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdp
c3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJd
LCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0
YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHog
dGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNF
eGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChj
b25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdl
dFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAot
Ci1tYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3Rl
cikKLSAgICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCi0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nm
cl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVj
dXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgYnRw
eiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5p
c0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0g
KGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVyXSwgdGFy
Z2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxl
OjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
Ci1lbmQKLQotbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
Ci0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8g
ZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCi0gICAgc3RvcmVwIHNvdXJj
ZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgICMgTm90aGluZyB0byBkbyEKLWVuZAotCiBt
YWNybyBjb252ZXJ0Q2FsbGVlVG9WTShjYWxsZWUpCiAgICAgYnRwbnogY2FsbGVlLCAoY29uc3Rl
eHByIFByZWNpc2VBbGxvY2F0aW9uOjpoYWxmQWxpZ25tZW50KSwgLnByZWNpc2VBbGxvY2F0aW9u
CiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIGNhbGxlZQpAQCAtMTUzMiw3ICsxNDk4LDcgQEAg
ZW5kCiAKICMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNl
dHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFsc28gdHJp
Z2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCi1tYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIs
IGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCittYWNybyBwcm9s
b2d1ZShvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1cCB0aGUgY2FsbCBm
cmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAgICBwcmVzZXJ2ZUNhbGxlclBDQW5k
Q0ZSKCkKIApAQCAtMTU0MSw4ICsxNTA3LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0
dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAg
ICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0aCkKICAgICAgICAgYWRkcCBtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbCwgc3AKICAgICBlbmQKLSAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCi0g
ICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAg
IGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6
bV91bmxpbmtlZENvZGVbdDFdLCB0MAogICAgICAgICBiYWRkaXMgNSwgKFVubGlua2VkQ29kZUJs
b2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXI6Om1f
Y291bnRlcilbdDBdLCAuY29udGludWUKQEAgLTE1ODIsNyArMTU0Nyw3IEBAIG1hY3JvIHByb2xv
Z3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VT
bG93UGF0aCkKICAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwogICAgICAgICBlbmQK
ICAgICAucmVjb3ZlcjoKLSAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisg
ICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIC5jb250aW51ZToKICAgICBlbmQK
IApAQCAtMTYyMSw3ICsxNTg2LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBj
b2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogLnN0YWNrSGVpZ2h0
T0tHZXRDb2RlQmxvY2s6CiAgICAgIyBTdGFjayBjaGVjayBzbG93IHBhdGggcmV0dXJuZWQgdGhh
dCB0aGUgc3RhY2sgd2FzIG9rLgogICAgICMgU2luY2UgdGhleSB3ZXJlIGNsb2JiZXJlZCwgbmVl
ZCB0byBnZXQgQ29kZUJsb2NrIGFuZCBuZXcgc3AKLSAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dl
dHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBnZXRGcmFtZVJlZ2lz
dGVyU2l6ZUZvckNvZGVCbG9jayh0MSwgdDApCiAgICAgc3VicCBjZnIsIHQwLCB0MAogCkBAIC0y
MDI0LDM5ICsxOTg5LDM5IEBAIG5vV2lkZShsbGludF9vcF93aWRlMzIpCiBub1dpZGUobGxpbnRf
b3BfZW50ZXIpCiAKIG9wKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJv
bG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9n
dWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNo
KDApCiBlbmQpCiAKIAogb3AobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsIG1hY3JvICgp
Ci0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisg
ICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAg
IGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZXZhbF9wcm9sb2d1ZSwgbWFjcm8gKCkK
LSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAg
ICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAg
ZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisgICAgcHJvbG9n
dWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKICAg
ICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0
KQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQog
ICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkK
LSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGlu
dF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2Fy
aXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3BhdGhf
Y2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgogICAgIGZ1bmN0aW9uSW5p
dGlhbGl6YXRpb24oMCkKQEAgLTIwNjQsNyArMjAyOSw3IEBAIG9wKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQogZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9u
Rm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xs
aW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0
eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2lu
LCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ29uc3RydWN0
QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQpAQCAtMjUyNSw3ICsyNDkwLDcg
QEAgbWFjcm8gbGlua1Nsb3dQYXRoRm9yKGZ1bmN0aW9uKQogICAgIHVudGFnUmV0dXJuQWRkcmVz
cyBzcAogICAgIGJ0cHogcjEsIC5kb05vdFRyYXNoCiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQxKQotICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0MSwgdDIsIHQzLCB0NCkKKyAg
ICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQsIG1hY3JvKGFkZHJlc3MpIGVuZCkK
ICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDQKIC5kb05vdFRyYXNoOgogICAgIGptcCB0MCwgSlNF
bnRyeVB0clRhZwpAQCAtMjU0OCwxMiArMjUxMywxMyBAQCBtYWNybyB2aXJ0dWFsVGh1bmtGb3Io
b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIGludGVybmFsRnVuY3Rpb25UcmFtcG9saW5l
LAogLmlzRXhlY3V0YWJsZToKICAgICBsb2FkcCBvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVj
a1t0MV0sIHQxCiAgICAgYnRweiB0MSwgc2xvd0Nhc2UKKyAgICBqbXAgc2xvd0Nhc2UgIyBGSVhN
RQogLmNhbGxDb2RlOgotICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0KQorICAgIHByZXBh
cmVDYWxsKHQ1LCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgam1wIHQxLCBK
U0VudHJ5UHRyVGFnCiAubm90SlNGdW5jdGlvbjoKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0
MF0sIEludGVybmFsRnVuY3Rpb25UeXBlLCBzbG93Q2FzZQotICAgIHByZXBhcmVDYWxsKHQ1LCB0
MiwgdDMsIHQ0KQorICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNz
KSBlbmQpCiAgICAgam1wIGludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lCiBlbmQKIApAQCAtMjU2
OCw3ICsyNTM0LDcgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxl
cidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX2NhbGxfdHJhbXBvbGluZSwgbWFj
cm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGlu
ZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAg
ICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8g
KHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykgZW5kLCAuc2xvd0Nh
c2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92aXJ0dWFsX2NhbGwp
CiBlbmQpCkBAIC0yNTc3LDcgKzI1NDMsNyBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoK
ICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY29uc3Ry
dWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVC
YXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFs
X2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1w
MywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxl
QmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5h
bF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVt
cDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykgZW5kLCAuc2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CiAg
ICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92aXJ0dWFsX2NhbGwpCiBlbmQpCkBAIC0yNTg2LDkg
KzI1NTIsOSBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVyJ3Mg
SlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfdGFpbF9jYWxsX3RyYW1wb2xpbmUsIG1h
Y3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JD
YWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xp
bmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKKyAgICB2aXJ0dWFsVGh1bmtG
b3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50
X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwg
dGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKICAgICAgICAgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKHRlbXAxKQotICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRl
bXAyLCB0ZW1wMywgdGVtcDQpCisgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVt
cDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyB0ZW1wNAogICAgIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQppbmRleCBhY2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYxNWZkNjZkNmI1N2M0MTFlLi5hZDI1MDE3
ZWYwYjQ3ZmMwYjA1MDQ3NDdkYjU3NWI5MTUwMThhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MjI1OSw3ICsyMjU5LDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgs
IG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAKIC5ub3RQb2x5bW9y
cGhpYzoKICAgICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgcHJlcGFyZUNhbGwodDIs
IHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJl
c3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICBzdG9yZXAgdDIsIGFkZHJl
c3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0
aW5hdGlvblt0NV0sIHQ1CkBAIC0yMzM4LDcgKzIzNDEsMTAgQEAgbWFjcm8gZG9DYWxsVmFyYXJn
cyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBicG5lcSB0MCwg
dDMsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkK
KyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQor
ICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAgICAgICAgIHN0b3Jl
cCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAgICAgIC5nb1BvbHltb3JwaGlj
OgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggNWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3MzQ1ZDgzNTg2OTQ0Ny4uOGNkN2Ri
ZTJhNGEyNTkwNjQzNjFkMzZmNTZmOGNiM2U0OTUwOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTI0ODMs
NyArMjQ4MywxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogCiAubm90UG9seW1vcnBoaWM6
CiAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgIHByZXBhcmVDYWxsKHQyLCB0Mywg
dDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQor
ICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUu
ZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisg
ICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRp
b25bdDVdLCB0NQpAQCAtMjU2MSw3ICsyNTY0LDEwIEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bj
b2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
CiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnFuZXEgdDAsIHQxLCAu
b3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAg
ICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAg
ICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
LnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgICAgICBzdG9yZXAgdDIs
IGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAuZ29Qb2x5bW9ycGhpYzoKICAg
ICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
dS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA3MTM1ZjRmNmZjMjBjYjM5
ZTg1YmFiYzFkMWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIzZjhmNmI1ZjQ1NWJkMGE1YTc3YzU5MzJi
ZTlmNjhlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNz
ZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5h
c20KQEAgLTE0Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUo
Y29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRy
VGFnCiAgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6Ci0gICAgICAgICAgICBub3RG
dW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKKyAgICAgICAgICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdpc3RlcgogICAgICAgICBlbmQpCiAgICAg
ZW5kCiBlbmQKQEAgLTI4Myw3ICsyODMsNyBAQCBtYWNybyByZXN0b3JlU3RhY2tQb2ludGVyQWZ0
ZXJDYWxsKCkKICAgICBzdWJwIGNmciwgd3MxLCBzcAogZW5kCiAKLW1hY3JvIHdhc21Qcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKK21h
Y3JvIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxs
IGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHByZXNlcnZlQ2FsbGVyUENB
bmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKQEAgLTI5Myw4ICsy
OTMsOSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0
ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fb3duZXJb
d2FzbUluc3RhbmNlXSwgd3MwCiAgICAgc3RvcmVwIHdzMCwgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nm
cl0KIAotICAgIGNvZGVCbG9ja0dldHRlcih3czApCi0gICAgY29kZUJsb2NrU2V0dGVyKHdzMCkK
KyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgd3MwCisgICAgYW5kcCB+Mywgd3MwCisgICAgc3RvcmVw
IHdzMCwgQ29kZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0IG5ldyBzcCBpbiB3czEgYW5kIGNoZWNr
IHN0YWNrIGhlaWdodC4KICAgICBsb2FkaSBXYXNtOjpMTEludENhbGxlZTo6bV9udW1DYWxsZWVM
b2NhbHNbd3MwXSwgd3MxCkBAIC01MTQsNyArNTE1LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZSwgbWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1
ZSh3YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21J
bnN0YW5jZUZyb21UTFMpCisgICAgd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2VGcm9tVExT
KQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCkBAIC01MjMsNyArNTI0LDcgQEAg
b3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgICAgIGVycm9y
CiAgICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkKKyAgICB3YXNtUHJvbG9ndWUobWFjcm8g
KCkgZW5kKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2FzdC5oCmluZGV4IGE2OTkzMTU5MDk5Y2NjMWI3Mzk2YTk3YzU4ZmQ0
ZWUzMWE1YzE4MmUuLjhkYzJmMTc4MmUwYmNkNTQ3MjVlMjc3OWJiZmU2MGZlNzdjNjQ3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC04OSw2ICs4OSw3IEBAIHN0
cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0LCBKU1R5cGU6OlJlZ0V4
cE9iamVjdFR5cGUsIEpTVHlwZTo6UmVnRXhwT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTV2Vi
QXNzZW1ibHlNb2R1bGUsIEpTVHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlLCBKU1R5cGU6Oldl
YkFzc2VtYmx5TW9kdWxlVHlwZSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50cywgSlNUeXBl
OjpEaXJlY3RBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUpIFwKKyAg
ICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSwgSlNUeXBlOjpGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJn
dW1lbnRzLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6U2NvcGVkQXJndW1l
bnRzVHlwZSkgXAogICAgIG1hY3JvKENsb25lZEFyZ3VtZW50cywgSlNUeXBlOjpDbG9uZWRBcmd1
bWVudHNUeXBlLCBKU1R5cGU6OkNsb25lZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhKU0ds
b2JhbE9iamVjdCwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBlLCBKU1R5cGU6Okdsb2JhbE9iamVj
dFR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzYmI0NThlZThl
MzZkNmI0ZTI2NWZkYjljMTkzYTJlZGQyMmRlMDgyLi5hMjc5OGRkM2ViOWNmZTczMzZmMzYzZWZm
NTczMjg4Y2I0ZGFlMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03
MTYsOSArNzE2LDE3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRSZW1vdGVGdW5jdGlvbihi
b29sIGlzSlNGdW5jdGlvbikKICAgICBhdXRvIGdldE9yQ3JlYXRlID0gWyZdIChXZWFrPE5hdGl2
ZUV4ZWN1dGFibGU+JiBzbG90KSAtPiBOYXRpdmVFeGVjdXRhYmxlKiB7CiAgICAgICAgIGlmIChh
dXRvKiBjYWNoZWQgPSBzbG90LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKKwor
ICAgICAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gTm9JbnRyaW5zaWM7CisgICAgICAgIGlmICgh
c2xvd0Nhc2UpIHsKKyNpZiAhKE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpKQorICAgICAgICAg
ICAgaW50cmluc2ljID0gUmVtb3RlRnVuY3Rpb25DYWxsSW50cmluc2ljOworI2VuZGlmCisgICAg
ICAgIH0KKwogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiByZXN1bHQgPSBnZXRIb3N0RnVuY3Rp
b24oCiAgICAgICAgICAgICBzbG93Q2FzZSA/IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyaWMgOiBy
ZW1vdGVGdW5jdGlvbkNhbGxGb3JKU0Z1bmN0aW9uLAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBO
b0ludHJpbnNpYyA6IFJlbW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAgICAgICAgIGlu
dHJpbnNpYywKICAgICAgICAgICAgIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxs
cHRyLCBTdHJpbmcoKSk7CiAgICAgICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KHJl
c3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggYmI0NmY4YTgxMzJkMWVkNTVlMWMzNGFmNmEw
MGYwZDI0OWZmMGZjMy4uNTE0NjQ1NzJmMWNmMmVjMWYwY2FhZjU4ZGRiNzg0YWZjZmIzNjkwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAt
MTkyLDE0ICsxOTIsMTQgQEAgc3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFu
Y2UsIFByb2JlOjpDb250ZXh0JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICAvLyBwb3AoZnJh
bWVQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BV
UmVnaXN0ZXIqPigqZnJhbWVQb2ludGVyKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50
ZXIgKyAxOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDEpOworICAgIHN0YXRpY19hc3NlcnQo
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKICNlbGlm
IENQVShBUk02NEUpIHx8IENQVShBUk02NCkKICAgICAvLyBtb3ZlKGZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgLy8gcG9wUGFpcihmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8
VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdp
c3RlcnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2ludGVyICsg
MSkpOwogICAgIGNvbnRleHQuc3AoKSA9IGZyYW1lUG9pbnRlciArIDI7Ci0gICAgc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXpl
b2Yodm9pZCopICogMik7CisgICAgc3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9pbnRlckRl
bHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOwogI2lmIENQVShBUk02NEUpCiAgICAgLy8gTFIg
bmVlZHMgdG8gYmUgdW50YWdnZWQgc2luY2UgT1NSIGVudHJ5IGZ1bmN0aW9uIHByb2xvZ3VlIHdp
bGwgdGFnIGl0IHdpdGggU1AuIFRoaXMgaXMgc2ltaWxhciB0byB0YWlsLWNhbGwuCiAgICAgY29u
dGV4dC5ncHIoQVJNNjRSZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+
KHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKGNvbnRleHQuZ3ByPHZvaWQq
PihBUk02NFJlZ2lzdGVyczo6bHIpLCBjb250ZXh0LnNwKCkpKTsKQEAgLTIxMCw3ICsyMTAsNyBA
QCBzdGF0aWMgdm9pZCBkb09TUkVudHJ5KEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQsIEJCUUNhbGxlZSYgYwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2Fz
dDxVQ1BVUmVnaXN0ZXIqPigqZnJhbWVQb2ludGVyKTsKICAgICBjb250ZXh0LmdwcihSSVNDVjY0
UmVnaXN0ZXJzOjpyYSkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRl
ciArIDEpKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRp
Y19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0g
c2l6ZW9mKHZvaWQqKSAqIDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0
ZWQgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="484562"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456307</attachid>
            <date>2022-03-31 19:02:13 -0700</date>
            <delta_ts>2022-03-31 20:39:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220331190212.patch</filename>
            <type>text/plain</type>
            <size>62102</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZWEzZGZiNDczNDZiN2Y4N2EzYjA4ZDc4ZWU0NTZmNTQ0OWNlZjg0Li45ZTViM2Y4MWJhN2MyOTgw
MWNlODkzNWVjNmFiMzFjZjIxZWZjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAyMi0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExM
aW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93
ZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhv
dXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFt
ZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJB
VElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAgICAg
ICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpyZW1v
dGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBs
bGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldFJlbW90ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6ZG9PU1JFbnRyeSk6CisKIDIwMjItMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKaW5kZXggYjNiN2NlNTQ4M2NmZTZk
NGE5MzhmNDAwMzY5MmI3MzNkZmMxODRjOS4uMTI1ZWI2Zjg2MWFkMGY0ZGEwNGY5YmVlMWMyNjJm
MmIxMjY1ZjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9D
UFUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCkBAIC0xNjgs
NSArMTY4LDIzIEBAIEFMV0FZU19JTkxJTkUgaW50NjRfdCBod0wzQ2FjaGVTaXplKCkgeyByZXR1
cm4gMDsgfQogQUxXQVlTX0lOTElORSBpbnQzMl90IGh3UGh5c2ljYWxDUFVNYXgoKSB7IHJldHVy
biBrZXJuVENTTUF3YXJlTnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyB9CiAjZW5kaWYKIAorY29u
c3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKK3sKKyNpZiBFTkFCTEUo
Q19MT09QKQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBh
bmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOworI2VsaWYgQ1BV
KFg4Nl82NCkKKyAgICAvLyBQcm9sb2d1ZSBvbmx5IHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdp
c3RlcgorICAgIHJldHVybiBzaXplb2Yodm9pZCopOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8
IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQorICAgIC8vIFByb2xvZ3Vl
IHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCisgICAgcmV0
dXJuIDIgKiBzaXplb2Yodm9pZCopOworI2Vsc2UKKyNlcnJvciB1bnN1cHBvcnRlZCBhcmNoaXRl
Y3R1cmVzCisjZW5kaWYKK30KKworCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDM3MTZmMmFm
ODU5ZWRhNDExYzg1MTQxOTZmZGNmYzhmYWMxNGVhYzcuLmFmYWVjMWU2YTMxOGY1ZTc4ODZlN2Ew
NjYzOTA4M2VlYWJiNGVlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwCkBAIC0xMDgsMTcgKzEwOCwxOSBAQCBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlua0luZm86OmRvbmVMb2NhdGlvbigpCiAgICAgcmV0
dXJuIG1fZG9uZUxvY2F0aW9uOwogfQogCi12b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBo
aWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKK3ZvaWQgQ2FsbExpbmtJbmZv
OjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBj
YWxsZWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gY29kZVB0cikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsZWUpICYgcG9s
eW1vcnBoaWNDYWxsZWVNYXNrKSk7CiAgICAgbV9jYWxsZWVPckNvZGVCbG9jay5zZXQodm0sIG93
bmVyLCBjYWxsZWUpOwogCi0gICAgaWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkp
IHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgICAgIHUu
ZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSBjb2RlUHRyOwotICAgIGVsc2Ug
eworICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4odGhp
cyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2Rl
UHRyKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5t
X2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxvY2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiwgY2FsbGVlKTsKICNlbHNl
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzAsMTAgKzEzMiwx
MiBAQCB2b2lkIENhbGxMaW5rSW5mbzo6Y2xlYXJDYWxsZWUoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0RpcmVjdCgpKTsKICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAg
aWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMu
bV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uID0gbnVsbHB0cjsKLSAgICBlbHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24o
KSkgeworICAgIH0gZWxzZSBpZiAoIWNsZWFyZWRCeUpldHRpc29uKCkpIHsKICNpZiBFTkFCTEUo
SklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9j
b2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBudWxscHRyKTsKICNlbHNlCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTgsOSArMzAyLDExIEBA
IHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKCkKIAogICAgIGlmIChpc0RhdGFJ
QygpKSB7CiAgICAgICAgIG1fY2FsbGVlT3JDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgdS5k
YXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3Jw
aGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShK
SVQpCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2Nv
ZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpyZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCgKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxs
ZWVMb2NhdGlvbiksIGNhbGxlZUdQUigpLCBudWxscHRyKTsKICNlbHNlCkBAIC0zNjMsOSArMzY5
LDE4IEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0
aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luCiAKICAgICAgICAgaWYgKGlzVGFpbENhbGwp
IHsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworCisgICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIs
IGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgp
KSkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7IC8vIFBvbHltb3Jw
aGljIHN0dWIgaGFuZGxlcyB0YWlsIGNhbGwgc3RhY2sgcHJlcC4KICAgICAgICAgICAgIGppdC5m
YXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mTW9u
b21vcnBoaWNDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZD
b2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7CiAgICAgICAgICAgICBq
aXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZk1v
bm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAgfQpA
QCAtMzc0LDE1ICszODksMjAgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5m
bzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KICAgICAgICAgc2xv
d1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgY2FsbGVlR1BSLCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51
bGxwdHIpKSk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgICAgIEND
YWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOwogICAgICAgICBpZiAoaXNU
YWlsQ2FsbCkgewogICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAg
ICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0
PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpKTsKICAgICAgICAgICAgIGNh
bGwgPSBqaXQubmVhclRhaWxDYWxsKCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVh
ckNhbGwoKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5m
byk7CiAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxs
TGlua0luZm8pLT5tX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
PEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNv
ZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJu
YWxQdHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dS5j
b2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihjYWxsZWVDaGVjayk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTQxMSw4ICs0MzEs
MTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldFN0dWIoUmVmPFBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lPiYmIG5ld1N0dWIpCiAKICAgICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICAqYml0
d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1fY2FsbGVlT3JDb2RlQmxvY2suc2xvdCgpKSA9IHBvbHlt
b3JwaGljQ2FsbGVlTWFzazsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRy
OyAvLyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSB3aWxsIHNldCBDb2RlQmxvY2sgaW5zaWRl
IGl0LgogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbV9z
dHViLT5jb2RlKCkuY29kZSgpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgfSBlbHNl
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29k
ZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFj
ZVdpdGhKdW1wKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJX
aXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLAogICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3R1Yi0+Y29kZSgp
LmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5OCwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0lu
Zm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKIAogICAgIEFTU0VSVChV
c2VEYXRhSUM6Ok5vID09IHRoaXMtPnVzZURhdGFJQygpKTsKIAorICAgIGF1dG8gY29kZUJsb2Nr
U3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rh
c2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4o
Y2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwogICAgIH0pOwog
ICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBp
bml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAtNTAxLDkgKzUyNSwxMSBAQCB2b2lkIE9wdGltaXpp
bmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9wcyhDQ2FsbEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBT
aXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgYXV0byBjb2RlQmxvY2tT
dG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhclRh
aWxDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlu
a0J1ZmZlcikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25P
Zk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJQy5tX2Nv
ZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KGNvZGVCbG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlz
XSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKQEAgLTUx
NCw2ICs1NDAsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJl
Y3RDYWxsKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKICAgICBBU1NFUlQo
bV9jYWxsTG9jYXRpb24pOworICAgIEFTU0VSVCh1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9u
KTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZhc3RQ
YXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZhc3RQ
YXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhl
bHBlcnMmIGppdCkgewpAQCAtNTI2LDcgKzU1Myw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOwogfQogCi12b2lk
IE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9u
TGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQordm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZv
OjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEaXJl
Y3QoKSk7CiAKQEAgLTU0MCw2ICs1NjcsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86
OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZwogICAg
IH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9jYXRpb24s
IHRhcmdldCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1f
Y29kZUJsb2NrTG9jYXRpb24sIGNvZGVCbG9jayk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IGZiMjBlNDc4MTQ3OTM1
MjE3NTA0MzQ0NWIyOTc3MzFiOTcxMjk4NjcuLjM5MjA4NmEwOGQxYjdhNmUyNjcxZmM1MjJhM2Y5
Y2VmZmQxNjUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMg
UGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogCiAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKCk7CiAKLSAgICB2b2lkIHNldE1v
bm9tb3JwaGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldE1vbm9tb3JwaGljQ2Fs
bGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIHNldFNsb3dQYXRoQ2FsbERl
c3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9p
ZCBjbGVhckNhbGxlZSgpOwogICAgIEpTT2JqZWN0KiBjYWxsZWUoKTsKQEAgLTMxNyw2ICszMTcs
MTEgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxD
YWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxsTGlua0lu
Zm8sIG1fY2FsbGVlT3JDb2RlQmxvY2spOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZDb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0YUlDLm1f
Y29kZUJsb2NrKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTW9ub21v
cnBoaWNDYWxsRGVzdGluYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0YUlD
Lm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24pOwpAQCAtNDAxLDE0ICs0MDYsMTYgQEAgY2xh
c3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0lu
Zm8+IHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9zbG93UGF0
aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlvblR5cGUgewogICAgICAgICBVbmlvblR5
cGUoKQotICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyIH0KKyAgICAgICAgICAgIDogZGF0
YUlDIHsgbnVsbHB0ciwgbnVsbHB0ciB9CiAgICAgICAgIHsgfQogCiAgICAgICAgIHN0cnVjdCBE
YXRhSUMgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsgLy8gVGhpcyBpcyB3
ZWVrbHkgaGVsZC4gQW5kIGNsZWFyZWQgd2hlbmV2ZXIgbV9tb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvbiBpcyBjaGFuZ2VkLgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50
cnlQdHJUYWc+IG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb247CiAgICAgICAgIH0gZGF0YUlD
OwogCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQ
dHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jb2RlQmxvY2tMb2NhdGlvbjsKICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxlZUxvY2F0aW9u
OwogICAgICAgICB9IGNvZGVJQzsKICAgICB9IHU7CkBAIC01MDMsNyArNTEwLDcgQEAgY2xhc3Mg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbyBmaW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8gewogICAg
IHZvaWQgZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYpOwogICAgIHZvaWQgZW1pdERp
cmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4m
JiBwcmVwYXJlRm9yVGFpbENhbGwpOwogICAgIHZvaWQgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsK
LSAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0
clRhZz4pOworICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBlbWl0U2xvd1BhdGgoVk0mLCBD
Q2FsbEhlbHBlcnMmKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQ
UikgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
cGF0Y2guY3BwCmluZGV4IGU5NzYwY2NjOGVlNDA1MjY2Y2ZmNGEwYTMwNGQyOWExNThhYzg0MTYu
Ljk2NjUwN2Q1OTA3ZmQzMzdiOGZmMTlmMWUyNjI5MjQ2ZGUwODIwOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IGxpbmtNb25vbW9ycGhpY0NhbGwoCiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCgh
Y2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5zZXRNb25vbW9ycGhp
Y0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY29kZVB0cik7CisgICAgY2FsbExpbmtJbmZvLnNl
dE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlLCBjYWxsZWVDb2RlQmxvY2ssIGNv
ZGVQdHIpOwogICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZSh2bSwgb3duZXIsIGNh
bGxlZSk7CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9j
aykpCkBAIC0xNTY0LDcgKzE1NjQsNyBAQCB2b2lkIGxpbmtEaXJlY3RDYWxsKAogICAgIGlmIChz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAgZGF0YUxv
ZygiTGlua2luZyBjYWxsIGluICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9jaywgY2Fs
bExpbmtJbmZvLmNvZGVPcmlnaW4oKSksICIgdG8gIiwgcG9pbnRlckR1bXAoY2FsbGVlQ29kZUJs
b2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2RlUHRyLCAiXG4iKTsKIAotICAgIGNhbGxMaW5r
SW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
KGNvZGVQdHIpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChqc0Nhc3Q8
RnVuY3Rpb25Db2RlQmxvY2sqPihjYWxsZWVDb2RlQmxvY2spLCBDb2RlTG9jYXRpb25MYWJlbDxK
U0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAKICAgICBpZiAoY2FsbGVlQ29kZUJsb2NrKQogICAg
ICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbEZyYW1lLCAmY2FsbExp
bmtJbmZvKTsKQEAgLTE3ODcsNyArMTc4Nyw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAg
ICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CiAgICAgICAgIHNpemVf
dCBjYXNlSW5kZXggPSBiaW5hcnlTd2l0Y2guY2FzZUluZGV4KCk7CiAgICAgICAgIAotICAgICAg
ICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFudCgpOwor
ICAgICAgICBQb2x5bW9ycGhpY0NhbGxDYXNlJiBjYWxsQ2FzZSA9IGNhbGxDYXNlc1tjYXNlSW5k
ZXhdOworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2UudmFyaWFudCgpOwog
ICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNv
ZGVQdHI7CiAgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKSkgewpAQCAtMTgxMCwxNCAr
MTgxMSwyNSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBib29sIG5lZWRzRG9u
ZUp1bXAgPSBmYWxzZTsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKICAgICAgICAgICAg
IENhbGxGcmFtZVNodWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90KCkpLnBy
ZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygp
KQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgICAg
ICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAg
ICBzdHViSml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKKyAgICAgICAgICAgIGlmIChjYWxs
Q2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQubmVh
clRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaXNEYXRhSUMp
CisgICAgICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpOworICAgICAg
ICAgICAgaWYgKGlzRGF0YUlDKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVC
bG9jaygpKQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9m
ZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkp
KTsKICAgICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJU
YWlsQ2FsbCgpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBXZSBhcmUgbm90IGNhbGxpbmcgeWV0LiBUaHVzLCBzdGFja1BvaW50ZXJSZWdpc3Rl
ciBpcyBub3QgaW5jbHVkaW5nIFBDICYgZnJhbWVQb2ludGVyLgorICAgICAgICAgICAgICAgICAg
ICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5j
b2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5k
ZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgbmVlZHNEb25l
SnVtcCA9IHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCmluZGV4IDUxNzFiYzEyNDAwNTJjM2NjY2Q2ZTZmYWY0
NjgyNTMzN2VlM2U3ODkuLjk1OGQ3ZmI4YjNiMzc3MTA0NzA3MThiMzk0ODJiYjMwNWI3MGY5OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5o
CkBAIC0xOTUsOCArMTk1LDggQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgdmly
dHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIAogICAgIERlZmVy
VHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNhbid0IGpldHRpc29uIGlmIHdlJ3JlIGdvaW5n
IHRvIGNhbGwgdGhpcyBDb2RlQmxvY2suCiAKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUt
Pmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSk7CisgICAgaWYgKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCiAgICAgICAgIGF1dG8gaGFuZGxlVGhyb3dFeGNl
cHRpb24gPSBbJl0gKCkgewogICAgICAgICAgICAgdm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRD
VElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGgoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKQEAgLTIxMiw2ICsyMTIsNyBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlw
ZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgaGFuZGxlVGhyb3dFeGNlcHRpb24oKSk7
CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgd2FzbSBJQy4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzM5CiAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBkNWVhOWQ2NzU5NzU1YTM5NGQ2ZjU1ZWQ3
ZDcyNmFmZmVhZjc2YTFkLi5kODVlMDY1MTE1OGJjMjRiNTZlZmVkMTgyMDYzOTBlYTEyOGYxYzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgi
CisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgi
CiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDcgKzExMSwxNCBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBv
biBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8v
IGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9u
IGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgaWYgKG1fZ3JhcGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5m
cDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7CisgICAgICAgIH0pOwor
ICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3Rl
cnNGb3JFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmlu
ZGV4IDExMzJjZjBkOWY2NWIxMzk3ZmViOWViOTU3MTQxZWI0ZDExNTg1ZjcuLjRjOGYyZWVkZWZh
Y2I1MjVmYzI4YzgyYTIzYzdlMzZlYzc3ODRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCkBAIC0zMzQsOSArMzM0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY28KICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgLy8gNykgRml4IHRo
ZSBjYWxsIGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCi0gICAgCisKICAgICAq
Yml0d2lzZV9jYXN0PENvZGVCbG9jayoqPihwaXZvdCAtIChDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2sgKyAxKSkgPSBjb2RlQmxvY2s7CiAgICAgCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZU9TUigpLCAiICAgIE9TUiByZXR1cm5pbmcgZGF0YSBidWZmZXIgIiwgUmF3UG9pbnRlcihz
Y3JhdGNoKSk7CkBAIC00MDgsNiArNDA4LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShWTSYgdm0sIENhbGxGCiAK
ICAgICAvLyBUaGUgYWN0aXZlIGxlbmd0aCBvZiBjYXRjaE9TUkVudHJ5QnVmZmVyIHdpbGwgYmUg
emVyb2VkIGJ5IENsZWFyQ2F0Y2hMb2NhbHMgbm9kZS4KICAgICBkZmdDb21tb24tPmNhdGNoT1NS
RW50cnlCdWZmZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisK
KyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSdyZSBjb21taXR0ZWQgdG8gdHJpZ2dlcmluZyBhbiBP
U1IgZW50cnkgaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgcmV0dXJuLiBIZW5jZSwgaXQgaXMgc2FmZSB0
byBtb2RpZnkgc3RhY2sgaGVyZS4KKyAgICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhvcHRpbWl6
ZWRDb2RlQmxvY2spOworCiAgICAgcmV0dXJuIGNhdGNoRW50cnlwb2ludC0+bWFjaGluZUNvZGU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNTVlZjc2MTU0ZDIwNTFiMjJjOWVkZDc4NzY5NWQ1NTZjODE1MmQ3Ni4uZTZlNzQz
ZTFlYzVkN2M5ZjQxZjkwZTg5YmQyYTI4YTUzMzA3OTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIyMTcsNyArMjIxNyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2soKQogICAgICAgICBtX2pp
dC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1l
UmVnaXN0ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBt
X2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6
ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICAg
ICAgLy8gQ29kZUJsb2NrIGluIHRoZSBzdGFjayBpcyBhbHJlYWR5IHJlcGxhY2VkIGluIE9TUiBl
bnRyeS4KICAgICB9CiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6
OnJlc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IDQ0
YTlhMWE5OGYyNzk0YTI3MDIyOWM2ZDcyYzFiOTM2MDU1MDhjODkuLmNjNmMwNTIzMWQ3MzM5OThk
OWI4MDQ0NWEyMTgzMjhkM2RjYmJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAt
MTQ4LDYgKzE0OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3Ny
RW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdU
MSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5nZXRFZmZlY3RpdmVBZGRyZXNzKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QyLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAgICAgCisgICAgLy8gQ29weWluZyBsb2NhbHMgYW5kIGhlYWRlciBm
cm9tIHNjcmF0Y2ggYnVmZmVyIHRvIHRoZSBuZXcgQ2FsbEZyYW1lLiBUaGlzIGFsc28gcmVwbGFj
ZXMKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwogICAgIGpp
dC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEp
OwogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKQEAgLTE2
MCw2ICsxNjIsMTQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JF
bnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1Vu
cmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7
CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGppdC5wcm9iZURlYnVnKFtdKFByb2JlOjpDb250
ZXh0JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZy
YW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0pOworI2VuZGlmCisK
ICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdp
c3RlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggMjhiZGVl
M2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OC4uM2VmNGFhNDhmZmU0YzY4NzZkYzQ5
YzNjMTRiOTA2NWFlZmUyZDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXI7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAgIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBl
cnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgCiAgICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSgp
KSB7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGIxZTAzNjkxNDEwYjgyN2Iw
YzBlZDRkMGZlYzI3ZDg3NTU5YzU5NDQuLjRkNjIyNDgxZDk0OWQ3MTJhOTkwOWFhMDAzMDc2MmIx
MzEwY2JiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTE5OCwxNSArMTk4LDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgewogICAgICAgICAgICAgbV9wcm9jLnNldE51bUVudHJ5cG9pbnRzKG1fZ3JhcGgubV9udW1i
ZXJPZkVudHJ5cG9pbnRzKTsKLSAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5tX2NvZGVCbG9jazsKIAogICAgICAgICAgICAgUmVmPEIzOjpBaXI6OlByb2xvZ3VlR2Vu
ZXJhdG9yPiBjYXRjaFByb2xvZ3VlR2VuZXJhdG9yID0gY3JlYXRlU2hhcmVkVGFzazxCMzo6QWly
OjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigKLSAgICAgICAgICAgICAgICBbY29kZUJsb2Nr
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNvZGUmIGNvZGUpIHsKKyAgICAgICAgICAg
ICAgICBbXShDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgewogICAgICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICAgICAgICAgICAgICAg
ICAgaml0LmVtaXRTYXZlKGNvZGUuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwot
ICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGNvZGVCbG9j
aywgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgICAgICAg
ICAgICAgICAgICAvLyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFjZWQg
aW4gRlRMOjpwcmVwYXJlT1NSRW50cnkuCiAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgY2F0Y2hFbnRyeXBvaW50SW5kZXggOiBtX2dyYXBoLm1fZW50cnlw
b2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5kZXgua2V5cygpKSB7CkBAIC0yNzIsOSArMjcxLDkg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudCht
X251bWJlclRhZy0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbm90
Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAgCi0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhl
IENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCi0gICAg
ICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCi0gICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSkpOworICAgICAgICAvLyBXaGVuIHJ1bm5pbmcgRlRMIGNvZGUsIHdlIGFs
cmVhZHkgc3RvcmUgQ29kZUJsb2NrIHRvIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jay4KKyAgICAg
ICAgYm9vbCBpc0Z1bmN0aW9uQ29kZSA9IG1fZ3JhcGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZTsKKyAgICAgICAgVU5VU0VEX1ZBUklBQkxFKGlzRnVuY3Rp
b25Db2RlKTsKIAogICAgICAgICAvLyBTdGFjayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5z
aWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhp
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTI5Myw2ICsyOTIsMTUgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdGxGcmFtZVNpemUgPSBwYXJhbXMu
cHJvYygpLmZyYW1lU2l6ZSgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1heEZyYW1lU2l6
ZSA9IHN0ZDo6bWF4KGV4aXRGcmFtZVNpemUsIGZ0bEZyYW1lU2l6ZSk7CiAKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uQ29kZSkgeworICAgICAgICAg
ICAgICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZy
YW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpGVExKSVQpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICAgICAg
ICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVTaXpl
KSwgZnAsIHNjcmF0Y2gpOwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBzdGFja092ZXJmbG93OwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXhGcmFtZVNp
emUgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjdkZDU5NzkwYjcxZjk4YTIxN2IxMjU4Nzc2
NzcxNjVhYzY4ZWUwYy4uNzc0N2QzYWQ4YjUzNWZhODU0N2U3NDAyYmE3YjMyNGQ1OWI3NWVkYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC00MDYs
MTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAgIC8vIFByb2xvZ3Vl
IG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0gICAgICAgIHJldHVybiBzaXpl
b2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAg
IHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CkBAIC00NzcsMTIgKzQ3MSw2
IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCi0g
ICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIg
YW5kIGxpbmtSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7Ci0gICAg
fQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAgICB0YWdS
ZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVy
cyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShNSVBTKQotICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAg
IHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFu
ZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCop
OwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAg
ICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7
CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShSSVNDVjY0KQotICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAg
Ly8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRy
ZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQog
ICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggZWQ4ZmIwZjUzZTU3YTVhNTAyZjFjYTI3NjA1NDY3MDkwMGU4YmU5Yi4uODY3
NTFkYjFlYWMyZmRlNjI3ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtMjAzLDI4ICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2Fs
bChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aQog
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2Nr
VG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCht
X3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0gICAgZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZXN1bHQp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0
YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gYnJh
bmNoVGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVu
Y3Rpb246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rp
b25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRh
ZyksIHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlmIChtX3Vu
bGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIoQWRkcmVz
cyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1
Y3QoKSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0
KTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBwcm9iZURlYnVnKFs9XSAoUHJv
YmU6OkNvbnRleHQmIGN0eCkgewotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5m
cDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwotICAgIH0pOwotI2Vu
ZGlmCi19Ci0KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKIHsKICAgICBpZiAo
SklUSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03NTEsMTAgKzcyOSw4IEBAIHZvaWQgSklUOjpjb21w
aWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkK
ICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIENvZGVP
cmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkpOwogCiAgICAgc3RkOjpvcHRpb25hbDxKSVRTaXplU3Rh
dGlzdGljczo6TWFya2VyPiBzaXplTWFya2VyOwotICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkgewotICAgICAgICBTdHJpbmcgaWQgPSBt
YWtlU3RyaW5nKCJCYXNlbGluZV9wcm9sb2d1ZSIpOwotICAgICAgICBzaXplTWFya2VyID0gbV92
bS0+aml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgKnRoaXMpOwotICAgIH0KKyAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJhc2VsaW5lSklUU2l6ZVN0YXRpc3RpY3MoKSkpCisg
ICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KCJC
YXNlbGluZV9wcm9sb2d1ZSJfcywgKnRoaXMpOwogCiAgICAgTGFiZWwgZW50cnlMYWJlbCh0aGlz
KTsKICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCkBAIC03NjUsOCArNzQxLDE4IEBAIHZvaWQgSklU
Ojpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVm
Zm9ydCkKICAgICAgICAgbm9wKCk7CiAKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAg
IGlmIChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKLSAg
ICAgICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKCk7CisgICAgaWYgKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5m
cDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2st
PmppdFR5cGUoKSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgICAgIGRh
dGFMb2dMbigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1lKj4oKSkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworI2VuZGlmCisgICAgfQogCiAgICAgTGFiZWwgYmVnaW5MYWJlbCh0aGlzKTsK
IApAQCAtODI5LDcgKzgxNSwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0Rmlu
YWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVj
ayA9IGxhYmVsKCk7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAg
ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlZ1QwKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUp
OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250
ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0
VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisjZW5kaWYKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrLCByZWdUMCk7CiAgICAgICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoMCksIEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTaG91bGRBbHdheXNCZUlu
bGluZWQoKSkpOwogCiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgcmVnVDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggZTVhOWQ0Y2MzNDI4ODc0MmJmN2IyYTFjNGY1NDQxZWNhZjJmYzI4Zi4uZGFhMmM1MjE4
MzZlZTI2YzA4MzM4N2ZkNTI5NGI2N2UyODZmNWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC0yNjEsOCArMjYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbG9hZENv
ZGVCbG9ja0NvbnN0YW50VGFnKFZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCk7CiAjZW5kaWYK
IAotICAgICAgICB2b2lkIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcg
cmVzdWx0ID0gcmVnVDApOwotCiAgICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1w
VG9IYW5kbGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBl
bmQoanVtcFRvSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCBmODFkZGYyNTc4NDI0YzhmOWVhYTQ4YzMxZDU1OGU1YzFlZTM0M2E2Li5l
YjM4MzcwY2I5MTYyODg1YTE5NzdmMTdiZjM5YjdmNWQ3MGU5NDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yQ2FsbGVyLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTUgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGdldFdyYXBwZWRWYWx1ZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwgdm9pZCos
IChKU1JlbW90ZUZ1bmN0aW9uKiBjYWxsZWUpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCBTbG93UGF0aFJldHVy
blR5cGUsIChKU1JlbW90ZUZ1bmN0aW9uKiBjYWxsZWUpKQogewogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSwxNCArMTc1LDE0IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwgdm9p
ZCosIChKCiAgICAgLy8gRm9yY2UgdGhlIGV4ZWN1dGFibGUgdG8gY2FjaGUgaXRzIGFyaXR5IGVu
dHJ5cG9pbnQuCiAgICAgewogICAgICAgICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAvLyBX
ZSBjYW4ndCBqZXR0aXNvbiBhbnkgY29kZSB1bnRpbCBhZnRlciB3ZSBsaW5rIHRoZSBjYWxsLgor
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1Nsb3QgPSBudWxscHRyOwogICAgICAgICBpZiAo
IWV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIEpTU2NvcGUqIHNj
b3BlID0gdGFyZ2V0RnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2tTbG90ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFy
ZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCB0YXJnZXRGdW5jdGlvbiwgc2Nv
cGUsIENvZGVGb3JDYWxsLCBjb2RlQmxvY2tTbG90KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNh
bGwsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11c3RD
aGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCBjb2RlQmxvY2tTbG90KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDhhMjM3
NDEzNGM0ZjU1OThkYTBiZjY0YjI4ODQ1YzQ1ZmI4MTg2Ni4uYjllODMwY2FkM2IzZDVmM2E0MzIw
MzM5MmI0ZDc3YTZjMDkxNDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rLCB2b2lkLCAoSlNHbAogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RP
YmplY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yQ2FsbGVyLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
UmVtb3RlRnVuY3Rpb24qLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JUYXJnZXQsIEVuY29kZWRKU1ZhbHVlLCAo
SlNSZW1vdGVGdW5jdGlvbiosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCB2b2lk
KiwgKEpTUmVtb3RlRnVuY3Rpb24qKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCBTbG93UGF0aFJldHVyblR5
cGUsIChKU1JlbW90ZUZ1bmN0aW9uKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25UaHJvd1JlbW90ZUZ1bmN0aW9uRXhjZXB0aW9uLCBFbmNvZGVkSlNWYWx1ZSwgKEpTUmVt
b3RlRnVuY3Rpb24qKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93RXJyb3IsIHZvaWQsIChDb2RlQmxvY2sqKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggM2M0YTNhZTNhOTg4Y2Vl
OTY1NjQ0M2ZjNzYxMDkwYWUwZWMzYzU2MS4uOTVlZTQ0NDBiYWJkNDAzNmIyZWZhYTg1MjE0NjAw
MTMwNTNjZTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcApAQCAtMjk1LDYgKzI5NSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vCiAgICAg
aml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
NCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQp
KSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuanVt
cCgpKTsgLy8gRklYTUUKICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOwogICAgIAogICAgIC8vIE5vdyB3ZSBr
bm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtp
bmcgYSBmYXN0CkBAIC0xMzg2LDExICsxMzg3LDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogICAgIGpp
dC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNo
ZWNrRm9yKENvZGVGb3JDYWxsKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpa
ZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKKyAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpa
ZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBhdXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElm
Tm90VHlwZShHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSk7CisgICAgaml0
LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2Fs
bCgpKSwKKyAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zdG9yZUNlbGwoR1BSSW5m
bzo6cmVnVDIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jaykpOworCisgICAgaXNOYXRpdmUubGluaygmaml0KTsKICAgICAKLSAgICBlbWl0UG9p
bnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCwgSlNFbnRyeVB0clRhZyk7Ci0gICAg
aml0LmNhbGwoR1BSSW5mbzo6cmVnVDAsIEpTRW50cnlQdHJUYWcpOworICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBqaXQu
Y2FsbChHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CkBAIC0xNTMyLDMzICsxNTQyLDQ1IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVtb3RlRnVuY3Rpb25DYWxsR2Vu
ZXJhdG9yKFZNJiB2bSkKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsIEV4ZWN1dGFibGVCYXNlOjpvZmZz
ZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAotICAgICAgICBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgYXV0byBjb2RlRXhpc3RzID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIEdQUkluZm86OnJl
Z1QyKTsKKyAgICBhdXRvIGNvZGVFeGlzdHMgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKTsKIAogICAgIC8vIFRoZSBjYWxscyB0byBvcGVy
YXRpb25HZXRXcmFwcGVkVmFsdWVGb3JUYXJnZXQgYWJvdmUgbWF5IEdDLCBhbmQgYW55IEdDIGNh
biBwb3RlbnRpYWxseSBqZXR0aXNvbiB0aGUgSklUIGNvZGUgaW4gdGhlIHRhcmdldCBKU0Z1bmN0
aW9uLgogICAgIC8vIElmIHdlIGZpbmQgdGhhdCB0aGUgSklUIGNvZGUgaXMgbnVsbCAoaS5lLiBo
YXMgYmVlbiBqZXR0aXNvbmVkKSwgdGhlbiB3ZSBuZWVkIHRvIHJlLW1hdGVyaWFsaXplIGl0IGZv
ciB0aGUgY2FsbCBiZWxvdy4gTm90ZSB0aGF0IHdlIGtub3cKICAgICAvLyB0aGF0IG9wZXJhdGlv
bk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlIHNob3VsZCBiZSBhYmxlIHRvIHJl
LW1hdGVyaWFsaXplIHRoZSBKSVQgY29kZSAoZXhjZXB0IGZvciBhbnkgT09NRSkgYmVjYXVzZSB3
ZSBvbmx5CiAgICAgLy8gd2VudCBkb3duIHRoaXMgY29kZSBwYXRoIGFmdGVyIHdlIGZvdW5kIGEg
bm9uLW51bGwgSklUIGNvZGUgKGluIHRoZSBub0NvZGUgY2hlY2spIGFib3ZlIGkuZS4gaXQgc2hv
dWxkIGJlIHBvc3NpYmxlIHRvIG1hdGVyaWFsaXplIHRoZSBKSVQgY29kZS4KKyAgICAvLyBGSVhN
RTogV2luZG93cyB4NjQgaXMgbm90IHN1cHBvcnRlZCBzaW5jZSBvcGVyYXRpb25NYXRlcmlhbGl6
ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSByZXR1cm5zIFNsb3dQYXRoUmV0dXJuVHlwZS4KICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVG
dW5jdGlvblRhcmdldENvZGUpPihHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
dGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVG
dW5jdGlvblRhcmdldENvZGUpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsK
ICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAg
IGV4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoaml0LmVtaXRKdW1wSWZFeGNlcHRpb24odm0pKTsKLSAg
ICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDEpOworICAg
IGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBDQ2FsbEhlbHBlcnM6OmNh
bGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAgICBqaXQubW92ZShH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gbWF0ZXJp
YWxpemVkID0gaml0Lmp1bXAoKTsKIAogICAgIGNvZGVFeGlzdHMubGluaygmaml0KTsKKyAgICBh
dXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMSwgRnVuY3Rp
b25FeGVjdXRhYmxlVHlwZSk7CisgICAgaml0LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcygKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLCBGdW5jdGlvbkV4ZWN1dGFi
bGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwKKyAgICAgICAgR1BSSW5mbzo6cmVnVDMp
OworICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6Y2FsbGVl
RnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworCisgICAgaXNOYXRpdmUubGlu
aygmaml0KTsKKyAgICBtYXRlcmlhbGl6ZWQubGluaygmaml0KTsKICAgICAvLyBCYXNlZCBvbiB0
aGUgY2hlY2sgYWJvdmUsIHdlIHNob3VsZCBiZSBnb29kIHdpdGggdGhpcy4gT24gQVJNNjQsIGVt
aXRQb2ludGVyVmFsaWRhdGlvbiB3aWxsIGRvIHRoaXMuCiAjaWYgQVNTRVJUX0VOQUJMRUQgJiYg
IUNQVShBUk02NEUpCiAgICAgewotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY2hlY2tOb3RO
dWxsID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpy
ZWdUMSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjaGVja05vdE51bGwgPSBqaXQuYnJh
bmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKTsKICAgICAg
ICAgaml0LmFib3J0V2l0aFJlYXNvbihUR0ludmFsaWRQb2ludGVyKTsKICAgICAgICAgY2hlY2tO
b3ROdWxsLmxpbmsoJmppdCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBlbWl0UG9pbnRlclZhbGlk
YXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7Ci0gICAgaml0LmNhbGwo
R1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlv
bihqaXQsIEdQUkluZm86OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBqaXQuY2FsbChHUFJJ
bmZvOjpyZWdUMiwgSlNFbnRyeVB0clRhZyk7CiAKICAgICAvLyBXcmFwIHJldHVybiB2YWx1ZQog
I2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMWZkYjRhNTdkNTk0YmVlYTZlYmI4MGFhNjk3
YmRhZDQzZjkwZjg3My4uMzVkY2EwMDAzODJjNWVjZjYwZmNhMzIwNDA2OTBmNGVkNmUxODJhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTcwLDYgKzE3MCw3IEBAIGNvbnN0IFN0YWNrQWxpZ25tZW50U2xvdHMgPSBj
b25zdGV4cHIgKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpCiBjb25zdCBTdGFja0FsaWdubWVu
dE1hc2sgPSBTdGFja0FsaWdubWVudCAtIDEKIAogY29uc3QgQ2FsbGVyRnJhbWVBbmRQQ1NpemUg
PSBjb25zdGV4cHIgKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkKK2NvbnN0IFByb2xvZ3VlU3Rh
Y2tQb2ludGVyRGVsdGEgPSBjb25zdGV4cHIgKHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkK
IAogY29uc3QgQ2FsbGVyRnJhbWUgPSAwCiBjb25zdCBSZXR1cm5QQyA9IENhbGxlckZyYW1lICsg
TWFjaGluZVJlZ2lzdGVyU2l6ZQpAQCAtMTE5Miw3ICsxMTkzLDggQEAgbWFjcm8gY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmkKICAgICBlbmQKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwodGVt
cDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwodGVt
cDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQorICAgIHN0b3JlQ29kZUJs
b2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0p
CiBlbmQKIAogbWFjcm8gaW52b2tlRm9yUmVndWxhckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNo
LCBjYWxsZWUsIG1heWJlT2xkQ0ZSLCBjYWxsUHRyVGFnKQpAQCAtMTIwOCw3ICsxMjEwLDcgQEAg
ZW5kCiAKICMgc3AgcG9pbnRzIHRvIHRoZSBuZXcgZnJhbWUgKyBDYWxsZXJGcmFtZUFuZFBDU2l6
ZQogIyBXZSBsZWF2ZSBjZnIgdGVtcDQgdG8gdXNlIGl0IGZvciB1bnRhZ2dpbmcuCi1tYWNybyBw
cmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCittYWNybyBwcmVw
YXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2Nr
KQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgpAQCAtMTI2
Myw2ICsxMjY1LDggQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVt
cDMsIHRlbXA0KQogICAgIGVuZAogCiAgICAgbW92ZSB0ZW1wMSwgc3AKKworICAgIHN0b3JlQ29k
ZUJsb2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBQcm9sb2d1ZVN0YWNrUG9pbnRlckRl
bHRhW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VGb3JUYWlsQ2FsbChvcGNvZGVOYW1lLCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQdHJUYWcpCkBAIC0xMzAzLDcgKzEzMDcs
NyBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxs
ZWVGcmFtZVB0cikKICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRl
U1AKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVw
YXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0Mywg
dDQsIHQxLCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgICAgIC5kb250VXBkYXRlU1A6CiAgICAg
ICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwg
Y2FsbGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKQEAgLTE0ODIsNDQg
KzE0ODYsNiBAQCBtYWNybyBhc3NlcnROb3RDb25zdGFudChzaXplLCBpbmRleCkKICAgICBlbmQp
CiBlbmQKIAotbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lz
dGVyKQotICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0
UmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4
ZWN1dGFibGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBi
dHB6IHRhcmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwg
LmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUg
LSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0
YXJnZXRSZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFi
bGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1l
bmQKLQotbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVn
aXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJn
ZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
ZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAg
IGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
LCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJs
ZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0s
IHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdp
c3RlcgotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lz
dGVyKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1h
Y3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgIHN0b3JlcCBz
b3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KLWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNv
ZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKLSAgICAjIE5vdGhpbmcgdG8gZG8hCi1lbmQK
LQogbWFjcm8gY29udmVydENhbGxlZVRvVk0oY2FsbGVlKQogICAgIGJ0cG56IGNhbGxlZSwgKGNv
bnN0ZXhwciBQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCksIC5wcmVjaXNlQWxsb2Nh
dGlvbgogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCBjYWxsZWUKQEAgLTE1MzIsNyArMTQ5OCw3
IEBAIGVuZAogCiAjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2Rl
LiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKICMgaW4gdDEuIE1heSBhbHNv
IHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgotbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0
dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQorbWFjcm8g
cHJvbG9ndWUob3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgIyBTZXQgdXAgdGhlIGNh
bGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJlc2VydmVDYWxsZXJQ
Q0FuZENGUigpCiAKQEAgLTE1NDEsOCArMTUwNyw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9j
a0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAg
ICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGFkZHAgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwsIHNwCiAgICAgZW5kCi0gICAgY29kZUJsb2NrR2V0dGVyKHQx
KQotICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
ICAgICBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDAKICAgICAgICAgYmFkZGlzIDUsIChVbmxpbmtlZENv
ZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyICsgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVy
OjptX2NvdW50ZXIpW3QwXSwgLmNvbnRpbnVlCkBAIC0xNTgyLDcgKzE1NDcsNyBAQCBtYWNybyBw
cm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRy
YWNlU2xvd1BhdGgpCiAgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKICAgICAgICAg
ZW5kCiAgICAgLnJlY292ZXI6Ci0gICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQx
KQorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICAuY29udGludWU6CiAgICAg
ZW5kCiAKQEAgLTE2MjEsNyArMTU4Niw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKIC5zdGFja0hl
aWdodE9LR2V0Q29kZUJsb2NrOgogICAgICMgU3RhY2sgY2hlY2sgc2xvdyBwYXRoIHJldHVybmVk
IHRoYXQgdGhlIHN0YWNrIHdhcyBvay4KICAgICAjIFNpbmNlIHRoZXkgd2VyZSBjbG9iYmVyZWQs
IG5lZWQgdG8gZ2V0IENvZGVCbG9jayBhbmQgbmV3IHNwCi0gICAgbm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgZ2V0RnJhbWVS
ZWdpc3RlclNpemVGb3JDb2RlQmxvY2sodDEsIHQwKQogICAgIHN1YnAgY2ZyLCB0MCwgdDAKIApA
QCAtMjAyNCwzOSArMTk4OSwzOSBAQCBub1dpZGUobGxpbnRfb3Bfd2lkZTMyKQogbm9XaWRlKGxs
aW50X29wX2VudGVyKQogCiBvcChsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAg
IHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHBy
b2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNw
YXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNy
byAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkK
ICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X2V2YWxfcHJvbG9ndWUsIG1hY3Jv
ICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUp
CisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQog
ICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorICAgIHBy
b2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9w
cm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDAp
CiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKIGVu
ZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3Jv
ICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBwcm9sb2d1ZShf
bGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19w
YXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlv
bkluaXRpYWxpemF0aW9uKDApCkBAIC0yMDY0LDcgKzIwMjksNyBAQCBvcChsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKIGVuZCkKIAogb3AobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5j
dGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxp
bnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9l
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2Vf
YXJpdHlDaGVja19mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RC
ZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0
cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKQEAgLTI1MjUsNyArMjQ5
MCw3IEBAIG1hY3JvIGxpbmtTbG93UGF0aEZvcihmdW5jdGlvbikKICAgICB1bnRhZ1JldHVybkFk
ZHJlc3Mgc3AKICAgICBidHB6IHIxLCAuZG9Ob3RUcmFzaAogICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MSkKLSAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQp
CisgICAgcHJlcGFyZUZvclRhaWxDYWxsKHQxLCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBl
bmQpCiAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQ0CiAuZG9Ob3RUcmFzaDoKICAgICBqbXAgdDAs
IEpTRW50cnlQdHJUYWcKQEAgLTI1NDgsMTIgKzI1MTMsMTMgQEAgbWFjcm8gdmlydHVhbFRodW5r
Rm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBv
bGluZSwKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9hZHAgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5
Q2hlY2tbdDFdLCB0MQogICAgIGJ0cHogdDEsIHNsb3dDYXNlCisgICAgam1wIHNsb3dDYXNlICMg
RklYTUUKIC5jYWxsQ29kZToKLSAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCkKKyAgICBw
cmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgIGptcCB0
MSwgSlNFbnRyeVB0clRhZwogLm5vdEpTRnVuY3Rpb246CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5
cGVbdDBdLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgc2xvd0Nhc2UKLSAgICBwcmVwYXJlQ2FsbCh0
NSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRk
cmVzcykgZW5kKQogICAgIGptcCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZQogZW5kCiAKQEAg
LTI1NjgsNyArMjUzNCw3IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBj
YWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF9jYWxsX3RyYW1wb2xpbmUs
IG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1w
b2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2Up
CisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0
aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1h
Y3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spIGVuZCwgLnNs
b3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9j
YWxsKQogZW5kKQpAQCAtMjU3Nyw3ICsyNTQzLDcgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0lu
Zm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX2Nv
bnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRh
YmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRl
cm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwg
dGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0
YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50
ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIs
IHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNl
OgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU4
Niw5ICsyNTUyLDkgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxl
cidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX3RhaWxfY2FsbF90cmFtcG9saW5l
LCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFt
cG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgdmlydHVhbFRo
dW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9s
bGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVt
cDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgICAgIHByZXNlcnZlUmV0dXJu
QWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKLSAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAx
LCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEs
IHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgICAgICB1bnRhZ1JldHVy
bkFkZHJlc3MgdGVtcDQKICAgICBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KaW5kZXggYWNlODcxMTY3MmU3MDIxNmQzOWE0OGRmMTVmZDY2ZDZiNTdjNDExZS4uYWQy
NTAxN2VmMGI0N2ZjMGIwNTA0NzQ3ZGI1NzViOTE1MDE4YWZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
QEAgLTIyNTksNyArMjI1OSwxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQ
YXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogCiAubm90UG9s
eW1vcnBoaWM6CiAgICAgYnBuZXEgdDAsIHQzLCAub3BDYWxsU2xvdwotICAgIHByZXBhcmVDYWxs
KHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhh
ZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgc3RvcmVwIHQyLCBh
ZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxs
RGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjMzOCw3ICsyMzQxLDEwIEBAIG1hY3JvIGRvQ2FsbFZh
cmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnBuZXEg
dDAsIHQzLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwg
dDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVz
cykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgICAgICBz
dG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAuZ29Qb2x5bW9y
cGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IDVkZTdiY2M3ZmQwZDRmMDQwZjJkZjk0YmQ0NzM0NWQ4MzU4Njk0NDcuLjhj
ZDdkYmUyYTRhMjU5MDY0MzYxZDM2ZjU2ZjhjYjNlNDk1MDlkYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0y
NDgzLDcgKzI0ODMsMTAgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKIAogLm5vdFBvbHltb3Jw
aGljOgogICAgIGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKLSAgICBwcmVwYXJlQ2FsbCh0Miwg
dDMsIHQ0LCB0MSkKKyAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVz
cykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVz
cworICAgIGVuZCkKIAogLmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3Rp
bmF0aW9uW3Q1XSwgdDUKQEAgLTI1NjEsNyArMjU2NCwxMCBAQCBtYWNybyBkb0NhbGxWYXJhcmdz
KG9wY29kZU5hbWUsIHNpemUsIGdldCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaQogCiAgICAgICAgIC5ub3RQb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGJxbmVxIHQwLCB0
MSwgLm9wQ2FsbFNsb3cKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQor
ICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisg
ICAgICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgICAgICAgICAgc3RvcmVw
IHQyLCBhZGRyZXNzCisgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgLmdvUG9seW1vcnBoaWM6
CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5kZXggNzEzNWY0ZjZmYzIw
Y2IzOWU4NWJhYmMxZDFjZjFlYWI1OGI2MmJkNi4uMjRjMTRiM2Y4ZjZiNWY0NTViZDBhNWE3N2M1
OTMyYmU5ZjY4ZWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dl
YkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCkBAIC0xNDcsNyArMTQ3LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xv
Z3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogICAgICAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRy
eVB0clRhZwogICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgotICAgICAgICAgICAg
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIpCisgICAgICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY29kZUJsb2NrUmVnaXN0ZXIKICAgICAgICAgZW5kKQog
ICAgIGVuZAogZW5kCkBAIC0yODMsNyArMjgzLDcgQEAgbWFjcm8gcmVzdG9yZVN0YWNrUG9pbnRl
ckFmdGVyQ2FsbCgpCiAgICAgc3VicCBjZnIsIHdzMSwgc3AKIGVuZAogCi1tYWNybyB3YXNtUHJv
bG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2Up
CittYWNybyB3YXNtUHJvbG9ndWUobG9hZFdhc21JbnN0YW5jZSkKICAgICAjIFNldCB1cCB0aGUg
Y2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAgICBwcmVzZXJ2ZUNhbGxl
clBDQW5kQ0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCkBAIC0yOTMs
OCArMjkzLDkgQEAgbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2Nr
U2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX293
bmVyW3dhc21JbnN0YW5jZV0sIHdzMAogICAgIHN0b3JlcCB3czAsIFRoaXNBcmd1bWVudE9mZnNl
dFtjZnJdCiAKLSAgICBjb2RlQmxvY2tHZXR0ZXIod3MwKQotICAgIGNvZGVCbG9ja1NldHRlcih3
czApCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHdzMAorICAgIGFuZHAgfjMsIHdzMAorICAgIHN0
b3JlcCB3czAsIENvZGVCbG9ja1tjZnJdCiAKICAgICAjIEdldCBuZXcgc3AgaW4gd3MxIGFuZCBj
aGVjayBzdGFjayBoZWlnaHQuCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVtQ2Fs
bGVlTG9jYWxzW3dzMF0sIHdzMQpAQCAtNTE0LDcgKzUxNSw3IEBAIG9wKHdhc21fZnVuY3Rpb25f
cHJvbG9ndWUsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICB3YXNtUHJv
bG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIGxvYWRX
YXNtSW5zdGFuY2VGcm9tVExTKQorICAgIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlRnJv
bVRMUykKICAgICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkKIApAQCAtNTIzLDcgKzUyNCw3
IEBAIG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAoKQogICAgICAgICBl
cnJvcgogICAgIGVuZAogCi0gICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxvY2tHZXR0ZXIsIGZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBtYWNybyAoKSBlbmQpCisgICAgd2FzbVByb2xvZ3VlKG1h
Y3JvICgpIGVuZCkKICAgICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBhNjk5MzE1OTA5OWNjYzFiNzM5NmE5N2M1
OGZkNGVlMzFhNWMxODJlLi44ZGMyZjE3ODJlMGJjZDU0NzI1ZTI3NzliYmZlNjBmZTc3YzY0Nzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtODksNiArODksNyBA
QCBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIG1hY3JvKFJlZ0V4cE9iamVjdCwgSlNUeXBlOjpS
ZWdFeHBPYmplY3RUeXBlLCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhK
U1dlYkFzc2VtYmx5TW9kdWxlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSwgSlNUeXBl
OjpXZWJBc3NlbWJseU1vZHVsZVR5cGUpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHMsIEpT
VHlwZTo6RGlyZWN0QXJndW1lbnRzVHlwZSwgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlKSBc
CisgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlLCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZVR5cGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSkgXAogICAgIG1hY3JvKFNjb3Bl
ZEFyZ3VtZW50cywgSlNUeXBlOjpTY29wZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OlNjb3BlZEFy
Z3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhDbG9uZWRBcmd1bWVudHMsIEpTVHlwZTo6Q2xvbmVk
QXJndW1lbnRzVHlwZSwgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8o
SlNHbG9iYWxPYmplY3QsIEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpHbG9iYWxP
YmplY3RUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggM2JiNDU4
ZWU4ZTM2ZDZiNGUyNjVmZGI5YzE5M2EyZWRkMjJkZTA4Mi4uYTI3OThkZDNlYjljZmU3MzM2ZjM2
M2VmZjU3MzI4OGNiNGRhZTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNzE2LDkgKzcxNiwxNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0UmVtb3RlRnVuY3Rp
b24oYm9vbCBpc0pTRnVuY3Rpb24pCiAgICAgYXV0byBnZXRPckNyZWF0ZSA9IFsmXSAoV2VhazxO
YXRpdmVFeGVjdXRhYmxlPiYgc2xvdCkgLT4gTmF0aXZlRXhlY3V0YWJsZSogewogICAgICAgICBp
ZiAoYXV0byogY2FjaGVkID0gc2xvdC5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7
CisKKyAgICAgICAgSW50cmluc2ljIGludHJpbnNpYyA9IE5vSW50cmluc2ljOworICAgICAgICBp
ZiAoIXNsb3dDYXNlKSB7CisjaWYgIShPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KSkKKyAgICAg
ICAgICAgIGludHJpbnNpYyA9IFJlbW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYzsKKyNlbmRpZgor
ICAgICAgICB9CisKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVzdWx0ID0gZ2V0SG9zdEZ1
bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2UgPyByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmlj
IDogcmVtb3RlRnVuY3Rpb25DYWxsRm9ySlNGdW5jdGlvbiwKLSAgICAgICAgICAgIHNsb3dDYXNl
ID8gTm9JbnRyaW5zaWMgOiBSZW1vdGVGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAg
ICBpbnRyaW5zaWMsCiAgICAgICAgICAgICBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
bnVsbHB0ciwgU3RyaW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxl
PihyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCmluZGV4IGJiNDZmOGE4MTMyZDFlZDU1ZTFjMzRh
ZjZhMDBmMGQyNDlmZjBmYzMuLjUxNDY0NTcyZjFjZjJlYzFmMGNhYWY1OGRkYjc4NGFmY2ZiMzY5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAK
QEAgLTE5MiwxNCArMTkyLDE0IEBAIHN0YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGlu
c3RhbmNlLCBQcm9iZTo6Q29udGV4dCYgY29udGV4dCwgQkJRQ2FsbGVlJiBjCiAgICAgLy8gcG9w
KGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8
VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQ
b2ludGVyICsgMTsKLSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMSk7CiAj
ZWxpZiBDUFUoQVJNNjRFKSB8fCBDUFUoQVJNNjQpCiAgICAgLy8gbW92ZShmcmFtZVBvaW50ZXJS
ZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIC8vIHBvcFBhaXIoZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CiAgICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9j
YXN0PFVDUFVSZWdpc3Rlcio+KCpmcmFtZVBvaW50ZXIpOwogICAgIGNvbnRleHQuZ3ByKEFSTTY0
UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRl
ciArIDEpKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRp
Y19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0g
c2l6ZW9mKHZvaWQqKSAqIDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKICNpZiBDUFUoQVJNNjRFKQogICAgIC8v
IExSIG5lZWRzIHRvIGJlIHVudGFnZ2VkIHNpbmNlIE9TUiBlbnRyeSBmdW5jdGlvbiBwcm9sb2d1
ZSB3aWxsIHRhZyBpdCB3aXRoIFNQLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGFpbC1jYWxsLgogICAg
IGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lz
dGVyPih1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChjb250ZXh0Lmdwcjx2
b2lkKj4oQVJNNjRSZWdpc3RlcnM6OmxyKSwgY29udGV4dC5zcCgpKSk7CkBAIC0yMTAsNyArMjEw
LDcgQEAgc3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpD
b250ZXh0JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNl
X2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoUklT
Q1Y2NFJlZ2lzdGVyczo6cmEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFtZVBv
aW50ZXIgKyAxKSk7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMjsKLSAgICBz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgp
ID09IHNpemVvZih2b2lkKikgKiAyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQ
b2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7CiAjZWxzZQogI2Vycm9yIFVuc3Vw
cG9ydGVkIGFyY2hpdGVjdHVyZS4KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456317</attachid>
            <date>2022-03-31 20:39:23 -0700</date>
            <delta_ts>2022-03-31 23:27:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220331203923.patch</filename>
            <type>text/plain</type>
            <size>72849</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWUyNTU0ZGQ5MDY5YWRmYTUwYzJlYjIyMmVjMTMwYTM0YzE1MGFhLi4xYTM1ZTUwMmRiN2RkYzIz
Y2RlMTg4MGNjZjZjY2YzNWY4YjU1ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAyMi0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAg
ICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6Cisg
ICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04p
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKEpTQzo6
dmlydHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpyZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVtb3Rl
RnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpkb09TUkVudHJ5KToKKwogMjAyMi0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IElkZW50aWZpZXI6OmZyb21TdHJpbmcoQVND
SUlMaXRlcmFsKSBtb3JlIGJyb2FkbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQ1BVLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
CmluZGV4IGIzYjdjZTU0ODNjZmU2ZDRhOTM4ZjQwMDM2OTJiNzMzZGZjMTg0YzkuLjEyNWViNmY4
NjFhZDBmNGRhMDRmOWJlZTFjMjYyZjJiMTI2NWY2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9DUFUuaApAQCAtMTY4LDUgKzE2OCwyMyBAQCBBTFdBWVNfSU5MSU5FIGludDY0X3Qg
aHdMM0NhY2hlU2l6ZSgpIHsgcmV0dXJuIDA7IH0KIEFMV0FZU19JTkxJTkUgaW50MzJfdCBod1Bo
eXNpY2FsQ1BVTWF4KCkgeyByZXR1cm4ga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29y
ZXMoKTsgfQogI2VuZGlmCiAKK2NvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpCit7CisjaWYgRU5BQkxFKENfTE9PUCkKKyAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUg
ZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgorICAgIHJldHVybiAyICogc2l6
ZW9mKHZvaWQqKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgLy8gUHJvbG9ndWUgb25seSBzYXZl
cyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIKKyAgICByZXR1cm4gc2l6ZW9mKHZvaWQqKTsKKyNl
bGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoUklT
Q1Y2NCkKKyAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5k
IGxpbmtSZWdpc3RlcgorICAgIHJldHVybiAyICogc2l6ZW9mKHZvaWQqKTsKKyNlbHNlCisjZXJy
b3IgdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcworI2VuZGlmCit9CisKKworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAppbmRleCAzNzE2ZjJhZjg1OWVkYTQxMWM4NTE0MTk2ZmRjZmM4ZmFjMTRlYWM3Li5h
ZmFlYzFlNmEzMThmNWU3ODg2ZTdhMDY2MzkwODNlZWFiYjRlZWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMTA4LDE3ICsxMDgs
MTkgQEAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gQ2FsbExpbmtJbmZvOjpk
b25lTG9jYXRpb24oKQogICAgIHJldHVybiBtX2RvbmVMb2NhdGlvbjsKIH0KIAotdm9pZCBDYWxs
TGlua0luZm86OnNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNP
YmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQ
dHIpCit2b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIWlzRGlyZWN0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oY2FsbGVlKSAmIHBvbHltb3JwaGljQ2FsbGVlTWFzaykpOwogICAgIG1fY2FsbGVl
T3JDb2RlQmxvY2suc2V0KHZtLCBvd25lciwgY2FsbGVlKTsKIAotICAgIGlmIChpc0RhdGFJQygp
KQorICAgIGlmIChpc0RhdGFJQygpKSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0g
Y29kZUJsb2NrOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9u
ID0gY29kZVB0cjsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoc3RhdGljX2Nhc3Q8T3B0aW1p
emluZ0NhbGxMaW5rSW5mbyo+KHRoaXMpLT5tX2NhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9j
YXRpb24sIGNhbGxlZSk7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTMwLDEwICsxMzIsMTIgQEAgdm9pZCBDYWxsTGlua0luZm86OmNsZWFyQ2FsbGVl
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgbV9jYWxsZWVPckNv
ZGVCbG9jay5jbGVhcigpOwotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlmIChpc0RhdGFJQygp
KSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5k
YXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7Ci0gICAgZWxzZSBp
ZiAoIWNsZWFyZWRCeUpldHRpc29uKCkpIHsKKyAgICB9IGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0
aXNvbigpKSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlv
biwgbnVsbHB0cik7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjk4LDkgKzMwMiwxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1
YigpCiAKICAgICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICBtX2NhbGxlZU9yQ29kZUJsb2Nr
LmNsZWFyKCk7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAg
ICAgdS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7CiAgICAg
fSBlbHNlIHsKICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAg
IENDYWxsSGVscGVyczo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2go
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJl
Z2lzdGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLCBjYWxsZWVHUFIoKSwgbnVsbHB0cik7
CiAjZWxzZQpAQCAtMzYzLDkgKzM2OSwxOCBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2Fs
bExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogCiAg
ICAgICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwo
KTsKKworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZD
b2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5s
aW5rKCZqaXQpOyAvLyBQb2x5bW9ycGhpYyBzdHViIGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHBy
ZXAuCiAgICAgICAgICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExp
bmtJbmZvR1BSLCBvZmZzZXRPZk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5
UHRyVGFnKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
TGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5r
KCZqaXQpOwogICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxM
aW5rSW5mb0dQUiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRy
eVB0clRhZyk7CiAgICAgICAgIH0KQEAgLTM3NCwxNSArMzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luCiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNo
KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSkpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBjYWxsOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tT
dG9yZTsKICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JU
YWlsQ2FsbCgpOworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRo
UGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxv
YWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRh
KCkpKSk7CiAgICAgICAgICAgICBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwotICAgICAgICB9
IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0gaml0
LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAg
ICAgICAgICBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwogICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKS0+bV9jYWxsTG9jYXRpb24gPSBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY2FsbGVlQ2hlY2spOwogICAgICAgICB9KTsK
ICAgICB9CkBAIC00MTEsOCArNDMxLDEwIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRTdHViKFJl
ZjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHViKQogCiAgICAgaWYgKGlzRGF0
YUlDKCkpIHsKICAgICAgICAgKmJpdHdpc2VfY2FzdDx1aW50cHRyX3QqPihtX2NhbGxlZU9yQ29k
ZUJsb2NrLnNsb3QoKSkgPSBwb2x5bW9ycGhpY0NhbGxlZU1hc2s7CisgICAgICAgIHUuZGF0YUlD
Lm1fY29kZUJsb2NrID0gbnVsbHB0cjsgLy8gUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgd2ls
bCBzZXQgQ29kZUJsb2NrIGluc2lkZSBpdC4KICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhp
Y0NhbGxEZXN0aW5hdGlvbiA9IG1fc3R1Yi0+Y29kZSgpLmNvZGUoKS5yZXRhZ2dlZDxKU0VudHJ5
UHRyVGFnPigpOwogICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
UG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxl
ZUxvY2F0aW9uKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0dWItPmNvZGUoKS5jb2RlKCkpKTsKQEAgLTQ3Niw5ICs0OTgsMTEgQEAgdm9p
ZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQpCiAKICAgICBBU1NFUlQoVXNlRGF0YUlDOjpObyA9PSB0aGlzLT51c2VEYXRhSUMoKSk7
CiAKKyAgICBhdXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJDYWxs
KCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJD
YWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJQy5tX2NvZGVCbG9j
a0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVC
bG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlzXSAoTGlu
a0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKQEAgLTUwMSw5ICs1
MjUsMTEgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgU2NvcGUKICAgICBqaXQuZW1pdE5vcHMoQ0NhbGxI
ZWxwZXJzOjpwYXRjaGFibGVKdW1wU2l6ZSgpKTsKIAogICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgp
OworICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
dGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAg
YXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwg
dGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsK
KyAgICAgICAgdS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0
LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxp
emVEaXJlY3RDYWxsKCk7CkBAIC01MTQsNiArNTQwLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNE
aXJlY3QoKSk7CiAgICAgQVNTRVJUKG1fY2FsbExvY2F0aW9uKTsKKyAgICBBU1NFUlQodS5jb2Rl
SUMubV9jb2RlQmxvY2tMb2NhdGlvbik7CiAgICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChmYXN0UGF0aFN0YXJ0KCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxs
SGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTUyNiw3ICs1NTMsNyBAQCB2
b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKCkKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgc2xvd1Bh
dGhTdGFydCgpKTsKIH0KIAotdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RD
YWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdldCkKK3ZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQogewogICAg
IFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogCkBAIC01NDAsNiArNTY3LDcgQEAgdm9pZCBP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxh
YmVsPEpTRW50cnlQdHJUYWcKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5l
YXJDYWxsKG1fY2FsbExvY2F0aW9uLCB0YXJnZXQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxvY2spOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAppbmRleCBmYjIwZTQ3ODE0NzkzNTIxNzUwNDM0NDViMjk3NzMxYjk3MTI5ODY3Li4zOTIwODZh
MDhkMWI3YTZlMjY3MWZjNTIyYTNmOWNlZmZkMTY1MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3Mg
Q2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+
IHsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlv
bigpOwogCi0gICAgdm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2Jq
ZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CisgICAg
dm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUs
IENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAg
dm9pZCBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4pOwogICAgIHZvaWQgY2xlYXJDYWxsZWUoKTsKICAgICBKU09iamVjdCogY2Fs
bGVlKCk7CkBAIC0zMTcsNiArMzE3LDExIEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQ
YWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCBtX2NhbGxlZU9yQ29kZUJsb2NrKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRP
RihVbmlvblR5cGUsIGRhdGFJQy5tX2NvZGVCbG9jayk7CisgICAgfQorCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZT
RVRPRihVbmlvblR5cGUsIGRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKTsKQEAg
LTQwMSwxNCArNDA2LDE2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+IG1fc2xvd1BhdGhDYWxsRGVzdGluYXRpb247CiAgICAgdW5pb24gVW5pb25U
eXBlIHsKICAgICAgICAgVW5pb25UeXBlKCkKLSAgICAgICAgICAgIDogZGF0YUlDIHsgbnVsbHB0
ciB9CisgICAgICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIsIG51bGxwdHIgfQogICAgICAgICB7
IH0KIAogICAgICAgICBzdHJ1Y3QgRGF0YUlDIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7IC8vIFRoaXMgaXMgd2Vla2x5IGhlbGQuIEFuZCBjbGVhcmVkIHdoZW5ldmVyIG1f
bW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gaXMgY2hhbmdlZC4KICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0
aW9uOwogICAgICAgICB9IGRhdGFJQzsKIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
Q29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY29kZUJsb2NrTG9j
YXRpb247CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0
clRhZz4gbV9jYWxsZWVMb2NhdGlvbjsKICAgICAgICAgfSBjb2RlSUM7CiAgICAgfSB1OwpAQCAt
NTAzLDcgKzUxMCw3IEBAIGNsYXNzIE9wdGltaXppbmdDYWxsTGlua0luZm8gZmluYWwgOiBwdWJs
aWMgQ2FsbExpbmtJbmZvIHsKICAgICB2b2lkIGVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmKTsKICAgICB2b2lkIGVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYs
IFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKTsKICAgICB2b2lkIGlu
aXRpYWxpemVEaXJlY3RDYWxsKCk7Ci0gICAgdm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVM
b2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldERpcmVjdENhbGxUYXJn
ZXQoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4pOwogICAgIHZv
aWQgZW1pdFNsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJik7CiAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIs
IEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAppbmRleCBlOTc2MGNjYzhlZTQwNTI2NmNm
ZjRhMGEzMDRkMjlhMTU4YWM4NDE2Li45NjY1MDdkNTkwN2ZkMzM3YjhmZjE5ZjFlMjYyOTI0NmRl
MDgyMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRj
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKAogICAgIEFTU0VSVChv
d25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKLSAgICBjYWxs
TGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUsIGNvZGVQdHIp
OworICAgIGNhbGxMaW5rSW5mby5zZXRNb25vbW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxl
ZSwgY2FsbGVlQ29kZUJsb2NrLCBjb2RlUHRyKTsKICAgICBjYWxsTGlua0luZm8uc2V0TGFzdFNl
ZW5DYWxsZWUodm0sIG93bmVyLCBjYWxsZWUpOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3Nl
bWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQpAQCAtMTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBsaW5r
RGlyZWN0Q2FsbCgKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVC
bG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdp
bihjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIHBv
aW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayksICIsIGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwg
IlxuIik7CiAKLSAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRp
b25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CisgICAgY2FsbExpbmtJbmZvLnNldERp
cmVjdENhbGxUYXJnZXQoanNDYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oY2FsbGVlQ29kZUJsb2Nr
KSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOwogCiAgICAgaWYg
KGNhbGxlZUNvZGVCbG9jaykKICAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdD
YWxsKGNhbGxGcmFtZSwgJmNhbGxMaW5rSW5mbyk7CkBAIC0xNzg3LDcgKzE3ODcsOCBAQCB2b2lk
IGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIENhbAogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHVi
Sml0KSkgewogICAgICAgICBzaXplX3QgY2FzZUluZGV4ID0gYmluYXJ5U3dpdGNoLmNhc2VJbmRl
eCgpOwogICAgICAgICAKLSAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tj
YXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAgUG9seW1vcnBoaWNDYWxsQ2FzZSYgY2FsbENh
c2UgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XTsKKyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9
IGNhbGxDYXNlLnZhcmlhbnQoKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyOwogICAgICAgICBpZiAodmFyaWFudC5leGVjdXRh
YmxlKCkpIHsKQEAgLTE4MTAsMTQgKzE4MTEsMjUgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwK
ICAgICAgICAgYm9vbCBuZWVkc0RvbmVKdW1wID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZVNo
dWZmbGVyKSB7CiAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNo
dWZmbGVyLT5zbmFwc2hvdCgpKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGlm
IChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKSkpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJK
aXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlzVGFp
bENhbGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7
CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29k
ZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5k
ZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKGlzRGF0YUlDKQorICAgICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8u
aXNUYWlsQ2FsbCgpKTsKKyAgICAgICAgICAgIGlmIChpc0RhdGFJQykgeworICAgICAgICAgICAg
ICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1
ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4
XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2Nr
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCBjYWxsaW5nIHlldC4gVGh1
cywgc3RhY2tQb2ludGVyUmVnaXN0ZXIgaXMgbm90IGluY2x1ZGluZyBQQyAmIGZyYW1lUG9pbnRl
ci4KKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAg
ICAgICAgICAgICAgIG5lZWRzRG9uZUp1bXAgPSB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAppbmRleCA1MTcx
YmMxMjQwMDUyYzNjY2NkNmU2ZmFmNDY4MjUzMzdlZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcw
NzE4YjM5NDgyYmIzMDViNzBmOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaElubGluZXMuaApAQCAtMTk1LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUg
U2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAKICAgICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBq
ZXR0aXNvbiBpZiB3ZSdyZSBnb2luZyB0byBjYWxsIHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYg
KFVOTElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0
RnVuY3Rpb24oKSkgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAg
ICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgpIHsKICAgICAgICAgICAgIHZvaWQq
IHRocm93VGFyZ2V0ID0gdm0uZ2V0Q1RJVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CkBAIC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lO
TElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNv
ZGVCbG9ja1Nsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhh
bmRsZVRocm93RXhjZXB0aW9uKCkpOwogICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdh
c20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZDVl
YTlkNjc1OTc1NWEzOTRkNmY1NWVkN2Q3MjZhZmZlYWY3NmExZC4uZDg1ZTA2NTExNThiYzI0YjU2
ZWZlZDE4MjA2MzkwZWExMjhmMWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEs
MTQgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hp
Y2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291
bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBq
dW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1f
cGxhbi5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAg
cHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpE
RkdKSVQpOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAppbmRleCAxMTMyY2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWVi
NGQxMTU4NWY3Li40YzhmMmVlZGVmYWNiNTI1ZmMyOGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAg
ICAKKwogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2Rl
IGJsb2NrLgotICAgIAorCiAgICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAo
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICsgMSkpID0gY29kZUJsb2NrOwogICAgIAogICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEg
YnVmZmVyICIsIFJhd1BvaW50ZXIoc2NyYXRjaCkpOwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NS
RW50cnkoVk0mIHZtLCBDYWxsRgogCiAgICAgLy8gVGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hP
U1JFbnRyeUJ1ZmZlciB3aWxsIGJlIHplcm9lZCBieSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAg
ICAgZGZnQ29tbW9uLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9m
KEpTVmFsdWUpICogaW5kZXgpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0
dGVkIHRvIHRyaWdnZXJpbmcgYW4gT1NSIGVudHJ5IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVy
bi4gSGVuY2UsIGl0IGlzIHNhZmUgdG8gbW9kaWZ5IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1l
LT5zZXRDb2RlQmxvY2sob3B0aW1pemVkQ29kZUJsb2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVu
dHJ5cG9pbnQtPm1hY2hpbmVDb2RlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2
OTVkNTU2YzgxNTJkNzYuLjE0NzZiNGU4Mzg0YjM3ZmY5YmRhNDczM2Y1MTE4ZmVhZjFiN2M1MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVu
dEJsb2NrKCkKICAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KC0obV9qaXQuZ3JhcGgoKS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3Rlcikp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAg
ICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2pp
dC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7CisgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxy
ZWFkeSByZXBsYWNlZCBpbiBPU1IgZW50cnkuCiAgICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVu
ZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKQEAgLTExMjk4LDcgKzExMjk4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkK
IAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5n
cHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3By
KCkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZB
c1N0cmluZ0luUmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
UmFyZURhdGE6Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgSklUQ29t
cGlsZXI6Okp1bXAgY29udGludWF0aW9uID0gbV9qaXQuanVtcCgpOwogCiAgICAgaXNOYXRpdmVF
eGVjdXRhYmxlLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGRmZmRkZjhmMmU1OGQ2YjMzYmZmMGMwYTBj
MzhkZGFkMTZmYzlmZDguLjBlYzI0YzBkMzgyNWQ2YzYzNzg4YmFkNTJlY2JkYmMzZDljNWFhNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtMTAyMSw3ICsxMDIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihtX2ppdCwgc2h1
ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhjYWxsTGlua0luZm9HUFIpOworICAg
ICAgICAgICAgICAgIG1faml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coUmVnaXN0ZXJTZXQgeyBj
YWxsTGlua0luZm9HUFIgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKTsKICAgICB9IGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRleCA0NGE5YTFhOThm
Mjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFkNzMzOTk4ZDliODA0NDVh
MjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0OCw2ICsx
NDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMiwgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBoZWFkZXIgZnJvbSBzY3Jh
dGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNvIHJlcGxhY2VzCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKICAgICBq
aXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xNjAsNiArMTYy
LDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVu
a0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdVbnJlYXNvbmFi
bGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5rKCZqaXQpOworCisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9iZTo6Q29udGV4dCYgY3R4
KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCkt
PmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgaml0
LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9w
RW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKaW5kZXggYWIxZjViODY3NTlkMDU1NjlkMzhjMDQ4ZGNjODNhYTdmZDVmYjBl
Yy4uZmUyOWRkMmJlN2MyNTNlNTFhODQzYWYyOTdkODUxYmE5ZjQ0NTZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgK
QEAgLTc4LDcgKzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2Rp
ZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmll
ZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZV9y
YXJlRGF0YSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpIFwKLSAgICBt
YWNybyhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVuY3Rpb25FeGVjdXRh
YmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25F
eGVjdXRhYmxlUmFyZURhdGFfYXNTdHJpbmcsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGE6
Om9mZnNldE9mQXNTdHJpbmcoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2Nh
dG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9y
KCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8o
RnVuY3Rpb25SYXJlRGF0YV9wcm90b3R5cGUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3Rv
dHlwZTo6b2Zmc2V0T2ZQcm90b3R5cGUoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAKaW5kZXggMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OC4uM2Vm
NGFhNDhmZmU0YzY4NzZkYzQ5YzNjMTRiOTA2NWFlZmUyZDVlNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3Rh
dGUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXI7CiAKICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAg
ICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQz
Ml90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOworICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50
MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgCiAgICAgc3dpdGNoIChn
cmFwaC5tX3BsYW4ubW9kZSgpKSB7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IGIxZTAzNjkxNDEwYjgyN2IwYzBlZDRkMGZlYzI3ZDg3NTU5YzU5NDQuLjRkNjIyNDgxZDk0OWQ3
MTJhOTkwOWFhMDAzMDc2MmIxMzEwY2JiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE5OCwxNSArMTk4LDE0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgewogICAgICAgICAgICAgbV9wcm9jLnNldE51bUVudHJ5cG9p
bnRzKG1fZ3JhcGgubV9udW1iZXJPZkVudHJ5cG9pbnRzKTsKLSAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9ncmFwaC5tX2NvZGVCbG9jazsKIAogICAgICAgICAgICAgUmVmPEIz
OjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yPiBjYXRjaFByb2xvZ3VlR2VuZXJhdG9yID0gY3JlYXRl
U2hhcmVkVGFzazxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigKLSAgICAgICAg
ICAgICAgICBbY29kZUJsb2NrXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNvZGUmIGNv
ZGUpIHsKKyAgICAgICAgICAgICAgICBbXShDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29k
ZSYgY29kZSkgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRTYXZlKGNvZGUuY2FsbGVlU2F2ZVJlZ2lzdGVy
QXRPZmZzZXRMaXN0KCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jaykpOworICAgICAgICAgICAgICAgICAgICAvLyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGlz
IGFscmVhZHkgcmVwbGFjZWQgaW4gRlRMOjpwcmVwYXJlT1NSRW50cnkuCiAgICAgICAgICAgICAg
ICAgfSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2F0Y2hFbnRyeXBvaW50SW5kZXgg
OiBtX2dyYXBoLm1fZW50cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5kZXgua2V5cygpKSB7
CkBAIC0yNzIsOSArMjcxLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9wcm9j
LmFkZEZhc3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRk
RmFzdENvbnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAgCi0gICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRvIGl0
c2VsZiBiZWNhdXNlCi0gICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3YXlzIGdl
dCBjb2xsZWN0ZWQuCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0ZvcihWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSkpOworICAgICAgICAvLyBXaGVuIHJ1bm5p
bmcgRlRMIGNvZGUsIHdlIGFscmVhZHkgc3RvcmUgQ29kZUJsb2NrIHRvIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jay4KKyAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ29kZSA9IG1fZ3JhcGgubV9wbGFu
LmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZTsKKyAgICAgICAgVU5VU0VE
X1ZBUklBQkxFKGlzRnVuY3Rpb25Db2RlKTsKIAogICAgICAgICAvLyBTdGFjayBPdmVyZmxvdyBD
aGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgucmVxdWlyZWRS
ZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTI5Myw2ICsyOTIs
MTUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdGxG
cmFtZVNpemUgPSBwYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpOwogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG1heEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGV4aXRGcmFtZVNpemUsIGZ0bEZyYW1lU2l6
ZSk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9u
Q29kZSkgeworICAgICAgICAgICAgICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNv
bnRleHQmIGN0eCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpG
VExKSVQpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisjZW5k
aWYKKwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OwogICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjdkZDU5Nzkw
YjcxZjk4YTIxN2IxMjU4Nzc2NzcxNjVhYzY4ZWUwYy4uNzc0N2QzYWQ4YjUzNWZhODU0N2U3NDAy
YmE3YjMyNGQ1OWI3NWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCkBAIC00MDYsMTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0g
ICAgICAgIC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0g
ICAgICAgIHJldHVybiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0
aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7
CkBAIC00NzcsMTIgKzQ3MSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQVShBUk1fVEhVTUIy
KSB8fCBDUFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJh
bWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNp
emVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAg
ICAgewogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNs
YXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAog
I2lmIENQVShNSVBTKQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQ
b2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1l
UG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJu
IDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVy
bkFkZHJlc3NSZWdpc3Rlcik7CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVs
cGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShSSVNDVjY0
KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lz
dGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yo
dm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsK
ICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCAyOWIwMmFmOWYxODA1
OGEzYzQ2OTlkNmQxMTE5MWY5OGQ5YTlmYzM1Li44N2EzN2RiMWRiYzk4NjNmOGZiYTZmNmE2MDQ3
NGEyNDRjMjI0YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTc0NCwxMSArNzQ0LDEzIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogICAgICAgICBmYXJKdW1wKEdQUkluZm86OnJlZ1QxLCBFeGNlcHRpb25IYW5k
bGVyUHRyVGFnKTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BS
UmVnIHByZXNlcnZlZEdQUiA9IEludmFsaWRHUFJSZWcpCisgICAgdm9pZCBwcmVwYXJlRm9yVGFp
bENhbGxTbG93KFJlZ2lzdGVyU2V0IHByZXNlcnZlZCA9IHsgfSkKICAgICB7Ci0gICAgICAgIEdQ
UlJlZyB0ZW1wMSA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMCA/IEdQUkluZm86OnJl
Z1QzIDogR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMiA9IHByZXNlcnZlZEdQ
UiA9PSBHUFJJbmZvOjpyZWdUMSA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDE7Ci0g
ICAgICAgIEdQUlJlZyB0ZW1wMyA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMiA/IEdQ
UkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDI7CisgICAgICAgIEdQUlJlZyB0ZW1wMSA9IHNl
bGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMSk7
CisgICAgICAgIEdQUlJlZyB0ZW1wMiA9IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAg
ICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMik7CisgICAgICAgIEdQUlJlZyB0ZW1wMyA9IHNlbGVj
dFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKIAogICAgICAgICBHUFJSZWcgbmV3RnJhbWVQb2ludGVy
ID0gdGVtcDE7CiAgICAgICAgIEdQUlJlZyBuZXdGcmFtZVNpemVHUFIgPSB0ZW1wMjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0Njcw
OTAwZThiZTliLi44Njc1MWRiMWVhYzJmZGU2Mjc4NjBkNzYwYTU5ZDUzZWI1NGM2NjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDMsMjggKzIwMyw2IEBAIHZvaWQgSklUOjpl
bWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNs
b3dQYXRoRnVuY3RpCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQotewotICAgIFJF
TEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUsIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhhc0V4
ZWN1dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSwgcmVzdWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7
Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVC
bG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JD
YWxsKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHByb2Jl
RGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7
Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MSwxMCArNzI5LDggQEAg
dm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25F
ZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0o
bGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAgICAg
IFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAgIHNp
emVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7
Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3Rh
dGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNz
LT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJlbCBl
bnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2NSw4ICs3NDEs
MTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGls
YXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVu
Y3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsK
KyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUo
KSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVi
dWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAg
aWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUq
PigpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBiZWdp
bkxhYmVsKHRoaXMpOwogCkBAIC04MjksNyArODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlQW5k
TGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAg
ICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1Zyhb
PV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAo
Y29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkp
KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAgc3Rv
cmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNo
b3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2FmMmZj
MjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3Rl
cklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblBy
b2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRpb25D
aGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCmluZGV4IDg5OTgwODcyZDJiNzI3NzRjNjk1NmIzOTExOTJlODcxODFiMzdlOWEu
LjdmNmEzY2U3MWZkMjgzOTExNzk5NDU2YmM3YzdlMDEwMjMzMjI1NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxs
TGlua0luZm9JCiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewogICAgICAgICBhdXRv
IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRo
aXMsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8
dm9pZCgpPihbJl0gewogICAgICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAg
ICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdyhCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3co
UmVnaXN0ZXJTZXQgeyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BS
IH0pOwogICAgICAgICB9KSk7CiAgICAgICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAgICAg
ICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGY4MWRkZjI1Nzg0MjRjOGY5ZWFhNDhjMzFkNTU4
ZTVjMWVlMzQzYTYuLmViMzgzNzBjYjkxNjI4ODVhMTk3N2YxN2JmMzliN2Y1ZDcwZTk0OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTU4LDcg
KzE1OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFs
dWVGb3JDYWxsZXIsIEVuY29kZWRKU1ZhbHVlLCAoSlNSCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0V3JhcHBlZFZhbHVlKGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSkpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJn
ZXRDb2RlLCB2b2lkKiwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUs
IFNsb3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCiB7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25U
YXJnZXRDb2RlLCB2b2lkKiwgKEoKICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNo
ZSBpdHMgYXJpdHkgZW50cnlwb2ludC4KICAgICB7CiAgICAgICAgIERlZmVyVHJhcHMgZGVmZXJU
cmFwcyh2bSk7IC8vIFdlIGNhbid0IGpldHRpc29uIGFueSBjb2RlIHVudGlsIGFmdGVyIHdlIGxp
bmsgdGhlIGNhbGwuCisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrU2xvdCA9IG51bGxwdHI7
CiAgICAgICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAgICAgICAg
ICAgSlNTY29wZSogc2NvcGUgPSB0YXJnZXRGdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKICAg
ICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9ja1Nsb3QgPSBudWxscHRyOwogICAgICAgICAgICAgZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIHRhcmdl
dEZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIGNvZGVCbG9ja1Nsb3QpOwotICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+ZW50cnlwb2lu
dEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2Rl
Rm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNvZGVCbG9ja1Ns
b3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAppbmRleCBkOGEyMzc0MTM0YzRmNTU5OGRhMGJmNjRiMjg4NDVjNDVmYjgxODY2Li5iOWU4MzBj
YWQzYjNkNWYzYTQzMjAzMzkyYjRkNzdhNmMwOTE0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTYxLDcgKzE2MSw3IEBAIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmssIHZv
aWQsIChKU0dsCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93SXRlcmF0
b3JSZXN1bHRJc05vdE9iamVjdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JDYWxsZXIsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvclRhcmdldCwgRW5j
b2RlZEpTVmFsdWUsIChKU1JlbW90ZUZ1bmN0aW9uKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRh
cmdldENvZGUsIHZvaWQqLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblRocm93UmVtb3RlRnVuY3Rpb25FeGNlcHRpb24sIEVuY29kZWRK
U1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgdm9pZCwgKENvZGVCbG9jayopKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAz
YzRhM2FlM2E5ODhjZWU5NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi4yYjAwOGIwNmM5YTZmN2Rk
YTA4MjgzN2U0NzM4YTI0YjQxZWNhYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHZvaWQgc2xv
d1BhdGhGb3IoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgU3BydF9KSVRPcGVyYXRpb25fRUdD
bGkgc2xvd1AKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9Ob3RUcmFzaCA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKIAog
ICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSKTsKLSAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coUmVnaXN0
ZXJTZXQgeyBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiB9KTsKIAogICAgIGRvTm90VHJhc2gubGlu
aygmaml0KTsKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSlNFbnRy
eVB0clRhZyk7CkBAIC0yODgsMjUgKzI4OCwzMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0mIHZtLCBDYWxsTW9kZSBtbwog
ICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogCi0gICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAg
YXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJv
LCBHUFJJbmZvOjpyZWdUNCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpKTsKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgYXV0byBoYXNF
eGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZv
OjpyZWdUMCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFU
YWcpKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZq
aXQpOwogICAgIGppdC5sb2FkUHRyKAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVj
a0ZvcihraW5kKSksCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQp
KSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJh
bmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCi0g
ICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29t
bWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKLSAgICAvLyBjYWxsLgorICAgIC8vIE5vdyB3ZSBrbm93
IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcg
YSBmYXN0IGNhbGwuCisKKyAgICBhdXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShH
UFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSk7CisgICAgaml0LmxvYWRQdHIo
CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25F
eGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvcihraW5kKSksCisgICAgICAgIEdQUkluZm86
OnJlZ1Q1KTsKIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFj
ayB0byBKSVQgY29kZS4KLSAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgY2FsbENvZGUoaml0Lmxh
YmVsKCkpOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0LCBK
U0VudHJ5UHRyVGFnKTsKICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICBqaXQucHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnBy
ZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBqaXQucHJlcGFy
ZUZvclRhaWxDYWxsU2xvdyhSZWdpc3RlclNldCB7IEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpy
ZWdUNSB9KTsKICAgICB9CisKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDUsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKSkpKTsKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0
clRhZyk7CiAKICAgICAvLyBOdWxsU2V0dGVyRnVuY3Rpb25UeXBlIGRvZXMgbm90IGdldCB0aGUg
ZmFzdCBwYXRoIHN1cHBvcnQuIEJ1dCBpdCBpcyBPSyBzaW5jZSB1c2luZyBOdWxsU2V0dGVyRnVu
Y3Rpb25UeXBlIGlzIGV4dHJlbWVseSByYXJlLgpAQCAtMzE0LDcgKzMxOSwxNCBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0m
IHZtLCBDYWxsTW9kZSBtbwogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBl
KEdQUkluZm86OnJlZ1QwLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSkpOwogICAgIHZvaWQqIGV4ZWN1
dGFibGVBZGRyZXNzID0gdm0uZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3Ioa2lu
ZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZUFkZHJlc3MpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgaml0Lmp1
bXAoKS5saW5rVG8oY2FsbENvZGUsICZqaXQpOworCisgICAgaXNOYXRpdmUubGluaygmaml0KTsK
KyAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0
clRhZyk7CisgICAgaWYgKGlzVGFpbENhbGwpIHsKKyAgICAgICAgaml0LnByZXNlcnZlUmV0dXJu
QWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5wcmVwYXJlRm9y
VGFpbENhbGxTbG93KFJlZ2lzdGVyU2V0IHsgR1BSSW5mbzo6cmVnVDQgfSk7CisgICAgfQorICAg
IGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIHNsb3dD
YXNlLmxpbmsoJmppdCk7CiAgICAgCkBAIC0xMzg2LDExICsxMzk4LDIwIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0m
IHZtKQogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29k
ZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBhdXRvIGlzTmF0aXZlID0g
aml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSk7CisgICAgaml0LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29k
ZUJsb2NrRm9yQ2FsbCgpKSwKKyAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zdG9y
ZUNlbGwoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaykpOworCisgICAgaXNOYXRpdmUubGluaygmaml0KTsKICAgICAK
LSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCwgSlNFbnRyeVB0
clRhZyk7Ci0gICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDAsIEpTRW50cnlQdHJUYWcpOworICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFn
KTsKKyAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CkBAIC0xNTMyLDMzICsx
NTUzLDQ1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVtb3RlRnVu
Y3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsIEV4ZWN1dGFi
bGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAot
ICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgYXV0byBjb2RlRXhpc3RzID0gaml0LmJyYW5j
aFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAg
IEdQUkluZm86OnJlZ1QyKTsKKyAgICBhdXRvIGNvZGVFeGlzdHMgPSBqaXQuYnJhbmNoVGVzdFB0
cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKTsKIAogICAgIC8vIFRoZSBj
YWxscyB0byBvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JUYXJnZXQgYWJvdmUgbWF5IEdDLCBh
bmQgYW55IEdDIGNhbiBwb3RlbnRpYWxseSBqZXR0aXNvbiB0aGUgSklUIGNvZGUgaW4gdGhlIHRh
cmdldCBKU0Z1bmN0aW9uLgogICAgIC8vIElmIHdlIGZpbmQgdGhhdCB0aGUgSklUIGNvZGUgaXMg
bnVsbCAoaS5lLiBoYXMgYmVlbiBqZXR0aXNvbmVkKSwgdGhlbiB3ZSBuZWVkIHRvIHJlLW1hdGVy
aWFsaXplIGl0IGZvciB0aGUgY2FsbCBiZWxvdy4gTm90ZSB0aGF0IHdlIGtub3cKICAgICAvLyB0
aGF0IG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlIHNob3VsZCBi
ZSBhYmxlIHRvIHJlLW1hdGVyaWFsaXplIHRoZSBKSVQgY29kZSAoZXhjZXB0IGZvciBhbnkgT09N
RSkgYmVjYXVzZSB3ZSBvbmx5CiAgICAgLy8gd2VudCBkb3duIHRoaXMgY29kZSBwYXRoIGFmdGVy
IHdlIGZvdW5kIGEgbm9uLW51bGwgSklUIGNvZGUgKGluIHRoZSBub0NvZGUgY2hlY2spIGFib3Zl
IGkuZS4gaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIG1hdGVyaWFsaXplIHRoZSBKSVQgY29kZS4K
KyAgICAvLyBGSVhNRTogV2luZG93cyB4NjQgaXMgbm90IHN1cHBvcnRlZCBzaW5jZSBvcGVyYXRp
b25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSByZXR1cm5zIFNsb3dQYXRoUmV0
dXJuVHlwZS4KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJp
YWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUpPihHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJp
YWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAg
ICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0
aW9uUHRyVGFnKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25Q
dHJUYWcpOwogICAgIGV4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoaml0LmVtaXRKdW1wSWZFeGNlcHRp
b24odm0pKTsKLSAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBDQ2Fs
bEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAg
ICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDIpOworICAg
IGF1dG8gbWF0ZXJpYWxpemVkID0gaml0Lmp1bXAoKTsKIAogICAgIGNvZGVFeGlzdHMubGluaygm
aml0KTsKKyAgICBhdXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpy
ZWdUMSwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSk7CisgICAgaml0LmxvYWRQdHIoCisgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwKKyAgICAgICAgR1BS
SW5mbzo6cmVnVDMpOworICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVs
cGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworCisgICAg
aXNOYXRpdmUubGluaygmaml0KTsKKyAgICBtYXRlcmlhbGl6ZWQubGluaygmaml0KTsKICAgICAv
LyBCYXNlZCBvbiB0aGUgY2hlY2sgYWJvdmUsIHdlIHNob3VsZCBiZSBnb29kIHdpdGggdGhpcy4g
T24gQVJNNjQsIGVtaXRQb2ludGVyVmFsaWRhdGlvbiB3aWxsIGRvIHRoaXMuCiAjaWYgQVNTRVJU
X0VOQUJMRUQgJiYgIUNQVShBUk02NEUpCiAgICAgewotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgY2hlY2tOb3ROdWxsID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJv
LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjaGVja05vdE51
bGwgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJl
Z1QyKTsKICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihUR0ludmFsaWRQb2ludGVyKTsKICAg
ICAgICAgY2hlY2tOb3ROdWxsLmxpbmsoJmppdCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBlbWl0
UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7Ci0g
ICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOworICAgIGVtaXRQb2lu
dGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBq
aXQuY2FsbChHUFJJbmZvOjpyZWdUMiwgSlNFbnRyeVB0clRhZyk7CiAKICAgICAvLyBXcmFwIHJl
dHVybiB2YWx1ZQogI2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMWZkYjRhNTdkNTk0YmVl
YTZlYmI4MGFhNjk3YmRhZDQzZjkwZjg3My4uMzVkY2EwMDAzODJjNWVjZjYwZmNhMzIwNDA2OTBm
NGVkNmUxODJhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcwLDYgKzE3MCw3IEBAIGNvbnN0IFN0YWNrQWxpZ25t
ZW50U2xvdHMgPSBjb25zdGV4cHIgKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpCiBjb25zdCBT
dGFja0FsaWdubWVudE1hc2sgPSBTdGFja0FsaWdubWVudCAtIDEKIAogY29uc3QgQ2FsbGVyRnJh
bWVBbmRQQ1NpemUgPSBjb25zdGV4cHIgKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkKK2NvbnN0
IFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEgPSBjb25zdGV4cHIgKHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKSkKIAogY29uc3QgQ2FsbGVyRnJhbWUgPSAwCiBjb25zdCBSZXR1cm5QQyA9IENh
bGxlckZyYW1lICsgTWFjaGluZVJlZ2lzdGVyU2l6ZQpAQCAtMTE5Miw3ICsxMTkzLDggQEAgbWFj
cm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmkKICAgICBlbmQKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVn
dWxhckNhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yUmVn
dWxhckNhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQorICAg
IHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFu
ZFBDU2l6ZVtzcF0pCiBlbmQKIAogbWFjcm8gaW52b2tlRm9yUmVndWxhckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1heWJlT2xkQ0ZSLCBjYWxsUHRyVGFnKQpAQCAtMTIwOCw3
ICsxMjEwLDcgQEAgZW5kCiAKICMgc3AgcG9pbnRzIHRvIHRoZSBuZXcgZnJhbWUgKyBDYWxsZXJG
cmFtZUFuZFBDU2l6ZQogIyBXZSBsZWF2ZSBjZnIgdGVtcDQgdG8gdXNlIGl0IGZvciB1bnRhZ2dp
bmcuCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQp
CittYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0
b3JlQ29kZUJsb2NrKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0
ZW1wMgpAQCAtMTI2Myw2ICsxMjY1LDggQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAx
LCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAgIGVuZAogCiAgICAgbW92ZSB0ZW1wMSwgc3AKKwor
ICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBQcm9sb2d1ZVN0
YWNrUG9pbnRlckRlbHRhW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VGb3JUYWlsQ2FsbChvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQdHJUYWcpCkBAIC0x
MzAzLDcgKzEzMDcsNyBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAo
Y2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIs
IC5kb250VXBkYXRlU1AKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAg
ICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVD
YWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgICAgIC5kb250VXBk
YXRlU1A6CiAgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3cs
IHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVy
LCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkK
QEAgLTE0ODIsNDQgKzE0ODYsNiBAQCBtYWNybyBhc3NlcnROb3RDb25zdGFudChzaXplLCBpbmRl
eCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVy
KHRhcmdldFJlZ2lzdGVyKQotICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIENhbGxlZSArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKLSAgICBidHB6IHRhcmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJh
cmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjpt
X2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdl
dFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxl
ZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6
Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
KHRhcmdldFJlZ2lzdGVyKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3Rl
cgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQot
ICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KLWVuZAotCi1tYWNybyBu
b3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKLSAgICAjIE5vdGhpbmcg
dG8gZG8hCi1lbmQKLQogbWFjcm8gY29udmVydENhbGxlZVRvVk0oY2FsbGVlKQogICAgIGJ0cG56
IGNhbGxlZSwgKGNvbnN0ZXhwciBQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCksIC5w
cmVjaXNlQWxsb2NhdGlvbgogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCBjYWxsZWUKQEAgLTE1
MzIsNyArMTQ5OCw3IEBAIGVuZAogCiAjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8g
ZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKICMgaW4g
dDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgotbWFjcm8gcHJvbG9ndWUo
Y29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQ
YXRoKQorbWFjcm8gcHJvbG9ndWUob3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgIyBT
ZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJl
c2VydmVDYWxsZXJQQ0FuZENGUigpCiAKQEAgLTE1NDEsOCArMTUwNyw3IEBAIG1hY3JvIHByb2xv
Z3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VT
bG93UGF0aCkKICAgICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGFk
ZHAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwsIHNwCiAgICAgZW5kCi0gICAgY29kZUJs
b2NrR2V0dGVyKHQxKQotICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKICAgICBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDAKICAgICAgICAgYmFkZGlzIDUs
IChVbmxpbmtlZENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyICsgQmFzZWxpbmVFeGVj
dXRpb25Db3VudGVyOjptX2NvdW50ZXIpW3QwXSwgLmNvbnRpbnVlCkBAIC0xNTgyLDcgKzE1NDcs
NyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3Ny
U2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJU
YWcKICAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6Ci0gICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyKHQxKQorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICAuY29u
dGludWU6CiAgICAgZW5kCiAKQEAgLTE2MjEsNyArMTU4Niw3IEBAIG1hY3JvIHByb2xvZ3VlKGNv
ZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0
aCkKIC5zdGFja0hlaWdodE9LR2V0Q29kZUJsb2NrOgogICAgICMgU3RhY2sgY2hlY2sgc2xvdyBw
YXRoIHJldHVybmVkIHRoYXQgdGhlIHN0YWNrIHdhcyBvay4KICAgICAjIFNpbmNlIHRoZXkgd2Vy
ZSBjbG9iYmVyZWQsIG5lZWQgdG8gZ2V0IENvZGVCbG9jayBhbmQgbmV3IHNwCi0gICAgbm90RnVu
Y3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAg
ICAgZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2sodDEsIHQwKQogICAgIHN1YnAgY2Zy
LCB0MCwgdDAKIApAQCAtMjAyNCwzOSArMTk4OSwzOSBAQCBub1dpZGUobGxpbnRfb3Bfd2lkZTMy
KQogbm9XaWRlKGxsaW50X29wX2VudGVyKQogCiBvcChsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCBt
YWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X21vZHVsZV9wcm9ncmFtX3By
b2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X2V2YWxfcHJv
bG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIs
IG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNl
X3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
YWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKICAgICBmdW5jdGlvbkluaXRp
YWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5j
dGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlz
cGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAg
ICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ss
IF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9uQXJpdHlDaGVj
ayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoK
ICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCkBAIC0yMDY0LDcgKzIwMjksNyBAQCBvcChs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKIGVuZCkKIAogb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBw
cm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIHByb2xv
Z3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBf
bGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlD
aGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25G
b3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKQEAg
LTI1MjUsNyArMjQ5MCw3IEBAIG1hY3JvIGxpbmtTbG93UGF0aEZvcihmdW5jdGlvbikKICAgICB1
bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBidHB6IHIxLCAuZG9Ob3RUcmFzaAogICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkKLSAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEs
IHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUZvclRhaWxDYWxsKHQxLCB0MiwgdDMsIHQ0LCBtYWNy
byhhZGRyZXNzKSBlbmQpCiAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQ0CiAuZG9Ob3RUcmFzaDoK
ICAgICBqbXAgdDAsIEpTRW50cnlQdHJUYWcKQEAgLTI1NDgsMTIgKzI1MTMsMTMgQEAgbWFjcm8g
dmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZSwKIC5pc0V4ZWN1dGFibGU6CiAgICAgbG9hZHAgb2Zmc2V0T2ZKSVRD
b2RlV2l0aEFyaXR5Q2hlY2tbdDFdLCB0MQogICAgIGJ0cHogdDEsIHNsb3dDYXNlCisgICAgam1w
IHNsb3dDYXNlICMgRklYTUUKIC5jYWxsQ29kZToKLSAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQz
LCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5k
KQogICAgIGptcCB0MSwgSlNFbnRyeVB0clRhZwogLm5vdEpTRnVuY3Rpb246CiAgICAgYmJuZXEg
SlNDZWxsOjptX3R5cGVbdDBdLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgc2xvd0Nhc2UKLSAgICBw
cmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlQ2FsbCh0NSwgdDIsIHQzLCB0
NCwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgIGptcCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGlu
ZQogZW5kCiAKQEAgLTI1NjgsNyArMjUzNCw3IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZv
KgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF9jYWxs
X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNl
OjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlv
bl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5k
LCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3Ry
YW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxv
Y2spIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxp
bnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU3Nyw3ICsyNTQzLDcgQEAgZW5kKQogIyB0MiBp
cyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGlu
dF92aXJ0dWFsX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVu
a0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ss
IF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1
bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
LCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spIGVuZCwgLnNsb3dDYXNl
KQogLnNsb3dDYXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQog
ZW5kKQpAQCAtMjU4Niw5ICsyNTUyLDkgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAj
IHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX3RhaWxfY2Fs
bF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFz
ZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rp
b25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisg
ICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2ssIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3Jv
ICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgICAgIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKLSAgICAgICAgcHJlcGFyZUZvclRh
aWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgICAgICBwcmVwYXJlRm9yVGFp
bENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgICAg
ICB1bnRhZ1JldHVybkFkZHJlc3MgdGVtcDQKICAgICBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2Fz
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggYWNlODcxMTY3MmU3MDIxNmQzOWE0OGRmMTVmZDY2ZDZi
NTdjNDExZS4uYWQyNTAxN2VmMGI0N2ZjMGIwNTA0NzQ3ZGI1NzViOTE1MDE4YWZlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTIyNTksNyArMjI1OSwxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnBuZXEgdDAsIHQzLCAub3BDYWxsU2xvdwotICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQs
IHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAg
c3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9u
b21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjMzOCw3ICsyMzQxLDEwIEBAIG1h
Y3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAg
ICAgICAgYnBuZXEgdDAsIHQzLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwo
dDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwg
bWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAg
ICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAg
ICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlv
blt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IDVkZTdiY2M3ZmQwZDRmMDQwZjJkZjk0YmQ0NzM0NWQ4
MzU4Njk0NDcuLjhjZDdkYmUyYTRhMjU5MDY0MzYxZDM2ZjU2ZjhjYjNlNDk1MDlkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCkBAIC0yNDgzLDcgKzI0ODMsMTAgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1l
LCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKIAog
Lm5vdFBvbHltb3JwaGljOgogICAgIGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKLSAgICBwcmVw
YXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwg
bWFjcm8oYWRkcmVzcykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgIHN0b3Jl
cCB0MiwgYWRkcmVzcworICAgIGVuZCkKIAogLmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3Jw
aGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKQEAgLTI1NjEsNyArMjU2NCwxMCBAQCBtYWNybyBk
b0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIGdldCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaQogCiAgICAgICAgIC5ub3RQb2x5bW9ycGhpYzoKICAgICAgICAgICAg
IGJxbmVxIHQwLCB0MSwgLm9wQ2FsbFNsb3cKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0
MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3Jv
KGFkZHJlc3MpCisgICAgICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisgICAgICAgICAg
ICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgLmdv
UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVd
LCB0NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5kZXgg
NzEzNWY0ZjZmYzIwY2IzOWU4NWJhYmMxZDFjZjFlYWI1OGI2MmJkNi4uMjRjMTRiM2Y4ZjZiNWY0
NTViZDBhNWE3N2M1OTMyYmU5ZjY4ZWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0xNDcsNyArMTQ3LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hU
b0pJVEZvclByb2xvZ3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogICAgICAgICAgICAgICAgIGptcCB3
czAsIFdhc21FbnRyeVB0clRhZwogICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgot
ICAgICAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIp
CisgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY29kZUJsb2NrUmVnaXN0ZXIKICAg
ICAgICAgZW5kKQogICAgIGVuZAogZW5kCkBAIC0yODMsNyArMjgzLDcgQEAgbWFjcm8gcmVzdG9y
ZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgc3VicCBjZnIsIHdzMSwgc3AKIGVuZAogCi1t
YWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRX
YXNtSW5zdGFuY2UpCittYWNybyB3YXNtUHJvbG9ndWUobG9hZFdhc21JbnN0YW5jZSkKICAgICAj
IFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAgICBw
cmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2Fz
bSgpCkBAIC0yOTMsOCArMjkzLDkgQEAgbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogICAgIGxvYWRwIFdhc206Oklu
c3RhbmNlOjptX293bmVyW3dhc21JbnN0YW5jZV0sIHdzMAogICAgIHN0b3JlcCB3czAsIFRoaXNB
cmd1bWVudE9mZnNldFtjZnJdCiAKLSAgICBjb2RlQmxvY2tHZXR0ZXIod3MwKQotICAgIGNvZGVC
bG9ja1NldHRlcih3czApCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHdzMAorICAgIGFuZHAgfjMs
IHdzMAorICAgIHN0b3JlcCB3czAsIENvZGVCbG9ja1tjZnJdCiAKICAgICAjIEdldCBuZXcgc3Ag
aW4gd3MxIGFuZCBjaGVjayBzdGFjayBoZWlnaHQuCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxs
ZWU6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMF0sIHdzMQpAQCAtNTE0LDcgKzUxNSw3IEBAIG9wKHdh
c21fZnVuY3Rpb25fcHJvbG9ndWUsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAK
LSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQorICAgIHdhc21Qcm9sb2d1ZShsb2FkV2Fz
bUluc3RhbmNlRnJvbVRMUykKICAgICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkKIApAQCAt
NTIzLDcgKzUyNCw3IEBAIG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAo
KQogICAgICAgICBlcnJvcgogICAgIGVuZAogCi0gICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBtYWNybyAoKSBlbmQpCisgICAgd2Fz
bVByb2xvZ3VlKG1hY3JvICgpIGVuZCkKICAgICB3YXNtTmV4dEluc3RydWN0aW9uKCkKIGVuZCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaAppbmRleCAzN2UwYzVkYjYxYWNhNjQyZTVlZmRmNjg2MTJmMDIzMWM0NThmZmVhLi40MmIw
Y2EwNzQyYjNmOTIxOTQxMzZjOWI1YjI0ODk1YWQ2ZTliZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjg4LDIwICsy
ODgsMjUgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9m
UmFyZURhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBt
X3JhcmVEYXRhKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQXNTdHJp
bmdJblJhcmVEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJhcmVEYXRhLCBtX2FzU3Ry
aW5nKTsgfQogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrRm9y
Q2FsbCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1fY29k
ZUJsb2NrRm9yQ2FsbCk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkNv
ZGVCbG9ja0ZvckNvbnN0cnVjdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4
ZWN1dGFibGUsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsgfQogCi1wcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBJbnRyaW5zaWMs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKLQotICAg
IGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxv
Y2tGb3JDYWxsKTsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICBz
dHJ1Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CisKKyAgICAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZygpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSYXJlRGF0YSwgbV9hc1N0cmluZyk7IH0KKwogICAgICAg
ICBSZWZQdHI8VHlwZVNldD4gbV9yZXR1cm5TdGF0ZW1lbnRUeXBlU2V0OwogICAgICAgICB1bnNp
Z25lZCBtX2xpbmVDb3VudDsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CkBAIC0zMTQs
NiArMzE5LDE0IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX2FzU3RyaW5n
OwogICAgIH07CiAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24pOworICAgIAorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTY3JpcHRFeGVjdXRhYmxl
KiB0b3BMZXZlbEV4ZWN1dGFibGUpOworCisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFi
bGU7CisKICAgICBSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGEoKQogICAgIHsKICAgICAgICAgaWYg
KExJS0VMWShtX3JhcmVEYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgK
aW5kZXggYTY5OTMxNTkwOTljY2MxYjczOTZhOTdjNThmZDRlZTMxYTVjMTgyZS4uOGRjMmYxNzgy
ZTBiY2Q1NDcyNWUyNzc5YmJmZTYwZmU3N2M2NDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDYXN0LmgKQEAgLTg5LDYgKzg5LDcgQEAgc3RydWN0IEpTVHlwZVJhbmdlIHsKICAg
ICBtYWNybyhSZWdFeHBPYmplY3QsIEpTVHlwZTo6UmVnRXhwT2JqZWN0VHlwZSwgSlNUeXBlOjpS
ZWdFeHBPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNXZWJBc3NlbWJseU1vZHVsZSwgSlNUeXBl
OjpXZWJBc3NlbWJseU1vZHVsZVR5cGUsIEpTVHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlKSBc
CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzLCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUs
IEpTVHlwZTo6RGlyZWN0QXJndW1lbnRzVHlwZSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0
YWJsZSwgSlNUeXBlOjpGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBKU1R5cGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGUpIFwKICAgICBtYWNybyhTY29wZWRBcmd1bWVudHMsIEpTVHlwZTo6U2NvcGVk
QXJndW1lbnRzVHlwZSwgSlNUeXBlOjpTY29wZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8o
Q2xvbmVkQXJndW1lbnRzLCBKU1R5cGU6OkNsb25lZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6Q2xv
bmVkQXJndW1lbnRzVHlwZSkgXAogICAgIG1hY3JvKEpTR2xvYmFsT2JqZWN0LCBKU1R5cGU6Okds
b2JhbE9iamVjdFR5cGUsIEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDNiYjQ1OGVlOGUzNmQ2YjRlMjY1ZmRiOWMxOTNhMmVk
ZDIyZGUwODIuLmEyNzk4ZGQzZWI5Y2ZlNzMzNmYzNjNlZmY1NzMyODhjYjRkYWUxZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTcxNiw5ICs3MTYsMTcgQEAgTmF0aXZl
RXhlY3V0YWJsZSogVk06OmdldFJlbW90ZUZ1bmN0aW9uKGJvb2wgaXNKU0Z1bmN0aW9uKQogICAg
IGF1dG8gZ2V0T3JDcmVhdGUgPSBbJl0gKFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIHNsb3QpIC0+
IE5hdGl2ZUV4ZWN1dGFibGUqIHsKICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZCA9IHNsb3QuZ2V0
KCkpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGVkOworCisgICAgICAgIEludHJpbnNpYyBpbnRy
aW5zaWMgPSBOb0ludHJpbnNpYzsKKyAgICAgICAgaWYgKCFzbG93Q2FzZSkgeworI2lmICEoT1Mo
V0lORE9XUykgJiYgQ1BVKFg4Nl82NCkpCisgICAgICAgICAgICBpbnRyaW5zaWMgPSBSZW1vdGVG
dW5jdGlvbkNhbGxJbnRyaW5zaWM7CisjZW5kaWYKKyAgICAgICAgfQorCiAgICAgICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIHJlc3VsdCA9IGdldEhvc3RGdW5jdGlvbigKICAgICAgICAgICAgIHNsb3dD
YXNlID8gcmVtb3RlRnVuY3Rpb25DYWxsR2VuZXJpYyA6IHJlbW90ZUZ1bmN0aW9uQ2FsbEZvckpT
RnVuY3Rpb24sCi0gICAgICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogUmVtb3RlRnVu
Y3Rpb25DYWxsSW50cmluc2ljLAorICAgICAgICAgICAgaW50cmluc2ljLAogICAgICAgICAgICAg
Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsIFN0cmluZygpKTsKICAgICAg
ICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4ocmVzdWx0KTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNw
cAppbmRleCBiYjQ2ZjhhODEzMmQxZWQ1NWUxYzM0YWY2YTAwZjBkMjQ5ZmYwZmMzLi41MTQ2NDU3
MmYxY2YyZWMxZjBjYWFmNThkZGI3ODRhZmNmYjM2OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC0xOTIsMTQgKzE5MiwxNCBAQCBzdGF0
aWMgdm9pZCBkb09TUkVudHJ5KEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQsIEJCUUNhbGxlZSYgYwogICAgIC8vIHBvcChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcio+KCpmcmFtZVBvaW50
ZXIpOwogICAgIGNvbnRleHQuc3AoKSA9IGZyYW1lUG9pbnRlciArIDE7Ci0gICAgc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXpl
b2Yodm9pZCopICogMSk7CisgICAgc3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9pbnRlckRl
bHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDEpOwogI2VsaWYgQ1BVKEFSTTY0RSkgfHwgQ1BVKEFS
TTY0KQogICAgIC8vIG1vdmUoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKICAgICAvLyBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIp
OwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJhbWVQ
b2ludGVyKTsKICAgICBjb250ZXh0LmdwcihBUk02NFJlZ2lzdGVyczo6bHIpID0gYml0d2lzZV9j
YXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFtZVBvaW50ZXIgKyAxKSk7CiAgICAgY29udGV4dC5zcCgp
ID0gZnJhbWVQb2ludGVyICsgMjsKLSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCop
ICogMik7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAvLyBMUiBuZWVkcyB0byBiZSB1bnRhZ2dlZCBz
aW5jZSBPU1IgZW50cnkgZnVuY3Rpb24gcHJvbG9ndWUgd2lsbCB0YWcgaXQgd2l0aCBTUC4gVGhp
cyBpcyBzaW1pbGFyIHRvIHRhaWwtY2FsbC4KICAgICBjb250ZXh0LmdwcihBUk02NFJlZ2lzdGVy
czo6bHIpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4odW50YWdDb2RlUHRyV2l0aFN0YWNr
UG9pbnRlckZvckpJVENhbGwoY29udGV4dC5ncHI8dm9pZCo+KEFSTTY0UmVnaXN0ZXJzOjpsciks
IGNvbnRleHQuc3AoKSkpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyB2b2lkIGRvT1NSRW50
cnkoSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9iZTo6Q29udGV4dCYgY29udGV4dCwgQkJRQ2FsbGVl
JiBjCiAgICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcio+KCpmcmFt
ZVBvaW50ZXIpOwogICAgIGNvbnRleHQuZ3ByKFJJU0NWNjRSZWdpc3RlcnM6OnJhKSA9IGJpdHdp
c2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2ludGVyICsgMSkpOwogICAgIGNvbnRleHQu
c3AoKSA9IGZyYW1lUG9pbnRlciArIDI7Ci0gICAgc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBl
cnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7Cisg
ICAgc3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZv
aWQqKSAqIDIpOwogI2Vsc2UKICNlcnJvciBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUuCiAjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456325</attachid>
            <date>2022-03-31 23:27:24 -0700</date>
            <delta_ts>2022-04-01 13:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220331232723.patch</filename>
            <type>text/plain</type>
            <size>74420</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWUyNTU0ZGQ5MDY5YWRmYTUwYzJlYjIyMmVjMTMwYTM0YzE1MGFhLi4xYTM1ZTUwMmRiN2RkYzIz
Y2RlMTg4MGNjZjZjY2YzNWY4YjU1ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAyMi0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAg
ICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6Cisg
ICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5n
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04p
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKEpTQzo6
dmlydHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpyZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVtb3Rl
RnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpkb09TUkVudHJ5KToKKwogMjAyMi0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IElkZW50aWZpZXI6OmZyb21TdHJpbmcoQVND
SUlMaXRlcmFsKSBtb3JlIGJyb2FkbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQ1BVLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
CmluZGV4IGIzYjdjZTU0ODNjZmU2ZDRhOTM4ZjQwMDM2OTJiNzMzZGZjMTg0YzkuLjEyNWViNmY4
NjFhZDBmNGRhMDRmOWJlZTFjMjYyZjJiMTI2NWY2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9DUFUuaApAQCAtMTY4LDUgKzE2OCwyMyBAQCBBTFdBWVNfSU5MSU5FIGludDY0X3Qg
aHdMM0NhY2hlU2l6ZSgpIHsgcmV0dXJuIDA7IH0KIEFMV0FZU19JTkxJTkUgaW50MzJfdCBod1Bo
eXNpY2FsQ1BVTWF4KCkgeyByZXR1cm4ga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29y
ZXMoKTsgfQogI2VuZGlmCiAKK2NvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpCit7CisjaWYgRU5BQkxFKENfTE9PUCkKKyAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUg
ZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgorICAgIHJldHVybiAyICogc2l6
ZW9mKHZvaWQqKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgLy8gUHJvbG9ndWUgb25seSBzYXZl
cyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIKKyAgICByZXR1cm4gc2l6ZW9mKHZvaWQqKTsKKyNl
bGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoUklT
Q1Y2NCkKKyAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5k
IGxpbmtSZWdpc3RlcgorICAgIHJldHVybiAyICogc2l6ZW9mKHZvaWQqKTsKKyNlbHNlCisjZXJy
b3IgdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcworI2VuZGlmCit9CisKKworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAppbmRleCAzNzE2ZjJhZjg1OWVkYTQxMWM4NTE0MTk2ZmRjZmM4ZmFjMTRlYWM3Li5h
ZmFlYzFlNmEzMThmNWU3ODg2ZTdhMDY2MzkwODNlZWFiYjRlZWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMTA4LDE3ICsxMDgs
MTkgQEAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gQ2FsbExpbmtJbmZvOjpk
b25lTG9jYXRpb24oKQogICAgIHJldHVybiBtX2RvbmVMb2NhdGlvbjsKIH0KIAotdm9pZCBDYWxs
TGlua0luZm86OnNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNP
YmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQ
dHIpCit2b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIWlzRGlyZWN0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oY2FsbGVlKSAmIHBvbHltb3JwaGljQ2FsbGVlTWFzaykpOwogICAgIG1fY2FsbGVl
T3JDb2RlQmxvY2suc2V0KHZtLCBvd25lciwgY2FsbGVlKTsKIAotICAgIGlmIChpc0RhdGFJQygp
KQorICAgIGlmIChpc0RhdGFJQygpKSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0g
Y29kZUJsb2NrOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9u
ID0gY29kZVB0cjsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoc3RhdGljX2Nhc3Q8T3B0aW1p
emluZ0NhbGxMaW5rSW5mbyo+KHRoaXMpLT5tX2NhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9j
YXRpb24sIGNhbGxlZSk7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTMwLDEwICsxMzIsMTIgQEAgdm9pZCBDYWxsTGlua0luZm86OmNsZWFyQ2FsbGVl
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgbV9jYWxsZWVPckNv
ZGVCbG9jay5jbGVhcigpOwotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlmIChpc0RhdGFJQygp
KSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5k
YXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7Ci0gICAgZWxzZSBp
ZiAoIWNsZWFyZWRCeUpldHRpc29uKCkpIHsKKyAgICB9IGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0
aXNvbigpKSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlv
biwgbnVsbHB0cik7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjk4LDkgKzMwMiwxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1
YigpCiAKICAgICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICBtX2NhbGxlZU9yQ29kZUJsb2Nr
LmNsZWFyKCk7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAg
ICAgdS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7CiAgICAg
fSBlbHNlIHsKICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAg
IENDYWxsSGVscGVyczo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2go
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJl
Z2lzdGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLCBjYWxsZWVHUFIoKSwgbnVsbHB0cik7
CiAjZWxzZQpAQCAtMzYzLDkgKzM2OSwxOCBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2Fs
bExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogCiAg
ICAgICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwo
KTsKKworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZD
b2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5s
aW5rKCZqaXQpOyAvLyBQb2x5bW9ycGhpYyBzdHViIGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHBy
ZXAuCiAgICAgICAgICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExp
bmtJbmZvR1BSLCBvZmZzZXRPZk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5
UHRyVGFnKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
TGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5r
KCZqaXQpOwogICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxM
aW5rSW5mb0dQUiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRy
eVB0clRhZyk7CiAgICAgICAgIH0KQEAgLTM3NCwxNSArMzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luCiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNo
KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSkpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBjYWxsOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tT
dG9yZTsKICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JU
YWlsQ2FsbCgpOworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRo
UGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxv
YWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRh
KCkpKSk7CiAgICAgICAgICAgICBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwotICAgICAgICB9
IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0gaml0
LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAg
ICAgICAgICBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwogICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKS0+bV9jYWxsTG9jYXRpb24gPSBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY2FsbGVlQ2hlY2spOwogICAgICAgICB9KTsK
ICAgICB9CkBAIC00MTEsOCArNDMxLDEwIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRTdHViKFJl
ZjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHViKQogCiAgICAgaWYgKGlzRGF0
YUlDKCkpIHsKICAgICAgICAgKmJpdHdpc2VfY2FzdDx1aW50cHRyX3QqPihtX2NhbGxlZU9yQ29k
ZUJsb2NrLnNsb3QoKSkgPSBwb2x5bW9ycGhpY0NhbGxlZU1hc2s7CisgICAgICAgIHUuZGF0YUlD
Lm1fY29kZUJsb2NrID0gbnVsbHB0cjsgLy8gUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgd2ls
bCBzZXQgQ29kZUJsb2NrIGluc2lkZSBpdC4KICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhp
Y0NhbGxEZXN0aW5hdGlvbiA9IG1fc3R1Yi0+Y29kZSgpLmNvZGUoKS5yZXRhZ2dlZDxKU0VudHJ5
UHRyVGFnPigpOwogICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
UG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxl
ZUxvY2F0aW9uKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0dWItPmNvZGUoKS5jb2RlKCkpKTsKQEAgLTQ3Niw5ICs0OTgsMTEgQEAgdm9p
ZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQpCiAKICAgICBBU1NFUlQoVXNlRGF0YUlDOjpObyA9PSB0aGlzLT51c2VEYXRhSUMoKSk7
CiAKKyAgICBhdXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJDYWxs
KCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJD
YWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJQy5tX2NvZGVCbG9j
a0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVC
bG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlzXSAoTGlu
a0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKQEAgLTUwMSw5ICs1
MjUsMTEgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgU2NvcGUKICAgICBqaXQuZW1pdE5vcHMoQ0NhbGxI
ZWxwZXJzOjpwYXRjaGFibGVKdW1wU2l6ZSgpKTsKIAogICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgp
OworICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
dGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAg
YXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwg
dGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsK
KyAgICAgICAgdS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0
LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxp
emVEaXJlY3RDYWxsKCk7CkBAIC01MTQsNiArNTQwLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNE
aXJlY3QoKSk7CiAgICAgQVNTRVJUKG1fY2FsbExvY2F0aW9uKTsKKyAgICBBU1NFUlQodS5jb2Rl
SUMubV9jb2RlQmxvY2tMb2NhdGlvbik7CiAgICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChmYXN0UGF0aFN0YXJ0KCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxs
SGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTUyNiw3ICs1NTMsNyBAQCB2
b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKCkKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgc2xvd1Bh
dGhTdGFydCgpKTsKIH0KIAotdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RD
YWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdldCkKK3ZvaWQg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQogewogICAg
IFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogCkBAIC01NDAsNiArNTY3LDcgQEAgdm9pZCBP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxh
YmVsPEpTRW50cnlQdHJUYWcKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5l
YXJDYWxsKG1fY2FsbExvY2F0aW9uLCB0YXJnZXQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxvY2spOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAppbmRleCBmYjIwZTQ3ODE0NzkzNTIxNzUwNDM0NDViMjk3NzMxYjk3MTI5ODY3Li4zOTIwODZh
MDhkMWI3YTZlMjY3MWZjNTIyYTNmOWNlZmZkMTY1MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3Mg
Q2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+
IHsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlv
bigpOwogCi0gICAgdm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2Jq
ZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CisgICAg
dm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUs
IENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAg
dm9pZCBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4pOwogICAgIHZvaWQgY2xlYXJDYWxsZWUoKTsKICAgICBKU09iamVjdCogY2Fs
bGVlKCk7CkBAIC0zMTcsNiArMzE3LDExIEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQ
YWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCBtX2NhbGxlZU9yQ29kZUJsb2NrKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRP
RihVbmlvblR5cGUsIGRhdGFJQy5tX2NvZGVCbG9jayk7CisgICAgfQorCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZT
RVRPRihVbmlvblR5cGUsIGRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKTsKQEAg
LTQwMSwxNCArNDA2LDE2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+IG1fc2xvd1BhdGhDYWxsRGVzdGluYXRpb247CiAgICAgdW5pb24gVW5pb25U
eXBlIHsKICAgICAgICAgVW5pb25UeXBlKCkKLSAgICAgICAgICAgIDogZGF0YUlDIHsgbnVsbHB0
ciB9CisgICAgICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIsIG51bGxwdHIgfQogICAgICAgICB7
IH0KIAogICAgICAgICBzdHJ1Y3QgRGF0YUlDIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7IC8vIFRoaXMgaXMgd2Vla2x5IGhlbGQuIEFuZCBjbGVhcmVkIHdoZW5ldmVyIG1f
bW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gaXMgY2hhbmdlZC4KICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0
aW9uOwogICAgICAgICB9IGRhdGFJQzsKIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
Q29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY29kZUJsb2NrTG9j
YXRpb247CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0
clRhZz4gbV9jYWxsZWVMb2NhdGlvbjsKICAgICAgICAgfSBjb2RlSUM7CiAgICAgfSB1OwpAQCAt
NTAzLDcgKzUxMCw3IEBAIGNsYXNzIE9wdGltaXppbmdDYWxsTGlua0luZm8gZmluYWwgOiBwdWJs
aWMgQ2FsbExpbmtJbmZvIHsKICAgICB2b2lkIGVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmKTsKICAgICB2b2lkIGVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYs
IFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKTsKICAgICB2b2lkIGlu
aXRpYWxpemVEaXJlY3RDYWxsKCk7Ci0gICAgdm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVM
b2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldERpcmVjdENhbGxUYXJn
ZXQoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4pOwogICAgIHZv
aWQgZW1pdFNsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJik7CiAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIs
IEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAppbmRleCBlOTc2MGNjYzhlZTQwNTI2NmNm
ZjRhMGEzMDRkMjlhMTU4YWM4NDE2Li45NjY1MDdkNTkwN2ZkMzM3YjhmZjE5ZjFlMjYyOTI0NmRl
MDgyMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRj
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKAogICAgIEFTU0VSVChv
d25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKLSAgICBjYWxs
TGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUsIGNvZGVQdHIp
OworICAgIGNhbGxMaW5rSW5mby5zZXRNb25vbW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxl
ZSwgY2FsbGVlQ29kZUJsb2NrLCBjb2RlUHRyKTsKICAgICBjYWxsTGlua0luZm8uc2V0TGFzdFNl
ZW5DYWxsZWUodm0sIG93bmVyLCBjYWxsZWUpOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3Nl
bWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQpAQCAtMTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBsaW5r
RGlyZWN0Q2FsbCgKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVC
bG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdp
bihjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIHBv
aW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayksICIsIGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwg
IlxuIik7CiAKLSAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRp
b25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CisgICAgY2FsbExpbmtJbmZvLnNldERp
cmVjdENhbGxUYXJnZXQoanNDYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oY2FsbGVlQ29kZUJsb2Nr
KSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOwogCiAgICAgaWYg
KGNhbGxlZUNvZGVCbG9jaykKICAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdD
YWxsKGNhbGxGcmFtZSwgJmNhbGxMaW5rSW5mbyk7CkBAIC0xNzg3LDcgKzE3ODcsOCBAQCB2b2lk
IGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIENhbAogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHVi
Sml0KSkgewogICAgICAgICBzaXplX3QgY2FzZUluZGV4ID0gYmluYXJ5U3dpdGNoLmNhc2VJbmRl
eCgpOwogICAgICAgICAKLSAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tj
YXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAgUG9seW1vcnBoaWNDYWxsQ2FzZSYgY2FsbENh
c2UgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XTsKKyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9
IGNhbGxDYXNlLnZhcmlhbnQoKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyOwogICAgICAgICBpZiAodmFyaWFudC5leGVjdXRh
YmxlKCkpIHsKQEAgLTE4MTAsMTQgKzE4MTEsMjUgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwK
ICAgICAgICAgYm9vbCBuZWVkc0RvbmVKdW1wID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZVNo
dWZmbGVyKSB7CiAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNo
dWZmbGVyLT5zbmFwc2hvdCgpKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGlm
IChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKSkpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJK
aXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlzVGFp
bENhbGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7
CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29k
ZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5k
ZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKGlzRGF0YUlDKQorICAgICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8u
aXNUYWlsQ2FsbCgpKTsKKyAgICAgICAgICAgIGlmIChpc0RhdGFJQykgeworICAgICAgICAgICAg
ICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1
ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4
XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2Nr
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCBjYWxsaW5nIHlldC4gVGh1
cywgc3RhY2tQb2ludGVyUmVnaXN0ZXIgaXMgbm90IGluY2x1ZGluZyBQQyAmIGZyYW1lUG9pbnRl
ci4KKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAg
ICAgICAgICAgICAgIG5lZWRzRG9uZUp1bXAgPSB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAppbmRleCA1MTcx
YmMxMjQwMDUyYzNjY2NkNmU2ZmFmNDY4MjUzMzdlZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcw
NzE4YjM5NDgyYmIzMDViNzBmOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaElubGluZXMuaApAQCAtMTk1LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUg
U2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAKICAgICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBq
ZXR0aXNvbiBpZiB3ZSdyZSBnb2luZyB0byBjYWxsIHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYg
KFVOTElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0
RnVuY3Rpb24oKSkgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAg
ICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgpIHsKICAgICAgICAgICAgIHZvaWQq
IHRocm93VGFyZ2V0ID0gdm0uZ2V0Q1RJVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CkBAIC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lO
TElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNv
ZGVCbG9ja1Nsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhh
bmRsZVRocm93RXhjZXB0aW9uKCkpOwogICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdh
c20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZDVl
YTlkNjc1OTc1NWEzOTRkNmY1NWVkN2Q3MjZhZmZlYWY3NmExZC4uZDg1ZTA2NTExNThiYzI0YjU2
ZWZlZDE4MjA2MzkwZWExMjhmMWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEs
MTQgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hp
Y2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291
bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBq
dW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1f
cGxhbi5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAg
cHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpE
RkdKSVQpOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAppbmRleCAxMTMyY2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWVi
NGQxMTU4NWY3Li40YzhmMmVlZGVmYWNiNTI1ZmMyOGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAg
ICAKKwogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2Rl
IGJsb2NrLgotICAgIAorCiAgICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAo
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICsgMSkpID0gY29kZUJsb2NrOwogICAgIAogICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEg
YnVmZmVyICIsIFJhd1BvaW50ZXIoc2NyYXRjaCkpOwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NS
RW50cnkoVk0mIHZtLCBDYWxsRgogCiAgICAgLy8gVGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hP
U1JFbnRyeUJ1ZmZlciB3aWxsIGJlIHplcm9lZCBieSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAg
ICAgZGZnQ29tbW9uLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9m
KEpTVmFsdWUpICogaW5kZXgpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0
dGVkIHRvIHRyaWdnZXJpbmcgYW4gT1NSIGVudHJ5IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVy
bi4gSGVuY2UsIGl0IGlzIHNhZmUgdG8gbW9kaWZ5IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1l
LT5zZXRDb2RlQmxvY2sob3B0aW1pemVkQ29kZUJsb2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVu
dHJ5cG9pbnQtPm1hY2hpbmVDb2RlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2
OTVkNTU2YzgxNTJkNzYuLjE0NzZiNGU4Mzg0YjM3ZmY5YmRhNDczM2Y1MTE4ZmVhZjFiN2M1MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVu
dEJsb2NrKCkKICAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KC0obV9qaXQuZ3JhcGgoKS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3Rlcikp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAg
ICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2pp
dC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7CisgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxy
ZWFkeSByZXBsYWNlZCBpbiBPU1IgZW50cnkuCiAgICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVu
ZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKQEAgLTExMjk4LDcgKzExMjk4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkK
IAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5n
cHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3By
KCkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZB
c1N0cmluZ0luUmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
UmFyZURhdGE6Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgSklUQ29t
cGlsZXI6Okp1bXAgY29udGludWF0aW9uID0gbV9qaXQuanVtcCgpOwogCiAgICAgaXNOYXRpdmVF
eGVjdXRhYmxlLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGRmZmRkZjhmMmU1OGQ2YjMzYmZmMGMwYTBj
MzhkZGFkMTZmYzlmZDguLjBlYzI0YzBkMzgyNWQ2YzYzNzg4YmFkNTJlY2JkYmMzZDljNWFhNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtMTAyMSw3ICsxMDIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihtX2ppdCwgc2h1
ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhjYWxsTGlua0luZm9HUFIpOworICAg
ICAgICAgICAgICAgIG1faml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coUmVnaXN0ZXJTZXQgeyBj
YWxsTGlua0luZm9HUFIgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKTsKICAgICB9IGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRleCA0NGE5YTFhOThm
Mjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFkNzMzOTk4ZDliODA0NDVh
MjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0OCw2ICsx
NDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMiwgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBoZWFkZXIgZnJvbSBzY3Jh
dGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNvIHJlcGxhY2VzCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKICAgICBq
aXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xNjAsNiArMTYy
LDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVu
a0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdVbnJlYXNvbmFi
bGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5rKCZqaXQpOworCisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9iZTo6Q29udGV4dCYgY3R4
KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCkt
PmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgaml0
LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9w
RW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKaW5kZXggYWIxZjViODY3NTlkMDU1NjlkMzhjMDQ4ZGNjODNhYTdmZDVmYjBl
Yy4uZmUyOWRkMmJlN2MyNTNlNTFhODQzYWYyOTdkODUxYmE5ZjQ0NTZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgK
QEAgLTc4LDcgKzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2Rp
ZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmll
ZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZV9y
YXJlRGF0YSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpIFwKLSAgICBt
YWNybyhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVuY3Rpb25FeGVjdXRh
YmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25F
eGVjdXRhYmxlUmFyZURhdGFfYXNTdHJpbmcsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGE6
Om9mZnNldE9mQXNTdHJpbmcoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2Nh
dG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9y
KCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8o
RnVuY3Rpb25SYXJlRGF0YV9wcm90b3R5cGUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3Rv
dHlwZTo6b2Zmc2V0T2ZQcm90b3R5cGUoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAKaW5kZXggMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OC4uM2Vm
NGFhNDhmZmU0YzY4NzZkYzQ5YzNjMTRiOTA2NWFlZmUyZDVlNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3Rh
dGUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXI7CiAKICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCi0gICAg
ICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQz
Ml90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOworICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50
MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgCiAgICAgc3dpdGNoIChn
cmFwaC5tX3BsYW4ubW9kZSgpKSB7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IGIxZTAzNjkxNDEwYjgyN2IwYzBlZDRkMGZlYzI3ZDg3NTU5YzU5NDQuLjRkNjIyNDgxZDk0OWQ3
MTJhOTkwOWFhMDAzMDc2MmIxMzEwY2JiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE5OCwxNSArMTk4LDE0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgewogICAgICAgICAgICAgbV9wcm9jLnNldE51bUVudHJ5cG9p
bnRzKG1fZ3JhcGgubV9udW1iZXJPZkVudHJ5cG9pbnRzKTsKLSAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9ncmFwaC5tX2NvZGVCbG9jazsKIAogICAgICAgICAgICAgUmVmPEIz
OjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yPiBjYXRjaFByb2xvZ3VlR2VuZXJhdG9yID0gY3JlYXRl
U2hhcmVkVGFzazxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigKLSAgICAgICAg
ICAgICAgICBbY29kZUJsb2NrXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNvZGUmIGNv
ZGUpIHsKKyAgICAgICAgICAgICAgICBbXShDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29k
ZSYgY29kZSkgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
ICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRTYXZlKGNvZGUuY2FsbGVlU2F2ZVJlZ2lzdGVy
QXRPZmZzZXRMaXN0KCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jaykpOworICAgICAgICAgICAgICAgICAgICAvLyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGlz
IGFscmVhZHkgcmVwbGFjZWQgaW4gRlRMOjpwcmVwYXJlT1NSRW50cnkuCiAgICAgICAgICAgICAg
ICAgfSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2F0Y2hFbnRyeXBvaW50SW5kZXgg
OiBtX2dyYXBoLm1fZW50cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5kZXgua2V5cygpKSB7
CkBAIC0yNzIsOSArMjcxLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9wcm9j
LmFkZEZhc3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRk
RmFzdENvbnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAgCi0gICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRvIGl0
c2VsZiBiZWNhdXNlCi0gICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3YXlzIGdl
dCBjb2xsZWN0ZWQuCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0ZvcihWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSkpOworICAgICAgICAvLyBXaGVuIHJ1bm5p
bmcgRlRMIGNvZGUsIHdlIGFscmVhZHkgc3RvcmUgQ29kZUJsb2NrIHRvIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jay4KKyAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ29kZSA9IG1fZ3JhcGgubV9wbGFu
LmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZTsKKyAgICAgICAgVU5VU0VE
X1ZBUklBQkxFKGlzRnVuY3Rpb25Db2RlKTsKIAogICAgICAgICAvLyBTdGFjayBPdmVyZmxvdyBD
aGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgucmVxdWlyZWRS
ZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTI5Myw2ICsyOTIs
MTUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdGxG
cmFtZVNpemUgPSBwYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpOwogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG1heEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGV4aXRGcmFtZVNpemUsIGZ0bEZyYW1lU2l6
ZSk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9u
Q29kZSkgeworICAgICAgICAgICAgICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNv
bnRleHQmIGN0eCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpG
VExKSVQpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisjZW5k
aWYKKwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OwogICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjdkZDU5Nzkw
YjcxZjk4YTIxN2IxMjU4Nzc2NzcxNjVhYzY4ZWUwYy4uNzc0N2QzYWQ4YjUzNWZhODU0N2U3NDAy
YmE3YjMyNGQ1OWI3NWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCkBAIC00MDYsMTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0g
ICAgICAgIC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0g
ICAgICAgIHJldHVybiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0
aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7
CkBAIC00NzcsMTIgKzQ3MSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQVShBUk1fVEhVTUIy
KSB8fCBDUFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJh
bWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNp
emVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAg
ICAgewogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNs
YXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAog
I2lmIENQVShNSVBTKQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQ
b2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1l
UG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJu
IDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVy
bkFkZHJlc3NSZWdpc3Rlcik7CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVs
cGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShSSVNDVjY0
KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lz
dGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yo
dm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsK
ICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCAyOWIwMmFmOWYxODA1
OGEzYzQ2OTlkNmQxMTE5MWY5OGQ5YTlmYzM1Li44N2EzN2RiMWRiYzk4NjNmOGZiYTZmNmE2MDQ3
NGEyNDRjMjI0YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTc0NCwxMSArNzQ0LDEzIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogICAgICAgICBmYXJKdW1wKEdQUkluZm86OnJlZ1QxLCBFeGNlcHRpb25IYW5k
bGVyUHRyVGFnKTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BS
UmVnIHByZXNlcnZlZEdQUiA9IEludmFsaWRHUFJSZWcpCisgICAgdm9pZCBwcmVwYXJlRm9yVGFp
bENhbGxTbG93KFJlZ2lzdGVyU2V0IHByZXNlcnZlZCA9IHsgfSkKICAgICB7Ci0gICAgICAgIEdQ
UlJlZyB0ZW1wMSA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMCA/IEdQUkluZm86OnJl
Z1QzIDogR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMiA9IHByZXNlcnZlZEdQ
UiA9PSBHUFJJbmZvOjpyZWdUMSA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDE7Ci0g
ICAgICAgIEdQUlJlZyB0ZW1wMyA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMiA/IEdQ
UkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDI7CisgICAgICAgIEdQUlJlZyB0ZW1wMSA9IHNl
bGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMSk7
CisgICAgICAgIEdQUlJlZyB0ZW1wMiA9IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAg
ICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMik7CisgICAgICAgIEdQUlJlZyB0ZW1wMyA9IHNlbGVj
dFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKIAogICAgICAgICBHUFJSZWcgbmV3RnJhbWVQb2ludGVy
ID0gdGVtcDE7CiAgICAgICAgIEdQUlJlZyBuZXdGcmFtZVNpemVHUFIgPSB0ZW1wMjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0Njcw
OTAwZThiZTliLi44Njc1MWRiMWVhYzJmZGU2Mjc4NjBkNzYwYTU5ZDUzZWI1NGM2NjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDMsMjggKzIwMyw2IEBAIHZvaWQgSklUOjpl
bWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNs
b3dQYXRoRnVuY3RpCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQotewotICAgIFJF
TEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUsIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhhc0V4
ZWN1dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSwgcmVzdWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7
Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVC
bG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JD
YWxsKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHByb2Jl
RGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7
Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MSwxMCArNzI5LDggQEAg
dm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25F
ZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0o
bGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAgICAg
IFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAgIHNp
emVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7
Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3Rh
dGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNz
LT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJlbCBl
bnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2NSw4ICs3NDEs
MTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGls
YXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVu
Y3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsK
KyAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUo
KSA9PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVi
dWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAg
aWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUq
PigpKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBiZWdp
bkxhYmVsKHRoaXMpOwogCkBAIC04MjksNyArODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlQW5k
TGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAg
ICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1Zyhb
PV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAo
Y29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkp
KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAgc3Rv
cmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNo
b3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2FmMmZj
MjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3Rl
cklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblBy
b2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRpb25D
aGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCmluZGV4IDg5OTgwODcyZDJiNzI3NzRjNjk1NmIzOTExOTJlODcxODFiMzdlOWEu
LjdmNmEzY2U3MWZkMjgzOTExNzk5NDU2YmM3YzdlMDEwMjMzMjI1NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxs
TGlua0luZm9JCiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewogICAgICAgICBhdXRv
IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRo
aXMsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8
dm9pZCgpPihbJl0gewogICAgICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAg
ICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdyhCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3co
UmVnaXN0ZXJTZXQgeyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BS
IH0pOwogICAgICAgICB9KSk7CiAgICAgICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAgICAg
ICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGY4MWRkZjI1Nzg0MjRjOGY5ZWFhNDhjMzFkNTU4
ZTVjMWVlMzQzYTYuLmViMzgzNzBjYjkxNjI4ODVhMTk3N2YxN2JmMzliN2Y1ZDcwZTk0OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTU4LDcg
KzE1OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFs
dWVGb3JDYWxsZXIsIEVuY29kZWRKU1ZhbHVlLCAoSlNSCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0V3JhcHBlZFZhbHVlKGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSkpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJn
ZXRDb2RlLCB2b2lkKiwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUs
IFNsb3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCiB7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25U
YXJnZXRDb2RlLCB2b2lkKiwgKEoKICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNo
ZSBpdHMgYXJpdHkgZW50cnlwb2ludC4KICAgICB7CiAgICAgICAgIERlZmVyVHJhcHMgZGVmZXJU
cmFwcyh2bSk7IC8vIFdlIGNhbid0IGpldHRpc29uIGFueSBjb2RlIHVudGlsIGFmdGVyIHdlIGxp
bmsgdGhlIGNhbGwuCisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrU2xvdCA9IG51bGxwdHI7
CiAgICAgICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAgICAgICAg
ICAgSlNTY29wZSogc2NvcGUgPSB0YXJnZXRGdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKICAg
ICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9ja1Nsb3QgPSBudWxscHRyOwogICAgICAgICAgICAgZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIHRhcmdl
dEZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIGNvZGVCbG9ja1Nsb3QpOwotICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+ZW50cnlwb2lu
dEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2Rl
Rm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNvZGVCbG9ja1Ns
b3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAppbmRleCBkOGEyMzc0MTM0YzRmNTU5OGRhMGJmNjRiMjg4NDVjNDVmYjgxODY2Li5iOWU4MzBj
YWQzYjNkNWYzYTQzMjAzMzkyYjRkNzdhNmMwOTE0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTYxLDcgKzE2MSw3IEBAIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmssIHZv
aWQsIChKU0dsCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93SXRlcmF0
b3JSZXN1bHRJc05vdE9iamVjdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JDYWxsZXIsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvclRhcmdldCwgRW5j
b2RlZEpTVmFsdWUsIChKU1JlbW90ZUZ1bmN0aW9uKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRh
cmdldENvZGUsIHZvaWQqLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblRocm93UmVtb3RlRnVuY3Rpb25FeGNlcHRpb24sIEVuY29kZWRK
U1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgdm9pZCwgKENvZGVCbG9jayopKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAz
YzRhM2FlM2E5ODhjZWU5NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi4yMDlkZmJiNTM1MTg0Mzg3
N2NlMzE2NjYzODA5NzRiZWYwMzFkN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHZvaWQgc2xv
d1BhdGhGb3IoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgU3BydF9KSVRPcGVyYXRpb25fRUdD
bGkgc2xvd1AKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9Ob3RUcmFzaCA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKIAog
ICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSKTsKLSAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coUmVnaXN0
ZXJTZXQgeyBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiB9KTsKIAogICAgIGRvTm90VHJhc2gubGlu
aygmaml0KTsKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSlNFbnRy
eVB0clRhZyk7CkBAIC0yODgsMjUgKzI4OCwyOSBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0mIHZtLCBDYWxsTW9kZSBtbwog
ICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogCi0gICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAg
YXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJv
LCBHUFJJbmZvOjpyZWdUNCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpKTsKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgYXV0byBoYXNF
eGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZv
OjpyZWdUMCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFU
YWcpKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZq
aXQpOwogICAgIGppdC5sb2FkUHRyKAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVj
a0ZvcihraW5kKSksCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQp
KSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJh
bmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCi0g
ICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29t
bWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKLSAgICAvLyBjYWxsLgorICAgIC8vIE5vdyB3ZSBrbm93
IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcg
YSBmYXN0IGNhbGwuCisKKyAgICBhdXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShH
UFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSk7CisgICAgaml0LmxvYWRQdHIo
CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25F
eGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvcihraW5kKSksCisgICAgICAgIEdQUkluZm86
OnJlZ1Q1KTsKIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFj
ayB0byBKSVQgY29kZS4KLSAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgY2FsbENvZGUoaml0Lmxh
YmVsKCkpOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0LCBK
U0VudHJ5UHRyVGFnKTsKICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICBqaXQucHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnBy
ZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBqaXQucHJlcGFy
ZUZvclRhaWxDYWxsU2xvdyhSZWdpc3RlclNldCB7IEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpy
ZWdUNSB9KTsKICAgICB9CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1Q1LCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRl
ckRlbHRhKCkpKSk7CiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDQsIEpTRW50cnlQdHJU
YWcpOwogCiAgICAgLy8gTnVsbFNldHRlckZ1bmN0aW9uVHlwZSBkb2VzIG5vdCBnZXQgdGhlIGZh
c3QgcGF0aCBzdXBwb3J0LiBCdXQgaXQgaXMgT0sgc2luY2UgdXNpbmcgTnVsbFNldHRlckZ1bmN0
aW9uVHlwZSBpcyBleHRyZW1lbHkgcmFyZS4KQEAgLTMxNCw3ICszMTgsMTQgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2
bSwgQ2FsbE1vZGUgbW8KICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaElmTm90VHlwZShH
UFJJbmZvOjpyZWdUMCwgSW50ZXJuYWxGdW5jdGlvblR5cGUpKTsKICAgICB2b2lkKiBleGVjdXRh
YmxlQWRkcmVzcyA9IHZtLmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKGtpbmQp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGV4ZWN1dGFibGVBZGRyZXNzKSwgR1BSSW5mbzo6cmVnVDQpOwotICAgIGppdC5qdW1w
KCkubGlua1RvKGNhbGxDb2RlLCAmaml0KTsKKworICAgIGlzTmF0aXZlLmxpbmsoJmppdCk7Cisg
ICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDQsIEpTRW50cnlQdHJU
YWcpOworICAgIGlmIChpc1RhaWxDYWxsKSB7CisgICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDApOworICAgICAgICBqaXQucHJlcGFyZUZvclRh
aWxDYWxsU2xvdyhSZWdpc3RlclNldCB7IEdQUkluZm86OnJlZ1Q0IH0pOworICAgIH0KKyAgICBq
aXQuZmFySnVtcChHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBzbG93Q2Fz
ZS5saW5rKCZqaXQpOwogICAgIApAQCAtMTM4NiwxMSArMTM5NywyMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2
bSkKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVX
aXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAotICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBHUFJJbmZvOjpyZWdUMSk7
CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDEpOworCisgICAgYXV0byBpc05hdGl2ZSA9IGpp
dC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVnVDAsIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUp
OworICAgIGppdC5sb2FkUHRyKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVC
bG9ja0ZvckNhbGwoKSksCisgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQuc3RvcmVD
ZWxsKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spKTsKKworICAgIGlzTmF0aXZlLmxpbmsoJmppdCk7CiAgICAgCi0g
ICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDAsIEpTRW50cnlQdHJU
YWcpOwotICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBl
bWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7
CisgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOwogCiAgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwpAQCAtMTUzMiwzMyArMTU1
Miw0NSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlbW90ZUZ1bmN0
aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcygKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLCBFeGVjdXRhYmxl
QmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNhbGwpKSwKLSAg
ICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgIGF1dG8gY29kZUV4aXN0cyA9IGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBH
UFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBjb2RlRXhpc3RzID0gaml0LmJyYW5jaFRlc3RQdHIo
Q0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMik7CiAKICAgICAvLyBUaGUgY2Fs
bHMgdG8gb3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yVGFyZ2V0IGFib3ZlIG1heSBHQywgYW5k
IGFueSBHQyBjYW4gcG90ZW50aWFsbHkgamV0dGlzb24gdGhlIEpJVCBjb2RlIGluIHRoZSB0YXJn
ZXQgSlNGdW5jdGlvbi4KICAgICAvLyBJZiB3ZSBmaW5kIHRoYXQgdGhlIEpJVCBjb2RlIGlzIG51
bGwgKGkuZS4gaGFzIGJlZW4gamV0dGlzb25lZCksIHRoZW4gd2UgbmVlZCB0byByZS1tYXRlcmlh
bGl6ZSBpdCBmb3IgdGhlIGNhbGwgYmVsb3cuIE5vdGUgdGhhdCB3ZSBrbm93CiAgICAgLy8gdGhh
dCBvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSBzaG91bGQgYmUg
YWJsZSB0byByZS1tYXRlcmlhbGl6ZSB0aGUgSklUIGNvZGUgKGV4Y2VwdCBmb3IgYW55IE9PTUUp
IGJlY2F1c2Ugd2Ugb25seQogICAgIC8vIHdlbnQgZG93biB0aGlzIGNvZGUgcGF0aCBhZnRlciB3
ZSBmb3VuZCBhIG5vbi1udWxsIEpJVCBjb2RlIChpbiB0aGUgbm9Db2RlIGNoZWNrKSBhYm92ZSBp
LmUuIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBtYXRlcmlhbGl6ZSB0aGUgSklUIGNvZGUuCisg
ICAgLy8gRklYTUU6IFdpbmRvd3MgeDY0IGlzIG5vdCBzdXBwb3J0ZWQgc2luY2Ugb3BlcmF0aW9u
TWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUgcmV0dXJucyBTbG93UGF0aFJldHVy
blR5cGUuCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFs
aXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlKT4oR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk1hdGVyaWFs
aXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlv
blB0clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBleGNlcHRpb25DaGVja3MuYXBwZW5kKGppdC5lbWl0SnVtcElmRXhjZXB0aW9u
KHZtKSk7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJl
Z1QxKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgQ0NhbGxI
ZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisgICAg
aml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBh
dXRvIG1hdGVyaWFsaXplZCA9IGppdC5qdW1wKCk7CiAKICAgICBjb2RlRXhpc3RzLmxpbmsoJmpp
dCk7CisgICAgYXV0byBpc05hdGl2ZSA9IGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVn
VDEsIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpOworICAgIGppdC5sb2FkUHRyKAorICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwgRnVuY3Rp
b25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksCisgICAgICAgIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJlZ1QzLCBDQ2FsbEhlbHBl
cnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKworICAgIGlz
TmF0aXZlLmxpbmsoJmppdCk7CisgICAgbWF0ZXJpYWxpemVkLmxpbmsoJmppdCk7CiAgICAgLy8g
QmFzZWQgb24gdGhlIGNoZWNrIGFib3ZlLCB3ZSBzaG91bGQgYmUgZ29vZCB3aXRoIHRoaXMuIE9u
IEFSTTY0LCBlbWl0UG9pbnRlclZhbGlkYXRpb24gd2lsbCBkbyB0aGlzLgogI2lmIEFTU0VSVF9F
TkFCTEVEICYmICFDUFUoQVJNNjRFKQogICAgIHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGNoZWNrTm90TnVsbCA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywg
R1BSSW5mbzo6cmVnVDEpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY2hlY2tOb3ROdWxs
ID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRlcik7CiAgICAg
ICAgIGNoZWNrTm90TnVsbC5saW5rKCZqaXQpOwogICAgIH0KICNlbmRpZgogCi0gICAgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOwotICAg
IGppdC5jYWxsKEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBlbWl0UG9pbnRl
clZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMiwgSlNFbnRyeVB0clRhZyk7CisgICAgaml0
LmNhbGwoR1BSSW5mbzo6cmVnVDIsIEpTRW50cnlQdHJUYWcpOwogCiAgICAgLy8gV3JhcCByZXR1
cm4gdmFsdWUKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDFmZGI0YTU3ZDU5NGJlZWE2
ZWJiODBhYTY5N2JkYWQ0M2Y5MGY4NzMuLjZhYWMzMTk2MDMxYTYwODlmNDczNzViNmRhNWFmODEz
YjIzMzllNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3MCw2ICsxNzAsNyBAQCBjb25zdCBTdGFja0FsaWdubWVu
dFNsb3RzID0gY29uc3RleHByIChzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQogY29uc3QgU3Rh
Y2tBbGlnbm1lbnRNYXNrID0gU3RhY2tBbGlnbm1lbnQgLSAxCiAKIGNvbnN0IENhbGxlckZyYW1l
QW5kUENTaXplID0gY29uc3RleHByIChzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpCitjb25zdCBQ
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhID0gY29uc3RleHByIChwcm9sb2d1ZVN0YWNrUG9pbnRl
ckRlbHRhKCkpCiAKIGNvbnN0IENhbGxlckZyYW1lID0gMAogY29uc3QgUmV0dXJuUEMgPSBDYWxs
ZXJGcmFtZSArIE1hY2hpbmVSZWdpc3RlclNpemUKQEAgLTU2Niw2ICs1NjcsNyBAQCBjb25zdCBB
cnJheVR5cGUgPSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0g
Y29uc3RleHByIERlcml2ZWRBcnJheVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0
ZXhwciBQcm94eU9iamVjdFR5cGUKIGNvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhl
YXBCaWdJbnRUeXBlCitjb25zdCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlID0gY29uc3RleHByIEZ1
bmN0aW9uRXhlY3V0YWJsZVR5cGUKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBi
ZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkg
d3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwu
CkBAIC0xMTkyLDcgKzExOTQsOCBAQCBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogICAgIGVuZAog
ZW5kCiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0
ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0
ZW1wNCwgc3RvcmVDb2RlQmxvY2spCisgICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5
bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXplW3NwXSkKIGVuZAogCiBtYWNybyBpbnZv
a2VGb3JSZWd1bGFyQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRD
RlIsIGNhbGxQdHJUYWcpCkBAIC0xMjA4LDcgKzEyMTEsNyBAQCBlbmQKIAogIyBzcCBwb2ludHMg
dG8gdGhlIG5ldyBmcmFtZSArIENhbGxlckZyYW1lQW5kUENTaXplCiAjIFdlIGxlYXZlIGNmciB0
ZW1wNCB0byB1c2UgaXQgZm9yIHVudGFnZ2luZy4KLW1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1w
MSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgcmVzdG9yZUNhbGxl
ZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMjYzLDYgKzEyNjYsOCBAQCBtYWNy
byBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCiAgICAgZW5k
CiAKICAgICBtb3ZlIHRlbXAxLCBzcAorCisgICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsg
UGF5bG9hZE9mZnNldCAtIFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGFbc3BdKQogZW5kCiAKIG1h
Y3JvIGludm9rZUZvclRhaWxDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBtYXli
ZU9sZENGUiwgY2FsbFB0clRhZykKQEAgLTEzMDMsNyArMTMwOCw3IEBAIG1hY3JvIHNsb3dQYXRo
Rm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1CiAgICAgICAgIG1hY3JvIChjYWxsZWUsIGNhbGxlZUZyYW1lUHRyKQogICAgICAg
ICAgICAgYnRweiBjYWxsZWVGcmFtZVB0ciwgLmRvbnRVcGRhdGVTUAogICAgICAgICAgICAgbW92
ZSBjYWxsZWVGcmFtZVB0ciwgc3AKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQs
IHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJl
c3MpIGVuZCkKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKICAgICAgICAgICAgIGNhbGxUYXJnZXRG
dW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIEpTRW50cnlTbG93
UGF0aFB0clRhZykKICAgICAgICAgZW5kKQpAQCAtMTQ4Miw0NCArMTQ4Nyw2IEBAIG1hY3JvIGFz
c2VydE5vdENvbnN0YW50KHNpemUsIGluZGV4KQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBmdW5j
dGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxV
RTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UK
LSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3Rl
cgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIs
IChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAg
bG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5j
dGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNF
eGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JD
YWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBmdW5jdGlv
bkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAgICBpZiBKU1ZB
TFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZWxz
ZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdldFJlZ2lz
dGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0
YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJnZXRSZWdpc3Rl
ciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAg
ICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1
bmN0aW9uOjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLS5p
c0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0Zv
ckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8g
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCi0gICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2Rl
QmxvY2tbY2ZyXQotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJj
ZVJlZ2lzdGVyKQotICAgICMgTm90aGluZyB0byBkbyEKLWVuZAotCiBtYWNybyBjb252ZXJ0Q2Fs
bGVlVG9WTShjYWxsZWUpCiAgICAgYnRwbnogY2FsbGVlLCAoY29uc3RleHByIFByZWNpc2VBbGxv
Y2F0aW9uOjpoYWxmQWxpZ25tZW50KSwgLnByZWNpc2VBbGxvY2F0aW9uCiAgICAgYW5kcCBNYXJr
ZWRCbG9ja01hc2ssIGNhbGxlZQpAQCAtMTUzMiw3ICsxNDk5LDcgQEAgZW5kCiAKICMgRG8gdGhl
IGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBs
ZWF2ZSB0aGUgQ29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBl
bnRyeSBPU1IuCi1tYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRl
ciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCittYWNybyBwcm9sb2d1ZShvc3JTbG93UGF0
aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sg
aWYgd2Ugc2hvdWxkIE9TUi4KICAgICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKIApAQCAtMTU0
MSw4ICsxNTA4LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tT
ZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICBjYWxsU2xvd1BhdGgo
dHJhY2VTbG93UGF0aCkKICAgICAgICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCwgc3AKICAgICBlbmQKLSAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCi0gICAgY29kZUJsb2NrU2V0
dGVyKHQxKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGlmIG5vdCAoQ19MT09Q
IG9yIENfTE9PUF9XSU4pCiAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVb
dDFdLCB0MAogICAgICAgICBiYWRkaXMgNSwgKFVubGlua2VkQ29kZUJsb2NrOjptX2xsaW50RXhl
Y3V0ZUNvdW50ZXIgKyBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlcilbdDBdLCAu
Y29udGludWUKQEAgLTE1ODIsNyArMTU0OCw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dl
dHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAg
ICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwogICAgICAgICBlbmQKICAgICAucmVjb3ZlcjoK
LSAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisgICAgICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQogICAgIC5jb250aW51ZToKICAgICBlbmQKIApAQCAtMTYyMSw3ICsx
NTg3LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIs
IG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogLnN0YWNrSGVpZ2h0T0tHZXRDb2RlQmxvY2s6
CiAgICAgIyBTdGFjayBjaGVjayBzbG93IHBhdGggcmV0dXJuZWQgdGhhdCB0aGUgc3RhY2sgd2Fz
IG9rLgogICAgICMgU2luY2UgdGhleSB3ZXJlIGNsb2JiZXJlZCwgbmVlZCB0byBnZXQgQ29kZUJs
b2NrIGFuZCBuZXcgc3AKLSAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVC
bG9jayh0MSwgdDApCiAgICAgc3VicCBjZnIsIHQwLCB0MAogCkBAIC0yMDI0LDM5ICsxOTkwLDM5
IEBAIG5vV2lkZShsbGludF9vcF93aWRlMzIpCiBub1dpZGUobGxpbnRfb3BfZW50ZXIpCiAKIG9w
KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rp
b25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5
X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAog
b3AobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUo
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xs
aW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBl
bmQpCiAKIAogb3AobGxpbnRfZXZhbF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxp
bnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIGVu
ZCkKIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zv
cl9jYWxsKQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKICAgICBkaXNwYXRjaCgwKQog
ZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCBt
YWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
KyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShm
dW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2Nh
bGwpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrLCAuZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNr
KQogLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkK
QEAgLTIwNjQsNyArMjAzMCw3IEBAIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrLCBtYWNybyAoKQogZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNr
X2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CiAgICAgZnVu
Y3Rpb25Jbml0aWFsaXphdGlvbigxKQpAQCAtMjUyNSw3ICsyNDkxLDcgQEAgbWFjcm8gbGlua1Ns
b3dQYXRoRm9yKGZ1bmN0aW9uKQogICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIGJ0cHog
cjEsIC5kb05vdFRyYXNoCiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKQot
ICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0MSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlRm9yVGFp
bENhbGwodDEsIHQyLCB0MywgdDQsIG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICB1bnRhZ1JldHVy
bkFkZHJlc3MgdDQKIC5kb05vdFRyYXNoOgogICAgIGptcCB0MCwgSlNFbnRyeVB0clRhZwpAQCAt
MjUzNCw3ICsyNTAwLDcgQEAgZW5kCiAjIDY0Yml0OnQwIDMyYml0KHQwLHQxKSBpcyBjYWxsZWUK
ICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAot
bWFjcm8gdmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBpbnRl
cm5hbEZ1bmN0aW9uVHJhbXBvbGluZSwgcHJlcGFyZUNhbGwsIHNsb3dDYXNlKQorbWFjcm8gdmly
dHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBvZmZzZXRPZkNvZGVC
bG9jaywgaW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUsIHByZXBhcmVDYWxsLCBzbG93Q2FzZSkK
ICAgICBhZGRpIDEsIENhbGxMaW5rSW5mbzo6bV9zbG93UGF0aENvdW50W3QyXQogICAgIGlmIEpT
VkFMVUU2NAogICAgICAgICBidHFueiB0MCwgTm90Q2VsbE1hc2ssIHNsb3dDYXNlCkBAIC0yNTQy
LDE0ICsyNTA4LDE4IEBAIG1hY3JvIHZpcnR1YWxUaHVua0ZvcihvZmZzZXRPZkpJVENvZGVXaXRo
QXJpdHlDaGVjaywgaW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUsCiAgICAgICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCBzbG93Q2FzZQogICAgIGVuZAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3Qw
XSwgSlNGdW5jdGlvblR5cGUsIC5ub3RKU0Z1bmN0aW9uCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6
bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0MF0sIHQxCi0gICAgYnRweiB0MSwgKGNvbnN0ZXhwciBK
U0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rp
b25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0
YVRhZykpW3QxXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVE
YXRhW3QwXSwgdDUKKyAgICBidHB6IHQ1LCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRh
VGFnKSwgLmlzRXhlY3V0YWJsZQorICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1
dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdDVdLCB0NQogLmlz
RXhlY3V0YWJsZToKLSAgICBsb2FkcCBvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja1t0MV0s
IHQxCi0gICAgYnRweiB0MSwgc2xvd0Nhc2UKKyAgICBidHB6IG9mZnNldE9mSklUQ29kZVdpdGhB
cml0eUNoZWNrW3Q1XSwgc2xvd0Nhc2UKKyAgICBsb2FkcCBvZmZzZXRPZkpJVENvZGVXaXRoQXJp
dHlDaGVja1t0NV0sIHQxCisgICAgbW92ZSAwLCB0MAorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBl
W3Q1XSwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgLmNhbGxDb2RlCisgICAgbG9hZHAgb2Zmc2V0
T2ZDb2RlQmxvY2tbdDVdLCB0MAogLmNhbGxDb2RlOgogICAgIHByZXBhcmVDYWxsKHQ1LCB0Miwg
dDMsIHQ0KQorICAgIHN0b3JlcCB0MCwgQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIFByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGFbc3BdCiAgICAgam1wIHQxLCBKU0VudHJ5UHRyVGFnCiAubm90
SlNGdW5jdGlvbjoKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEludGVybmFsRnVuY3Rp
b25UeXBlLCBzbG93Q2FzZQpAQCAtMjU2OCw3ICsyNTM4LDcgQEAgZW5kKQogIyB0MiBpcyBDYWxs
TGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0
dWFsX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0
YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFs
X2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6
Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNhbGwsIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUs
IG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCiAuc2xv
d0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92aXJ0dWFsX2NhbGwpCiBlbmQpCkBA
IC0yNTc3LDcgKzI1NDcsNyBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMg
Y2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY29uc3RydWN0X3RyYW1w
b2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9u
X2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQp
IGVuZCwgLnNsb3dDYXNlKQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QsIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3Rf
dHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93
Q2FzZSkKIC5zbG93Q2FzZToKICAgICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2Fs
bCkKIGVuZCkKQEAgLTI1ODYsOSArMjU1Niw5IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZv
KgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF90YWls
X2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJs
ZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
KQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCwgX2xs
aW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1w
MiwgdGVtcDMsIHRlbXA0KQogICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
dGVtcDEpCi0gICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0
ZW1wNCkKKyAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1w
NAogICAgIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBh
Y2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYxNWZkNjZkNmI1N2M0MTFlLi5hZDI1MDE3ZWYwYjQ3ZmMw
YjA1MDQ3NDdkYjU3NWI5MTUwMThhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjI1OSw3ICsy
MjU5LDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAKIC5ub3RQb2x5bW9ycGhpYzoKICAg
ICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwg
dDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAg
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRh
SUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICBl
bmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0
NV0sIHQ1CkBAIC0yMzM4LDcgKzIzNDEsMTAgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVO
YW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKIAog
ICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBicG5lcSB0MCwgdDMsIC5vcENh
bGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAg
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICAg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5k
YXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAgICAgICAgIHN0b3JlcCB0MiwgYWRk
cmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAgICAgIC5nb1BvbHltb3JwaGljOgogICAgICAg
ICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRh
dGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXgg
NWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3MzQ1ZDgzNTg2OTQ0Ny4uOGNkN2RiZTJhNGEyNTkw
NjQzNjFkMzZmNTZmOGNiM2U0OTUwOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTI0ODMsNyArMjQ4Mywx
MCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnFu
ZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQor
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1f
Y29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQog
CiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0
NQpAQCAtMjU2MSw3ICsyNTY0LDEwIEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwg
c2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAg
ICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xv
dwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBw
cmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlD
Lm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MK
KyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMu
bV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA3MTM1ZjRmNmZjMjBjYjM5ZTg1YmFiYzFk
MWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIzZjhmNmI1ZjQ1NWJkMGE1YTc3YzU5MzJiZTlmNjhlZWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE0
Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2Nr
UmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCiAgICAg
ICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6Ci0gICAgICAgICAgICBub3RGdW5jdGlvbkNv
ZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKKyAgICAgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdpc3RlcgogICAgICAgICBlbmQpCiAgICAgZW5kCiBlbmQK
QEAgLTI4Myw3ICsyODMsNyBAQCBtYWNybyByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkK
ICAgICBzdWJwIGNmciwgd3MxLCBzcAogZW5kCiAKLW1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKK21hY3JvIHdhc21Q
cm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFu
ZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQog
ICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKQEAgLTI5Myw4ICsyOTMsOSBAQCBt
YWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRX
YXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fb3duZXJbd2FzbUluc3Rh
bmNlXSwgd3MwCiAgICAgc3RvcmVwIHdzMCwgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nmcl0KIAotICAg
IGNvZGVCbG9ja0dldHRlcih3czApCi0gICAgY29kZUJsb2NrU2V0dGVyKHdzMCkKKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgd3MwCisgICAgYW5kcCB+Mywgd3MwCisgICAgc3RvcmVwIHdzMCwgQ29k
ZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0IG5ldyBzcCBpbiB3czEgYW5kIGNoZWNrIHN0YWNrIGhl
aWdodC4KICAgICBsb2FkaSBXYXNtOjpMTEludENhbGxlZTo6bV9udW1DYWxsZWVMb2NhbHNbd3Mw
XSwgd3MxCkBAIC01MTQsNyArNTE1LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgbWFj
cm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZUZy
b21UTFMpCisgICAgd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQogICAgIHdh
c21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCkBAIC01MjMsNyArNTI0LDcgQEAgb3Aod2FzbV9m
dW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5k
CiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkKKyAgICB3YXNtUHJvbG9ndWUobWFjcm8gKCkgZW5kKQog
ICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDM3ZTBjNWRiNjFhY2E2
NDJlNWVmZGY2ODYxMmYwMjMxYzQ1OGZmZWEuLjQyYjBjYTA3NDJiM2Y5MjE5NDEzNmM5YjViMjQ4
OTVhZDZlOWJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yODgsMjAgKzI4OCwyNSBAQCBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgfQogCiAgICAg
c3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1fcmFyZURhdGEpOyB9Ci0gICAgc3RhdGlj
IGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZ0luUmFyZURhdGEoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNTdHJpbmcpOyB9CiAgICAgc3RhdGljIGlubGlu
ZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsgfQogICAgIHN0
YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpOyB9CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNl
OwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24pOwotICAgIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTY3JpcHRFeGVjdXRh
YmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwotCi0gICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1
dGFibGU7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9ja0ZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBtX2NvZGVCbG9ja0ZvckNhbGwpOworICAgICAgICBjYXNl
IENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBzdGF0aWMgaW5saW5l
IHB0cmRpZmZfdCBvZmZzZXRPZkFzU3RyaW5nKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJh
cmVEYXRhLCBtX2FzU3RyaW5nKTsgfQorCiAgICAgICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVy
blN0YXRlbWVudFR5cGVTZXQ7CiAgICAgICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgICAg
ICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKQEAgLTMxNCw2ICszMTksMTQgQEAgY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBX
cml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fYXNTdHJpbmc7CiAgICAgfTsKIAorcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSW50cmlu
c2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSk7CisK
KyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKKwogICAgIFJhcmVEYXRhJiBlbnN1
cmVSYXJlRGF0YSgpCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmFyZURhdGEpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBhNjk5MzE1OTA5OWNjYzFiNzM5
NmE5N2M1OGZkNGVlMzFhNWMxODJlLi44ZGMyZjE3ODJlMGJjZDU0NzI1ZTI3NzliYmZlNjBmZTc3
YzY0Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtODksNiAr
ODksNyBAQCBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIG1hY3JvKFJlZ0V4cE9iamVjdCwgSlNU
eXBlOjpSZWdFeHBPYmplY3RUeXBlLCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUpIFwKICAgICBt
YWNybyhKU1dlYkFzc2VtYmx5TW9kdWxlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSwg
SlNUeXBlOjpXZWJBc3NlbWJseU1vZHVsZVR5cGUpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVu
dHMsIEpTVHlwZTo6RGlyZWN0QXJndW1lbnRzVHlwZSwgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNU
eXBlKSBcCisgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlLCBKU1R5cGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSkgXAogICAgIG1hY3Jv
KFNjb3BlZEFyZ3VtZW50cywgSlNUeXBlOjpTY29wZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OlNj
b3BlZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhDbG9uZWRBcmd1bWVudHMsIEpTVHlwZTo6
Q2xvbmVkQXJndW1lbnRzVHlwZSwgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSBcCiAgICAg
bWFjcm8oSlNHbG9iYWxPYmplY3QsIEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpH
bG9iYWxPYmplY3RUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
M2JiNDU4ZWU4ZTM2ZDZiNGUyNjVmZGI5YzE5M2EyZWRkMjJkZTA4Mi4uYTI3OThkZDNlYjljZmU3
MzM2ZjM2M2VmZjU3MzI4OGNiNGRhZTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtNzE2LDkgKzcxNiwxNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0UmVtb3Rl
RnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24pCiAgICAgYXV0byBnZXRPckNyZWF0ZSA9IFsmXSAo
V2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgc2xvdCkgLT4gTmF0aXZlRXhlY3V0YWJsZSogewogICAg
ICAgICBpZiAoYXV0byogY2FjaGVkID0gc2xvdC5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBj
YWNoZWQ7CisKKyAgICAgICAgSW50cmluc2ljIGludHJpbnNpYyA9IE5vSW50cmluc2ljOworICAg
ICAgICBpZiAoIXNsb3dDYXNlKSB7CisjaWYgIShPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KSkK
KyAgICAgICAgICAgIGludHJpbnNpYyA9IFJlbW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYzsKKyNl
bmRpZgorICAgICAgICB9CisKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVzdWx0ID0gZ2V0
SG9zdEZ1bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2UgPyByZW1vdGVGdW5jdGlvbkNhbGxH
ZW5lcmljIDogcmVtb3RlRnVuY3Rpb25DYWxsRm9ySlNGdW5jdGlvbiwKLSAgICAgICAgICAgIHNs
b3dDYXNlID8gTm9JbnRyaW5zaWMgOiBSZW1vdGVGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAg
ICAgICAgICBpbnRyaW5zaWMsCiAgICAgICAgICAgICBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1
Y3RvciwgbnVsbHB0ciwgU3RyaW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVj
dXRhYmxlPihyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCmluZGV4IGJiNDZmOGE4MTMyZDFlZDU1
ZTFjMzRhZjZhMDBmMGQyNDlmZjBmYzMuLjUxNDY0NTcyZjFjZjJlYzFmMGNhYWY1OGRkYjc4NGFm
Y2ZiMzY5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9u
cy5jcHAKQEAgLTE5MiwxNCArMTkyLDE0IEBAIHN0YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFu
Y2UqIGluc3RhbmNlLCBQcm9iZTo6Q29udGV4dCYgY29udGV4dCwgQkJRQ2FsbGVlJiBjCiAgICAg
Ly8gcG9wKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNl
X2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5zcCgpID0g
ZnJhbWVQb2ludGVyICsgMTsKLSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJv
bG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICog
MSk7CiAjZWxpZiBDUFUoQVJNNjRFKSB8fCBDUFUoQVJNNjQpCiAgICAgLy8gbW92ZShmcmFtZVBv
aW50ZXJSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIC8vIHBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CiAgICAgY29udGV4dC5mcCgpID0gYml0
d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcio+KCpmcmFtZVBvaW50ZXIpOwogICAgIGNvbnRleHQuZ3By
KEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1l
UG9pbnRlciArIDEpKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAg
IHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRh
KCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKICNpZiBDUFUoQVJNNjRFKQog
ICAgIC8vIExSIG5lZWRzIHRvIGJlIHVudGFnZ2VkIHNpbmNlIE9TUiBlbnRyeSBmdW5jdGlvbiBw
cm9sb2d1ZSB3aWxsIHRhZyBpdCB3aXRoIFNQLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGFpbC1jYWxs
LgogICAgIGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQ
VVJlZ2lzdGVyPih1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChjb250ZXh0
Lmdwcjx2b2lkKj4oQVJNNjRSZWdpc3RlcnM6OmxyKSwgY29udGV4dC5zcCgpKSk7CkBAIC0yMTAs
NyArMjEwLDcgQEAgc3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmZwKCkgPSBi
aXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5n
cHIoUklTQ1Y2NFJlZ2lzdGVyczo6cmEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4oKihm
cmFtZVBvaW50ZXIgKyAxKSk7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMjsK
LSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7CiAjZWxzZQogI2Vycm9y
IFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456395</attachid>
            <date>2022-04-01 13:24:14 -0700</date>
            <delta_ts>2022-04-01 22:35:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220401132414.patch</filename>
            <type>text/plain</type>
            <size>72275</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWUyNTU0ZGQ5MDY5YWRmYTUwYzJlYjIyMmVjMTMwYTM0YzE1MGFhLi5lZTQwZWE0NjY1MTI3MGUx
NDc0MGQ5ZmFmMjM1NjQwOGU1MGVlMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMi0wNC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAg
ICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2Fs
bEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENh
bGxTbG93KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAg
ICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRo
dW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpyZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVtb3RlRnVuY3Rpb24p
OgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
Ojpkb09TUkVudHJ5KToKKwogMjAyMi0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkb3B0IElkZW50aWZpZXI6OmZyb21TdHJpbmcoQVNDSUlMaXRlcmFs
KSBtb3JlIGJyb2FkbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQ1BVLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCmluZGV4IGIz
YjdjZTU0ODNjZmU2ZDRhOTM4ZjQwMDM2OTJiNzMzZGZjMTg0YzkuLjEyNWViNmY4NjFhZDBmNGRh
MDRmOWJlZTFjMjYyZjJiMTI2NWY2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQ1BVLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9D
UFUuaApAQCAtMTY4LDUgKzE2OCwyMyBAQCBBTFdBWVNfSU5MSU5FIGludDY0X3QgaHdMM0NhY2hl
U2l6ZSgpIHsgcmV0dXJuIDA7IH0KIEFMV0FZU19JTkxJTkUgaW50MzJfdCBod1BoeXNpY2FsQ1BV
TWF4KCkgeyByZXR1cm4ga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMoKTsgfQog
I2VuZGlmCiAKK2NvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCit7
CisjaWYgRU5BQkxFKENfTE9PUCkKKyAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgorICAgIHJldHVybiAyICogc2l6ZW9mKHZvaWQq
KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgLy8gUHJvbG9ndWUgb25seSBzYXZlcyB0aGUgZnJh
bWVQb2ludGVyUmVnaXN0ZXIKKyAgICByZXR1cm4gc2l6ZW9mKHZvaWQqKTsKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoUklTQ1Y2NCkKKyAg
ICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdp
c3RlcgorICAgIHJldHVybiAyICogc2l6ZW9mKHZvaWQqKTsKKyNlbHNlCisjZXJyb3IgdW5zdXBw
b3J0ZWQgYXJjaGl0ZWN0dXJlcworI2VuZGlmCit9CisKKworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApp
bmRleCAzNzE2ZjJhZjg1OWVkYTQxMWM4NTE0MTk2ZmRjZmM4ZmFjMTRlYWM3Li5hZmFlYzFlNmEz
MThmNWU3ODg2ZTdhMDY2MzkwODNlZWFiYjRlZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMTA4LDE3ICsxMDgsMTkgQEAgQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gQ2FsbExpbmtJbmZvOjpkb25lTG9jYXRp
b24oKQogICAgIHJldHVybiBtX2RvbmVMb2NhdGlvbjsKIH0KIAotdm9pZCBDYWxsTGlua0luZm86
OnNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNh
bGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCit2b2lk
IENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlz
RGlyZWN0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
Y2FsbGVlKSAmIHBvbHltb3JwaGljQ2FsbGVlTWFzaykpOwogICAgIG1fY2FsbGVlT3JDb2RlQmxv
Y2suc2V0KHZtLCBvd25lciwgY2FsbGVlKTsKIAotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlm
IChpc0RhdGFJQygpKSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gY29kZUJsb2Nr
OwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gY29kZVB0
cjsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoc3RhdGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxM
aW5rSW5mbyo+KHRoaXMpLT5tX2NhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRy
eVB0clRhZz4oY29kZVB0cikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50
ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24sIGNh
bGxlZSk7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTMwLDEwICsxMzIsMTIgQEAgdm9pZCBDYWxsTGlua0luZm86OmNsZWFyQ2FsbGVlKCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgbV9jYWxsZWVPckNvZGVCbG9jay5j
bGVhcigpOwotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlmIChpc0RhdGFJQygpKSB7CisgICAg
ICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5kYXRhSUMubV9t
b25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7Ci0gICAgZWxzZSBpZiAoIWNsZWFy
ZWRCeUpldHRpc29uKCkpIHsKKyAgICB9IGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigpKSB7
CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVy
KHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiwgbnVsbHB0
cik7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk4
LDkgKzMwMiwxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1YigpCiAKICAg
ICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7
CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5kYXRh
SUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsK
ICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIo
dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUu
Y29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLCBjYWxsZWVHUFIoKSwgbnVsbHB0cik7CiAjZWxzZQpA
QCAtMzYzLDkgKzM2OSwxOCBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZv
OjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogCiAgICAgICAgIGlm
IChpc1RhaWxDYWxsKSB7CiAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKKworICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hH
UFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZDb2RlQmxvY2so
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpICsgUGF5bG9hZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQ
b2ludGVyRGVsdGEoKSkpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQp
OyAvLyBQb2x5bW9ycGhpYyBzdHViIGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHByZXAuCiAgICAg
ICAgICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BS
LCBvZmZzZXRPZk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsK
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0NhbGxI
ZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsKKyAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9H
UFIsIG9mZnNldE9mQ29kZUJsb2NrKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5z
dG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKKwogICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOwog
ICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQ
Uiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7
CiAgICAgICAgIH0KQEAgLTM3NCwxNSArMzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
CiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihudWxscHRyKSkpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxs
OworICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tTdG9yZTsKICAg
ICAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgp
OworICAgICAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAg
ICAgICAgICAgICBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwotICAgICAgICB9IGVsc2UKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRy
V2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgICAgICAgICBj
YWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBSRUxFQVNFX0FTU0VS
VChjYWxsTGlua0luZm8pOwogICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvKj4oY2FsbExpbmtJbmZvKS0+bV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgICAgICAgICBjYWxs
TGlua0luZm8tPnUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4oY2FsbGVlQ2hlY2spOwogICAgICAgICB9KTsKICAgICB9CkBA
IC00MTEsOCArNDMxLDEwIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRTdHViKFJlZjxQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHViKQogCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsK
ICAgICAgICAgKmJpdHdpc2VfY2FzdDx1aW50cHRyX3QqPihtX2NhbGxlZU9yQ29kZUJsb2NrLnNs
b3QoKSkgPSBwb2x5bW9ycGhpY0NhbGxlZU1hc2s7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJs
b2NrID0gbnVsbHB0cjsgLy8gUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgd2lsbCBzZXQgQ29k
ZUJsb2NrIGluc2lkZSBpdC4KICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0
aW5hdGlvbiA9IG1fc3R1Yi0+Y29kZSgpLmNvZGUoKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigp
OwogICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1
LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFy
dE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9u
KSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0dWItPmNvZGUoKS5jb2RlKCkpKTsKQEAgLTQ3Niw5ICs0OTgsMTEgQEAgdm9pZCBPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAK
ICAgICBBU1NFUlQoVXNlRGF0YUlDOjpObyA9PSB0aGlzLT51c2VEYXRhSUMoKSk7CiAKKyAgICBh
dXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAg
aml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAg
ICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50
ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3Jl
KTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlzXSAoTGlua0J1ZmZlciYp
IHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKQEAgLTUwMSw5ICs1MjUsMTEgQEAg
dm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCwgU2NvcGUKICAgICBqaXQuZW1pdE5vcHMoQ0NhbGxIZWxwZXJzOjpw
YXRjaGFibGVKdW1wU2l6ZSgpKTsKIAogICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgIGF1
dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgYXV0byBjYWxs
ID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAg
dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVM
aW5rVGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RD
YWxsKCk7CkBAIC01MTQsNiArNTQwLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpp
bml0aWFsaXplRGlyZWN0Q2FsbCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEaXJlY3QoKSk7
CiAgICAgQVNTRVJUKG1fY2FsbExvY2F0aW9uKTsKKyAgICBBU1NFUlQodS5jb2RlSUMubV9jb2Rl
QmxvY2tMb2NhdGlvbik7CiAgICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVChmYXN0UGF0aFN0YXJ0KCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRD
b2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYp
PihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTUyNiw3ICs1NTMsNyBAQCB2b2lkIE9wdGlt
aXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKCkKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlvbiwgc2xvd1BhdGhTdGFydCgp
KTsKIH0KIAotdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0
KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdldCkKK3ZvaWQgT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzRGlyZWN0KCkpOwogCkBAIC01NDAsNiArNTY3LDcgQEAgdm9pZCBPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50
cnlQdHJUYWcKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKG1f
Y2FsbExvY2F0aW9uLCB0YXJnZXQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRl
cih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxvY2spOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCBm
YjIwZTQ3ODE0NzkzNTIxNzUwNDM0NDViMjk3NzMxYjk3MTI5ODY3Li4zOTIwODZhMDhkMWI3YTZl
MjY3MWZjNTIyYTNmOWNlZmZkMTY1MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3MgQ2FsbExpbmtJ
bmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKIAogICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbigpOwogCi0g
ICAgdm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxs
ZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBzZXRN
b25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVCbG9j
ayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBzZXRT
bG93UGF0aENhbGxEZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4pOwogICAgIHZvaWQgY2xlYXJDYWxsZWUoKTsKICAgICBKU09iamVjdCogY2FsbGVlKCk7CkBA
IC0zMTcsNiArMzE3LDExIEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQ2FsbExpbmtJbmZvLCBtX2NhbGxlZU9yQ29kZUJsb2NrKTsKICAgICB9CiAKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRPRihVbmlvblR5
cGUsIGRhdGFJQy5tX2NvZGVCbG9jayk7CisgICAgfQorCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRPRihVbmlv
blR5cGUsIGRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKTsKQEAgLTQwMSwxNCAr
NDA2LDE2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IG1fc2xvd1BhdGhDYWxsRGVzdGluYXRpb247CiAgICAgdW5pb24gVW5pb25UeXBlIHsKICAg
ICAgICAgVW5pb25UeXBlKCkKLSAgICAgICAgICAgIDogZGF0YUlDIHsgbnVsbHB0ciB9CisgICAg
ICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIsIG51bGxwdHIgfQogICAgICAgICB7IH0KIAogICAg
ICAgICBzdHJ1Y3QgRGF0YUlDIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7
IC8vIFRoaXMgaXMgd2Vla2x5IGhlbGQuIEFuZCBjbGVhcmVkIHdoZW5ldmVyIG1fbW9ub21vcnBo
aWNDYWxsRGVzdGluYXRpb24gaXMgY2hhbmdlZC4KICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uOwogICAg
ICAgICB9IGRhdGFJQzsKIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyPEpTSW50ZXJuYWxQdHJUYWc+IG1fY29kZUJsb2NrTG9jYXRpb247CiAg
ICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9j
YWxsZWVMb2NhdGlvbjsKICAgICAgICAgfSBjb2RlSUM7CiAgICAgfSB1OwpAQCAtNTAzLDcgKzUx
MCw3IEBAIGNsYXNzIE9wdGltaXppbmdDYWxsTGlua0luZm8gZmluYWwgOiBwdWJsaWMgQ2FsbExp
bmtJbmZvIHsKICAgICB2b2lkIGVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmKTsKICAg
ICB2b2lkIGVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIFNjb3BlZExh
bWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKTsKICAgICB2b2lkIGluaXRpYWxpemVE
aXJlY3RDYWxsKCk7Ci0gICAgdm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxh
YmVsPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUJs
b2NrKiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgZW1pdFNs
b3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBj
YWxsTGlua0luZm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXBhdGNoLmNwcAppbmRleCBlOTc2MGNjYzhlZTQwNTI2NmNmZjRhMGEzMDRk
MjlhMTU4YWM4NDE2Li45NjY1MDdkNTkwN2ZkMzM3YjhmZjE5ZjFlMjYyOTI0NmRlMDgyMDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKAogICAgIEFTU0VSVChvd25lcik7CiAK
ICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKLSAgICBjYWxsTGlua0luZm8u
c2V0TW9ub21vcnBoaWNDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUsIGNvZGVQdHIpOworICAgIGNh
bGxMaW5rSW5mby5zZXRNb25vbW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY2FsbGVl
Q29kZUJsb2NrLCBjb2RlUHRyKTsKICAgICBjYWxsTGlua0luZm8uc2V0TGFzdFNlZW5DYWxsZWUo
dm0sIG93bmVyLCBjYWxsZWUpOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihj
YWxsZXJDb2RlQmxvY2spKQpAQCAtMTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBsaW5rRGlyZWN0Q2Fs
bCgKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAg
ICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJD
b2RlQmxvY2ssIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIHBvaW50ZXJEdW1w
KGNhbGxlZUNvZGVCbG9jayksICIsIGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwgIlxuIik7CiAK
LSAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxK
U0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CisgICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxU
YXJnZXQoanNDYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oY2FsbGVlQ29kZUJsb2NrKSwgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4oY29kZVB0cikpOwogCiAgICAgaWYgKGNhbGxlZUNv
ZGVCbG9jaykKICAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxG
cmFtZSwgJmNhbGxMaW5rSW5mbyk7CkBAIC0xNzg3LDcgKzE3ODcsOCBAQCB2b2lkIGxpbmtQb2x5
bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENhbAogICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewog
ICAgICAgICBzaXplX3QgY2FzZUluZGV4ID0gYmluYXJ5U3dpdGNoLmNhc2VJbmRleCgpOwogICAg
ICAgICAKLSAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhd
LnZhcmlhbnQoKTsKKyAgICAgICAgUG9seW1vcnBoaWNDYWxsQ2FzZSYgY2FsbENhc2UgPSBjYWxs
Q2FzZXNbY2FzZUluZGV4XTsKKyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNl
LnZhcmlhbnQoKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiBjb2RlUHRyOwogICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsK
QEAgLTE4MTAsMTQgKzE4MTEsMjUgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAg
Ym9vbCBuZWVkc0RvbmVKdW1wID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZVNodWZmbGVyKSB7
CiAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5z
bmFwc2hvdCgpKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2Fz
ZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9h
ZE9mZnNldCAtIHN0YXRpY19jYXN0PGludDMyX3Q+KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSkpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0dWJKaXQubmVhclRh
aWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkg
ewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7CisgICAgICAg
ICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAgc3R1YkppdC5z
dG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2NrKCkp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0
YWNrUG9pbnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwg
PSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aWYgKGlzRGF0YUlDKQorICAgICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNUYWlsQ2Fs
bCgpKTsKKyAgICAgICAgICAgIGlmIChpc0RhdGFJQykgeworICAgICAgICAgICAgICAgIGlmIChj
YWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2NrKCkpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9p
bnRlckRlbHRhKCkpKSk7CiAgICAgICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0g
c3R1YkppdC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCBjYWxsaW5nIHlldC4gVGh1cywgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIgaXMgbm90IGluY2x1ZGluZyBQQyAmIGZyYW1lUG9pbnRlci4KKyAgICAg
ICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoY2FsbENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
Y2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAg
ICAgIG5lZWRzRG9uZUp1bXAgPSB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAppbmRleCA1MTcxYmMxMjQwMDUy
YzNjY2NkNmU2ZmFmNDY4MjUzMzdlZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcwNzE4YjM5NDgy
YmIzMDViNzBmOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVwYXRjaElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVw
YXRjaElubGluZXMuaApAQCAtMTk1LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhS
ZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
CiAKICAgICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBqZXR0aXNvbiBp
ZiB3ZSdyZSBnb2luZyB0byBjYWxsIHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYgKFVOTElLRUxZ
KCFleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpOworICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24o
KSkgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBhdXRvIGhh
bmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgpIHsKICAgICAgICAgICAgIHZvaWQqIHRocm93VGFy
Z2V0ID0gdm0uZ2V0Q1RJVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CkBAIC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lOTElORSBTbG93
UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2IKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1
bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Ns
b3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhhbmRsZVRocm93
RXhjZXB0aW9uKCkpOwogICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAg
IHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZDVlYTlkNjc1OTc1
NWEzOTRkNmY1NWVkN2Q3MjZhZmZlYWY3NmExZC4uZDg1ZTA2NTExNThiYzI0YjU2ZWZlZDE4MjA2
MzkwZWExMjhmMWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlRodW5r
R2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEsMTQgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBi
ZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRo
aXMgaW4KICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRv
IGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1fcGxhbi5jb2Rl
QmxvY2soKS0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcHJvYmVEZWJ1
ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOwor
ICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAppbmRleCAxMTMyY2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3
Li40YzhmMmVlZGVmYWNiNTI1ZmMyOGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5IEBAIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAg
IC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2RlIGJsb2NrLgot
ICAgIAorCiAgICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrICsgMSkpID0gY29kZUJsb2NrOwogICAgIAogICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICIs
IFJhd1BvaW50ZXIoc2NyYXRjaCkpOwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NSRW50cnkoVk0m
IHZtLCBDYWxsRgogCiAgICAgLy8gVGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hPU1JFbnRyeUJ1
ZmZlciB3aWxsIGJlIHplcm9lZCBieSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAgICAgZGZnQ29t
bW9uLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUp
ICogaW5kZXgpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0dGVkIHRvIHRy
aWdnZXJpbmcgYW4gT1NSIGVudHJ5IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVybi4gSGVuY2Us
IGl0IGlzIHNhZmUgdG8gbW9kaWZ5IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1lLT5zZXRDb2Rl
QmxvY2sob3B0aW1pemVkQ29kZUJsb2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVudHJ5cG9pbnQt
Pm1hY2hpbmVDb2RlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2OTVkNTU2Yzgx
NTJkNzYuLjE0NzZiNGU4Mzg0YjM3ZmY5YmRhNDczM2Y1MTE4ZmVhZjFiN2M1MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMjE3
LDcgKzIyMTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkK
ICAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQu
Z3JhcGgoKS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKICAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5l
bWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayk7CisgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBs
YWNlZCBpbiBPU1IgZW50cnkuCiAgICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhW
YXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKQEAgLTExMjk4LDcgKzExMjk4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkKIAogICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3ByKCkpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgcmVzdWx0LmdwcigpKSk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZBc1N0cmluZ0lu
UmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGE6
Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgSklUQ29tcGlsZXI6Okp1
bXAgY29udGludWF0aW9uID0gbV9qaXQuanVtcCgpOwogCiAgICAgaXNOYXRpdmVFeGVjdXRhYmxl
LmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRl
eCA0NGE5YTFhOThmMjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFkNzMz
OTk4ZDliODA0NDVhMjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1
ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTE0OCw2ICsxNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6
cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
OjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBoZWFk
ZXIgZnJvbSBzY3JhdGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNvIHJl
cGxhY2VzCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAg
ICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJl
Z1QxKTsKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CkBA
IC0xNjAsNiArMTYyLDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
b3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihE
RkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5rKCZq
aXQpOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRp
ZgorCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNr
UmVnaXN0ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggYWIxZjViODY3NTlkMDU1NjlkMzhjMDQ4ZGNj
ODNhYTdmZDVmYjBlYy4uZmUyOWRkMmJlN2MyNTNlNTFhODQzYWYyOTdkODUxYmE5ZjQ0NTZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKQEAgLTc4LDcgKzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFy
Z3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9u
RXhlY3V0YWJsZV9yYXJlRGF0YSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRh
KCkpIFwKLSAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSBcCisgICAgbWFj
cm8oRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGFfYXNTdHJpbmcsIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6UmFyZURhdGE6Om9mZnNldE9mQXNTdHJpbmcoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFy
ZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNl
dE9mQWxsb2NhdG9yKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBc
CiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9wcm90b3R5cGUsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZQcm90b3R5cGUoKSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAKaW5kZXggMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJk
M2I4Y2Y2OC4uM2VmNGFhNDhmZmU0YzY4NzZkYzQ5YzNjMTRiOTA2NWFlZmUyZDVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZm
ZXI7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoCi0gICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0
aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgCiAg
ICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSgpKSB7CiAgICAgY2FzZSBKSVRDb21waWxhdGlv
bk1vZGU6OkZUTDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IGIxZTAzNjkxNDEwYjgyN2IwYzBlZDRkMGZlYzI3ZDg3NTU5YzU5NDQuLjRk
NjIyNDgxZDk0OWQ3MTJhOTkwOWFhMDAzMDc2MmIxMzEwY2JiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE5OCwxNSArMTk4LDE0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgewogICAgICAgICAgICAgbV9wcm9jLnNl
dE51bUVudHJ5cG9pbnRzKG1fZ3JhcGgubV9udW1iZXJPZkVudHJ5cG9pbnRzKTsKLSAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5tX2NvZGVCbG9jazsKIAogICAgICAg
ICAgICAgUmVmPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yPiBjYXRjaFByb2xvZ3VlR2VuZXJh
dG9yID0gY3JlYXRlU2hhcmVkVGFzazxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9u
PigKLSAgICAgICAgICAgICAgICBbY29kZUJsb2NrXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpB
aXI6OkNvZGUmIGNvZGUpIHsKKyAgICAgICAgICAgICAgICBbXShDQ2FsbEhlbHBlcnMmIGppdCwg
QjM6OkFpcjo6Q29kZSYgY29kZSkgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRTYXZlKGNvZGUuY2FsbGVl
U2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQuZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jaykpOworICAgICAgICAgICAgICAgICAgICAvLyBDb2RlQmxvY2sgaW4g
dGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFjZWQgaW4gRlRMOjpwcmVwYXJlT1NSRW50cnkuCiAg
ICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2F0Y2hFbnRy
eXBvaW50SW5kZXggOiBtX2dyYXBoLm1fZW50cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5k
ZXgua2V5cygpKSB7CkBAIC0yNzIsOSArMjcxLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOwogICAgICAg
ICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAg
Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBw
b2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCi0gICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQg
dG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNv
bnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSkpOworICAgICAgICAv
LyBXaGVuIHJ1bm5pbmcgRlRMIGNvZGUsIHdlIGFscmVhZHkgc3RvcmUgQ29kZUJsb2NrIHRvIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jay4KKyAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ29kZSA9IG1f
Z3JhcGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZTsKKyAg
ICAgICAgVU5VU0VEX1ZBUklBQkxFKGlzRnVuY3Rpb25Db2RlKTsKIAogICAgICAgICAvLyBTdGFj
ayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3Jh
cGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAg
LTI5Myw2ICsyOTIsMTUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBmdGxGcmFtZVNpemUgPSBwYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpOwogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG1heEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGV4aXRGcmFtZVNpemUs
IGZ0bEZyYW1lU2l6ZSk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgICAgIGlm
IChpc0Z1bmN0aW9uQ29kZSkgeworICAgICAgICAgICAgICAgICAgICBqaXQucHJvYmVEZWJ1Zyhb
PV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRUeXBlOjpGVExKSVQpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9CisjZW5kaWYKKwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OwogICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVT
aXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5k
ZXggMjdkZDU5NzkwYjcxZjk4YTIxN2IxMjU4Nzc2NzcxNjVhYzY4ZWUwYy4uNzc0N2QzYWQ4YjUz
NWZhODU0N2U3NDAyYmE3YjMyNGQ1OWI3NWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC00MDYsMTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5
SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82
NCkKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRh
KCkKLSAgICB7Ci0gICAgICAgIC8vIFByb2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRl
clJlZ2lzdGVyCi0gICAgICAgIHJldHVybiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZv
aWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50
ZXJSZWdpc3Rlcik7CkBAIC00NzcsMTIgKzQ3MSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBz
YXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgotICAgICAgICBy
ZXR1cm4gMiAqIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpCiAgICAgewogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIg
KzUxNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7
CiAjZW5kaWYKIAogI2lmIENQVShNSVBTKQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2
ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAg
ICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNz
IEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lm
IENQVShSSVNDVjY0KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQ
b2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1l
UG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJu
IDIgKiBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKQogICAgIHsKICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtS
ZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCAy
OWIwMmFmOWYxODA1OGEzYzQ2OTlkNmQxMTE5MWY5OGQ5YTlmYzM1Li5iNGI5YzNjMGExZmE2ZjIz
N2ZjY2EwNGIyYTg3N2JmMjM0ZTZhYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKQEAgLTc0NCwxMSArNzQ0LDE5IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBmYXJKdW1wKEdQUkluZm86OnJlZ1QxLCBF
eGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVGb3JUYWls
Q2FsbFNsb3coR1BSUmVnIHByZXNlcnZlZEdQUiA9IEludmFsaWRHUFJSZWcpCisgICAgdm9pZCBw
cmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUlJlZyBwcmVzZXJ2ZWRHUFIxID0gSW52YWxpZEdQUlJl
ZywgR1BSUmVnIHByZXNlcnZlZEdQUjIgPSBJbnZhbGlkR1BSUmVnKQogICAgIHsKLSAgICAgICAg
R1BSUmVnIHRlbXAxID0gcHJlc2VydmVkR1BSID09IEdQUkluZm86OnJlZ1QwID8gR1BSSW5mbzo6
cmVnVDMgOiBHUFJJbmZvOjpyZWdUMDsKLSAgICAgICAgR1BSUmVnIHRlbXAyID0gcHJlc2VydmVk
R1BSID09IEdQUkluZm86OnJlZ1QxID8gR1BSSW5mbzo6cmVnVDMgOiBHUFJJbmZvOjpyZWdUMTsK
LSAgICAgICAgR1BSUmVnIHRlbXAzID0gcHJlc2VydmVkR1BSID09IEdQUkluZm86OnJlZ1QyID8g
R1BSSW5mbzo6cmVnVDMgOiBHUFJJbmZvOjpyZWdUMjsKKyAgICAgICAgUmVnaXN0ZXJTZXQgcHJl
c2VydmVkOworICAgICAgICBpZiAocHJlc2VydmVkR1BSMSAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgcHJlc2VydmVkLmFkZChwcmVzZXJ2ZWRHUFIxKTsKKyAgICAgICAgaWYgKHByZXNl
cnZlZEdQUjIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHByZXNlcnZlZC5hZGQocHJl
c2VydmVkR1BSMik7CisKKyAgICAgICAgR1BSUmVnIHRlbXAxID0gc2VsZWN0U2NyYXRjaEdQUihw
cmVzZXJ2ZWQpOworICAgICAgICBwcmVzZXJ2ZWQuYWRkKHRlbXAxKTsKKyAgICAgICAgR1BSUmVn
IHRlbXAyID0gc2VsZWN0U2NyYXRjaEdQUihwcmVzZXJ2ZWQpOworICAgICAgICBwcmVzZXJ2ZWQu
YWRkKHRlbXAyKTsKKyAgICAgICAgR1BSUmVnIHRlbXAzID0gc2VsZWN0U2NyYXRjaEdQUihwcmVz
ZXJ2ZWQpOwogCiAgICAgICAgIEdQUlJlZyBuZXdGcmFtZVBvaW50ZXIgPSB0ZW1wMTsKICAgICAg
ICAgR1BSUmVnIG5ld0ZyYW1lU2l6ZUdQUiA9IHRlbXAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGVkOGZiMGY1M2U1N2E1YTUwMmYxY2EyNzYwNTQ2NzA5MDBlOGJlOWIuLjg2NzUx
ZGIxZWFjMmZkZTYyNzg2MGQ3NjBhNTlkNTNlYjU0YzY2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTIwMywyOCArMjAzLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwo
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGkKICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdFB1dENvZGVCbG9ja1Rv
RnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV91
bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwotICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVzdWx0KTsK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGVPclJhcmVEYXRhKCkpLCByZXN1bHQpOwotICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9IGJyYW5j
aFRlc3RQdHIoWmVybywgcmVzdWx0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0
aW9uOjpyYXJlRGF0YVRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
LCByZXN1bHQpOwotICAgIGhhc0V4ZWN1dGFibGUubGluayh0aGlzKTsKLSAgICBpZiAobV91bmxp
bmtlZENvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKQotICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0
KCkpLCByZXN1bHQpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwg
RnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7
Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwgQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2Jl
OjpDb250ZXh0JiBjdHgpIHsKLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8
Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVC
bG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKLSAgICB9KTsKLSNlbmRp
ZgotfQotCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiB7CiAgICAgaWYgKEpJ
VEludGVybmFsOjp2ZXJib3NlKQpAQCAtNzUxLDEwICs3MjksOCBAQCB2b2lkIEpJVDo6Y29tcGls
ZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAg
ICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBDb2RlT3Jp
Z2luKEJ5dGVjb2RlSW5kZXgoMCkpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8SklUU2l6ZVN0YXRp
c3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cEJhc2VsaW5lSklUU2l6ZVN0YXRpc3RpY3MoKSkpIHsKLSAgICAgICAgU3RyaW5nIGlkID0gbWFr
ZVN0cmluZygiQmFzZWxpbmVfcHJvbG9ndWUiKTsKLSAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0t
PmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoaWQsICp0aGlzKTsKLSAgICB9CisgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKQorICAg
ICAgICBzaXplTWFya2VyID0gbV92bS0+aml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydCgiQmFz
ZWxpbmVfcHJvbG9ndWUiX3MsICp0aGlzKTsKIAogICAgIExhYmVsIGVudHJ5TGFiZWwodGhpcyk7
CiAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQpAQCAtNzY1LDggKzc0MSwxOCBAQCB2b2lkIEpJVDo6
Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZv
cnQpCiAgICAgICAgIG5vcCgpOwogCiAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBp
ZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCi0gICAg
ICAgIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSgpOworICAgIGlmIChtX3VubGlu
a2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNv
bnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8
Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5q
aXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkpKTsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyNlbmRpZgorICAgIH0KIAogICAgIExhYmVsIGJlZ2luTGFiZWwodGhpcyk7CiAK
QEAgLTgyOSw3ICs4MTUsMTcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFs
aXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBtX2FyaXR5Q2hlY2sg
PSBsYWJlbCgpOwogCiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgIGVt
aXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZWdUMCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4
dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxs
RnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmppdFR5
cGUoKSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1lKj4oKSkpOworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworI2VuZGlmCisgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaywgcmVnVDApOwogICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMy
KDApLCBBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mU2hvdWxkQWx3YXlzQmVJbmxp
bmVkKCkpKTsKIAogICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyksIHJlZ1QxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IGU1YTlkNGNjMzQyODg3NDJiZjdiMmExYzRmNTQ0MWVjYWYyZmMyOGYuLmRhYTJjNTIxODM2
ZWUyNmMwODMzODdmZDUyOTRiNjdlMjg2ZjViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApA
QCAtMjYxLDggKzI2MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxvYWRDb2Rl
QmxvY2tDb25zdGFudFRhZyhWaXJ0dWFsUmVnaXN0ZXIsIFJlZ2lzdGVySUQpOwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJl
c3VsdCA9IHJlZ1QwKTsKLQogICAgICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKEp1bXAganVtcFRv
SGFuZGxlcikKICAgICAgICAgewogICAgICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5k
KGp1bXBUb0hhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggZjgxZGRmMjU3ODQyNGM4ZjllYWE0OGMzMWQ1NThlNWMxZWUzNDNhNi4uZWIz
ODM3MGNiOTE2Mjg4NWExOTc3ZjE3YmYzOWI3ZjVkNzBlOTQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvckNhbGxlciwgRW5j
b2RlZEpTVmFsdWUsIChKU1IKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShnZXRXcmFwcGVkVmFsdWUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIHZvaWQqLCAo
SlNSZW1vdGVGdW5jdGlvbiogY2FsbGVlKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwgU2xvd1BhdGhSZXR1cm5U
eXBlLCAoSlNSZW1vdGVGdW5jdGlvbiogY2FsbGVlKSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKTsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIHZvaWQq
LCAoSgogICAgIC8vIEZvcmNlIHRoZSBleGVjdXRhYmxlIHRvIGNhY2hlIGl0cyBhcml0eSBlbnRy
eXBvaW50LgogICAgIHsKICAgICAgICAgRGVmZXJUcmFwcyBkZWZlclRyYXBzKHZtKTsgLy8gV2Ug
Y2FuJ3QgamV0dGlzb24gYW55IGNvZGUgdW50aWwgYWZ0ZXIgd2UgbGluayB0aGUgY2FsbC4KKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tTbG90ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFl
eGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CiAgICAgICAgICAgICBKU1Njb3BlKiBzY29w
ZSA9IHRhcmdldEZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgpOwogICAgICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
U2xvdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgdGFyZ2V0RnVuY3Rpb24sIHNjb3Bl
LCBDb2RlRm9yQ2FsbCwgY29kZUJsb2NrU2xvdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cikpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JDYWxs
LCBNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKENvZGVGb3JDYWxsLCBNdXN0Q2hl
Y2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY29kZUJsb2NrU2xvdCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGQ4YTIzNzQx
MzRjNGY1NTk4ZGEwYmY2NGIyODg0NWM0NWZiODE4NjYuLmI5ZTgzMGNhZDNiM2Q1ZjNhNDMyMDMz
OTJiNGQ3N2E2YzA5MTQ5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0xNjEsNyArMTYxLDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuaywgdm9pZCwgKEpTR2wKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2Jq
ZWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvckNhbGxlciwgRW5jb2RlZEpTVmFsdWUsIChKU1Jl
bW90ZUZ1bmN0aW9uKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yVGFyZ2V0LCBFbmNvZGVkSlNWYWx1ZSwgKEpT
UmVtb3RlRnVuY3Rpb24qLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwgdm9pZCos
IChKU1JlbW90ZUZ1bmN0aW9uKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uVGhyb3dSZW1vdGVGdW5jdGlvbkV4Y2VwdGlvbiwgRW5jb2RlZEpTVmFsdWUsIChKU1JlbW90
ZUZ1bmN0aW9uKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0Vycm9yLCB2b2lkLCAoQ29kZUJsb2NrKikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDNjNGEzYWUzYTk4OGNlZTk2
NTY0NDNmYzc2MTA5MGFlMGVjM2M1NjEuLjQyMzU0NTEyY2E0ZTZhMTU3NWRmODQzMzExMzZiZjNm
NGFiZDA0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKQEAgLTI4OCwyNSArMjg4LDI5IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vCiAgICAg
CiAgICAgLy8gTm93IHdlIGtub3cgd2UgaGF2ZSBhIEpTRnVuY3Rpb24uCiAKLSAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIEdQUkluZm86OnJlZ1Q0KTsKLSAgICBhdXRv
IGhhc0V4ZWN1dGFibGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQ
UkluZm86OnJlZ1Q0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZykpOwotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUNCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0
aW9uOjpyYXJlRGF0YVRhZyksIEdQUkluZm86OnJlZ1Q0KTsKKyAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhl
Y3V0YWJsZU9yUmFyZURhdGEoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBhdXRvIGhhc0V4ZWN1
dGFibGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJl
Z1QwLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykp
OworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZyksIEdQUkluZm86OnJlZ1QwKTsKICAgICBoYXNFeGVjdXRhYmxlLmxpbmsoJmppdCk7
CiAgICAgaml0LmxvYWRQdHIoCi0gICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9y
KGtpbmQpKSwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBF
eGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkpLAog
ICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hU
ZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDQpKTsKICAgICAKLSAgICAv
LyBOb3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBDb2RlQmxvY2ssIGFuZCB3ZSdyZSBjb21taXR0
ZWQgdG8gbWFraW5nIGEgZmFzdAotICAgIC8vIGNhbGwuCisgICAgLy8gTm93IHdlIGtub3cgdGhh
dCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZh
c3QgY2FsbC4KKworICAgIGF1dG8gaXNOYXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUklu
Zm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKTsKKyAgICBqaXQubG9hZFB0cigKKyAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1
dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yKGtpbmQpKSwKKyAgICAgICAgR1BSSW5mbzo6cmVn
VDUpOwogCiAgICAgLy8gTWFrZSBhIHRhaWwgY2FsbC4gVGhpcyB3aWxsIHJldHVybiBiYWNrIHRv
IEpJVCBjb2RlLgotICAgIEpTSW50ZXJmYWNlSklUOjpMYWJlbCBjYWxsQ29kZShqaXQubGFiZWwo
KSk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDQsIEpTRW50
cnlQdHJUYWcpOwogICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAgIGppdC5wcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQucHJlcGFy
ZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZvOjpyZWdUNCk7CisgICAgICAgIGppdC5wcmVwYXJlRm9y
VGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpyZWdUNSk7CiAgICAgfQorICAg
IGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUNSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSkpOwogICAgIGpp
dC5mYXJKdW1wKEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIC8vIE51bGxT
ZXR0ZXJGdW5jdGlvblR5cGUgZG9lcyBub3QgZ2V0IHRoZSBmYXN0IHBhdGggc3VwcG9ydC4gQnV0
IGl0IGlzIE9LIHNpbmNlIHVzaW5nIE51bGxTZXR0ZXJGdW5jdGlvblR5cGUgaXMgZXh0cmVtZWx5
IHJhcmUuCkBAIC0zMTQsNyArMzE4LDE0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vCiAgICAg
c2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVnVDAsIEludGVy
bmFsRnVuY3Rpb25UeXBlKSk7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MgPSB2bS5nZXRD
VElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihraW5kKS5leGVjdXRhYmxlQWRkcmVzcygp
OwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihleGVjdXRhYmxlQWRk
cmVzcyksIEdQUkluZm86OnJlZ1Q0KTsKLSAgICBqaXQuanVtcCgpLmxpbmtUbyhjYWxsQ29kZSwg
JmppdCk7CisKKyAgICBpc05hdGl2ZS5saW5rKCZqaXQpOworICAgIGVtaXRQb2ludGVyVmFsaWRh
dGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKKyAgICBpZiAoaXNUYWls
Q2FsbCkgeworICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6
cmVnVDQpOworICAgIH0KKyAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0
clRhZyk7CiAKICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwogICAgIApAQCAtMTM4NiwxMSArMTM5
NywyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rp
b25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVC
YXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAotICAg
ICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICBHUFJJbmZvOjpyZWdUMSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDEpOworCisg
ICAgYXV0byBpc05hdGl2ZSA9IGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVnVDAsIEZ1
bmN0aW9uRXhlY3V0YWJsZVR5cGUpOworICAgIGppdC5sb2FkUHRyKAorICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVj
dXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksCisgICAgICAgIEdQUkluZm86OnJl
Z1QyKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OmNh
bGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKworICAgIGlzTmF0aXZl
LmxpbmsoJmppdCk7CiAgICAgCi0gICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5m
bzo6cmVnVDAsIEpTRW50cnlQdHJUYWcpOwotICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwLCBK
U0VudHJ5UHRyVGFnKTsKKyAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpy
ZWdUMSwgSlNFbnRyeVB0clRhZyk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDEsIEpTRW50
cnlQdHJUYWcpOwogCiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJl
dCgpOwpAQCAtMTUzMiwzMyArMTU1Miw0NSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0Lmxv
YWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tG
b3IoQ29kZUZvckNhbGwpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgIGF1dG8gY29k
ZUV4aXN0cyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBjb2RlRXhpc3Rz
ID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdU
Mik7CiAKICAgICAvLyBUaGUgY2FsbHMgdG8gb3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yVGFy
Z2V0IGFib3ZlIG1heSBHQywgYW5kIGFueSBHQyBjYW4gcG90ZW50aWFsbHkgamV0dGlzb24gdGhl
IEpJVCBjb2RlIGluIHRoZSB0YXJnZXQgSlNGdW5jdGlvbi4KICAgICAvLyBJZiB3ZSBmaW5kIHRo
YXQgdGhlIEpJVCBjb2RlIGlzIG51bGwgKGkuZS4gaGFzIGJlZW4gamV0dGlzb25lZCksIHRoZW4g
d2UgbmVlZCB0byByZS1tYXRlcmlhbGl6ZSBpdCBmb3IgdGhlIGNhbGwgYmVsb3cuIE5vdGUgdGhh
dCB3ZSBrbm93CiAgICAgLy8gdGhhdCBvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9u
VGFyZ2V0Q29kZSBzaG91bGQgYmUgYWJsZSB0byByZS1tYXRlcmlhbGl6ZSB0aGUgSklUIGNvZGUg
KGV4Y2VwdCBmb3IgYW55IE9PTUUpIGJlY2F1c2Ugd2Ugb25seQogICAgIC8vIHdlbnQgZG93biB0
aGlzIGNvZGUgcGF0aCBhZnRlciB3ZSBmb3VuZCBhIG5vbi1udWxsIEpJVCBjb2RlIChpbiB0aGUg
bm9Db2RlIGNoZWNrKSBhYm92ZSBpLmUuIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBtYXRlcmlh
bGl6ZSB0aGUgSklUIGNvZGUuCisgICAgLy8gRklYTUU6IFdpbmRvd3MgeDY0IGlzIG5vdCBzdXBw
b3J0ZWQgc2luY2Ugb3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUg
cmV0dXJucyBTbG93UGF0aFJldHVyblR5cGUuCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlKT4oR1BSSW5m
bzo6cmVnVDApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86
Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBleGNlcHRpb25DaGVja3MuYXBwZW5kKGpp
dC5lbWl0SnVtcElmRXhjZXB0aW9uKHZtKSk7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIsIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSMiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSk7CisgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQ
UkluZm86OnJlZ1QyKTsKKyAgICBhdXRvIG1hdGVyaWFsaXplZCA9IGppdC5qdW1wKCk7CiAKICAg
ICBjb2RlRXhpc3RzLmxpbmsoJmppdCk7CisgICAgYXV0byBpc05hdGl2ZSA9IGppdC5icmFuY2hJ
Zk5vdFR5cGUoR1BSSW5mbzo6cmVnVDEsIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpOworICAgIGpp
dC5sb2FkUHRyKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNh
bGwoKSksCisgICAgICAgIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUklu
Zm86OnJlZ1QzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spKTsKKworICAgIGlzTmF0aXZlLmxpbmsoJmppdCk7CisgICAgbWF0ZXJpYWxpemVk
LmxpbmsoJmppdCk7CiAgICAgLy8gQmFzZWQgb24gdGhlIGNoZWNrIGFib3ZlLCB3ZSBzaG91bGQg
YmUgZ29vZCB3aXRoIHRoaXMuIE9uIEFSTTY0LCBlbWl0UG9pbnRlclZhbGlkYXRpb24gd2lsbCBk
byB0aGlzLgogI2lmIEFTU0VSVF9FTkFCTEVEICYmICFDUFUoQVJNNjRFKQogICAgIHsKLSAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNoZWNrTm90TnVsbCA9IGppdC5icmFuY2hUZXN0UHRyKEND
YWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgY2hlY2tOb3ROdWxsID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpO
b25aZXJvLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJ
bnZhbGlkUG9pbnRlcik7CiAgICAgICAgIGNoZWNrTm90TnVsbC5saW5rKCZqaXQpOwogICAgIH0K
ICNlbmRpZgogCi0gICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDEs
IEpTRW50cnlQdHJUYWcpOwotICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRy
VGFnKTsKKyAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMiwgSlNF
bnRyeVB0clRhZyk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDIsIEpTRW50cnlQdHJUYWcp
OwogCiAgICAgLy8gV3JhcCByZXR1cm4gdmFsdWUKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDFmZGI0YTU3ZDU5NGJlZWE2ZWJiODBhYTY5N2JkYWQ0M2Y5MGY4NzMuLjZhYWMzMTk2MDMx
YTYwODlmNDczNzViNmRhNWFmODEzYjIzMzllNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3MCw2ICsxNzAsNyBA
QCBjb25zdCBTdGFja0FsaWdubWVudFNsb3RzID0gY29uc3RleHByIChzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpKQogY29uc3QgU3RhY2tBbGlnbm1lbnRNYXNrID0gU3RhY2tBbGlnbm1lbnQgLSAx
CiAKIGNvbnN0IENhbGxlckZyYW1lQW5kUENTaXplID0gY29uc3RleHByIChzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpCitjb25zdCBQcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhID0gY29uc3RleHBy
IChwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpCiAKIGNvbnN0IENhbGxlckZyYW1lID0gMAog
Y29uc3QgUmV0dXJuUEMgPSBDYWxsZXJGcmFtZSArIE1hY2hpbmVSZWdpc3RlclNpemUKQEAgLTU2
Niw2ICs1NjcsNyBAQCBjb25zdCBBcnJheVR5cGUgPSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25z
dCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHByIERlcml2ZWRBcnJheVR5cGUKIGNvbnN0IFBy
b3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9iamVjdFR5cGUKIGNvbnN0IEhlYXBCaWdJ
bnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRUeXBlCitjb25zdCBGdW5jdGlvbkV4ZWN1dGFi
bGVUeXBlID0gY29uc3RleHByIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUKIAogIyBUaGUgdHlwZWQg
YXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVj
YXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9i
eV92YWwgYW5kIHB1dF9ieV92YWwuCkBAIC0xMTkyLDcgKzExOTQsOCBAQCBtYWNybyBjYWxsVGFy
Z2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaQogICAgIGVuZAogZW5kCiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCisgICAgc3RvcmVDb2Rl
QmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIENhbGxlckZyYW1lQW5kUENTaXplW3Nw
XSkKIGVuZAogCiBtYWNybyBpbnZva2VGb3JSZWd1bGFyQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0
Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQdHJUYWcpCkBAIC0xMjA4LDcgKzEyMTEsNyBA
QCBlbmQKIAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZSArIENhbGxlckZyYW1lQW5kUENT
aXplCiAjIFdlIGxlYXZlIGNmciB0ZW1wNCB0byB1c2UgaXQgZm9yIHVudGFnZ2luZy4KLW1hY3Jv
IHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHBy
ZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxv
Y2spCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0x
MjYzLDYgKzEyNjYsOCBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0
ZW1wMywgdGVtcDQpCiAgICAgZW5kCiAKICAgICBtb3ZlIHRlbXAxLCBzcAorCisgICAgc3RvcmVD
b2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIFByb2xvZ3VlU3RhY2tQb2ludGVy
RGVsdGFbc3BdKQogZW5kCiAKIG1hY3JvIGludm9rZUZvclRhaWxDYWxsKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBk
aXNwYXRjaCwgY2FsbGVlLCBtYXliZU9sZENGUiwgY2FsbFB0clRhZykKQEAgLTEzMDMsNyArMTMw
OCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1CiAgICAgICAgIG1hY3JvIChjYWxsZWUsIGNh
bGxlZUZyYW1lUHRyKQogICAgICAgICAgICAgYnRweiBjYWxsZWVGcmFtZVB0ciwgLmRvbnRVcGRh
dGVTUAogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AKLSAgICAgICAgICAgIHBy
ZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQz
LCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKICAg
ICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNo
LCBjYWxsZWUsIEpTRW50cnlTbG93UGF0aFB0clRhZykKICAgICAgICAgZW5kKQpAQCAtMTQ4Miw0
NCArMTQ4Nyw2IEBAIG1hY3JvIGFzc2VydE5vdENvbnN0YW50KHNpemUsIGluZGV4KQogICAgIGVu
ZCkKIGVuZAogCi1tYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVn
aXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJn
ZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
ZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAg
IGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
LCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJs
ZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0s
IHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIK
LWVuZAotCi1tYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRS
ZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRh
cmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6
bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0g
ICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRh
ZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRh
YmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVj
dXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJl
Z2lzdGVyCi1lbmQKLQotbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVn
aXN0ZXIpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQot
bWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCi0gICAgc3RvcmVw
IHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgICMgTm90aGluZyB0byBkbyEKLWVu
ZAotCiBtYWNybyBjb252ZXJ0Q2FsbGVlVG9WTShjYWxsZWUpCiAgICAgYnRwbnogY2FsbGVlLCAo
Y29uc3RleHByIFByZWNpc2VBbGxvY2F0aW9uOjpoYWxmQWxpZ25tZW50KSwgLnByZWNpc2VBbGxv
Y2F0aW9uCiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIGNhbGxlZQpAQCAtMTUzMiw3ICsxNDk5
LDcgQEAgZW5kCiAKICMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNv
ZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFs
c28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCi1tYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tH
ZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCittYWNy
byBwcm9sb2d1ZShvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1cCB0aGUg
Y2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KICAgICBwcmVzZXJ2ZUNhbGxl
clBDQW5kQ0ZSKCkKIApAQCAtMTU0MSw4ICsxNTA4LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJs
b2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQog
ICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0aCkKICAgICAgICAgYWRkcCBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc3AKICAgICBlbmQKLSAgICBjb2RlQmxvY2tHZXR0ZXIo
dDEpCi0gICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQogICAgIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0MAogICAgICAgICBiYWRkaXMgNSwgKFVubGlua2Vk
Q29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXIgKyBCYXNlbGluZUV4ZWN1dGlvbkNvdW50
ZXI6Om1fY291bnRlcilbdDBdLCAuY29udGludWUKQEAgLTE1ODIsNyArMTU0OCw3IEBAIG1hY3Jv
IHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwg
dHJhY2VTbG93UGF0aCkKICAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwogICAgICAg
ICBlbmQKICAgICAucmVjb3ZlcjoKLSAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIo
dDEpCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIC5jb250aW51ZToKICAg
ICBlbmQKIApAQCAtMTYyMSw3ICsxNTg3LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0
dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogLnN0YWNr
SGVpZ2h0T0tHZXRDb2RlQmxvY2s6CiAgICAgIyBTdGFjayBjaGVjayBzbG93IHBhdGggcmV0dXJu
ZWQgdGhhdCB0aGUgc3RhY2sgd2FzIG9rLgogICAgICMgU2luY2UgdGhleSB3ZXJlIGNsb2JiZXJl
ZCwgbmVlZCB0byBnZXQgQ29kZUJsb2NrIGFuZCBuZXcgc3AKLSAgICBub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBnZXRGcmFt
ZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayh0MSwgdDApCiAgICAgc3VicCBjZnIsIHQwLCB0MAog
CkBAIC0yMDI0LDM5ICsxOTkwLDM5IEBAIG5vV2lkZShsbGludF9vcF93aWRlMzIpCiBub1dpZGUo
bGxpbnRfb3BfZW50ZXIpCiAKIG9wKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsIG1hY3JvICgpCi0g
ICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAg
cHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRp
c3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsIG1h
Y3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0
aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
KQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRfZXZhbF9wcm9sb2d1ZSwgbWFj
cm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUp
CiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tH
ZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisgICAg
cHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNl
X3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
MCkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29u
c3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQog
ZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFj
cm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0
aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIHByb2xvZ3Vl
KF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3Ry
YWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93
X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgogICAgIGZ1bmN0
aW9uSW5pdGlhbGl6YXRpb24oMCkKQEAgLTIwNjQsNyArMjAzMCw3IEBAIG9wKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQogZW5kKQogCiBvcChsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50
X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVj
dEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQpAQCAtMjUyNSw3ICsy
NDkxLDcgQEAgbWFjcm8gbGlua1Nsb3dQYXRoRm9yKGZ1bmN0aW9uKQogICAgIHVudGFnUmV0dXJu
QWRkcmVzcyBzcAogICAgIGJ0cHogcjEsIC5kb05vdFRyYXNoCiAgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKHQxKQotICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0MSwgdDIsIHQzLCB0
NCkKKyAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQsIG1hY3JvKGFkZHJlc3Mp
IGVuZCkKICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDQKIC5kb05vdFRyYXNoOgogICAgIGptcCB0
MCwgSlNFbnRyeVB0clRhZwpAQCAtMjUzNCw3ICsyNTAwLDcgQEAgZW5kCiAjIDY0Yml0OnQwIDMy
Yml0KHQwLHQxKSBpcyBjYWxsZWUKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxs
ZXIncyBKU0dsb2JhbE9iamVjdAotbWFjcm8gdmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29k
ZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZSwgcHJlcGFyZUNhbGws
IHNsb3dDYXNlKQorbWFjcm8gdmlydHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0
eUNoZWNrLCBvZmZzZXRPZkNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUsIHBy
ZXBhcmVDYWxsLCBzbG93Q2FzZSkKICAgICBhZGRpIDEsIENhbGxMaW5rSW5mbzo6bV9zbG93UGF0
aENvdW50W3QyXQogICAgIGlmIEpTVkFMVUU2NAogICAgICAgICBidHFueiB0MCwgTm90Q2VsbE1h
c2ssIHNsb3dDYXNlCkBAIC0yNTQyLDE0ICsyNTA4LDE4IEBAIG1hY3JvIHZpcnR1YWxUaHVua0Zv
cihvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVjaywgaW50ZXJuYWxGdW5jdGlvblRyYW1wb2xp
bmUsCiAgICAgICAgIGJpbmVxIHQxLCBDZWxsVGFnLCBzbG93Q2FzZQogICAgIGVuZAogICAgIGJi
bmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgSlNGdW5jdGlvblR5cGUsIC5ub3RKU0Z1bmN0aW9uCi0g
ICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0MF0sIHQxCi0gICAg
YnRweiB0MSwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFi
bGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhw
ciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3QxXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3QwXSwgdDUKKyAgICBidHB6IHQ1LCAoY29uc3RleHBy
IEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQorICAgIGxvYWRwIChGdW5j
dGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVE
YXRhVGFnKSlbdDVdLCB0NQogLmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBvZmZzZXRPZkpJVENv
ZGVXaXRoQXJpdHlDaGVja1t0MV0sIHQxCi0gICAgYnRweiB0MSwgc2xvd0Nhc2UKKyAgICBidHB6
IG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrW3Q1XSwgc2xvd0Nhc2UKKyAgICBsb2FkcCBv
ZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja1t0NV0sIHQxCisgICAgbW92ZSAwLCB0MAorICAg
IGJibmVxIEpTQ2VsbDo6bV90eXBlW3Q1XSwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgLmNhbGxD
b2RlCisgICAgbG9hZHAgb2Zmc2V0T2ZDb2RlQmxvY2tbdDVdLCB0MAogLmNhbGxDb2RlOgogICAg
IHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0KQorICAgIHN0b3JlcCB0MCwgQ29kZUJsb2NrICsg
UGF5bG9hZE9mZnNldCAtIFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGFbc3BdCiAgICAgam1wIHQx
LCBKU0VudHJ5UHRyVGFnCiAubm90SlNGdW5jdGlvbjoKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlw
ZVt0MF0sIEludGVybmFsRnVuY3Rpb25UeXBlLCBzbG93Q2FzZQpAQCAtMjU2OCw3ICsyNTM4LDcg
QEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFs
T2JqZWN0CiBvcChsbGludF92aXJ0dWFsX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2
aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1
bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgRnVu
Y3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGwsIF9sbGludF9pbnRlcm5hbF9mdW5j
dGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkg
ZW5kLCAuc2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92
aXJ0dWFsX2NhbGwpCiBlbmQpCkBAIC0yNTc3LDcgKzI1NDcsNyBAQCBlbmQpCiAjIHQyIGlzIENh
bGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3Zp
cnR1YWxfY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9y
KEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgX2xs
aW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEs
IHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQorICAgIHZpcnR1YWxUaHVua0Zv
cihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIF9sbGludF9pbnRlcm5h
bF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVt
cDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKICAgICBsaW5rU2xvd1BhdGhG
b3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkKQEAgLTI1ODYsOSArMjU1Niw5IEBAIGVuZCkK
ICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAog
b3AobGxpbnRfdmlydHVhbF90YWlsX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0
dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
aywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAx
LCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFz
ZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1f
Y29kZUJsb2NrRm9yQ2FsbCwgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGlu
ZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAgICAgICBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwodGVtcDEpCi0gICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKKyAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgICAgIHVu
dGFnUmV0dXJuQWRkcmVzcyB0ZW1wNAogICAgIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQppbmRleCBhY2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYxNWZkNjZkNmI1N2M0
MTFlLi5hZDI1MDE3ZWYwYjQ3ZmMwYjA1MDQ3NDdkYjU3NWI5MTUwMThhZmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQpAQCAtMjI1OSw3ICsyMjU5LDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFt
ZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAK
IC5ub3RQb2x5bW9ycGhpYzoKICAgICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgcHJl
cGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEs
IG1hY3JvKGFkZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICBzdG9y
ZXAgdDIsIGFkZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9y
cGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yMzM4LDcgKzIzNDEsMTAgQEAgbWFjcm8g
ZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAg
ICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0Miwg
dDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNy
byhhZGRyZXNzKQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAg
ICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAgICAgIC5n
b1BvbHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1
XSwgdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggNWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3MzQ1ZDgzNTg2
OTQ0Ny4uOGNkN2RiZTJhNGEyNTkwNjQzNjFkMzZmNTZmOGNiM2U0OTUwOWRiOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTI0ODMsNyArMjQ4MywxMCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNs
b3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogCiAubm90
UG9seW1vcnBoaWM6CiAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgIHByZXBhcmVD
YWxsKHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNy
byhhZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgc3RvcmVwIHQy
LCBhZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWND
YWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjU2MSw3ICsyNTY0LDEwIEBAIG1hY3JvIGRvQ2Fs
bFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnFu
ZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0
NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRk
cmVzcykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgICAg
ICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAuZ29Qb2x5
bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA3MTM1
ZjRmNmZjMjBjYjM5ZTg1YmFiYzFkMWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIzZjhmNmI1ZjQ1NWJk
MGE1YTc3YzU5MzJiZTlmNjhlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9X
ZWJBc3NlbWJseS5hc20KQEAgLTE0Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklU
Rm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgam1wIHdzMCwg
V2FzbUVudHJ5UHRyVGFnCiAgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6Ci0gICAg
ICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKKyAg
ICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdpc3RlcgogICAgICAg
ICBlbmQpCiAgICAgZW5kCiBlbmQKQEAgLTI4Myw3ICsyODMsNyBAQCBtYWNybyByZXN0b3JlU3Rh
Y2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAgICBzdWJwIGNmciwgd3MxLCBzcAogZW5kCiAKLW1hY3Jv
IHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21J
bnN0YW5jZSkKK21hY3JvIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0
IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHByZXNl
cnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkK
QEAgLTI5Myw4ICsyOTMsOSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBj
b2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFu
Y2U6Om1fb3duZXJbd2FzbUluc3RhbmNlXSwgd3MwCiAgICAgc3RvcmVwIHdzMCwgVGhpc0FyZ3Vt
ZW50T2Zmc2V0W2Nmcl0KIAotICAgIGNvZGVCbG9ja0dldHRlcih3czApCi0gICAgY29kZUJsb2Nr
U2V0dGVyKHdzMCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgd3MwCisgICAgYW5kcCB+Mywgd3Mw
CisgICAgc3RvcmVwIHdzMCwgQ29kZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0IG5ldyBzcCBpbiB3
czEgYW5kIGNoZWNrIHN0YWNrIGhlaWdodC4KICAgICBsb2FkaSBXYXNtOjpMTEludENhbGxlZTo6
bV9udW1DYWxsZWVMb2NhbHNbd3MwXSwgd3MxCkBAIC01MTQsNyArNTE1LDcgQEAgb3Aod2FzbV9m
dW5jdGlvbl9wcm9sb2d1ZSwgbWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAg
IHdhc21Qcm9sb2d1ZSh3YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgbG9hZFdhc21JbnN0YW5jZUZyb21UTFMpCisgICAgd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5z
dGFuY2VGcm9tVExTKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCkBAIC01MjMs
NyArNTI0LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAg
ICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dl
dHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkKKyAgICB3YXNtUHJv
bG9ndWUobWFjcm8gKCkgZW5kKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IDM3ZTBjNWRiNjFhY2E2NDJlNWVmZGY2ODYxMmYwMjMxYzQ1OGZmZWEuLjQyYjBjYTA3
NDJiM2Y5MjE5NDEzNmM5YjViMjQ4OTVhZDZlOWJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yODgsMjAgKzI4OCwy
NSBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJl
RGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1fcmFy
ZURhdGEpOyB9Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZ0lu
UmFyZURhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNTdHJpbmcp
OyB9CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxs
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxv
Y2tGb3JDYWxsKTsgfQogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJs
b2NrRm9yQ29uc3RydWN0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0
YWJsZSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOyB9CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgIAotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwotCi0gICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkNvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBtX2NvZGVCbG9ja0Zv
ckNhbGwpOworICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIHN0cnVj
dCBSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKwor
ICAgICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFzU3RyaW5nKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFJhcmVEYXRhLCBtX2FzU3RyaW5nKTsgfQorCiAgICAgICAgIFJl
ZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7CiAgICAgICAgIHVuc2lnbmVk
IG1fbGluZUNvdW50OwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKQEAgLTMxNCw2ICsz
MTksMTQgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fYXNTdHJpbmc7CiAg
ICAgfTsKIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7
CisgICAgCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFNjcmlwdEV4ZWN1dGFibGUqIHRv
cExldmVsRXhlY3V0YWJsZSk7CisKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsK
KwogICAgIFJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YSgpCiAgICAgewogICAgICAgICBpZiAoTElL
RUxZKG1fcmFyZURhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRl
eCBhNjk5MzE1OTA5OWNjYzFiNzM5NmE5N2M1OGZkNGVlMzFhNWMxODJlLi44ZGMyZjE3ODJlMGJj
ZDU0NzI1ZTI3NzliYmZlNjBmZTc3YzY0Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Nhc3QuaApAQCAtODksNiArODksNyBAQCBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIG1h
Y3JvKFJlZ0V4cE9iamVjdCwgSlNUeXBlOjpSZWdFeHBPYmplY3RUeXBlLCBKU1R5cGU6OlJlZ0V4
cE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU1dlYkFzc2VtYmx5TW9kdWxlLCBKU1R5cGU6Oldl
YkFzc2VtYmx5TW9kdWxlVHlwZSwgSlNUeXBlOjpXZWJBc3NlbWJseU1vZHVsZVR5cGUpIFwKICAg
ICBtYWNybyhEaXJlY3RBcmd1bWVudHMsIEpTVHlwZTo6RGlyZWN0QXJndW1lbnRzVHlwZSwgSlNU
eXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlKSBcCisgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxl
LCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRh
YmxlVHlwZSkgXAogICAgIG1hY3JvKFNjb3BlZEFyZ3VtZW50cywgSlNUeXBlOjpTY29wZWRBcmd1
bWVudHNUeXBlLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhDbG9u
ZWRBcmd1bWVudHMsIEpTVHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlwZSwgSlNUeXBlOjpDbG9uZWRB
cmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8oSlNHbG9iYWxPYmplY3QsIEpTVHlwZTo6R2xvYmFs
T2JqZWN0VHlwZSwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggM2JiNDU4ZWU4ZTM2ZDZiNGUyNjVmZGI5YzE5M2EyZWRkMjJk
ZTA4Mi4uYTI3OThkZDNlYjljZmU3MzM2ZjM2M2VmZjU3MzI4OGNiNGRhZTFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzE2LDkgKzcxNiwxNyBAQCBOYXRpdmVFeGVj
dXRhYmxlKiBWTTo6Z2V0UmVtb3RlRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24pCiAgICAgYXV0
byBnZXRPckNyZWF0ZSA9IFsmXSAoV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgc2xvdCkgLT4gTmF0
aXZlRXhlY3V0YWJsZSogewogICAgICAgICBpZiAoYXV0byogY2FjaGVkID0gc2xvdC5nZXQoKSkK
ICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CisKKyAgICAgICAgSW50cmluc2ljIGludHJpbnNp
YyA9IE5vSW50cmluc2ljOworICAgICAgICBpZiAoIXNsb3dDYXNlKSB7CisjaWYgIShPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KSkKKyAgICAgICAgICAgIGludHJpbnNpYyA9IFJlbW90ZUZ1bmN0
aW9uQ2FsbEludHJpbnNpYzsKKyNlbmRpZgorICAgICAgICB9CisKICAgICAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogcmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAgICAgICAgICAgc2xvd0Nhc2Ug
PyByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmljIDogcmVtb3RlRnVuY3Rpb25DYWxsRm9ySlNGdW5j
dGlvbiwKLSAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBSZW1vdGVGdW5jdGlv
bkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBpbnRyaW5zaWMsCiAgICAgICAgICAgICBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgU3RyaW5nKCkpOwogICAgICAgICBz
bG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxlPihyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGJiNDZmOGE4MTMyZDFlZDU1ZTFjMzRhZjZhMDBmMGQyNDlmZjBmYzMuLjUxNDY0NTcyZjFj
ZjJlYzFmMGNhYWY1OGRkYjc4NGFmY2ZiMzY5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKQEAgLTE5MiwxNCArMTkyLDE0IEBAIHN0YXRpYyB2
b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9iZTo6Q29udGV4dCYgY29udGV4
dCwgQkJRQ2FsbGVlJiBjCiAgICAgLy8gcG9wKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICBj
b250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7
CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMTsKLSAgICBzdGF0aWNfYXNzZXJ0
KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2
b2lkKikgKiAxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSA9PSBzaXplb2Yodm9pZCopICogMSk7CiAjZWxpZiBDUFUoQVJNNjRFKSB8fCBDUFUoQVJNNjQp
CiAgICAgLy8gbW92ZShmcmFtZVBvaW50ZXJSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogICAgIC8vIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CiAg
ICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcio+KCpmcmFtZVBvaW50
ZXIpOwogICAgIGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8
VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEpKTsKICAgICBjb250ZXh0LnNwKCkgPSBm
cmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9s
b2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOworICAgIHN0YXRp
Y19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAy
KTsKICNpZiBDUFUoQVJNNjRFKQogICAgIC8vIExSIG5lZWRzIHRvIGJlIHVudGFnZ2VkIHNpbmNl
IE9TUiBlbnRyeSBmdW5jdGlvbiBwcm9sb2d1ZSB3aWxsIHRhZyBpdCB3aXRoIFNQLiBUaGlzIGlz
IHNpbWlsYXIgdG8gdGFpbC1jYWxsLgogICAgIGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjps
cikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPih1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2lu
dGVyRm9ySklUQ2FsbChjb250ZXh0Lmdwcjx2b2lkKj4oQVJNNjRSZWdpc3RlcnM6OmxyKSwgY29u
dGV4dC5zcCgpKSk7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZvaWQgZG9PU1JFbnRyeShJ
bnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMK
ICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1lUG9p
bnRlcik7CiAgICAgY29udGV4dC5ncHIoUklTQ1Y2NFJlZ2lzdGVyczo6cmEpID0gYml0d2lzZV9j
YXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFtZVBvaW50ZXIgKyAxKSk7CiAgICAgY29udGV4dC5zcCgp
ID0gZnJhbWVQb2ludGVyICsgMjsKLSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCop
ICogMik7CiAjZWxzZQogI2Vycm9yIFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456447</attachid>
            <date>2022-04-01 22:35:06 -0700</date>
            <delta_ts>2022-04-04 15:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220401223505.patch</filename>
            <type>text/plain</type>
            <size>72742</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWUyNTU0ZGQ5MDY5YWRmYTUwYzJlYjIyMmVjMTMwYTM0YzE1MGFhLi40MmQ3ZTEyY2MwZjljZWYx
ZmZjNDRkYWRlZDZkZTFiYjk2MmUxNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAyMi0wNC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BV
Lmg6CisgICAgICAgIChKU0M6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFy
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAg
IChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86Om9mZnNldE9mQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua01vbm9tb3JwaGljQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtE
aXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvcldp
dGhGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAg
ICAgIChKU0M6OkRGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVy
cy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2Nr
QmVmb3JlQ2FsbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FsbGVlRnJhbWVD
b2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxs
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnByZXBhcmVGb3JUYWlsQ2Fs
bFNsb3cpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRD
b2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1
bmtGb3IpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OnJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgorICAgICAgICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpnZXRSZW1vdGVGdW5jdGlvbik6
CisgICAgICAgICogd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OmRvT1NSRW50cnkpOgorCiAyMDIyLTAzLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRvcHQgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhBU0NJSUxpdGVyYWwp
IG1vcmUgYnJvYWRseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9DUFUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKaW5kZXggYjNi
N2NlNTQ4M2NmZTZkNGE5MzhmNDAwMzY5MmI3MzNkZmMxODRjOS4uZmI4OGU3NDM5YzI0ZjAwNTdk
NWFhNzVkOWMyZjc0YzkxYWE5MWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9DUFUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQ
VS5oCkBAIC0xNjgsNSArMTY4LDIzIEBAIEFMV0FZU19JTkxJTkUgaW50NjRfdCBod0wzQ2FjaGVT
aXplKCkgeyByZXR1cm4gMDsgfQogQUxXQVlTX0lOTElORSBpbnQzMl90IGh3UGh5c2ljYWxDUFVN
YXgoKSB7IHJldHVybiBrZXJuVENTTUF3YXJlTnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyB9CiAj
ZW5kaWYKIAorY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKK3sK
KyNpZiBFTkFCTEUoQ19MT09QKQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50
ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2YoQ1BVUmVn
aXN0ZXIpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICAvLyBQcm9sb2d1ZSBvbmx5IHNhdmVzIHRo
ZSBmcmFtZVBvaW50ZXJSZWdpc3RlcgorICAgIHJldHVybiBzaXplb2YoQ1BVUmVnaXN0ZXIpOwor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShS
SVNDVjY0KQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBh
bmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpOworI2Vs
c2UKKyNlcnJvciB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzCisjZW5kaWYKK30KKworCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCmluZGV4IDM3MTZmMmFmODU5ZWRhNDExYzg1MTQxOTZmZGNmYzhmYWMx
NGVhYzcuLjljNzUzMWNkODFlOTAwOGE4MGRjZmU2MTFlNjY5ZDdjNDEzYjc0ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0xMDgs
MTcgKzEwOCwxOSBAQCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlu
a0luZm86OmRvbmVMb2NhdGlvbigpCiAgICAgcmV0dXJuIG1fZG9uZUxvY2F0aW9uOwogfQogCi12
b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4gY29kZVB0cikKK3ZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihjYWxsZWUpICYgcG9seW1vcnBoaWNDYWxsZWVNYXNrKSk7CiAgICAg
bV9jYWxsZWVPckNvZGVCbG9jay5zZXQodm0sIG93bmVyLCBjYWxsZWUpOwogCi0gICAgaWYgKGlz
RGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVz
dGluYXRpb24gPSBjb2RlUHRyOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2Fz
dDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4odGhpcyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxv
Y2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9j
YWxsZWVMb2NhdGlvbiwgY2FsbGVlKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0xMzAsMTAgKzEzMiwxMiBAQCB2b2lkIENhbGxMaW5rSW5mbzo6Y2xl
YXJDYWxsZWUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBtX2Nh
bGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgaWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlz
RGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAg
ICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0cjsKLSAg
ICBlbHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgeworICAgIH0gZWxzZSBpZiAoIWNsZWFy
ZWRCeUpldHRpc29uKCkpIHsKICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxl
ZUxvY2F0aW9uLCBudWxscHRyKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yOTgsOSArMzAyLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRD
YWxsVG9TdHViKCkKIAogICAgIGlmIChpc0RhdGFJQygpKSB7CiAgICAgICAgIG1fY2FsbGVlT3JD
b2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRy
OwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldp
dGhQYXRjaCgKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6c3RhcnRPZkJyYW5jaFB0cldpdGhQ
YXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiksIGNhbGxlZUdQUigpLCBu
dWxscHRyKTsKICNlbHNlCkBAIC0zNjMsOSArMzY5LDE4IEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luCiAKICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JU
YWlsQ2FsbCgpOworCisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVy
czo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBv
ZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVQ
dHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZVRh
aWxDYWxsKCkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7IC8vIFBv
bHltb3JwaGljIHN0dWIgaGFuZGxlcyB0YWlsIGNhbGwgc3RhY2sgcHJlcC4KICAgICAgICAgICAg
IGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNl
dE9mTW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zm
c2V0T2ZDb2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRy
KHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVDYWxs
KCkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
Zk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAg
fQpAQCAtMzc0LDE1ICszODksMjAgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5r
SW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgY2FsbGVlR1BSLCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpKSk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgICAg
IENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOwogICAgICAgICBpZiAo
aXNUYWlsQ2FsbCkgewogICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAg
ICAgICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxv
Y2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxDYWxs
KCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29kZUJs
b2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2Fs
bCgpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIGppdC5hZGRMaW5r
VGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwp
OworICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3Jl
KTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTQxMSw4ICs0MzEsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86
OnNldFN0dWIoUmVmPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAKICAg
ICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1f
Y2FsbGVlT3JDb2RlQmxvY2suc2xvdCgpKSA9IHBvbHltb3JwaGljQ2FsbGVlTWFzazsKKyAgICAg
ICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOyAvLyBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZSB3aWxsIHNldCBDb2RlQmxvY2sgaW5zaWRlIGl0LgogICAgICAgICB1LmRhdGFJQy5t
X21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbV9zdHViLT5jb2RlKCkuY29kZSgpLnJldGFn
Z2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29k
ZUlDLm1fY2FsbGVlTG9jYXRpb24pLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3R1Yi0+Y29kZSgpLmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5
OCwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCkKIAogICAgIEFTU0VSVChVc2VEYXRhSUM6Ok5vID09IHRoaXMtPnVz
ZURhdGFJQygpKTsKIAorICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRo
UGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6
OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQu
bmVhckNhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1f
Y29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4oY29kZUJsb2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3Ro
aXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAt
NTAxLDkgKzUyNSwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9w
cyhDQ2FsbEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRh
aWxDYWxsKCk7CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRj
aChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2Fs
bGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQu
bmVhclRhaWxDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJ
Qy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNr
KFt0aGlzXSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsK
QEAgLTUxNCw2ICs1NDAsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxp
emVEaXJlY3RDYWxsKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKICAgICBB
U1NFUlQobV9jYWxsTG9jYXRpb24pOworICAgIEFTU0VSVCh1LmNvZGVJQy5tX2NvZGVCbG9ja0xv
Y2F0aW9uKTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZhc3RQYXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVy
KGZhc3RQYXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShD
Q2FsbEhlbHBlcnMmIGppdCkgewpAQCAtNTI2LDcgKzU1Myw3IEBAIHZvaWQgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOwogfQog
Ci12b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxv
Y2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQordm9pZCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
aXNEaXJlY3QoKSk7CiAKQEAgLTU0MCw2ICs1NjcsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlu
a0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRh
ZwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9j
YXRpb24sIHRhcmdldCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29k
ZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIGNvZGVCbG9jayk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IGZiMjBlNDc4
MTQ3OTM1MjE3NTA0MzQ0NWIyOTc3MzFiOTcxMjk4NjcuLjM5MjA4NmEwOGQxYjdhNmUyNjcxZmM1
MjJhM2Y5Y2VmZmQxNjUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKCk7CiAKLSAgICB2b2lk
IHNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIHNldFNsb3dQYXRo
Q2FsbERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAg
ICAgdm9pZCBjbGVhckNhbGxlZSgpOwogICAgIEpTT2JqZWN0KiBjYWxsZWUoKTsKQEAgLTMxNyw2
ICszMTcsMTEgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxs
TGlua0luZm8sIG1fY2FsbGVlT3JDb2RlQmxvY2spOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0
YUlDLm1fY29kZUJsb2NrKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwg
ZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24pOwpAQCAtNDAxLDE0ICs0MDYsMTYg
QEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxs
TGlua0luZm8+IHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9z
bG93UGF0aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlvblR5cGUgewogICAgICAgICBV
bmlvblR5cGUoKQotICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyIH0KKyAgICAgICAgICAg
IDogZGF0YUlDIHsgbnVsbHB0ciwgbnVsbHB0ciB9CiAgICAgICAgIHsgfQogCiAgICAgICAgIHN0
cnVjdCBEYXRhSUMgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsgLy8gVGhp
cyBpcyB3ZWVrbHkgaGVsZC4gQW5kIGNsZWFyZWQgd2hlbmV2ZXIgbV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbiBpcyBjaGFuZ2VkLgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb247CiAgICAgICAgIH0g
ZGF0YUlDOwogCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jb2RlQmxvY2tMb2NhdGlvbjsKICAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxlZUxv
Y2F0aW9uOwogICAgICAgICB9IGNvZGVJQzsKICAgICB9IHU7CkBAIC01MDMsNyArNTEwLDcgQEAg
Y2xhc3MgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyBmaW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8g
ewogICAgIHZvaWQgZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYpOwogICAgIHZvaWQg
ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgU2NvcGVkTGFtYmRhPHZv
aWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpOwogICAgIHZvaWQgaW5pdGlhbGl6ZURpcmVjdENh
bGwoKTsKLSAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNF
bnRyeVB0clRhZz4pOworICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqLCBD
b2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBlbWl0U2xvd1BhdGgo
Vk0mLCBDQ2FsbEhlbHBlcnMmKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUikgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlcGF0Y2guY3BwCmluZGV4IGU5NzYwY2NjOGVlNDA1MjY2Y2ZmNGEwYTMwNGQyOWExNThh
Yzg0MTYuLjFmYzgwNGE3OWMzMGRiY2Y1YzBlZjE3MzVmNDQ2MzQ5ZWRkMzgwNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIGxpbmtNb25vbW9ycGhpY0NhbGwoCiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFT
U0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5zZXRNb25v
bW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY29kZVB0cik7CisgICAgY2FsbExpbmtJ
bmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlLCBjYWxsZWVDb2RlQmxv
Y2ssIGNvZGVQdHIpOwogICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZSh2bSwgb3du
ZXIsIGNhbGxlZSk7CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNv
ZGVCbG9jaykpCkBAIC0xNTY0LDcgKzE1NjQsNyBAQCB2b2lkIGxpbmtEaXJlY3RDYWxsKAogICAg
IGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAg
ZGF0YUxvZygiTGlua2luZyBjYWxsIGluICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9j
aywgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4oKSksICIgdG8gIiwgcG9pbnRlckR1bXAoY2FsbGVl
Q29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2RlUHRyLCAiXG4iKTsKIAotICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KGNvZGVQdHIpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChq
c0Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihjYWxsZWVDb2RlQmxvY2spLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAKICAgICBpZiAoY2FsbGVlQ29kZUJsb2Nr
KQogICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbEZyYW1lLCAm
Y2FsbExpbmtJbmZvKTsKQEAgLTE3ODcsNyArMTc4Nyw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGlj
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q2FsCiAgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CiAgICAgICAg
IHNpemVfdCBjYXNlSW5kZXggPSBiaW5hcnlTd2l0Y2guY2FzZUluZGV4KCk7CiAgICAgICAgIAot
ICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFu
dCgpOworICAgICAgICBQb2x5bW9ycGhpY0NhbGxDYXNlJiBjYWxsQ2FzZSA9IGNhbGxDYXNlc1tj
YXNlSW5kZXhdOworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2UudmFyaWFu
dCgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNvZGVQdHI7CiAgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKSkgewpAQCAtMTgx
MCwxNCArMTgxMSwyMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBib29sIG5l
ZWRzRG9uZUp1bXAgPSBmYWxzZTsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKICAgICAg
ICAgICAgIENhbGxGcmFtZVNodWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90
KCkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVC
bG9jaygpKQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVG
cmFtZUNvZGVCbG9ja0JlZm9yZVRhaWxDYWxsKCkpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUlu
ZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVG
b3JUYWlsQ2FsbFNsb3coKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkK
KyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2Rl
QmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2Fs
bCA9IHN0dWJKaXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAoaXNEYXRhSUMpCisgICAgICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc1RhaWxD
YWxsKCkpOworICAgICAgICAgICAgaWYgKGlzRGF0YUlDKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNhbGxDYXNlLmNvZGVCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LnN0b3Jl
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIEND
YWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAg
ICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgp
OwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKICAg
ICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7
CiAgICAgICAgICAgICAgICAgbmVlZHNEb25lSnVtcCA9IHRydWU7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCmluZGV4
IDUxNzFiYzEyNDAwNTJjM2NjY2Q2ZTZmYWY0NjgyNTMzN2VlM2U3ODkuLjk1OGQ3ZmI4YjNiMzc3
MTA0NzA3MThiMzk0ODJiYjMwNWI3MGY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCkBAIC0xOTUsOCArMTk1LDggQEAgQUxXQVlTX0lO
TElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKIAogICAgIERlZmVyVHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNh
bid0IGpldHRpc29uIGlmIHdlJ3JlIGdvaW5nIHRvIGNhbGwgdGhpcyBDb2RlQmxvY2suCiAKLSAg
ICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgaWYgKCFleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCiAg
ICAgICAgIGF1dG8gaGFuZGxlVGhyb3dFeGNlcHRpb24gPSBbJl0gKCkgewogICAgICAgICAgICAg
dm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGgoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKQEAgLTIxMiw2ICsyMTIsNyBAQCBBTFdB
WVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5k
LCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgaGFuZGxlVGhyb3dFeGNlcHRpb24oKSk7CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBv
cnQgd2FzbSBJQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMzM5CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRl
eCBkNWVhOWQ2NzU5NzU1YTM5NGQ2ZjU1ZWQ3ZDcyNmFmZmVhZjc2YTFkLi5kODVlMDY1MTE1OGJj
MjRiNTZlZmVkMTgyMDYzOTBlYTEyOGYxYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAj
aW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDcg
KzExMSwxNCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNr
KSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8g
YWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3
aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaWYgKG1fZ3Jh
cGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAg
ICAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5
cGU6OkRGR0pJVCk7CisgICAgICAgIH0pOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmluZGV4IDExMzJjZjBkOWY2NWIxMzk3ZmViOWViOTU3
MTQxZWI0ZDExNTg1ZjcuLjRjOGYyZWVkZWZhY2I1MjVmYzI4YzgyYTIzYzdlMzZlYzc3ODRiNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCkBAIC0zMzQsOSAr
MzM0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY28KICAgICAgICAgfQogICAgIH0KICNlbmRp
ZgotICAgIAorCiAgICAgLy8gNykgRml4IHRoZSBjYWxsIGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0
IGNvZGUgYmxvY2suCi0gICAgCisKICAgICAqYml0d2lzZV9jYXN0PENvZGVCbG9jayoqPihwaXZv
dCAtIChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKyAxKSkgPSBjb2RlQmxvY2s7CiAgICAgCiAg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIE9TUiByZXR1cm5pbmcg
ZGF0YSBidWZmZXIgIiwgUmF3UG9pbnRlcihzY3JhdGNoKSk7CkBAIC00MDgsNiArNDA4LDEwIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBwcmVwYXJlQ2F0
Y2hPU1JFbnRyeShWTSYgdm0sIENhbGxGCiAKICAgICAvLyBUaGUgYWN0aXZlIGxlbmd0aCBvZiBj
YXRjaE9TUkVudHJ5QnVmZmVyIHdpbGwgYmUgemVyb2VkIGJ5IENsZWFyQ2F0Y2hMb2NhbHMgbm9k
ZS4KICAgICBkZmdDb21tb24tPmNhdGNoT1NSRW50cnlCdWZmZXItPnNldEFjdGl2ZUxlbmd0aChz
aXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSdyZSBj
b21taXR0ZWQgdG8gdHJpZ2dlcmluZyBhbiBPU1IgZW50cnkgaW1tZWRpYXRlbHkgYWZ0ZXIgd2Ug
cmV0dXJuLiBIZW5jZSwgaXQgaXMgc2FmZSB0byBtb2RpZnkgc3RhY2sgaGVyZS4KKyAgICBjYWxs
RnJhbWUtPnNldENvZGVCbG9jayhvcHRpbWl6ZWRDb2RlQmxvY2spOworCiAgICAgcmV0dXJuIGNh
dGNoRW50cnlwb2ludC0+bWFjaGluZUNvZGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNTVlZjc2MTU0ZDIwNTFiMjJjOWVk
ZDc4NzY5NWQ1NTZjODE1MmQ3Ni4uMTQ3NmI0ZTgzODRiMzdmZjliZGE0NzMzZjUxMThmZWFmMWI3
YzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTIyMTcsNyArMjIxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
dXJyZW50QmxvY2soKQogICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAg
ICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICAgICAgLy8gQ29kZUJsb2NrIGluIHRoZSBzdGFjayBp
cyBhbHJlYWR5IHJlcGxhY2VkIGluIE9TUiBlbnRyeS4KICAgICB9CiAKICAgICBtX3N0cmVhbS0+
YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwpAQCAtMTEyOTgsNyArMTEyOTgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBu
b2RlKQogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhleGVjdXRh
YmxlLmdwcigpLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mUmFyZURhdGEoKSksIHJlc3Vs
dC5ncHIoKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKLSAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZz
ZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgRnVuY3Rpb25FeGVjdXRh
YmxlOjpSYXJlRGF0YTo6b2Zmc2V0T2ZBc1N0cmluZygpKSwgcmVzdWx0LmdwcigpKTsKICAgICBK
SVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1wKCk7CiAKICAgICBpc05h
dGl2ZUV4ZWN1dGFibGUubGluaygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwCmluZGV4IDQ0YTlhMWE5OGYyNzk0YTI3MDIyOWM2ZDcyYzFiOTM2MDU1MDhjODku
LmNjNmMwNTIzMWQ3MzM5OThkOWI4MDQ0NWEyMTgzMjhkM2RjYmJhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJH
UFJJbmZvLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIApAQCAtMTQ4LDYgKzE0OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0Lm5l
Z1B0cihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5nZXRFZmZlY3Rp
dmVBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgCisgICAgLy8gQ29weWluZyBs
b2NhbHMgYW5kIGhlYWRlciBmcm9tIHNjcmF0Y2ggYnVmZmVyIHRvIHRoZSBuZXcgQ2FsbEZyYW1l
LiBUaGlzIGFsc28gcmVwbGFjZXMKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IGpp
dC5sYWJlbCgpOwogICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigx
KSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1Q0KTsKQEAgLTE2MCw2ICsxNjIsMTQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQuYWJv
cnRXaXRoUmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAog
ICAgIG9rLmxpbmsoJmppdCk7CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGppdC5wcm9iZURl
YnVnKFtdKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOwor
ICAgIH0pOworI2VuZGlmCisKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQuZW1pdE1hdGVy
aWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCBhYjFmNWI4Njc1OWQw
NTU2OWQzOGMwNDhkY2M4M2FhN2ZkNWZiMGVjLi5mZTI5ZGQyYmU3YzI1M2U1MWE4NDNhZjI5N2Q4
NTFiYTlmNDQ1NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNzgsNyArNzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3Vt
ZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAg
bWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0
QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCiAgICAg
bWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlX3JhcmVEYXRhLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mUmFyZURhdGEoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRh
X2FzU3RyaW5nLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQXNTdHJpbmdJblJhcmVEYXRh
KCkpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YTo6b2Zmc2V0T2ZBc1N0cmluZygpKSBcCiAgICAgbWFj
cm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9m
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFBy
b3RvdHlwZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURh
dGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9m
U3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3Byb3RvdHlwZSwgRnVu
Y3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlByb3RvdHlwZSgpKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAyOGJkZWUzYmE3NTUzMDY2ZTUz
MDM3MTM1NzQ4NjE2YmQzYjhjZjY4Li4zZWY0YWE0OGZmZTRjNjg3NmRjNDljM2MxNGI5MDY1YWVm
ZTJkNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1
ZmZlcj4gbGlua0J1ZmZlcjsKIAogICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmcmFtZSA9IEND
YWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgLXN0YXRpY19jYXN0PGludDMyX3Q+KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YSgpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90Pihwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRh
KCkpKTsKICAgICAKICAgICBzd2l0Y2ggKGdyYXBoLm1fcGxhbi5tb2RlKCkpIHsKICAgICBjYXNl
IEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYjFlMDM2OTE0MTBiODI3YjBjMGVkNGQwZmVjMjdk
ODc1NTljNTk0NC4uNGQ2MjI0ODFkOTQ5ZDcxMmE5OTA5YWEwMDMwNzYyYjEzMTBjYmJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTk4
LDE1ICsxOTgsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICB7CiAgICAgICAg
ICAgICBtX3Byb2Muc2V0TnVtRW50cnlwb2ludHMobV9ncmFwaC5tX251bWJlck9mRW50cnlwb2lu
dHMpOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLm1fY29kZUJs
b2NrOwogCiAgICAgICAgICAgICBSZWY8QjM6OkFpcjo6UHJvbG9ndWVHZW5lcmF0b3I+IGNhdGNo
UHJvbG9ndWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPEIzOjpBaXI6OlByb2xvZ3VlR2Vu
ZXJhdG9yRnVuY3Rpb24+KAotICAgICAgICAgICAgICAgIFtjb2RlQmxvY2tdIChDQ2FsbEhlbHBl
cnMmIGppdCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgeworICAgICAgICAgICAgICAgIFtdKENDYWxs
SGVscGVycyYgaml0LCBCMzo6QWlyOjpDb2RlJiBjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtY29k
ZS5mcmFtZVNpemUoKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFNh
dmUoY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoY29kZUJsb2NrLCBWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgIC8v
IENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBsYWNlZCBpbiBGVEw6OnByZXBh
cmVPU1JFbnRyeS4KICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBjYXRjaEVudHJ5cG9pbnRJbmRleCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50SW5kZXhUb0Nh
dGNoQnl0ZWNvZGVJbmRleC5rZXlzKCkpIHsKQEAgLTI3Miw5ICsyNzEsOSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbnVtYmVyVGFnLT5r
ZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV9ub3RDZWxsTWFzay0+a2V5
KCkpOwogICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRv
IGhhdmUgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKLSAgICAgICAgLy8gdGhhdCB3
b3VsZCBjYXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KLSAgICAgICAgbV9vdXQuc3Rv
cmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2so
KSkpLCBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
KSk7CisgICAgICAgIC8vIFdoZW4gcnVubmluZyBGVEwgY29kZSwgd2UgYWxyZWFkeSBzdG9yZSBD
b2RlQmxvY2sgdG8gQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLgorICAgICAgICBib29sIGlzRnVu
Y3Rpb25Db2RlID0gbV9ncmFwaC5tX3BsYW4uY29kZUJsb2NrKCktPmNvZGVUeXBlKCkgPT0gRnVu
Y3Rpb25Db2RlOworICAgICAgICBVTlVTRURfVkFSSUFCTEUoaXNGdW5jdGlvbkNvZGUpOwogCiAg
ICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgogICAgICAgICB1bnNpZ25lZCBleGl0RnJh
bWVTaXplID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkgKiBzaXplb2Yo
UmVnaXN0ZXIpOwpAQCAtMjkzLDYgKzI5MiwxNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGZ0bEZyYW1lU2l6ZSA9IHBhcmFtcy5wcm9jKCkuZnJhbWVT
aXplKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWF4RnJhbWVTaXplID0gc3RkOjptYXgo
ZXhpdEZyYW1lU2l6ZSwgZnRsRnJhbWVTaXplKTsKIAorI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb25Db2RlKSB7CisgICAgICAgICAgICAgICAgICAgIGpp
dC5wcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9j
ay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1tYXhGcmFtZVNpemUpLCBmcCwgc2NyYXRj
aCk7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHN0YWNrT3ZlcmZs
b3c7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1heEZyYW1lU2l6ZSA+IE9wdGlvbnM6
OnJlc2VydmVkWm9uZVNpemUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKaW5kZXggNDE5ZWZiMzZhNDA5NWRiZTFjOGEyMDQ2MTI1ZThjNWM3ODJm
MzMwZC4uODk3Y2JhMzQ2ODA2MGZkYTczNmI3M2FkMDNiMmY5YTZiZTAwM2YxZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtMjMsNiArMjMs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBYnN0cmFjdFBDLmgiCisjaW5jbHVkZSAi
Q1BVLmgiCiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCkBAIC0xMDQsNiArMTA1LDExIEBAIG5h
bWVzcGFjZSBKU0MgIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc2l6ZUluUmVnaXN0
ZXJzID0gMiAqIHNpemVvZihDUFVSZWdpc3RlcikgLyBzaXplb2YoUmVnaXN0ZXIpOwogICAgIH07
CiAgICAgc3RhdGljX2Fzc2VydChDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMgPT0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKSwgIkNhbGxlckZyYW1l
QW5kUEM6OnNpemVJblJlZ2lzdGVycyBpcyBpbmNvcnJlY3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgPj0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgp
KTsKKyNpZiAhQ1BVKFg4Nl82NCkKKyAgICAvLyBPbmx5IHg4Nl82NCAiY2FsbCIgcHVzaGVzIHJl
dHVybiBhZGRyZXNzIG9uIHRoZSBzdGFjay4gT3RoZXIgYXJjaGl0ZWN0dXJlIHB1c2hlcyBpbiB0
aGUgZnVuY3Rpb24gcHJvbG9ndWUgYWZ0ZXIgdGhlIGNhbGwuCisgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgPT0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKTsK
KyNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBDYWxsRnJhbWVTbG90IHsKICAgICAgICAgY29kZUJs
b2NrID0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjdkZDU5NzkwYjcxZjk4YTIxN2Ix
MjU4Nzc2NzcxNjVhYzY4ZWUwYy4uZTdhZDQ1ZjM5YmU5OTg3MGFhOGM0MGM5ZThlMzhjNGIwNmU0
YTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBA
IC00MDYsMTIgKzQwNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAgIC8vIFBy
b2xvZ3VlIG9ubHkgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyCi0gICAgICAgIHJldHVy
biBzaXplb2Yodm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KQogICAgIHsKICAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CkBAIC00NzcsMTIg
KzQ3MSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7
CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJN
NjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVn
aXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2b2lkKik7
Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAg
ICB0YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC01MjgsMTIgKzUxNiw2IEBAIGNsYXNzIEFzc2VtYmx5
SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShNSVBT
KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KQotICAgIHsKLSAgICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lz
dGVyIGFuZCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yo
dm9pZCopOwotICAgIH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsK
ICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdp
c3Rlcik7CkBAIC01NjgsMTIgKzU1MCw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKIAogI2lmIENQVShSSVNDVjY0KQotICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAg
ICAgICAgLy8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCByZXR1
cm5BZGRyZXNzUmVnaXN0ZXIKLSAgICAgICAgcmV0dXJuIDIgKiBzaXplb2Yodm9pZCopOwotICAg
IH0KLQogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKQogICAgIHsKICAgICAgICAgcHVz
aFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CkBAIC0xMjgxLDYgKzEy
NTcsMTcgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgcmV0dXJuIGNhbGxlZUZyYW1lU2xvdChWaXJ0dWFsUmVnaXN0ZXIoMCkpLndpdGhP
ZmZzZXQoQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpKTsKICAgICB9CiAKKyAgICBzdGF0
aWMgQWRkcmVzcyBjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgQWRkcmVzcyBjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9y
ZVRhaWxDYWxsKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBzdGFja1BvaW50ZXJSZWdpc3RlciBz
dGF0ZSBpcyAiYWZ0ZXIgdGhlIGNhbGwsIGJ1dCBiZWZvcmUgdGhlIGZ1bmN0aW9uIHByb2xvZ3Vl
Ii4KKyAgICAgICAgcmV0dXJuIGNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKS53aXRoT2Zmc2V0KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAtIHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSk7CisgICAgfQorCiAgICAgc3RhdGljIEdQUlJlZyBzZWxlY3RT
Y3JhdGNoR1BSKFJlZ2lzdGVyU2V0IHByZXNlcnZlZCkKICAgICB7CiAgICAgICAgIEdQUlJlZyBy
ZWdpc3RlcnNbXSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmlu
ZGV4IDI5YjAyYWY5ZjE4MDU4YTNjNDY5OWQ2ZDExMTkxZjk4ZDlhOWZjMzUuLmI0YjljM2MwYTFm
YTZmMjM3ZmNjYTA0YjJhODc3YmYyMzRlNmFhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaApAQCAtNzQ0LDExICs3NDQsMTkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIGZhckp1bXAoR1BSSW5mbzo6cmVn
VDEsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZUZv
clRhaWxDYWxsU2xvdyhHUFJSZWcgcHJlc2VydmVkR1BSID0gSW52YWxpZEdQUlJlZykKKyAgICB2
b2lkIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSUmVnIHByZXNlcnZlZEdQUjEgPSBJbnZhbGlk
R1BSUmVnLCBHUFJSZWcgcHJlc2VydmVkR1BSMiA9IEludmFsaWRHUFJSZWcpCiAgICAgewotICAg
ICAgICBHUFJSZWcgdGVtcDEgPSBwcmVzZXJ2ZWRHUFIgPT0gR1BSSW5mbzo6cmVnVDAgPyBHUFJJ
bmZvOjpyZWdUMyA6IEdQUkluZm86OnJlZ1QwOwotICAgICAgICBHUFJSZWcgdGVtcDIgPSBwcmVz
ZXJ2ZWRHUFIgPT0gR1BSSW5mbzo6cmVnVDEgPyBHUFJJbmZvOjpyZWdUMyA6IEdQUkluZm86OnJl
Z1QxOwotICAgICAgICBHUFJSZWcgdGVtcDMgPSBwcmVzZXJ2ZWRHUFIgPT0gR1BSSW5mbzo6cmVn
VDIgPyBHUFJJbmZvOjpyZWdUMyA6IEdQUkluZm86OnJlZ1QyOworICAgICAgICBSZWdpc3RlclNl
dCBwcmVzZXJ2ZWQ7CisgICAgICAgIGlmIChwcmVzZXJ2ZWRHUFIxICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgICAgICBwcmVzZXJ2ZWQuYWRkKHByZXNlcnZlZEdQUjEpOworICAgICAgICBpZiAo
cHJlc2VydmVkR1BSMiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcHJlc2VydmVkLmFk
ZChwcmVzZXJ2ZWRHUFIyKTsKKworICAgICAgICBHUFJSZWcgdGVtcDEgPSBzZWxlY3RTY3JhdGNo
R1BSKHByZXNlcnZlZCk7CisgICAgICAgIHByZXNlcnZlZC5hZGQodGVtcDEpOworICAgICAgICBH
UFJSZWcgdGVtcDIgPSBzZWxlY3RTY3JhdGNoR1BSKHByZXNlcnZlZCk7CisgICAgICAgIHByZXNl
cnZlZC5hZGQodGVtcDIpOworICAgICAgICBHUFJSZWcgdGVtcDMgPSBzZWxlY3RTY3JhdGNoR1BS
KHByZXNlcnZlZCk7CiAKICAgICAgICAgR1BSUmVnIG5ld0ZyYW1lUG9pbnRlciA9IHRlbXAxOwog
ICAgICAgICBHUFJSZWcgbmV3RnJhbWVTaXplR1BSID0gdGVtcDI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggZWQ4ZmIwZjUzZTU3YTVhNTAyZjFjYTI3NjA1NDY3MDkwMGU4YmU5Yi4u
ODY3NTFkYjFlYWMyZmRlNjI3ODYwZDc2MGE1OWQ1M2ViNTRjNjY1MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMjAzLDI4ICsyMDMsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dDYXNl
Q2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0
aQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKLXsKLSAgICBSRUxFQVNFX0FTU0VS
VChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0gICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZXN1
bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhl
Y3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0g
YnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVu
Y3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0
YVRhZyksIHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlmICht
X3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25z
dHJ1Y3QoKSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVz
dWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVz
dWx0KTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBwcm9iZURlYnVnKFs9XSAo
UHJvYmU6OkNvbnRleHQmIGN0eCkgewotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0
eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Y29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwotICAgIH0pOwot
I2VuZGlmCi19Ci0KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKIHsKICAgICBp
ZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03NTEsMTAgKzcyOSw4IEBAIHZvaWQgSklUOjpj
b21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIENv
ZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkpOwogCiAgICAgc3RkOjpvcHRpb25hbDxKSVRTaXpl
U3RhdGlzdGljczo6TWFya2VyPiBzaXplTWFya2VyOwotICAgIGlmIChVTkxJS0VMWShPcHRpb25z
OjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkgewotICAgICAgICBTdHJpbmcgaWQg
PSBtYWtlU3RyaW5nKCJCYXNlbGluZV9wcm9sb2d1ZSIpOwotICAgICAgICBzaXplTWFya2VyID0g
bV92bS0+aml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgKnRoaXMpOwotICAgIH0KKyAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJhc2VsaW5lSklUU2l6ZVN0YXRpc3RpY3MoKSkp
CisgICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0
KCJCYXNlbGluZV9wcm9sb2d1ZSJfcywgKnRoaXMpOwogCiAgICAgTGFiZWwgZW50cnlMYWJlbCh0
aGlzKTsKICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCkBAIC03NjUsOCArNzQxLDE4IEBAIHZvaWQg
SklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0
IGVmZm9ydCkKICAgICAgICAgbm9wKCk7CiAKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwot
ICAgIGlmIChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkK
LSAgICAgICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKCk7CisgICAgaWYgKG1f
dW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBwcm9iZURlYnVnKFs9XShQcm9i
ZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0
eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxv
Y2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1lKj4oKSkpOworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pOworI2VuZGlmCisgICAgfQogCiAgICAgTGFiZWwgYmVnaW5MYWJlbCh0aGlz
KTsKIApAQCAtODI5LDcgKzgxNSwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0
RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlD
aGVjayA9IGxhYmVsKCk7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAg
ICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlZ1QwKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpD
b250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZw
PENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisjZW5kaWYKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCByZWdUMCk7CiAgICAgICAgIHN0b3JlOChUcnVzdGVk
SW1tMzIoMCksIEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTaG91bGRBbHdheXNC
ZUlubGluZWQoKSkpOwogCiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgcmVnVDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKaW5kZXggZTVhOWQ0Y2MzNDI4ODc0MmJmN2IyYTFjNGY1NDQxZWNhZjJmYzI4Zi4uZGFhMmM1
MjE4MzZlZTI2YzA4MzM4N2ZkNTI5NGI2N2UyODZmNWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCkBAIC0yNjEsOCArMjYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbG9h
ZENvZGVCbG9ja0NvbnN0YW50VGFnKFZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCk7CiAjZW5k
aWYKIAotICAgICAgICB2b2lkIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJS
ZWcgcmVzdWx0ID0gcmVnVDApOwotCiAgICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBq
dW1wVG9IYW5kbGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5h
cHBlbmQoanVtcFRvSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCBmODFkZGYyNTc4NDI0YzhmOWVhYTQ4YzMxZDU1OGU1YzFlZTM0M2E2
Li5lYjM4MzcwY2I5MTYyODg1YTE5NzdmMTdiZjM5YjdmNWQ3MGU5NDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yQ2FsbGVy
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTUgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGdldFdyYXBwZWRWYWx1ZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwgdm9p
ZCosIChKU1JlbW90ZUZ1bmN0aW9uKiBjYWxsZWUpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCBTbG93UGF0aFJl
dHVyblR5cGUsIChKU1JlbW90ZUZ1bmN0aW9uKiBjYWxsZWUpKQogewogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSwxNCArMTc1LDE0IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSwg
dm9pZCosIChKCiAgICAgLy8gRm9yY2UgdGhlIGV4ZWN1dGFibGUgdG8gY2FjaGUgaXRzIGFyaXR5
IGVudHJ5cG9pbnQuCiAgICAgewogICAgICAgICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAv
LyBXZSBjYW4ndCBqZXR0aXNvbiBhbnkgY29kZSB1bnRpbCBhZnRlciB3ZSBsaW5rIHRoZSBjYWxs
LgorICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1Nsb3QgPSBudWxscHRyOwogICAgICAgICBp
ZiAoIWV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIEpTU2NvcGUq
IHNjb3BlID0gdGFyZ2V0RnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2tTbG90ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCB0YXJnZXRGdW5jdGlvbiwg
c2NvcGUsIENvZGVGb3JDYWxsLCBjb2RlQmxvY2tTbG90KTsKLSAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZv
ckNhbGwsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11
c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCBjb2RlQmxvY2tTbG90KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDhh
MjM3NDEzNGM0ZjU1OThkYTBiZjY0YjI4ODQ1YzQ1ZmI4MTg2Ni4uYjllODMwY2FkM2IzZDVmM2E0
MzIwMzM5MmI0ZDc3YTZjMDkxNDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rLCB2b2lkLCAoSlNHbAog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNO
b3RPYmplY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yQ2FsbGVyLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTUmVtb3RlRnVuY3Rpb24qLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JUYXJnZXQsIEVuY29kZWRKU1ZhbHVl
LCAoSlNSZW1vdGVGdW5jdGlvbiosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCB2
b2lkKiwgKEpTUmVtb3RlRnVuY3Rpb24qKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCBTbG93UGF0aFJldHVy
blR5cGUsIChKU1JlbW90ZUZ1bmN0aW9uKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25UaHJvd1JlbW90ZUZ1bmN0aW9uRXhjZXB0aW9uLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
UmVtb3RlRnVuY3Rpb24qKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93RXJyb3IsIHZvaWQsIChDb2RlQmxvY2sqKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggM2M0YTNhZTNhOTg4
Y2VlOTY1NjQ0M2ZjNzYxMDkwYWUwZWMzYzU2MS4uNmQzYThmNWU0YTA3ZDdkNDRlYzc3OTJlYTE4
YzE1ZGJhZTc0NzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcApAQCAtMjg4LDI1ICsyODgsMjkgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8K
ICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB3ZSBoYXZlIGEgSlNGdW5jdGlvbi4KIAotICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgR1BSSW5mbzo6cmVnVDQpOwotICAg
IGF1dG8gaGFzRXhlY3V0YWJsZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgR1BSSW5mbzo6cmVnVDQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246
OnJhcmVEYXRhVGFnKSk7Ci0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1Q0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgR1BSSW5mbzo6cmVnVDQpOworICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGF1dG8gaGFz
RXhlY3V0YWJsZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5m
bzo6cmVnVDAsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJhcmVEYXRh
VGFnKSk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246
OnJhcmVEYXRhVGFnKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGhhc0V4ZWN1dGFibGUubGluaygm
aml0KTsKICAgICBqaXQubG9hZFB0cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1Q0LCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hl
Y2tGb3Ioa2luZCkpLAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5k
KSksCiAgICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJy
YW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOwogICAgIAot
ICAgIC8vIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNv
bW1pdHRlZCB0byBtYWtpbmcgYSBmYXN0Ci0gICAgLy8gY2FsbC4KKyAgICAvLyBOb3cgd2Uga25v
dyB0aGF0IHdlIGhhdmUgYSBDb2RlQmxvY2ssIGFuZCB3ZSdyZSBjb21taXR0ZWQgdG8gbWFraW5n
IGEgZmFzdCBjYWxsLgorCisgICAgYXV0byBpc05hdGl2ZSA9IGppdC5icmFuY2hJZk5vdFR5cGUo
R1BSSW5mbzo6cmVnVDAsIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpOworICAgIGppdC5sb2FkUHRy
KAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3Ioa2luZCkpLAorICAgICAgICBHUFJJbmZv
OjpyZWdUNSk7CiAKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdpbGwgcmV0dXJuIGJh
Y2sgdG8gSklUIGNvZGUuCi0gICAgSlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGNhbGxDb2RlKGppdC5s
YWJlbCgpKTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCwg
SlNFbnRyeVB0clRhZyk7CiAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgaml0LnByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5w
cmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0KTsKKyAgICAgICAgaml0LnByZXBh
cmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OnJlZ1Q1KTsKICAgICB9
CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1Q1LCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZy
YW1lQ29kZUJsb2NrQmVmb3JlVGFpbENhbGwoKSk7CiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6
cmVnVDQsIEpTRW50cnlQdHJUYWcpOwogCiAgICAgLy8gTnVsbFNldHRlckZ1bmN0aW9uVHlwZSBk
b2VzIG5vdCBnZXQgdGhlIGZhc3QgcGF0aCBzdXBwb3J0LiBCdXQgaXQgaXMgT0sgc2luY2UgdXNp
bmcgTnVsbFNldHRlckZ1bmN0aW9uVHlwZSBpcyBleHRyZW1lbHkgcmFyZS4KQEAgLTMxNCw3ICsz
MTgsMTQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmly
dHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KICAgICBzbG93Q2FzZS5hcHBlbmQoaml0
LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMCwgSW50ZXJuYWxGdW5jdGlvblR5cGUpKTsK
ICAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcyA9IHZtLmdldENUSUludGVybmFsRnVuY3Rpb25U
cmFtcG9saW5lRm9yKGtpbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGVBZGRyZXNzKSwgR1BSSW5mbzo6cmVn
VDQpOwotICAgIGppdC5qdW1wKCkubGlua1RvKGNhbGxDb2RlLCAmaml0KTsKKworICAgIGlzTmF0
aXZlLmxpbmsoJmppdCk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6
cmVnVDQsIEpTRW50cnlQdHJUYWcpOworICAgIGlmIChpc1RhaWxDYWxsKSB7CisgICAgICAgIGpp
dC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZvOjpyZWdUNCk7CisgICAgfQorICAg
IGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIHNsb3dD
YXNlLmxpbmsoJmppdCk7CiAgICAgCkBAIC0xMzg2LDExICsxMzk3LDIwIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0m
IHZtKQogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29k
ZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBhdXRvIGlzTmF0aXZlID0g
aml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSk7CisgICAgaml0LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29k
ZUJsb2NrRm9yQ2FsbCgpKSwKKyAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zdG9y
ZUNlbGwoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tC
ZWZvcmVDYWxsKCkpOworCisgICAgaXNOYXRpdmUubGluaygmaml0KTsKICAgICAKLSAgICBlbWl0
UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCwgSlNFbnRyeVB0clRhZyk7Ci0g
ICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDAsIEpTRW50cnlQdHJUYWcpOworICAgIGVtaXRQb2lu
dGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBq
aXQuY2FsbChHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CkBAIC0xNTMyLDMzICsxNTUyLDQ1IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVtb3RlRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsIEV4ZWN1dGFibGVCYXNlOjpv
ZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAotICAgICAgICBH
UFJJbmZvOjpyZWdUMSk7Ci0gICAgYXV0byBjb2RlRXhpc3RzID0gaml0LmJyYW5jaFRlc3RQdHIo
Q0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIEdQUkluZm86
OnJlZ1QyKTsKKyAgICBhdXRvIGNvZGVFeGlzdHMgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKTsKIAogICAgIC8vIFRoZSBjYWxscyB0byBv
cGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JUYXJnZXQgYWJvdmUgbWF5IEdDLCBhbmQgYW55IEdD
IGNhbiBwb3RlbnRpYWxseSBqZXR0aXNvbiB0aGUgSklUIGNvZGUgaW4gdGhlIHRhcmdldCBKU0Z1
bmN0aW9uLgogICAgIC8vIElmIHdlIGZpbmQgdGhhdCB0aGUgSklUIGNvZGUgaXMgbnVsbCAoaS5l
LiBoYXMgYmVlbiBqZXR0aXNvbmVkKSwgdGhlbiB3ZSBuZWVkIHRvIHJlLW1hdGVyaWFsaXplIGl0
IGZvciB0aGUgY2FsbCBiZWxvdy4gTm90ZSB0aGF0IHdlIGtub3cKICAgICAvLyB0aGF0IG9wZXJh
dGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlIHNob3VsZCBiZSBhYmxlIHRv
IHJlLW1hdGVyaWFsaXplIHRoZSBKSVQgY29kZSAoZXhjZXB0IGZvciBhbnkgT09NRSkgYmVjYXVz
ZSB3ZSBvbmx5CiAgICAgLy8gd2VudCBkb3duIHRoaXMgY29kZSBwYXRoIGFmdGVyIHdlIGZvdW5k
IGEgbm9uLW51bGwgSklUIGNvZGUgKGluIHRoZSBub0NvZGUgY2hlY2spIGFib3ZlIGkuZS4gaXQg
c2hvdWxkIGJlIHBvc3NpYmxlIHRvIG1hdGVyaWFsaXplIHRoZSBKSVQgY29kZS4KKyAgICAvLyBG
SVhNRTogV2luZG93cyB4NjQgaXMgbm90IHN1cHBvcnRlZCBzaW5jZSBvcGVyYXRpb25NYXRlcmlh
bGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSByZXR1cm5zIFNsb3dQYXRoUmV0dXJuVHlwZS4K
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1v
dGVGdW5jdGlvblRhcmdldENvZGUpPihHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1v
dGVGdW5jdGlvblRhcmdldENvZGUpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwog
ICAgIGV4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoaml0LmVtaXRKdW1wSWZFeGNlcHRpb24odm0pKTsK
LSAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDEpOwor
ICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBDQ2FsbEhlbHBlcnM6
OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKKyAgICBqaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gbWF0ZXJpYWxpemVk
ID0gaml0Lmp1bXAoKTsKIAogICAgIGNvZGVFeGlzdHMubGluaygmaml0KTsKKyAgICBhdXRvIGlz
TmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMSwgRnVuY3Rpb25FeGVj
dXRhYmxlVHlwZSk7CisgICAgaml0LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcygKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwKKyAgICAgICAgR1BSSW5mbzo6cmVnVDMpOworICAg
IGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVD
b2RlQmxvY2tCZWZvcmVDYWxsKCkpOworCisgICAgaXNOYXRpdmUubGluaygmaml0KTsKKyAgICBt
YXRlcmlhbGl6ZWQubGluaygmaml0KTsKICAgICAvLyBCYXNlZCBvbiB0aGUgY2hlY2sgYWJvdmUs
IHdlIHNob3VsZCBiZSBnb29kIHdpdGggdGhpcy4gT24gQVJNNjQsIGVtaXRQb2ludGVyVmFsaWRh
dGlvbiB3aWxsIGRvIHRoaXMuCiAjaWYgQVNTRVJUX0VOQUJMRUQgJiYgIUNQVShBUk02NEUpCiAg
ICAgewotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY2hlY2tOb3ROdWxsID0gaml0LmJyYW5j
aFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBjaGVja05vdE51bGwgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgaml0LmFib3J0V2l0
aFJlYXNvbihUR0ludmFsaWRQb2ludGVyKTsKICAgICAgICAgY2hlY2tOb3ROdWxsLmxpbmsoJmpp
dCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJ
bmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7Ci0gICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDEs
IEpTRW50cnlQdHJUYWcpOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86
OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMiwgSlNF
bnRyeVB0clRhZyk7CiAKICAgICAvLyBXcmFwIHJldHVybiB2YWx1ZQogI2lmIFVTRShKU1ZBTFVF
NjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KaW5kZXggMWZkYjRhNTdkNTk0YmVlYTZlYmI4MGFhNjk3YmRhZDQzZjkwZjg3My4u
NmFhYzMxOTYwMzFhNjA4OWY0NzM3NWI2ZGE1YWY4MTNiMjMzOWU3MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcw
LDYgKzE3MCw3IEBAIGNvbnN0IFN0YWNrQWxpZ25tZW50U2xvdHMgPSBjb25zdGV4cHIgKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkpCiBjb25zdCBTdGFja0FsaWdubWVudE1hc2sgPSBTdGFja0Fs
aWdubWVudCAtIDEKIAogY29uc3QgQ2FsbGVyRnJhbWVBbmRQQ1NpemUgPSBjb25zdGV4cHIgKHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkKK2NvbnN0IFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEg
PSBjb25zdGV4cHIgKHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkKIAogY29uc3QgQ2FsbGVy
RnJhbWUgPSAwCiBjb25zdCBSZXR1cm5QQyA9IENhbGxlckZyYW1lICsgTWFjaGluZVJlZ2lzdGVy
U2l6ZQpAQCAtNTY2LDYgKzU2Nyw3IEBAIGNvbnN0IEFycmF5VHlwZSA9IGNvbnN0ZXhwciBBcnJh
eVR5cGUKIGNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSBjb25zdGV4cHIgRGVyaXZlZEFycmF5VHlw
ZQogY29uc3QgUHJveHlPYmplY3RUeXBlID0gY29uc3RleHByIFByb3h5T2JqZWN0VHlwZQogY29u
c3QgSGVhcEJpZ0ludFR5cGUgPSBjb25zdGV4cHIgSGVhcEJpZ0ludFR5cGUKK2NvbnN0IEZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGUgPSBjb25zdGV4cHIgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZQogCiAj
IFRoZSB0eXBlZCBhcnJheSB0eXBlcyBuZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxh
ciBvcmRlciBiZWNhdXNlIG9mIHRoZSBtYW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1l
bnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KQEAgLTExOTIsNyArMTE5NCw4IEBAIG1h
Y3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gcHJlcGFyZUZvclJl
Z3VsYXJDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorbWFjcm8gcHJlcGFyZUZvclJl
Z3VsYXJDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzdG9yZUNvZGVCbG9jaykKKyAg
ICBzdG9yZUNvZGVCbG9jayhDb2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gQ2FsbGVyRnJhbWVB
bmRQQ1NpemVbc3BdKQogZW5kCiAKIG1hY3JvIGludm9rZUZvclJlZ3VsYXJDYWxsKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBtYXliZU9sZENGUiwgY2FsbFB0clRhZykKQEAgLTEyMDgs
NyArMTIxMSw3IEBAIGVuZAogCiAjIHNwIHBvaW50cyB0byB0aGUgbmV3IGZyYW1lICsgQ2FsbGVy
RnJhbWVBbmRQQ1NpemUKICMgV2UgbGVhdmUgY2ZyIHRlbXA0IHRvIHVzZSBpdCBmb3IgdW50YWdn
aW5nLgotbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
KQorbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBz
dG9yZUNvZGVCbG9jaykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAKICAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwg
dGVtcDIKQEAgLTEyNjMsNiArMTI2Niw4IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1w
MSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEsIHNwCisK
KyAgICBzdG9yZUNvZGVCbG9jayhDb2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gUHJvbG9ndWVT
dGFja1BvaW50ZXJEZWx0YVtzcF0pCiBlbmQKIAogbWFjcm8gaW52b2tlRm9yVGFpbENhbGwob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFs
UmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1heWJlT2xkQ0ZSLCBjYWxsUHRyVGFnKQpAQCAt
MTMwMyw3ICsxMzA4LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUs
IG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8g
KGNhbGxlZSwgY2FsbGVlRnJhbWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRy
LCAuZG9udFVwZGF0ZVNQCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAg
ICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJl
Q2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykgZW5kKQogICAgICAgICAuZG9udFVw
ZGF0ZVNQOgogICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gsIGNhbGxlZSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQp
CkBAIC0xNDgyLDQ0ICsxNDg3LDYgQEAgbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoc2l6ZSwgaW5k
ZXgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRl
cih0YXJnZXRSZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQKLSAgICAgICAgbG9hZHAgQ2FsbGVl
W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAgICAgICBsb2FkcCBDYWxsZWUgKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZW5kCi0gICAgbG9hZHAgSlNG
dW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJl
Z2lzdGVyCi0gICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpy
YXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6
bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3Rhcmdl
dFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgRnVu
Y3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0
dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBsb2FkcCBDYWxs
ZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIENhbGxlZSAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0
UmVnaXN0ZXIKLSAgICBidHB6IHRhcmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpTRnVuY3Rpb246
OnJhcmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRh
OjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFy
Z2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBG
dW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
cih0YXJnZXRSZWdpc3RlcikKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0
ZXIKLWVuZAotCi1tYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikK
LSAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCi1lbmQKLQotbWFjcm8g
bm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCi0gICAgIyBOb3RoaW5n
IHRvIGRvIQotZW5kCi0KIG1hY3JvIGNvbnZlcnRDYWxsZWVUb1ZNKGNhbGxlZSkKICAgICBidHBu
eiBjYWxsZWUsIChjb25zdGV4cHIgUHJlY2lzZUFsbG9jYXRpb246OmhhbGZBbGlnbm1lbnQpLCAu
cHJlY2lzZUFsbG9jYXRpb24KICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgY2FsbGVlCkBAIC0x
NTMyLDcgKzE0OTksNyBAQCBlbmQKIAogIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRv
IGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCiAjIGlu
IHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KLW1hY3JvIHByb2xvZ3Vl
KGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93
UGF0aCkKK21hY3JvIHByb2xvZ3VlKG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICMg
U2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHBy
ZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogCkBAIC0xNTQxLDggKzE1MDgsNyBAQCBtYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNl
U2xvd1BhdGgpCiAgICAgICAgIGNhbGxTbG93UGF0aCh0cmFjZVNsb3dQYXRoKQogICAgICAgICBh
ZGRwIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLCBzcAogICAgIGVuZAotICAgIGNvZGVC
bG9ja0dldHRlcih0MSkKLSAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCiAgICAgaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQwCiAgICAgICAgIGJhZGRpcyA1
LCAoVW5saW5rZWRDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlciArIEJhc2VsaW5lRXhl
Y3V0aW9uQ291bnRlcjo6bV9jb3VudGVyKVt0MF0sIC5jb250aW51ZQpAQCAtMTU4Miw3ICsxNTQ4
LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9z
clNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRy
VGFnCiAgICAgICAgIGVuZAogICAgIC5yZWNvdmVyOgotICAgICAgICBub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlcih0MSkKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgLmNv
bnRpbnVlOgogICAgIGVuZAogCkBAIC0xNjIxLDcgKzE1ODcsNyBAQCBtYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1Bh
dGgpCiAuc3RhY2tIZWlnaHRPS0dldENvZGVCbG9jazoKICAgICAjIFN0YWNrIGNoZWNrIHNsb3cg
cGF0aCByZXR1cm5lZCB0aGF0IHRoZSBzdGFjayB3YXMgb2suCiAgICAgIyBTaW5jZSB0aGV5IHdl
cmUgY2xvYmJlcmVkLCBuZWVkIHRvIGdldCBDb2RlQmxvY2sgYW5kIG5ldyBzcAotICAgIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQog
ICAgIGdldEZyYW1lUmVnaXN0ZXJTaXplRm9yQ29kZUJsb2NrKHQxLCB0MCkKICAgICBzdWJwIGNm
ciwgdDAsIHQwCiAKQEAgLTIwMjQsMzkgKzE5OTAsMzkgQEAgbm9XaWRlKGxsaW50X29wX3dpZGUz
MikKIG5vV2lkZShsbGludF9vcF9lbnRlcikKIAogb3AobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwg
bWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9s
b2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
ciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90
cmFjZV9wcm9sb2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBvcChsbGludF9ldmFsX3By
b2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3Jf
Y2FsbCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Jbml0
aWFsaXphdGlvbigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAgICAgCiAKIG9wKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9w
cm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQogICAgIGRp
c3BhdGNoKDApCiBlbmQpCiAgICAgCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dl
dHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisg
ICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
LCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKICAgICBmdW5jdGlvbkFyaXR5Q2hl
Y2sobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNhbGxC
ZWdpbiwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVnaW46
CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQpAQCAtMjA2NCw3ICsyMDMwLDcgQEAgb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiBlbmQpCiAKIG9w
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9s
b2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywg
X2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkFyaXR5
Q2hlY2sobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9u
Rm9yQ29uc3RydWN0QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCkBA
IC0yNTI1LDcgKzI0OTEsNyBAQCBtYWNybyBsaW5rU2xvd1BhdGhGb3IoZnVuY3Rpb24pCiAgICAg
dW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgYnRweiByMSwgLmRvTm90VHJhc2gKICAgICBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDEpCi0gICAgcHJlcGFyZUZvclRhaWxDYWxsKHQx
LCB0MiwgdDMsIHQ0KQorICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0MSwgdDIsIHQzLCB0NCwgbWFj
cm8oYWRkcmVzcykgZW5kKQogICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0NAogLmRvTm90VHJhc2g6
CiAgICAgam1wIHQwLCBKU0VudHJ5UHRyVGFnCkBAIC0yNTM0LDcgKzI1MDAsNyBAQCBlbmQKICMg
NjRiaXQ6dDAgMzJiaXQodDAsdDEpIGlzIGNhbGxlZQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAj
IHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0Ci1tYWNybyB2aXJ0dWFsVGh1bmtGb3Iob2Zm
c2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIGludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lLCBw
cmVwYXJlQ2FsbCwgc2xvd0Nhc2UpCittYWNybyB2aXJ0dWFsVGh1bmtGb3Iob2Zmc2V0T2ZKSVRD
b2RlV2l0aEFyaXR5Q2hlY2ssIG9mZnNldE9mQ29kZUJsb2NrLCBpbnRlcm5hbEZ1bmN0aW9uVHJh
bXBvbGluZSwgcHJlcGFyZUNhbGwsIHNsb3dDYXNlKQogICAgIGFkZGkgMSwgQ2FsbExpbmtJbmZv
OjptX3Nsb3dQYXRoQ291bnRbdDJdCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGJ0cW56IHQw
LCBOb3RDZWxsTWFzaywgc2xvd0Nhc2UKQEAgLTI1NDIsMTQgKzI1MDgsMTggQEAgbWFjcm8gdmly
dHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1bmN0
aW9uVHJhbXBvbGluZSwKICAgICAgICAgYmluZXEgdDEsIENlbGxUYWcsIHNsb3dDYXNlCiAgICAg
ZW5kCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBKU0Z1bmN0aW9uVHlwZSwgLm5vdEpT
RnVuY3Rpb24KLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3Qw
XSwgdDEKLSAgICBidHB6IHQxLCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwg
LmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUg
LSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdDFdLCB0MQorICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdDBdLCB0NQorICAgIGJ0cHogdDUs
IChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCisgICAg
bG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5j
dGlvbjo6cmFyZURhdGFUYWcpKVt0NV0sIHQ1CiAuaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIG9m
ZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrW3QxXSwgdDEKLSAgICBidHB6IHQxLCBzbG93Q2Fz
ZQorICAgIGJ0cHogb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tbdDVdLCBzbG93Q2FzZQor
ICAgIGxvYWRwIG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrW3Q1XSwgdDEKKyAgICBtb3Zl
IDAsIHQwCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDVdLCBGdW5jdGlvbkV4ZWN1dGFibGVU
eXBlLCAuY2FsbENvZGUKKyAgICBsb2FkcCBvZmZzZXRPZkNvZGVCbG9ja1t0NV0sIHQwCiAuY2Fs
bENvZGU6CiAgICAgcHJlcGFyZUNhbGwodDUsIHQyLCB0MywgdDQpCisgICAgc3RvcmVwIHQwLCBD
b2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gUHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YVtzcF0K
ICAgICBqbXAgdDEsIEpTRW50cnlQdHJUYWcKIC5ub3RKU0Z1bmN0aW9uOgogICAgIGJibmVxIEpT
Q2VsbDo6bV90eXBlW3QwXSwgSW50ZXJuYWxGdW5jdGlvblR5cGUsIHNsb3dDYXNlCkBAIC0yNTY4
LDcgKzI1MzgsNyBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVy
J3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY2FsbF90cmFtcG9saW5lLCBtYWNy
byAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5l
LCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQorICAg
IHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCwgX2xsaW50X2lu
dGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVt
cDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKICAgICBsaW5rU2xvd1BhdGhG
b3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkKQEAgLTI1NzcsNyArMjU0Nyw3IEBAIGVuZCkK
ICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAog
b3AobGxpbnRfdmlydHVhbF9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0
dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUsIG1h
Y3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCisgICAgdmly
dHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJp
dHlDaGVjaywgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgX2xs
aW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEs
IHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgogICAgIGxp
bmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAtMjU4Niw5ICsyNTU2
LDkgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xv
YmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX3RhaWxfY2FsbF90cmFtcG9saW5lLCBtYWNybyAo
KQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBt
YWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgdmlydHVhbFRodW5rRm9yKEV4
ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2Fs
bF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCiAgICAgICAg
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKLSAgICAgICAgcHJlcGFyZUZv
clRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgICAgICBwcmVwYXJlRm9y
VGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIG1hY3JvKGFkZHJlc3MpIGVuZCkK
ICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXA0CiAgICAgZW5kLCAuc2xvd0Nhc2UpCiAu
c2xvd0Nhc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGFjZTg3MTE2NzJlNzAyMTZkMzlhNDhkZjE1
ZmQ2NmQ2YjU3YzQxMWUuLmFkMjUwMTdlZjBiNDdmYzBiMDUwNDc0N2RiNTc1YjkxNTAxOGFmZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMjU5LDcgKzIyNTksMTAgQEAgbWFjcm8gY2FsbEhlbHBl
cihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWEKIAogLm5vdFBvbHltb3JwaGljOgogICAgIGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNs
b3cKLSAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICBwcmVwYXJlQ2FsbCh0Miwg
dDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCisg
ICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgIGVuZCkKIAogLmdvUG9seW1vcnBoaWM6CiAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJ
Qy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKQEAgLTIzMzgsNyArMjM0MSwx
MCBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIGdldCwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogCiAgICAgICAgIC5ub3RQb2x5bW9ycGhpYzoK
ICAgICAgICAgICAgIGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cKLSAgICAgICAgICAgIHByZXBh
cmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0
NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQy
CisgICAgICAgICAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgICAgICAgICBlbmQpCiAK
ICAgICAgICAgLmdvUG9seW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVz
dGluYXRpb25bdDVdLCB0NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA1ZGU3YmNjN2ZkMGQ0ZjA0MGYyZGY5NGJk
NDczNDVkODM1ODY5NDQ3Li44Y2Q3ZGJlMmE0YTI1OTA2NDM2MWQzNmY1NmY4Y2IzZTQ5NTA5ZGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtMjQ4Myw3ICsyNDgzLDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bj
b2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhCiAKIC5ub3RQb2x5bW9ycGhpYzoKICAgICBicW5lcSB0MCwgdDEsIC5vcENhbGxTbG93Ci0g
ICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0
NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAg
ICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9t
b25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yNTYxLDcgKzI1NjQsMTAgQEAg
bWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAg
ICAgICAgICBicW5lcSB0MCwgdDEsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2Fs
bCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQx
LCBtYWNybyhhZGRyZXNzKQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAg
ICAgICAgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAg
ICAgIC5nb1BvbHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0
aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJB
c3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNt
CmluZGV4IDcxMzVmNGY2ZmMyMGNiMzllODViYWJjMWQxY2YxZWFiNThiNjJiZDYuLjI0YzE0YjNm
OGY2YjVmNDU1YmQwYTVhNzdjNTkzMmJlOWY2OGVlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIG1hY3JvIGNoZWNr
U3dpdGNoVG9KSVRGb3JQcm9sb2d1ZShjb2RlQmxvY2tSZWdpc3RlcikKICAgICAgICAgICAgICAg
ICBqbXAgd3MwLCBXYXNtRW50cnlQdHJUYWcKICAgICAgICAgICAgIGVuZAogICAgICAgICAucmVj
b3ZlcjoKLSAgICAgICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKGNvZGVCbG9ja1Jl
Z2lzdGVyKQorICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNvZGVCbG9ja1JlZ2lz
dGVyCiAgICAgICAgIGVuZCkKICAgICBlbmQKIGVuZApAQCAtMjgzLDcgKzI4Myw3IEBAIG1hY3Jv
IHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIHN1YnAgY2ZyLCB3czEsIHNwCiBl
bmQKIAotbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVy
LCBsb2FkV2FzbUluc3RhbmNlKQorbWFjcm8gd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2Up
CiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1Iu
CiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAgICAgcHJlc2VydmVDYWxsZWVTYXZlc1Vz
ZWRCeVdhc20oKQpAQCAtMjkzLDggKzI5Myw5IEBAIG1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKICAgICBsb2FkcCBX
YXNtOjpJbnN0YW5jZTo6bV9vd25lclt3YXNtSW5zdGFuY2VdLCB3czAKICAgICBzdG9yZXAgd3Mw
LCBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyXQogCi0gICAgY29kZUJsb2NrR2V0dGVyKHdzMCkKLSAg
ICBjb2RlQmxvY2tTZXR0ZXIod3MwKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB3czAKKyAgICBh
bmRwIH4zLCB3czAKKyAgICBzdG9yZXAgd3MwLCBDb2RlQmxvY2tbY2ZyXQogCiAgICAgIyBHZXQg
bmV3IHNwIGluIHdzMSBhbmQgY2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxvYWRpIFdhc206OkxM
SW50Q2FsbGVlOjptX251bUNhbGxlZUxvY2Fsc1t3czBdLCB3czEKQEAgLTUxNCw3ICs1MTUsNyBA
QCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCBtYWNybyAoKQogICAgICAgICBlcnJvcgogICAg
IGVuZAogCi0gICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlRnJvbVRMUykKKyAgICB3YXNtUHJvbG9ndWUo
bG9hZFdhc21JbnN0YW5jZUZyb21UTFMpCiAgICAgd2FzbU5leHRJbnN0cnVjdGlvbigpCiBlbmQp
CiAKQEAgLTUyMyw3ICs1MjQsNyBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3Rscywg
bWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNt
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbWFjcm8gKCkgZW5kKQor
ICAgIHdhc21Qcm9sb2d1ZShtYWNybyAoKSBlbmQpCiAgICAgd2FzbU5leHRJbnN0cnVjdGlvbigp
CiBlbmQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmgKaW5kZXggMzdlMGM1ZGI2MWFjYTY0MmU1ZWZkZjY4NjEyZjAyMzFjNDU4ZmZl
YS4uNDJiMGNhMDc0MmIzZjkyMTk0MTM2YzliNWIyNDg5NWFkNmU5YmQxOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTI4
OCwyMCArMjg4LDI1IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBv
ZmZzZXRPZlJhcmVEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0
YWJsZSwgbV9yYXJlRGF0YSk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRP
ZkFzU3RyaW5nSW5SYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSYXJlRGF0YSwg
bV9hc1N0cmluZyk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVC
bG9ja0ZvckNhbGwoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxl
LCBtX2NvZGVCbG9ja0ZvckNhbGwpOyB9CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zm
c2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVu
Y3Rpb25FeGVjdXRhYmxlLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7IH0KIAotcHJpdmF0ZToK
LSAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxl
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSW50
cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgCi0gICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSk7
Ci0KLSAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgor
ICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1f
Y29kZUJsb2NrRm9yQ2FsbCk7CisgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQog
CiAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOworCisgICAgICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQXNTdHJp
bmcoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNTdHJpbmcpOyB9CisK
ICAgICAgICAgUmVmUHRyPFR5cGVTZXQ+IG1fcmV0dXJuU3RhdGVtZW50VHlwZVNldDsKICAgICAg
ICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpA
QCAtMzE0LDYgKzMxOSwxNCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9h
c1N0cmluZzsKICAgICB9OwogCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBJbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKTsKKyAgICAKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKworICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRF
eGVjdXRhYmxlOworCiAgICAgUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCkKICAgICB7CiAgICAg
ICAgIGlmIChMSUtFTFkobV9yYXJlRGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2FzdC5oCmluZGV4IGE2OTkzMTU5MDk5Y2NjMWI3Mzk2YTk3YzU4ZmQ0ZWUzMWE1YzE4MmUuLjhk
YzJmMTc4MmUwYmNkNTQ3MjVlMjc3OWJiZmU2MGZlNzdjNjQ3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2FzdC5oCkBAIC04OSw2ICs4OSw3IEBAIHN0cnVjdCBKU1R5cGVSYW5n
ZSB7CiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0LCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUsIEpT
VHlwZTo6UmVnRXhwT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTV2ViQXNzZW1ibHlNb2R1bGUs
IEpTVHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxl
VHlwZSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50cywgSlNUeXBlOjpEaXJlY3RBcmd1bWVu
dHNUeXBlLCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUpIFwKKyAgICBtYWNybyhGdW5jdGlv
bkV4ZWN1dGFibGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgSlNUeXBlOjpGdW5j
dGlvbkV4ZWN1dGFibGVUeXBlKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzLCBKU1R5cGU6
OlNjb3BlZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6U2NvcGVkQXJndW1lbnRzVHlwZSkgXAogICAg
IG1hY3JvKENsb25lZEFyZ3VtZW50cywgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlLCBKU1R5
cGU6OkNsb25lZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhKU0dsb2JhbE9iamVjdCwgSlNU
eXBlOjpHbG9iYWxPYmplY3RUeXBlLCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzYmI0NThlZThlMzZkNmI0ZTI2NWZkYjlj
MTkzYTJlZGQyMmRlMDgyLi5hMjc5OGRkM2ViOWNmZTczMzZmMzYzZWZmNTczMjg4Y2I0ZGFlMWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03MTYsOSArNzE2LDE3IEBA
IE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRSZW1vdGVGdW5jdGlvbihib29sIGlzSlNGdW5jdGlv
bikKICAgICBhdXRvIGdldE9yQ3JlYXRlID0gWyZdIChXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+JiBz
bG90KSAtPiBOYXRpdmVFeGVjdXRhYmxlKiB7CiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWQgPSBz
bG90LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKKworICAgICAgICBJbnRyaW5z
aWMgaW50cmluc2ljID0gTm9JbnRyaW5zaWM7CisgICAgICAgIGlmICghc2xvd0Nhc2UpIHsKKyNp
ZiAhKE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpKQorICAgICAgICAgICAgaW50cmluc2ljID0g
UmVtb3RlRnVuY3Rpb25DYWxsSW50cmluc2ljOworI2VuZGlmCisgICAgICAgIH0KKwogICAgICAg
ICBOYXRpdmVFeGVjdXRhYmxlKiByZXN1bHQgPSBnZXRIb3N0RnVuY3Rpb24oCiAgICAgICAgICAg
ICBzbG93Q2FzZSA/IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyaWMgOiByZW1vdGVGdW5jdGlvbkNh
bGxGb3JKU0Z1bmN0aW9uLAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IFJl
bW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAgICAgICAgIGludHJpbnNpYywKICAgICAg
ICAgICAgIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLCBTdHJpbmcoKSk7
CiAgICAgICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KHJlc3VsdCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0
aW9ucy5jcHAKaW5kZXggYmI0NmY4YTgxMzJkMWVkNTVlMWMzNGFmNmEwMGYwZDI0OWZmMGZjMy4u
NTE0NjQ1NzJmMWNmMmVjMWYwY2FhZjU4ZGRiNzg0YWZjZmIzNjkwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtMTkyLDE0ICsxOTIsMTQg
QEAgc3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250
ZXh0JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICAvLyBwb3AoZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJh
bWVQb2ludGVyKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAxOwotICAgIHN0
YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkg
PT0gc2l6ZW9mKHZvaWQqKSAqIDEpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKICNlbGlmIENQVShBUk02NEUpIHx8
IENQVShBUk02NCkKICAgICAvLyBtb3ZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgLy8gcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1Jl
Z2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4o
KmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3RlcnM6OmxyKSA9IGJp
dHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2ludGVyICsgMSkpOwogICAgIGNvbnRl
eHQuc3AoKSA9IGZyYW1lUG9pbnRlciArIDI7Ci0gICAgc3RhdGljX2Fzc2VydChBc3NlbWJseUhl
bHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7
CisgICAgc3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9m
KHZvaWQqKSAqIDIpOwogI2lmIENQVShBUk02NEUpCiAgICAgLy8gTFIgbmVlZHMgdG8gYmUgdW50
YWdnZWQgc2luY2UgT1NSIGVudHJ5IGZ1bmN0aW9uIHByb2xvZ3VlIHdpbGwgdGFnIGl0IHdpdGgg
U1AuIFRoaXMgaXMgc2ltaWxhciB0byB0YWlsLWNhbGwuCiAgICAgY29udGV4dC5ncHIoQVJNNjRS
ZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KHVudGFnQ29kZVB0cldp
dGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKGNvbnRleHQuZ3ByPHZvaWQqPihBUk02NFJlZ2lzdGVy
czo6bHIpLCBjb250ZXh0LnNwKCkpKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBk
b09TUkVudHJ5KEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvYmU6OkNvbnRleHQmIGNvbnRleHQsIEJC
UUNhbGxlZSYgYwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIq
PigqZnJhbWVQb2ludGVyKTsKICAgICBjb250ZXh0LmdwcihSSVNDVjY0UmVnaXN0ZXJzOjpyYSkg
PSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEpKTsKICAgICBj
b250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1i
bHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAq
IDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNp
emVvZih2b2lkKikgKiAyKTsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJl
LgogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456642</attachid>
            <date>2022-04-04 15:37:02 -0700</date>
            <delta_ts>2022-04-04 18:39:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220404153701.patch</filename>
            <type>text/plain</type>
            <size>74798</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWIxYWJhYjQ3OTk1NWExYzIzM2FiMTJlMjMxNjRjODMwNTg3NmM1Li4xMmU1MGQ3M2Q2ODBmMDFi
NjJiOTQxMDAwOTIwNWFjNjAzMjIwOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAyMi0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFu
Z2VzIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgSlMgZnVuY3Rpb25zLiBOb3csIHdlIG5lZWQg
dG8gc3RvcmUgQ29kZUJsb2NrIHRvIHRoZSBzdGFjayBpbiB0aGUgY2FsbGVyIHNpZGUgaW5zdGVh
ZC4KKyAgICAgICAgVGhpcyBoZWxwcyB1bmxpbmtlZCBCYXNlbGluZSBhbmQgREZHIHNpbmNlIHdl
IG5vIGxvbmdlciBuZWVkIHRvIGxvYWQgQ29kZUJsb2NrIGZyb20gY2FsbGVlIHZpYSBjb3N0bHkg
ZGVwZW5kZW50IGxvYWRzOiB1bmxpbmtlZCBvbmVzCisgICAgICAgIGNhbm5vdCBlbWJlZCBDb2Rl
QmxvY2sgcmF3IHBvaW50ZXIgaW50byB0aGUgbWFjaGluZSBjb2RlIGl0c2VsZi4gU28gd2UgbmVl
ZGVkIHRvIGxvYWQgaXQgZnJvbSBjYWxsZWUuIEJ1dCBub3csIGNhbGxlciBwdXRzIHRoZSByaWdo
dAorICAgICAgICBDb2RlQmxvY2sgcG9pbnRlciBpbnRvIHRoZSBzdGFjayBzbyB3ZSBkbyBub3Qg
bmVlZCB0aGF0IGNvZGUuIEFuZCBpbiBtb3N0IGNhc2VzLCBjYWxsZXIgYWxyZWFkeSBrbm93cyBD
b2RlQmxvY2sgc2luY2UgaXQgaXMgdGllZCB0bworICAgICAgICBhY3R1YWxseSB1c2VkIG1hY2hp
bmUgY29kZSBwb2ludGVyLgorICAgICAgICBPU1IgZW50cnkgYWxzbyBtYXRlcmlhbGl6ZXMgQ29k
ZUJsb2NrIGluIHRoZSBzdGFjayBpbiB0aGUgT1NSIGVudHJ5IHNpZGUgaW5zdGVhZCBvZiBkb2lu
ZyBpdCBpbiB0aGUgY2FsbGVlIHNpZGUuCisKKyAgICAgICAgVGhpcyBjb250cmlidXRlcyB0byAw
LjMlIHByb2dyZXNzaW9uIGluIFNwZWVkb21ldGVyMi4KKworICAgICAgICAqIGFzc2VtYmxlci9D
UFUuaDoKKyAgICAgICAgKEpTQzo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZv
OjpzZXRNb25vbW9ycGhpY0NhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2xl
YXJDYWxsZWUpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnJldmVydENhbGxUb1N0dWIp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OnNldFN0dWIpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aCk6CisgICAgICAgIChK
U0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKToKKyAgICAg
ICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6b2Zmc2V0T2ZDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1JlcGF0Y2guY3Bw
OgorICAgICAgICAoSlNDOjpsaW5rTW9ub21vcnBoaWNDYWxsKToKKyAgICAgICAgKEpTQzo6bGlu
a0RpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxsKToKKyAgICAg
ICAgKiBieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9y
V2l0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRW50cnkpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUN1cnJlbnRCbG9jayk6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6b3NyRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2VyKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxv
Y2tCZWZvcmVDYWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjYWxsZWVGcmFt
ZUNvZGVCbG9ja0JlZm9yZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
Ojpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ0Nh
bGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cHJlcGFyZUZvclRhaWxD
YWxsU2xvdyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1
dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxU
aHVua0Zvcik6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6cmVtb3RlRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldFJlbW90ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6ZG9PU1JFbnRyeSk6CisKIDIwMjItMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBBU0NJSUxpdGVyYWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCmluZGV4IGIzYjdjZTU0ODNjZmU2ZDRh
OTM4ZjQwMDM2OTJiNzMzZGZjMTg0YzkuLmZiODhlNzQzOWMyNGYwMDU3ZDVhYTc1ZDljMmY3NGM5
MWFhOTFlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BV
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuaApAQCAtMTY4LDUg
KzE2OCwyMyBAQCBBTFdBWVNfSU5MSU5FIGludDY0X3QgaHdMM0NhY2hlU2l6ZSgpIHsgcmV0dXJu
IDA7IH0KIEFMV0FZU19JTkxJTkUgaW50MzJfdCBod1BoeXNpY2FsQ1BVTWF4KCkgeyByZXR1cm4g
a2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMoKTsgfQogI2VuZGlmCiAKK2NvbnN0
ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCit7CisjaWYgRU5BQkxFKENf
TE9PUCkKKyAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5k
IGxpbmtSZWdpc3RlcgorICAgIHJldHVybiAyICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyNlbGlm
IENQVShYODZfNjQpCisgICAgLy8gUHJvbG9ndWUgb25seSBzYXZlcyB0aGUgZnJhbWVQb2ludGVy
UmVnaXN0ZXIKKyAgICByZXR1cm4gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyNlbGlmIENQVShBUk1f
VEhVTUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoUklTQ1Y2NCkKKyAgICAv
LyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3Rl
cgorICAgIHJldHVybiAyICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyNlbHNlCisjZXJyb3IgdW5z
dXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcworI2VuZGlmCit9CisKKworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAppbmRleCAzNzE2ZjJhZjg1OWVkYTQxMWM4NTE0MTk2ZmRjZmM4ZmFjMTRlYWM3Li45Yzc1MzFj
ZDgxZTkwMDhhODBkY2ZlNjExZTY2OWQ3YzQxM2I3NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMTA4LDE3ICsxMDgsMTkgQEAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gQ2FsbExpbmtJbmZvOjpkb25lTG9j
YXRpb24oKQogICAgIHJldHVybiBtX2RvbmVMb2NhdGlvbjsKIH0KIAotdm9pZCBDYWxsTGlua0lu
Zm86OnNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3Qq
IGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCit2
b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBKU09iamVjdCogY2FsbGVlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IWlzRGlyZWN0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oY2FsbGVlKSAmIHBvbHltb3JwaGljQ2FsbGVlTWFzaykpOwogICAgIG1fY2FsbGVlT3JDb2Rl
QmxvY2suc2V0KHZtLCBvd25lciwgY2FsbGVlKTsKIAotICAgIGlmIChpc0RhdGFJQygpKQorICAg
IGlmIChpc0RhdGFJQygpKSB7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gY29kZUJs
b2NrOwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gY29k
ZVB0cjsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoc3RhdGljX2Nhc3Q8T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbyo+KHRoaXMpLT5tX2NhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNF
bnRyeVB0clRhZz4oY29kZVB0cikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBv
aW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgY29kZUJsb2NrKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24s
IGNhbGxlZSk7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTMwLDEwICsxMzIsMTIgQEAgdm9pZCBDYWxsTGlua0luZm86OmNsZWFyQ2FsbGVlKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgbV9jYWxsZWVPckNvZGVCbG9j
ay5jbGVhcigpOwotICAgIGlmIChpc0RhdGFJQygpKQorICAgIGlmIChpc0RhdGFJQygpKSB7Cisg
ICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5kYXRhSUMu
bV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7Ci0gICAgZWxzZSBpZiAoIWNs
ZWFyZWRCeUpldHRpc29uKCkpIHsKKyAgICB9IGVsc2UgaWYgKCFjbGVhcmVkQnlKZXR0aXNvbigp
KSB7CiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2lu
dGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiwgbnVs
bHB0cik7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
Mjk4LDkgKzMwMiwxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRvU3R1YigpCiAK
ICAgICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICBtX2NhbGxlZU9yQ29kZUJsb2NrLmNsZWFy
KCk7CisgICAgICAgIHUuZGF0YUlDLm1fY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgdS5k
YXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IG51bGxwdHI7CiAgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50
ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7CiAgICAgICAgIENDYWxs
SGVscGVyczo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KHUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24pLCBjYWxsZWVHUFIoKSwgbnVsbHB0cik7CiAjZWxz
ZQpAQCAtMzYzLDkgKzM2OSwxOCBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJ
bmZvOjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogCiAgICAgICAg
IGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKKwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6OnNlbGVjdFNjcmF0
Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZDb2RlQmxv
Y2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIs
IENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKKwog
ICAgICAgICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOyAvLyBQb2x5bW9ycGhpYyBzdHVi
IGhhbmRsZXMgdGFpbCBjYWxsIHN0YWNrIHByZXAuCiAgICAgICAgICAgICBqaXQuZmFySnVtcChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZk1vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQ0NhbGxIZWxwZXJzOjpzZWxlY3RTY3JhdGNo
R1BSKGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mQ29kZUJsb2Nr
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKKwogICAgICAg
ICAgICAgZ29Qb2x5bW9ycGhpYy5saW5rKCZqaXQpOwogICAgICAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0Nh
bGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAgIH0KQEAgLTM3NCwxNSAr
Mzg5LDIwIEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0
UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luCiAgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGNhbGxlZUdQ
UiwgY2FsbGVlQ2hlY2ssIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSkpOwog
CiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsOworICAgICAgICBDQ2FsbEhlbHBlcnM6
OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tTdG9yZTsKICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsK
ICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAgICAgICAgY29kZUJsb2Nr
U3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFpbENh
bGwoKSk7CiAgICAgICAgICAgICBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwotICAgICAgICB9
IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvZGVCbG9ja1N0b3JlID0gaml0
LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwg
Q0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CiAgICAgICAg
ICAgICBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBSRUxFQVNF
X0FTU0VSVChjYWxsTGlua0luZm8pOwogICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKS0+bV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxvY2tTdG9yZSk7CiAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY2FsbGVlQ2hlY2spOwogICAgICAgICB9KTsKICAg
ICB9CkBAIC00MTEsOCArNDMxLDEwIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRTdHViKFJlZjxQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHViKQogCiAgICAgaWYgKGlzRGF0YUlD
KCkpIHsKICAgICAgICAgKmJpdHdpc2VfY2FzdDx1aW50cHRyX3QqPihtX2NhbGxlZU9yQ29kZUJs
b2NrLnNsb3QoKSkgPSBwb2x5bW9ycGhpY0NhbGxlZU1hc2s7CisgICAgICAgIHUuZGF0YUlDLm1f
Y29kZUJsb2NrID0gbnVsbHB0cjsgLy8gUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgd2lsbCBz
ZXQgQ29kZUJsb2NrIGluc2lkZSBpdC4KICAgICAgICAgdS5kYXRhSUMubV9tb25vbW9ycGhpY0Nh
bGxEZXN0aW5hdGlvbiA9IG1fc3R1Yi0+Y29kZSgpLmNvZGUoKS5yZXRhZ2dlZDxKU0VudHJ5UHRy
VGFnPigpOwogICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9p
bnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcih1LmNvZGVJQy5tX2NhbGxlZUxv
Y2F0aW9uKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0dWItPmNvZGUoKS5jb2RlKCkpKTsKQEAgLTQ3Niw5ICs0OTgsMTEgQEAgdm9pZCBP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQpCiAKICAgICBBU1NFUlQoVXNlRGF0YUlDOjpObyA9PSB0aGlzLT51c2VEYXRhSUMoKSk7CiAK
KyAgICBhdXRvIGNvZGVCbG9ja1N0b3JlID0gaml0LnN0b3JlUHRyV2l0aFBhdGNoKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNv
ZGVCbG9ja0JlZm9yZUNhbGwoKSk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAg
ICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewog
ICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpT
SW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0
aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0
b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlzXSAoTGlua0J1ZmZl
ciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKQEAgLTUwMSw5ICs1MjUsMTEg
QEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCwgU2NvcGUKICAgICBqaXQuZW1pdE5vcHMoQ0NhbGxIZWxwZXJz
OjpwYXRjaGFibGVKdW1wU2l6ZSgpKTsKIAogICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAg
IGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJs
b2NrQmVmb3JlVGFpbENhbGwoKSk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgp
OwogICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKICAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2Fs
bDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgdS5jb2RlSUMubV9jb2RlQmxvY2tM
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjb2RlQmxv
Y2tTdG9yZSk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtC
dWZmZXImKSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CkBAIC01MTQsNiArNTQw
LDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEaXJlY3QoKSk7CiAgICAgQVNTRVJUKG1fY2FsbExv
Y2F0aW9uKTsKKyAgICBBU1NFUlQodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbik7CiAgICAg
aWYgKGlzVGFpbENhbGwoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChmYXN0UGF0aFN0YXJ0
KCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0
KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKQEAgLTUyNiw3ICs1NTMsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86Omlu
aXRpYWxpemVEaXJlY3RDYWxsKCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFy
Q2FsbChtX2NhbGxMb2NhdGlvbiwgc2xvd1BhdGhTdGFydCgpKTsKIH0KIAotdm9pZCBPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpT
RW50cnlQdHJUYWc+IHRhcmdldCkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGly
ZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uTGFiZWw8SlNF
bnRyeVB0clRhZz4gdGFyZ2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwog
CkBAIC01NDAsNiArNTY3LDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJl
Y3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWcKICAgICB9CiAKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCB0YXJnZXQp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9j
a0xvY2F0aW9uLCBjb2RlQmxvY2spOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCBmYjIwZTQ3ODE0NzkzNTIxNzUwNDM0
NDViMjk3NzMxYjk3MTI5ODY3Li4zOTIwODZhMDhkMWI3YTZlMjY3MWZjNTIyYTNmOWNlZmZkMTY1
MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
CkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJh
d1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbigpOwogCi0gICAgdm9pZCBzZXRNb25vbW9ycGhp
Y0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYs
IEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlv
bihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgY2xlYXJD
YWxsZWUoKTsKICAgICBKU09iamVjdCogY2FsbGVlKCk7CkBAIC0zMTcsNiArMzE3LDExIEBAIGNs
YXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJ
bmZvPiB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExpbmtJbmZvLCBtX2Nh
bGxlZU9yQ29kZUJsb2NrKTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
Q29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbExp
bmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRPRihVbmlvblR5cGUsIGRhdGFJQy5tX2NvZGVCbG9j
ayk7CisgICAgfQorCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2Fs
bExpbmtJbmZvLCB1KSArIE9CSkVDVF9PRkZTRVRPRihVbmlvblR5cGUsIGRhdGFJQy5tX21vbm9t
b3JwaGljQ2FsbERlc3RpbmF0aW9uKTsKQEAgLTQwMSwxNCArNDA2LDE2IEBAIGNsYXNzIENhbGxM
aW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fc2xvd1BhdGhDYWxsRGVz
dGluYXRpb247CiAgICAgdW5pb24gVW5pb25UeXBlIHsKICAgICAgICAgVW5pb25UeXBlKCkKLSAg
ICAgICAgICAgIDogZGF0YUlDIHsgbnVsbHB0ciB9CisgICAgICAgICAgICA6IGRhdGFJQyB7IG51
bGxwdHIsIG51bGxwdHIgfQogICAgICAgICB7IH0KIAogICAgICAgICBzdHJ1Y3QgRGF0YUlDIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7IC8vIFRoaXMgaXMgd2Vla2x5IGhl
bGQuIEFuZCBjbGVhcmVkIHdoZW5ldmVyIG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gaXMg
Y2hhbmdlZC4KICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBtX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uOwogICAgICAgICB9IGRhdGFJQzsKIAogICAg
ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50
ZXJuYWxQdHJUYWc+IG1fY29kZUJsb2NrTG9jYXRpb247CiAgICAgICAgICAgICBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jYWxsZWVMb2NhdGlvbjsKICAgICAg
ICAgfSBjb2RlSUM7CiAgICAgfSB1OwpAQCAtNTAzLDcgKzUxMCw3IEBAIGNsYXNzIE9wdGltaXpp
bmdDYWxsTGlua0luZm8gZmluYWwgOiBwdWJsaWMgQ2FsbExpbmtJbmZvIHsKICAgICB2b2lkIGVt
aXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmKTsKICAgICB2b2lkIGVtaXREaXJlY3RUYWls
Q2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFy
ZUZvclRhaWxDYWxsKTsKICAgICB2b2lkIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7Ci0gICAgdm9p
ZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KTsK
KyAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNFbnRyeVB0clRhZz4pOwogICAgIHZvaWQgZW1pdFNsb3dQYXRoKFZNJiwgQ0NhbGxIZWxw
ZXJzJik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1pdEZhc3RQYXRoKENDYWxs
SGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIFdBUk5f
VU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNw
cAppbmRleCBlOTc2MGNjYzhlZTQwNTI2NmNmZjRhMGEzMDRkMjlhMTU4YWM4NDE2Li4xZmM4MDRh
NzljMzBkYmNmNWMwZWYxNzM1ZjQ0NjM0OWVkZDM4MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBsaW5rTW9u
b21vcnBoaWNDYWxsKAogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5r
SW5mby5pc0xpbmtlZCgpKTsKLSAgICBjYWxsTGlua0luZm8uc2V0TW9ub21vcnBoaWNDYWxsZWUo
dm0sIG93bmVyLCBjYWxsZWUsIGNvZGVQdHIpOworICAgIGNhbGxMaW5rSW5mby5zZXRNb25vbW9y
cGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY2FsbGVlQ29kZUJsb2NrLCBjb2RlUHRyKTsK
ICAgICBjYWxsTGlua0luZm8uc2V0TGFzdFNlZW5DYWxsZWUodm0sIG93bmVyLCBjYWxsZWUpOwog
CiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQpAQCAt
MTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBsaW5rRGlyZWN0Q2FsbCgKICAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtp
bmcgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5rSW5m
by5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIHBvaW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayksICIs
IGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwgIlxuIik7CiAKLSAgICBjYWxsTGlua0luZm8uc2V0
RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRy
KSk7CisgICAgY2FsbExpbmtJbmZvLnNldERpcmVjdENhbGxUYXJnZXQoanNDYXN0PEZ1bmN0aW9u
Q29kZUJsb2NrKj4oY2FsbGVlQ29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0
clRhZz4oY29kZVB0cikpOwogCiAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykKICAgICAgICAgY2Fs
bGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxGcmFtZSwgJmNhbGxMaW5rSW5mbyk7
CkBAIC0xNzg3LDcgKzE3ODcsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgIHdoaWxl
IChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewogICAgICAgICBzaXplX3QgY2FzZUlu
ZGV4ID0gYmluYXJ5U3dpdGNoLmNhc2VJbmRleCgpOwogICAgICAgICAKLSAgICAgICAgQ2FsbFZh
cmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAg
UG9seW1vcnBoaWNDYWxsQ2FzZSYgY2FsbENhc2UgPSBjYWxsQ2FzZXNbY2FzZUluZGV4XTsKKyAg
ICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlLnZhcmlhbnQoKTsKICAgICAgICAg
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyOwog
ICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsKQEAgLTE4MTAsMTQgKzE4MTEsMjMg
QEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgYm9vbCBuZWVkc0RvbmVKdW1wID0g
ZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZVNodWZmbGVyKSB7CiAgICAgICAgICAgICBDYWxsRnJh
bWVTaHVmZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdCgpKS5wcmVwYXJlRm9y
VGFpbENhbGwoKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAg
ICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihj
YWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tC
ZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9IHN0
dWJKaXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbExpbmtJbmZvLmlz
VGFpbENhbGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93
KCk7CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAg
ICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2Uu
Y29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFp
bENhbGwoKSk7CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5l
YXJUYWlsQ2FsbCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGlzRGF0YUlD
KQorICAgICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKTsKKyAgICAg
ICAgICAgIGlmIChpc0RhdGFJQykgeworICAgICAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2Rl
QmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OmNh
bGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFpbENhbGwoKSk7CiAgICAgICAgICAgICAgICAgY2Fs
bHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKLSAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbENh
c2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxw
ZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CiAgICAgICAgICAgICAgICAg
Y2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOwogICAgICAgICAgICAg
ICAgIG5lZWRzRG9uZUp1bXAgPSB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMuaAppbmRleCA1MTcxYmMxMjQwMDUy
YzNjY2NkNmU2ZmFmNDY4MjUzMzdlZTNlNzg5Li45NThkN2ZiOGIzYjM3NzEwNDcwNzE4YjM5NDgy
YmIzMDViNzBmOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVwYXRjaElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVw
YXRjaElubGluZXMuaApAQCAtMTk1LDggKzE5NSw4IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhS
ZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
CiAKICAgICBEZWZlclRyYXBzIGRlZmVyVHJhcHModm0pOyAvLyBXZSBjYW4ndCBqZXR0aXNvbiBp
ZiB3ZSdyZSBnb2luZyB0byBjYWxsIHRoaXMgQ29kZUJsb2NrLgogCi0gICAgaWYgKFVOTElLRUxZ
KCFleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpOworICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24o
KSkgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBhdXRvIGhh
bmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgpIHsKICAgICAgICAgICAgIHZvaWQqIHRocm93VGFy
Z2V0ID0gdm0uZ2V0Q1RJVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CkBAIC0yMTIsNiArMjEyLDcgQEAgQUxXQVlTX0lOTElORSBTbG93
UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2IKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1
bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Ns
b3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGhhbmRsZVRocm93
RXhjZXB0aW9uKCkpOwogICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAg
IHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZDVlYTlkNjc1OTc1
NWEzOTRkNmY1NWVkN2Q3MjZhZmZlYWY3NmExZC4uZDg1ZTA2NTExNThiYzI0YjU2ZWZlZDE4MjA2
MzkwZWExMjhmMWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlRodW5r
R2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAgLTExMCw3ICsxMTEsMTQgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBi
ZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRo
aXMgaW4KICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRv
IGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChtX2dyYXBoLm1fcGxhbi5jb2Rl
QmxvY2soKS0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAgICAgICAgcHJvYmVEZWJ1
ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOwor
ICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAppbmRleCAxMTMyY2YwZDlmNjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3
Li40YzhmMmVlZGVmYWNiNTI1ZmMyOGM4MmEyM2M3ZTM2ZWM3Nzg0YjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMzM0LDkgKzMzNCw5IEBAIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAg
IC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2RlIGJsb2NrLgot
ICAgIAorCiAgICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrICsgMSkpID0gY29kZUJsb2NrOwogICAgIAogICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICIs
IFJhd1BvaW50ZXIoc2NyYXRjaCkpOwpAQCAtNDA4LDYgKzQwOCwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gcHJlcGFyZUNhdGNoT1NSRW50cnkoVk0m
IHZtLCBDYWxsRgogCiAgICAgLy8gVGhlIGFjdGl2ZSBsZW5ndGggb2YgY2F0Y2hPU1JFbnRyeUJ1
ZmZlciB3aWxsIGJlIHplcm9lZCBieSBDbGVhckNhdGNoTG9jYWxzIG5vZGUuCiAgICAgZGZnQ29t
bW9uLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUp
ICogaW5kZXgpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UncmUgY29tbWl0dGVkIHRvIHRy
aWdnZXJpbmcgYW4gT1NSIGVudHJ5IGltbWVkaWF0ZWx5IGFmdGVyIHdlIHJldHVybi4gSGVuY2Us
IGl0IGlzIHNhZmUgdG8gbW9kaWZ5IHN0YWNrIGhlcmUuCisgICAgY2FsbEZyYW1lLT5zZXRDb2Rl
QmxvY2sob3B0aW1pemVkQ29kZUJsb2NrKTsKKwogICAgIHJldHVybiBjYXRjaEVudHJ5cG9pbnQt
Pm1hY2hpbmVDb2RlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDU1ZWY3NjE1NGQyMDUxYjIyYzllZGQ3ODc2OTVkNTU2Yzgx
NTJkNzYuLjE0NzZiNGU4Mzg0YjM3ZmY5YmRhNDczM2Y1MTE4ZmVhZjFiN2M1MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMjE3
LDcgKzIyMTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkK
ICAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQu
Z3JhcGgoKS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKICAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5l
bWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayk7CisgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSByZXBs
YWNlZCBpbiBPU1IgZW50cnkuCiAgICAgfQogCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhW
YXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKQEAgLTExMjk4LDcgKzExMjk4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkKIAogICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3ByKCkpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgcmVzdWx0LmdwcigpKSk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZBc1N0cmluZ0lu
UmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGE6
Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgSklUQ29tcGlsZXI6Okp1
bXAgY29udGludWF0aW9uID0gbV9qaXQuanVtcCgpOwogCiAgICAgaXNOYXRpdmVFeGVjdXRhYmxl
LmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRl
eCA0NGE5YTFhOThmMjc5NGEyNzAyMjljNmQ3MmMxYjkzNjA1NTA4Yzg5Li5jYzZjMDUyMzFkNzMz
OTk4ZDliODA0NDVhMjE4MzI4ZDNkY2JiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1
ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTE0OCw2ICsxNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5uZWdQdHIoR1BSSW5mbzo6
cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
OjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIAorICAgIC8vIENvcHlpbmcgbG9jYWxzIGFuZCBoZWFk
ZXIgZnJvbSBzY3JhdGNoIGJ1ZmZlciB0byB0aGUgbmV3IENhbGxGcmFtZS4gVGhpcyBhbHNvIHJl
cGxhY2VzCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAg
ICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJl
Z1QxKTsKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CkBA
IC0xNjAsNiArMTYyLDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
b3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihE
RkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBvay5saW5rKCZq
aXQpOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1ZyhbXShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRp
ZgorCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNr
UmVnaXN0ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggYWIxZjViODY3NTlkMDU1NjlkMzhjMDQ4ZGNj
ODNhYTdmZDVmYjBlYy4uZmUyOWRkMmJlN2MyNTNlNTFhODQzYWYyOTdkODUxYmE5ZjQ0NTZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKQEAgLTc4LDcgKzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFy
Z3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9u
RXhlY3V0YWJsZV9yYXJlRGF0YSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRh
KCkpIFwKLSAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSBcCisgICAgbWFj
cm8oRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGFfYXNTdHJpbmcsIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6UmFyZURhdGE6Om9mZnNldE9mQXNTdHJpbmcoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFy
ZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNl
dE9mQWxsb2NhdG9yKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBc
CiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9wcm90b3R5cGUsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZQcm90b3R5cGUoKSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAKaW5kZXggMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJk
M2I4Y2Y2OC4uM2VmNGFhNDhmZmU0YzY4NzZkYzQ5YzNjMTRiOTA2NWFlZmUyZDVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZm
ZXI7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoCi0gICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0
aWNfY2FzdDxpbnQzMl90PihBc3NlbWJseUhlbHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVs
dGEoKSkpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CiAgICAgCiAg
ICAgc3dpdGNoIChncmFwaC5tX3BsYW4ubW9kZSgpKSB7CiAgICAgY2FzZSBKSVRDb21waWxhdGlv
bk1vZGU6OkZUTDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IGIxZTAzNjkxNDEwYjgyN2IwYzBlZDRkMGZlYzI3ZDg3NTU5YzU5NDQuLjRk
NjIyNDgxZDk0OWQ3MTJhOTkwOWFhMDAzMDc2MmIxMzEwY2JiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE5OCwxNSArMTk4LDE0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgewogICAgICAgICAgICAgbV9wcm9jLnNl
dE51bUVudHJ5cG9pbnRzKG1fZ3JhcGgubV9udW1iZXJPZkVudHJ5cG9pbnRzKTsKLSAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5tX2NvZGVCbG9jazsKIAogICAgICAg
ICAgICAgUmVmPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yPiBjYXRjaFByb2xvZ3VlR2VuZXJh
dG9yID0gY3JlYXRlU2hhcmVkVGFzazxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9u
PigKLSAgICAgICAgICAgICAgICBbY29kZUJsb2NrXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpB
aXI6OkNvZGUmIGNvZGUpIHsKKyAgICAgICAgICAgICAgICBbXShDQ2FsbEhlbHBlcnMmIGppdCwg
QjM6OkFpcjo6Q29kZSYgY29kZSkgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRTYXZlKGNvZGUuY2FsbGVl
U2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQuZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jaykpOworICAgICAgICAgICAgICAgICAgICAvLyBDb2RlQmxvY2sgaW4g
dGhlIHN0YWNrIGlzIGFscmVhZHkgcmVwbGFjZWQgaW4gRlRMOjpwcmVwYXJlT1NSRW50cnkuCiAg
ICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2F0Y2hFbnRy
eXBvaW50SW5kZXggOiBtX2dyYXBoLm1fZW50cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5k
ZXgua2V5cygpKSB7CkBAIC0yNzIsOSArMjcxLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOwogICAgICAg
ICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAg
Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBw
b2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCi0gICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQg
dG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNv
bnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSkpOworICAgICAgICAv
LyBXaGVuIHJ1bm5pbmcgRlRMIGNvZGUsIHdlIGFscmVhZHkgc3RvcmUgQ29kZUJsb2NrIHRvIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jay4KKyAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ29kZSA9IG1f
Z3JhcGgubV9wbGFuLmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZTsKKyAg
ICAgICAgVU5VU0VEX1ZBUklBQkxFKGlzRnVuY3Rpb25Db2RlKTsKIAogICAgICAgICAvLyBTdGFj
ayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3Jh
cGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAg
LTI5Myw2ICsyOTIsMTUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBmdGxGcmFtZVNpemUgPSBwYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpOwogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG1heEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGV4aXRGcmFtZVNpemUs
IGZ0bEZyYW1lU2l6ZSk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgICAgIGlm
IChpc0Z1bmN0aW9uQ29kZSkgeworICAgICAgICAgICAgICAgICAgICBqaXQucHJvYmVEZWJ1Zyhb
PV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRUeXBlOjpGVExKSVQpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9CisjZW5kaWYKKwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OwogICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVT
aXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CmluZGV4IDQxOWVmYjM2YTQwOTVkYmUxYzhhMjA0NjEyNWU4YzVjNzgyZjMzMGQuLmI0ZmNiYWNm
YzBlMjI2ZjdjNjM0N2Y1ODliMWE4ZDM0MTRiY2ZjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWJzdHJhY3RQQy5oIgorI2luY2x1ZGUgIkNQVS5oIgogI2luY2x1
ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNp
bmNsdWRlICJSZWdpc3Rlci5oIgpAQCAtMTA0LDYgKzEwNSw0MSBAQCBuYW1lc3BhY2UgSlNDICB7
CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpemVJblJlZ2lzdGVycyA9IDIgKiBzaXpl
b2YoQ1BVUmVnaXN0ZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICB9OwogICAgIHN0YXRpY19h
c3NlcnQoQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzID09IHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSAvIHNpemVvZihSZWdpc3RlciksICJDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5S
ZWdpc3RlcnMgaXMgaW5jb3JyZWN0LiIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpID49IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSk7CisjaWYgIUNQVShY
ODZfNjQpCisgICAgLy8gT25seSB4ODZfNjQgImNhbGwiIHB1c2hlcyByZXR1cm4gYWRkcmVzcyBv
biB0aGUgc3RhY2suIE90aGVyIGFyY2hpdGVjdHVyZSBwdXNoZXMgaW4gdGhlIGZ1bmN0aW9uIHBy
b2xvZ3VlIGFmdGVyIHRoZSBjYWxsLgorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpID09IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSk7CisjZW5kaWYKKworICAg
IC8vICAgICAgTGF5b3V0IG9mIENhbGxGcmFtZQorICAgIC8vCisgICAgLy8gICB8ICAgICAgICAg
IC4uLi4uLiAgICAgICAgICAgIHwgICB8CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgICB8CisgICAgLy8gICB8ICAgICAgICAgICBhcmdOICAgICAgICAgICAgIHwgICB2
ICBsb3dlciBhZGRyZXNzCisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
KyAgICAvLyAgIHwgICAgICAgICAgIGFyZzEgICAgICAgICAgICAgfAorICAgIC8vICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgICAgICBhcmcwICAgICAg
ICAgICAgIHwKKyAgICAvLyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIC8v
ICAgfCAgICAgICAgICAgdGhpcyAgICAgICAgICAgICB8CisgICAgLy8gICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
fAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICB8ICAg
ICAgICAgIGNhbGxlZSAgICAgICAgICAgIHwKKyAgICAvLyAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgIC8vICAgfCAgICAgICAgY29kZUJsb2NrICAgICAgICAgICB8CisgICAg
Ly8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgICAgICByZXR1
cm4tYWRkcmVzcyAgICAgICAgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgLy8gICB8ICAgICAgIGNhbGxlckZyYW1lICAgICAgICAgIHwKKyAgICAvLyAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgPC0gY2FsbGVlJ3MgY2ZyIGlzIHBvaW50aW5n
IHRoaXMgYWRkcmVzcworICAgIC8vICAgfCAgICAgICAgICBsb2NhbDAgICAgICAgICAgICB8Cisg
ICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgICAgICAg
ICAgbG9jYWwxICAgICAgICAgICAgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCisgICAgLy8gICB8ICAgICAgICAgIGxvY2FsTiAgICAgICAgICAgIHwKKyAgICAvLyAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIC8vICAgfCAgICAgICAgICAuLi4u
Li4gICAgICAgICAgICB8CiAKICAgICBlbnVtIGNsYXNzIENhbGxGcmFtZVNsb3QgewogICAgICAg
ICBjb2RlQmxvY2sgPSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyN2RkNTk3OTBiNzFm
OThhMjE3YjEyNTg3NzY3NzE2NWFjNjhlZTBjLi5lN2FkNDVmMzliZTk5ODcwYWE4YzQwYzllOGUz
OGM0YjA2ZTRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTQwNiwxMiArNDA2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAg
ICAgLy8gUHJvbG9ndWUgb25seSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIKLSAgICAg
ICAgcmV0dXJuIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpCiAgICAgewogICAgICAgICBwdXNoKGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKQEAg
LTQ3NywxMiArNDcxLDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8
IENQVShBUk02NCkKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9p
bnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBv
aW50ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCi0gICAgICAgIHJldHVybiAyICogc2l6ZW9m
KHZvaWQqKTsKLSAgICB9Ci0KICAgICB2b2lkIGVtaXRGdW5jdGlvblByb2xvZ3VlKCkKICAgICB7
CiAgICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKQEAgLTUyOCwxMiArNTE2LDYgQEAgY2xhc3Mg
QXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogCiAjaWYg
Q1BVKE1JUFMpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIgYW5kIHJldHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAq
IHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
CiAgICAgewogICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRk
cmVzc1JlZ2lzdGVyKTsKQEAgLTU2OCwxMiArNTUwLDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJz
IDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogCiAjaWYgQ1BVKFJJU0NWNjQpCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCi0g
ICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIg
YW5kIHJldHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVvZih2b2lk
Kik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAg
ICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKQEAgLTEy
ODEsNiArMTI1NywxNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVTbG90KFZpcnR1YWxSZWdpc3Rlcigw
KSkud2l0aE9mZnNldChDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpOwogICAgIH0KIAor
ICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpCisgICAg
eworICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spOworICAgIH0KKworICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1lQ29kZUJs
b2NrQmVmb3JlVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN0YWNrUG9pbnRlclJl
Z2lzdGVyIHN0YXRlIGlzICJhZnRlciB0aGUgY2FsbCwgYnV0IGJlZm9yZSB0aGUgZnVuY3Rpb24g
cHJvbG9ndWUiLgorICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spLndpdGhPZmZzZXQoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC0g
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKTsKKyAgICB9CisKICAgICBzdGF0aWMgR1BSUmVn
IHNlbGVjdFNjcmF0Y2hHUFIoUmVnaXN0ZXJTZXQgcHJlc2VydmVkKQogICAgIHsKICAgICAgICAg
R1BSUmVnIHJlZ2lzdGVyc1tdID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKaW5kZXggMjliMDJhZjlmMTgwNThhM2M0Njk5ZDZkMTExOTFmOThkOWE5ZmMzNS4uYjRi
OWMzYzBhMWZhNmYyMzdmY2NhMDRiMmE4NzdiZjIzNGU2YWE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC03NDQsMTEgKzc0NCwxOSBAQCBjbGFzcyBDQ2Fs
bEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgZmFySnVtcChHUFJJ
bmZvOjpyZWdUMSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CiAgICAgfQogCi0gICAgdm9pZCBw
cmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUlJlZyBwcmVzZXJ2ZWRHUFIgPSBJbnZhbGlkR1BSUmVn
KQorICAgIHZvaWQgcHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJSZWcgcHJlc2VydmVkR1BSMSA9
IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZWRHUFIyID0gSW52YWxpZEdQUlJlZykKICAg
ICB7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMSA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdU
MCA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIEdQUlJlZyB0ZW1w
MiA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMSA/IEdQUkluZm86OnJlZ1QzIDogR1BS
SW5mbzo6cmVnVDE7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMyA9IHByZXNlcnZlZEdQUiA9PSBHUFJJ
bmZvOjpyZWdUMiA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDI7CisgICAgICAgIFJl
Z2lzdGVyU2V0IHByZXNlcnZlZDsKKyAgICAgICAgaWYgKHByZXNlcnZlZEdQUjEgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIHByZXNlcnZlZC5hZGQocHJlc2VydmVkR1BSMSk7CisgICAg
ICAgIGlmIChwcmVzZXJ2ZWRHUFIyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBwcmVz
ZXJ2ZWQuYWRkKHByZXNlcnZlZEdQUjIpOworCisgICAgICAgIEdQUlJlZyB0ZW1wMSA9IHNlbGVj
dFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMSk7Cisg
ICAgICAgIEdQUlJlZyB0ZW1wMiA9IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAgICAg
ICAgcHJlc2VydmVkLmFkZCh0ZW1wMik7CisgICAgICAgIEdQUlJlZyB0ZW1wMyA9IHNlbGVjdFNj
cmF0Y2hHUFIocHJlc2VydmVkKTsKIAogICAgICAgICBHUFJSZWcgbmV3RnJhbWVQb2ludGVyID0g
dGVtcDE7CiAgICAgICAgIEdQUlJlZyBuZXdGcmFtZVNpemVHUFIgPSB0ZW1wMjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCBlZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0NjcwOTAw
ZThiZTliLi44Njc1MWRiMWVhYzJmZGU2Mjc4NjBkNzYwYTU5ZDUzZWI1NGM2NjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDMsMjggKzIwMyw2IEBAIHZvaWQgSklUOjplbWl0
U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQ
YXRoRnVuY3RpCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRQ
dXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQotewotICAgIFJFTEVB
U0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2Rl
KTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxs
ZWUsIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhhc0V4ZWN1
dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVz
dWx0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246
OnJhcmVEYXRhVGFnKSwgcmVzdWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7Ci0g
ICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9j
a0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxs
KCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHByb2JlRGVi
dWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0g
ICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MSwxMCArNzI5LDggQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFi
ZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAgICAgIFN0
cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAgIHNpemVN
YXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7Ci0g
ICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlz
dGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5t
YXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJlbCBlbnRy
eUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2NSw4ICs3NDEsMTgg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRp
b25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAg
ICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9
PSBGdW5jdGlvbkNvZGUpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIHByb2JlRGVidWco
Wz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYg
KGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQb2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigp
KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBMYWJlbCBiZWdpbkxh
YmVsKHRoaXMpOwogCkBAIC04MjksNyArODE1LDE3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlu
a1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAg
bV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1
bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgcHJvYmVEZWJ1ZyhbPV0o
UHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29k
ZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4LmZwPENhbGxGcmFtZSo+KCkpKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJlZ1QwKTsKICAgICAgICAgc3RvcmU4
KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNob3Vs
ZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3YjJhMWM0ZjU0NDFlY2FmMmZjMjhm
Li5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4NmY1YjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklE
KTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xv
Z3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVj
ayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9u
Q2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGY4MWRkZjI1Nzg0MjRjOGY5ZWFhNDhjMzFkNTU4ZTVj
MWVlMzQzYTYuLmViMzgzNzBjYjkxNjI4ODVhMTk3N2YxN2JmMzliN2Y1ZDcwZTk0OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVG
b3JDYWxsZXIsIEVuY29kZWRKU1ZhbHVlLCAoSlNSCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0V3JhcHBlZFZhbHVlKGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSkpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRD
b2RlLCB2b2lkKiwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxlZSkpCiB7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJn
ZXRDb2RlLCB2b2lkKiwgKEoKICAgICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBp
dHMgYXJpdHkgZW50cnlwb2ludC4KICAgICB7CiAgICAgICAgIERlZmVyVHJhcHMgZGVmZXJUcmFw
cyh2bSk7IC8vIFdlIGNhbid0IGpldHRpc29uIGFueSBjb2RlIHVudGlsIGFmdGVyIHdlIGxpbmsg
dGhlIGNhbGwuCisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrU2xvdCA9IG51bGxwdHI7CiAg
ICAgICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAgICAgICAgICAg
SlNTY29wZSogc2NvcGUgPSB0YXJnZXRGdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICAg
ICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9ja1Nsb3QgPSBudWxscHRyOwogICAgICAgICAgICAgZnVuY3Rpb25FeGVjdXRh
YmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIHRhcmdldEZ1
bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIGNvZGVCbG9ja1Nsb3QpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZv
cihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9y
Q2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNvZGVCbG9ja1Nsb3Qp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCBkOGEyMzc0MTM0YzRmNTU5OGRhMGJmNjRiMjg4NDVjNDVmYjgxODY2Li5iOWU4MzBjYWQz
YjNkNWYzYTQzMjAzMzkyYjRkNzdhNmMwOTE0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTYxLDcgKzE2MSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmssIHZvaWQs
IChKU0dsCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93SXRlcmF0b3JS
ZXN1bHRJc05vdE9iamVjdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFsdWVGb3JDYWxsZXIsIEVuY29kZWRK
U1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvclRhcmdldCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU1JlbW90ZUZ1bmN0aW9uKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdl
dENvZGUsIHZvaWQqLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIFNsb3dQ
YXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblRocm93UmVtb3RlRnVuY3Rpb25FeGNlcHRpb24sIEVuY29kZWRKU1Zh
bHVlLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgdm9pZCwgKENvZGVCbG9jayopKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAzYzRh
M2FlM2E5ODhjZWU5NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYxLi42ZDNhOGY1ZTRhMDdkN2Q0NGVj
Nzc5MmVhMThjMTVkYmFlNzQ3NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yODgsMjUgKzI4OCwyOSBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0mIHZtLCBDYWxs
TW9kZSBtbwogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgog
Ci0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdU
NCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJs
ZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdUNCk7CisgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
YXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJv
LCBHUFJJbmZvOjpyZWdUMCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDAsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaGFzRXhlY3V0YWJs
ZS5saW5rKCZqaXQpOwogICAgIGppdC5sb2FkUHRyKAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRo
QXJpdHlDaGVja0ZvcihraW5kKSksCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNr
Rm9yKGtpbmQpKSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwogICAgIHNsb3dDYXNlLmFwcGVu
ZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0KSk7
CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQg
d2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKLSAgICAvLyBjYWxsLgorICAgIC8vIE5v
dyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0
byBtYWtpbmcgYSBmYXN0IGNhbGwuCisKKyAgICBhdXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElm
Tm90VHlwZShHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSk7CisgICAgaml0
LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwg
RnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvcihraW5kKSksCisgICAgICAg
IEdQUkluZm86OnJlZ1Q1KTsKIAogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCBy
ZXR1cm4gYmFjayB0byBKSVQgY29kZS4KLSAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgY2FsbENv
ZGUoaml0LmxhYmVsKCkpOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86
OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICBq
aXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVnVDQpOworICAgICAgICBq
aXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZvOjpyZWdUNCwgR1BSSW5mbzo6cmVnVDUp
OwogICAgIH0KKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDUsIENDYWxsSGVscGVyczo6
Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRhZyk7CiAKICAgICAvLyBOdWxsU2V0dGVyRnVuY3Rp
b25UeXBlIGRvZXMgbm90IGdldCB0aGUgZmFzdCBwYXRoIHN1cHBvcnQuIEJ1dCBpdCBpcyBPSyBz
aW5jZSB1c2luZyBOdWxsU2V0dGVyRnVuY3Rpb25UeXBlIGlzIGV4dHJlbWVseSByYXJlLgpAQCAt
MzE0LDcgKzMxOCwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0mIHZtLCBDYWxsTW9kZSBtbwogICAgIHNsb3dDYXNlLmFw
cGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBJbnRlcm5hbEZ1bmN0aW9u
VHlwZSkpOwogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzID0gdm0uZ2V0Q1RJSW50ZXJuYWxG
dW5jdGlvblRyYW1wb2xpbmVGb3Ioa2luZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhlY3V0YWJsZUFkZHJlc3MpLCBHUFJJ
bmZvOjpyZWdUNCk7Ci0gICAgaml0Lmp1bXAoKS5saW5rVG8oY2FsbENvZGUsICZqaXQpOworCisg
ICAgaXNOYXRpdmUubGluaygmaml0KTsKKyAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBH
UFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRhZyk7CisgICAgaWYgKGlzVGFpbENhbGwpIHsKKyAg
ICAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0KTsKKyAg
ICB9CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDQsIEpTRW50cnlQdHJUYWcpOwogCiAg
ICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAKQEAgLTEzODYsMTEgKzEzOTcsMjAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVy
YXRvcihWTSYgdm0pCiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcygKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0
T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNhbGwpKSwKLSAgICAgICAgR1BSSW5m
bzo6cmVnVDApOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBub0NvZGUgPSBqaXQuYnJhbmNoVGVz
dFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgR1BSSW5m
bzo6cmVnVDEpOworICAgIENDYWxsSGVscGVyczo6SnVtcCBub0NvZGUgPSBqaXQuYnJhbmNoVGVz
dFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QxKTsKKworICAgIGF1dG8gaXNO
YXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1
dGFibGVUeXBlKTsKKyAgICBqaXQubG9hZFB0cigKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zm
c2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLAorICAgICAgICBHUFJJbmZvOjpyZWdUMik7CisgICAg
aml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNv
ZGVCbG9ja0JlZm9yZUNhbGwoKSk7CisKKyAgICBpc05hdGl2ZS5saW5rKCZqaXQpOwogICAgIAot
ICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwLCBKU0VudHJ5UHRy
VGFnKTsKLSAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMCwgSlNFbnRyeVB0clRhZyk7CisgICAg
ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcp
OworICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKQEAgLTE1MzIsMzMgKzE1
NTIsNDUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZW1vdGVGdW5j
dGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwgRXhlY3V0YWJs
ZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVGb3JDYWxsKSksCi0g
ICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICBhdXRvIGNvZGVFeGlzdHMgPSBqaXQuYnJhbmNo
VGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAg
R1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gY29kZUV4aXN0cyA9IGppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgLy8gVGhlIGNh
bGxzIHRvIG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvclRhcmdldCBhYm92ZSBtYXkgR0MsIGFu
ZCBhbnkgR0MgY2FuIHBvdGVudGlhbGx5IGpldHRpc29uIHRoZSBKSVQgY29kZSBpbiB0aGUgdGFy
Z2V0IEpTRnVuY3Rpb24uCiAgICAgLy8gSWYgd2UgZmluZCB0aGF0IHRoZSBKSVQgY29kZSBpcyBu
dWxsIChpLmUuIGhhcyBiZWVuIGpldHRpc29uZWQpLCB0aGVuIHdlIG5lZWQgdG8gcmUtbWF0ZXJp
YWxpemUgaXQgZm9yIHRoZSBjYWxsIGJlbG93LiBOb3RlIHRoYXQgd2Uga25vdwogICAgIC8vIHRo
YXQgb3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUgc2hvdWxkIGJl
IGFibGUgdG8gcmUtbWF0ZXJpYWxpemUgdGhlIEpJVCBjb2RlIChleGNlcHQgZm9yIGFueSBPT01F
KSBiZWNhdXNlIHdlIG9ubHkKICAgICAvLyB3ZW50IGRvd24gdGhpcyBjb2RlIHBhdGggYWZ0ZXIg
d2UgZm91bmQgYSBub24tbnVsbCBKSVQgY29kZSAoaW4gdGhlIG5vQ29kZSBjaGVjaykgYWJvdmUg
aS5lLiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gbWF0ZXJpYWxpemUgdGhlIEpJVCBjb2RlLgor
ICAgIC8vIEZJWE1FOiBXaW5kb3dzIHg2NCBpcyBub3Qgc3VwcG9ydGVkIHNpbmNlIG9wZXJhdGlv
bk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlIHJldHVybnMgU2xvd1BhdGhSZXR1
cm5UeXBlLgogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25NYXRlcmlh
bGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSk+KEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlh
bGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAg
ICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRp
b25QdHJUYWcpOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0
clRhZyk7CiAgICAgZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqaXQuZW1pdEp1bXBJZkV4Y2VwdGlv
bih2bSkpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpy
ZWdUMSk7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIENDYWxs
SGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVDYWxsKCkpOworICAgIGppdC5tb3Zl
KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBtYXRl
cmlhbGl6ZWQgPSBqaXQuanVtcCgpOwogCiAgICAgY29kZUV4aXN0cy5saW5rKCZqaXQpOworICAg
IGF1dG8gaXNOYXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QxLCBGdW5j
dGlvbkV4ZWN1dGFibGVUeXBlKTsKKyAgICBqaXQubG9hZFB0cigKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLAorICAgICAgICBHUFJJbmZvOjpyZWdU
Myk7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpjYWxs
ZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CisKKyAgICBpc05hdGl2ZS5saW5rKCZqaXQp
OworICAgIG1hdGVyaWFsaXplZC5saW5rKCZqaXQpOwogICAgIC8vIEJhc2VkIG9uIHRoZSBjaGVj
ayBhYm92ZSwgd2Ugc2hvdWxkIGJlIGdvb2Qgd2l0aCB0aGlzLiBPbiBBUk02NCwgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uIHdpbGwgZG8gdGhpcy4KICNpZiBBU1NFUlRfRU5BQkxFRCAmJiAhQ1BVKEFS
TTY0RSkKICAgICB7Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBjaGVja05vdE51bGwgPSBq
aXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QxKTsK
KyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNoZWNrTm90TnVsbCA9IGppdC5icmFuY2hUZXN0
UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICBqaXQu
YWJvcnRXaXRoUmVhc29uKFRHSW52YWxpZFBvaW50ZXIpOwogICAgICAgICBjaGVja05vdE51bGwu
bGluaygmaml0KTsKICAgICB9CiAjZW5kaWYKIAotICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihq
aXQsIEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKLSAgICBqaXQuY2FsbChHUFJJbmZv
OjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwg
R1BSSW5mbzo6cmVnVDIsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5jYWxsKEdQUkluZm86OnJl
Z1QyLCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIC8vIFdyYXAgcmV0dXJuIHZhbHVlCiAjaWYgVVNF
KEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCAxZmRiNGE1N2Q1OTRiZWVhNmViYjgwYWE2OTdiZGFkNDNm
OTBmODczLi41ZDc5Y2ZjODkwMjBiMDVhNGUxNmM4N2NjZTBlNTE5MzFmMmE4MzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xNzAsNiArMTcwLDcgQEAgY29uc3QgU3RhY2tBbGlnbm1lbnRTbG90cyA9IGNvbnN0ZXhw
ciAoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKIGNvbnN0IFN0YWNrQWxpZ25tZW50TWFzayA9
IFN0YWNrQWxpZ25tZW50IC0gMQogCiBjb25zdCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9IGNvbnN0
ZXhwciAoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorY29uc3QgUHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSA9IGNvbnN0ZXhwciAocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKQogCiBjb25z
dCBDYWxsZXJGcmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0gQ2FsbGVyRnJhbWUgKyBNYWNoaW5l
UmVnaXN0ZXJTaXplCkBAIC01NjYsNiArNTY3LDcgQEAgY29uc3QgQXJyYXlUeXBlID0gY29uc3Rl
eHByIEFycmF5VHlwZQogY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVk
QXJyYXlUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmplY3RU
eXBlCiBjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQorY29u
c3QgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSA9IGNvbnN0ZXhwciBGdW5jdGlvbkV4ZWN1dGFibGVU
eXBlCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBw
YXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNo
IHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgpAQCAtMTE5Miw3ICsxMTk0
LDggQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKICAgICBlbmQKIGVuZAogCi1tYWNybyBwcmVw
YXJlRm9yUmVndWxhckNhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCittYWNybyBwcmVw
YXJlRm9yUmVndWxhckNhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJs
b2NrKQorICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZVtzcF0pCiBlbmQKIAogbWFjcm8gaW52b2tlRm9yUmVndWxhckNhbGwo
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1heWJlT2xkQ0ZSLCBjYWxsUHRyVGFnKQpA
QCAtMTIwOCw3ICsxMjExLDcgQEAgZW5kCiAKICMgc3AgcG9pbnRzIHRvIHRoZSBuZXcgZnJhbWUg
KyBDYWxsZXJGcmFtZUFuZFBDU2l6ZQogIyBXZSBsZWF2ZSBjZnIgdGVtcDQgdG8gdXNlIGl0IGZv
ciB1bnRhZ2dpbmcuCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1w
MywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywg
dGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50
KCkKIAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c1tjZnJdLCB0ZW1wMgpAQCAtMTI2Myw2ICsxMjY2LDggQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxD
YWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAgIGVuZAogCiAgICAgbW92ZSB0ZW1w
MSwgc3AKKworICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayArIFBheWxvYWRPZmZzZXQgLSBQ
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VGb3JUYWls
Q2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQdHJU
YWcpCkBAIC0xMzAzLDcgKzEzMDgsNyBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAgICAg
ICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAgICAgICAgICAgIGJ0cHogY2FsbGVl
RnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIs
IHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgICAg
IC5kb250VXBkYXRlU1A6CiAgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5h
bWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAg
ICAgIGVuZCkKQEAgLTE0ODIsNDQgKzE0ODcsNiBAQCBtYWNybyBhc3NlcnROb3RDb25zdGFudChz
aXplLCBpbmRleCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIENh
bGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBlbmQKLSAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3RhcmdldFJlZ2lzdGVyXSwg
dGFyZ2V0UmVnaXN0ZXIKLSAgICBidHB6IHRhcmdldFJlZ2lzdGVyLCAoY29uc3RleHByIEpTRnVu
Y3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQotICAgIGxvYWRwIChGdW5jdGlvblJh
cmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFn
KSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotLmlzRXhlY3V0YWJsZToKLSAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAgICAgIGxv
YWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAgbG9hZHAg
Q2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVuZAotICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4cHIgSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9u
UmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFU
YWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxlOgotICAg
IGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJn
ZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJl
Z2lzdGVyKQotICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KLWVuZAot
Ci1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKLSAgICAj
IE5vdGhpbmcgdG8gZG8hCi1lbmQKLQogbWFjcm8gY29udmVydENhbGxlZVRvVk0oY2FsbGVlKQog
ICAgIGJ0cG56IGNhbGxlZSwgKGNvbnN0ZXhwciBQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdu
bWVudCksIC5wcmVjaXNlQWxsb2NhdGlvbgogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCBjYWxs
ZWUKQEAgLTE1MzIsNyArMTQ5OSw3IEBAIGVuZAogCiAjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVx
dWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9j
ayoKICMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgotbWFjcm8g
cHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0
cmFjZVNsb3dQYXRoKQorbWFjcm8gcHJvbG9ndWUob3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgp
CiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1Iu
CiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKQEAgLTE1NDEsOCArMTUwOCw3IEBAIG1h
Y3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0
aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1BhdGgpCiAg
ICAgICAgIGFkZHAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwsIHNwCiAgICAgZW5kCi0g
ICAgY29kZUJsb2NrR2V0dGVyKHQxKQotICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQog
ICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDAKICAgICAgICAg
YmFkZGlzIDUsIChVbmxpbmtlZENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyICsgQmFz
ZWxpbmVFeGVjdXRpb25Db3VudGVyOjptX2NvdW50ZXIpW3QwXSwgLmNvbnRpbnVlCkBAIC0xNTgy
LDcgKzE1NDgsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1Nl
dHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgICAgICBqbXAgcjAsIEpT
RW50cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6Ci0gICAgICAgIG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
ICAgICAuY29udGludWU6CiAgICAgZW5kCiAKQEAgLTE2MjEsNyArMTU4Nyw3IEBAIG1hY3JvIHBy
b2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJh
Y2VTbG93UGF0aCkKIC5zdGFja0hlaWdodE9LR2V0Q29kZUJsb2NrOgogICAgICMgU3RhY2sgY2hl
Y2sgc2xvdyBwYXRoIHJldHVybmVkIHRoYXQgdGhlIHN0YWNrIHdhcyBvay4KICAgICAjIFNpbmNl
IHRoZXkgd2VyZSBjbG9iYmVyZWQsIG5lZWQgdG8gZ2V0IENvZGVCbG9jayBhbmQgbmV3IHNwCi0g
ICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCiAgICAgZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2sodDEsIHQwKQogICAg
IHN1YnAgY2ZyLCB0MCwgdDAKIApAQCAtMjAyNCwzOSArMTk5MCwzOSBAQCBub1dpZGUobGxpbnRf
b3Bfd2lkZTMyKQogbm9XaWRlKGxsaW50X29wX2VudGVyKQogCiBvcChsbGludF9wcm9ncmFtX3By
b2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50X21vZHVsZV9w
cm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3IsIF9s
bGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCiAKIG9wKGxsaW50
X2V2YWxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xs
aW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rp
b25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKICAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xs
aW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEp
CiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3Jf
Y2FsbCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQogICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9u
Rm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNh
bGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCkBAIC0yMDY0LDcgKzIwMzAs
NyBAQCBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKIGVu
ZCkKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8g
KCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQor
ICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0
aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAu
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRp
b24oMSkKQEAgLTI1MjUsNyArMjQ5MSw3IEBAIG1hY3JvIGxpbmtTbG93UGF0aEZvcihmdW5jdGlv
bikKICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBidHB6IHIxLCAuZG9Ob3RUcmFzaAog
ICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkKLSAgICBwcmVwYXJlRm9yVGFp
bENhbGwodDEsIHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUZvclRhaWxDYWxsKHQxLCB0MiwgdDMs
IHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQ0CiAuZG9O
b3RUcmFzaDoKICAgICBqbXAgdDAsIEpTRW50cnlQdHJUYWcKQEAgLTI1MzQsNyArMjUwMCw3IEBA
IGVuZAogIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkgaXMgY2FsbGVlCiAjIHQyIGlzIENhbGxMaW5r
SW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKLW1hY3JvIHZpcnR1YWxUaHVu
a0ZvcihvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVjaywgaW50ZXJuYWxGdW5jdGlvblRyYW1w
b2xpbmUsIHByZXBhcmVDYWxsLCBzbG93Q2FzZSkKK21hY3JvIHZpcnR1YWxUaHVua0ZvcihvZmZz
ZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVjaywgb2Zmc2V0T2ZDb2RlQmxvY2ssIGludGVybmFsRnVu
Y3Rpb25UcmFtcG9saW5lLCBwcmVwYXJlQ2FsbCwgc2xvd0Nhc2UpCiAgICAgYWRkaSAxLCBDYWxs
TGlua0luZm86Om1fc2xvd1BhdGhDb3VudFt0Ml0KICAgICBpZiBKU1ZBTFVFNjQKICAgICAgICAg
YnRxbnogdDAsIE5vdENlbGxNYXNrLCBzbG93Q2FzZQpAQCAtMjU0MiwxNCArMjUwOCwxOSBAQCBt
YWNybyB2aXJ0dWFsVGh1bmtGb3Iob2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIGludGVy
bmFsRnVuY3Rpb25UcmFtcG9saW5lLAogICAgICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgc2xvd0Nh
c2UKICAgICBlbmQKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEpTRnVuY3Rpb25UeXBl
LCAubm90SlNGdW5jdGlvbgotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFy
ZURhdGFbdDBdLCB0MQotICAgIGJ0cHogdDEsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURh
dGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhl
Y3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0MV0sIHQxCisg
ICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0MF0sIHQ1CisgICAg
YnRweiB0NSwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFi
bGUKKyAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhw
ciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3Q1XSwgdDUKIC5pc0V4ZWN1dGFibGU6Ci0gICAg
bG9hZHAgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tbdDFdLCB0MQotICAgIGJ0cHogdDEs
IHNsb3dDYXNlCisgICAgbG9hZHAgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tbdDVdLCB0
NAorICAgIGJ0cHogdDQsIHNsb3dDYXNlICMgV2hlbiBqdW1waW5nIHRvIHNsb3dDYXNlLCB0MCwg
dDEsIHQyLCB0MyBuZWVkcyB0byBiZSB1bm1vZGlmaWVkLgorICAgIG1vdmUgdDQsIHQxCisgICAg
bW92ZSAwLCB0MAorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3Q1XSwgRnVuY3Rpb25FeGVjdXRh
YmxlVHlwZSwgLmNhbGxDb2RlCisgICAgbG9hZHAgb2Zmc2V0T2ZDb2RlQmxvY2tbdDVdLCB0MAog
LmNhbGxDb2RlOgogICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0KQorICAgIHN0b3JlcCB0
MCwgQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGFb
c3BdCiAgICAgam1wIHQxLCBKU0VudHJ5UHRyVGFnCiAubm90SlNGdW5jdGlvbjoKICAgICBiYm5l
cSBKU0NlbGw6Om1fdHlwZVt0MF0sIEludGVybmFsRnVuY3Rpb25UeXBlLCBzbG93Q2FzZQpAQCAt
MjU2OCw3ICsyNTM5LDcgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNh
bGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX2NhbGxfdHJhbXBvbGluZSwg
bWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBv
bGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkK
KyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRo
QXJpdHlDaGVjaywgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGwsIF9sbGlu
dF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIs
IHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CiAgICAgbGlua1Nsb3dQ
YXRoRm9yKF9sbGludF92aXJ0dWFsX2NhbGwpCiBlbmQpCkBAIC0yNTc3LDcgKzI1NDgsNyBAQCBl
bmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmpl
Y3QKIG9wKGxsaW50X3ZpcnR1YWxfY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAg
dmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5l
LCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQorICAg
IHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2ssIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qs
IF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8gKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKICAg
ICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkKQEAgLTI1ODYsOSAr
MjU1Nyw5IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBK
U0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF90YWlsX2NhbGxfdHJhbXBvbGluZSwgbWFj
cm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGlu
ZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgIHZpcnR1YWxUaHVua0Zv
cihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBGdW5jdGlv
bkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCwgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9u
X2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAg
ICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodGVtcDEpCi0gICAgICAgIHByZXBh
cmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKKyAgICAgICAgcHJlcGFy
ZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBtYWNybyhhZGRyZXNzKSBl
bmQpCiAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1wNAogICAgIGVuZCwgLnNsb3dDYXNl
KQogLnNsb3dDYXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBhY2U4NzExNjcyZTcwMjE2ZDM5YTQ4
ZGYxNWZkNjZkNmI1N2M0MTFlLi5hZDI1MDE3ZWYwYjQ3ZmMwYjA1MDQ3NDdkYjU3NWI5MTUwMThh
ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjI1OSw3ICsyMjU5LDEwIEBAIG1hY3JvIGNhbGxI
ZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhCiAKIC5ub3RQb2x5bW9ycGhpYzoKICAgICBicG5lcSB0MCwgdDMsIC5vcENh
bGxTbG93Ci0gICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNhbGwo
dDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0
MgorICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3JwaGlj
OgogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5k
YXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yMzM4LDcgKzIz
NDEsMTAgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1vcnBo
aWM6CiAgICAgICAgICAgICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgICAgICAgICBw
cmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0
MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVd
LCB0MgorICAgICAgICAgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAgZW5k
KQogCiAgICAgICAgIC5nb1BvbHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNWRlN2JjYzdmZDBkNGYwNDBmMmRm
OTRiZDQ3MzQ1ZDgzNTg2OTQ0Ny4uOGNkN2RiZTJhNGEyNTkwNjQzNjFkMzZmNTZmOGNiM2U0OTUw
OWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTI0ODMsNyArMjQ4MywxMCBAQCBtYWNybyBjYWxsSGVscGVy
KG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xv
dwotICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgIHByZXBhcmVDYWxsKHQyLCB0
MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAg
ICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQogCiAuZ29Qb2x5bW9ycGhpYzoKICAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlD
Lm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpAQCAtMjU2MSw3ICsyNTY0LDEw
IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgog
ICAgICAgICAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFy
ZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0
LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIK
KyAgICAgICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICAgICAgICAgIGVuZCkKIAog
ICAgICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0
aW5hdGlvblt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
V2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5
LmFzbQppbmRleCA3MTM1ZjRmNmZjMjBjYjM5ZTg1YmFiYzFkMWNmMWVhYjU4YjYyYmQ2Li4yNGMx
NGIzZjhmNmI1ZjQ1NWJkMGE1YTc3YzU5MzJiZTlmNjhlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE0Nyw3ICsxNDcsNyBAQCBtYWNybyBj
aGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgICAg
ICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCiAgICAgICAgICAgICBlbmQKICAgICAgICAg
LnJlY292ZXI6Ci0gICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxv
Y2tSZWdpc3RlcikKKyAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjb2RlQmxvY2tS
ZWdpc3RlcgogICAgICAgICBlbmQpCiAgICAgZW5kCiBlbmQKQEAgLTI4Myw3ICsyODMsNyBAQCBt
YWNybyByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAgICBzdWJwIGNmciwgd3MxLCBz
cAogZW5kCiAKLW1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1Nl
dHRlciwgbG9hZFdhc21JbnN0YW5jZSkKK21hY3JvIHdhc21Qcm9sb2d1ZShsb2FkV2FzbUluc3Rh
bmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQg
T1NSLgogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2
ZXNVc2VkQnlXYXNtKCkKQEAgLTI5Myw4ICsyOTMsOSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29k
ZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbG9h
ZHAgV2FzbTo6SW5zdGFuY2U6Om1fb3duZXJbd2FzbUluc3RhbmNlXSwgd3MwCiAgICAgc3RvcmVw
IHdzMCwgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nmcl0KIAotICAgIGNvZGVCbG9ja0dldHRlcih3czAp
Ci0gICAgY29kZUJsb2NrU2V0dGVyKHdzMCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgd3MwCisg
ICAgYW5kcCB+Mywgd3MwCisgICAgc3RvcmVwIHdzMCwgQ29kZUJsb2NrW2Nmcl0KIAogICAgICMg
R2V0IG5ldyBzcCBpbiB3czEgYW5kIGNoZWNrIHN0YWNrIGhlaWdodC4KICAgICBsb2FkaSBXYXNt
OjpMTEludENhbGxlZTo6bV9udW1DYWxsZWVMb2NhbHNbd3MwXSwgd3MxCkBAIC01MTQsNyArNTE1
LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgbWFjcm8gKCkKICAgICAgICAgZXJyb3IK
ICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZUZyb21UTFMpCisgICAgd2FzbVByb2xv
Z3VlKGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQog
ZW5kKQogCkBAIC01MjMsNyArNTI0LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190
bHMsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICB3YXNtUHJvbG9ndWUo
d2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIG1hY3JvICgpIGVu
ZCkKKyAgICB3YXNtUHJvbG9ndWUobWFjcm8gKCkgZW5kKQogICAgIHdhc21OZXh0SW5zdHJ1Y3Rp
b24oKQogZW5kKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oCmluZGV4IDM3ZTBjNWRiNjFhY2E2NDJlNWVmZGY2ODYxMmYwMjMxYzQ1
OGZmZWEuLjQyYjBjYTA3NDJiM2Y5MjE5NDEzNmM5YjViMjQ4OTVhZDZlOWJkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBA
IC0yODgsMjAgKzI4OCwyNSBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZm
X3Qgb2Zmc2V0T2ZSYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4
ZWN1dGFibGUsIG1fcmFyZURhdGEpOyB9Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zm
c2V0T2ZBc1N0cmluZ0luUmFyZURhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURh
dGEsIG1fYXNTdHJpbmcpOyB9CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZD
b2RlQmxvY2tGb3JDYWxsKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0
YWJsZSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsgfQogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90
IG9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOyB9CiAKLXByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFi
bGUpOwotCi0gICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ2Fs
bDoKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxl
LCBtX2NvZGVCbG9ja0ZvckNhbGwpOworICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Cisg
ICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAg
IH0KIAogICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKKworICAgICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFz
U3RyaW5nKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJhcmVEYXRhLCBtX2FzU3RyaW5nKTsg
fQorCiAgICAgICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7CiAg
ICAgICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKQEAgLTMxNCw2ICszMTksMTQgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+
IG1fYXNTdHJpbmc7CiAgICAgfTsKIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRXhlY3V0
YWJsZUJhc2U7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbik7CisgICAgCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFNjcmlw
dEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSk7CisKKyAgICBmcmllbmQgY2xhc3MgU2Ny
aXB0RXhlY3V0YWJsZTsKKwogICAgIFJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YSgpCiAgICAgewog
ICAgICAgICBpZiAoTElLRUxZKG1fcmFyZURhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Nhc3QuaAppbmRleCBhNjk5MzE1OTA5OWNjYzFiNzM5NmE5N2M1OGZkNGVlMzFhNWMxODJl
Li44ZGMyZjE3ODJlMGJjZDU0NzI1ZTI3NzliYmZlNjBmZTc3YzY0Nzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtODksNiArODksNyBAQCBzdHJ1Y3QgSlNUeXBl
UmFuZ2UgewogICAgIG1hY3JvKFJlZ0V4cE9iamVjdCwgSlNUeXBlOjpSZWdFeHBPYmplY3RUeXBl
LCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU1dlYkFzc2VtYmx5TW9k
dWxlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSwgSlNUeXBlOjpXZWJBc3NlbWJseU1v
ZHVsZVR5cGUpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHMsIEpTVHlwZTo6RGlyZWN0QXJn
dW1lbnRzVHlwZSwgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlKSBcCisgICAgbWFjcm8oRnVu
Y3Rpb25FeGVjdXRhYmxlLCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIEpTVHlwZTo6
RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSkgXAogICAgIG1hY3JvKFNjb3BlZEFyZ3VtZW50cywgSlNU
eXBlOjpTY29wZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUpIFwK
ICAgICBtYWNybyhDbG9uZWRBcmd1bWVudHMsIEpTVHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlwZSwg
SlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8oSlNHbG9iYWxPYmplY3Qs
IEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggM2JiNDU4ZWU4ZTM2ZDZiNGUyNjVm
ZGI5YzE5M2EyZWRkMjJkZTA4Mi4uYTI3OThkZDNlYjljZmU3MzM2ZjM2M2VmZjU3MzI4OGNiNGRh
ZTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzE2LDkgKzcxNiwx
NyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0UmVtb3RlRnVuY3Rpb24oYm9vbCBpc0pTRnVu
Y3Rpb24pCiAgICAgYXV0byBnZXRPckNyZWF0ZSA9IFsmXSAoV2VhazxOYXRpdmVFeGVjdXRhYmxl
PiYgc2xvdCkgLT4gTmF0aXZlRXhlY3V0YWJsZSogewogICAgICAgICBpZiAoYXV0byogY2FjaGVk
ID0gc2xvdC5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CisKKyAgICAgICAgSW50
cmluc2ljIGludHJpbnNpYyA9IE5vSW50cmluc2ljOworICAgICAgICBpZiAoIXNsb3dDYXNlKSB7
CisjaWYgIShPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KSkKKyAgICAgICAgICAgIGludHJpbnNp
YyA9IFJlbW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYzsKKyNlbmRpZgorICAgICAgICB9CisKICAg
ICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAgICAg
ICAgICAgc2xvd0Nhc2UgPyByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmljIDogcmVtb3RlRnVuY3Rp
b25DYWxsRm9ySlNGdW5jdGlvbiwKLSAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMg
OiBSZW1vdGVGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBpbnRyaW5zaWMsCiAg
ICAgICAgICAgICBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgU3RyaW5n
KCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxlPihyZXN1bHQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9w
ZXJhdGlvbnMuY3BwCmluZGV4IGJiNDZmOGE4MTMyZDFlZDU1ZTFjMzRhZjZhMDBmMGQyNDlmZjBm
YzMuLjUxNDY0NTcyZjFjZjJlYzFmMGNhYWY1OGRkYjc4NGFmY2ZiMzY5MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKQEAgLTE5MiwxNCArMTky
LDE0IEBAIHN0YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9iZTo6
Q29udGV4dCYgY29udGV4dCwgQkJRQ2FsbGVlJiBjCiAgICAgLy8gcG9wKGZyYW1lUG9pbnRlclJl
Z2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4o
KmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3Rh
Y2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMSk7CiAjZWxpZiBDUFUoQVJNNjRF
KSB8fCBDUFUoQVJNNjQpCiAgICAgLy8gbW92ZShmcmFtZVBvaW50ZXJSZWdpc3Rlciwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogICAgIC8vIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxp
bmtSZWdpc3Rlcik7CiAgICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rl
cio+KCpmcmFtZVBvaW50ZXIpOwogICAgIGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikg
PSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEpKTsKICAgICBj
b250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1i
bHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAq
IDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNp
emVvZih2b2lkKikgKiAyKTsKICNpZiBDUFUoQVJNNjRFKQogICAgIC8vIExSIG5lZWRzIHRvIGJl
IHVudGFnZ2VkIHNpbmNlIE9TUiBlbnRyeSBmdW5jdGlvbiBwcm9sb2d1ZSB3aWxsIHRhZyBpdCB3
aXRoIFNQLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGFpbC1jYWxsLgogICAgIGNvbnRleHQuZ3ByKEFS
TTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPih1bnRhZ0NvZGVQ
dHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChjb250ZXh0Lmdwcjx2b2lkKj4oQVJNNjRSZWdp
c3RlcnM6OmxyKSwgY29udGV4dC5zcCgpKSk7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZv
aWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBjb250ZXh0
LCBCQlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lz
dGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoUklTQ1Y2NFJlZ2lzdGVyczo6
cmEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFtZVBvaW50ZXIgKyAxKSk7CiAg
ICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMjsKLSAgICBzdGF0aWNfYXNzZXJ0KEFz
c2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2b2lk
KikgKiAyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9
PSBzaXplb2Yodm9pZCopICogMik7CiAjZWxzZQogI2Vycm9yIFVuc3VwcG9ydGVkIGFyY2hpdGVj
dHVyZS4KICNlbmRpZgo=
</data>
<flag name="review"
          id="485002"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456661</attachid>
            <date>2022-04-04 19:14:14 -0700</date>
            <delta_ts>2022-04-04 20:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220404191413.patch</filename>
            <type>text/plain</type>
            <size>74459</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NmU3ZWYwZDk4MDg5MDlmMzliYzNjMTZhMGNlYjZkNDFmYTY4NGFiLi5kYzVjYzM5NzQzNGNkZTBj
NzQ0M2Q1YWMzYzdiYmZhNzFiOWMwYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAyMi0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2Vz
IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgSlMgZnVuY3Rpb25zLiBOb3csIHdlIG5lZWQgdG8g
c3RvcmUgQ29kZUJsb2NrIHRvIHRoZSBzdGFjayBpbiB0aGUgY2FsbGVyIHNpZGUgaW5zdGVhZC4K
KyAgICAgICAgVGhpcyBoZWxwcyBMTEludCwgdW5saW5rZWQgQmFzZWxpbmUsIGFuZCBERkcgc2lu
Y2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gbG9hZCBDb2RlQmxvY2sgZnJvbSBjYWxsZWUgdmlhIGNv
c3RseSBkZXBlbmRlbnQgbG9hZHM6IHVubGlua2VkCisgICAgICAgIG9uZXMgY2Fubm90IGVtYmVk
IENvZGVCbG9jayByYXcgcG9pbnRlciBpbnRvIHRoZSBtYWNoaW5lIGNvZGUgaXRzZWxmLiBTbyB3
ZSBuZWVkZWQgdG8gbG9hZCBpdCBmcm9tIGNhbGxlZS4gQnV0IG5vdywgY2FsbGVyIHB1dHMgdGhl
CisgICAgICAgIHJpZ2h0IENvZGVCbG9jayBwb2ludGVyIGludG8gdGhlIHN0YWNrIHNvIHdlIGRv
IG5vdCBuZWVkIHRoYXQgY29kZS4gQW5kIGluIG1vc3QgY2FzZXMsIGNhbGxlciBhbHJlYWR5IGtu
b3dzIENvZGVCbG9jayBzaW5jZSBpdCBpcyB0aWVkCisgICAgICAgIHRvIGFjdHVhbGx5IHVzZWQg
bWFjaGluZSBjb2RlIHBvaW50ZXIuCisgICAgICAgIE9TUiBlbnRyeSBhbHNvIG1hdGVyaWFsaXpl
cyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGluIHRoZSBPU1IgZW50cnkgc2lkZSBpbnN0ZWFkIG9m
IGRvaW5nIGl0IGluIHRoZSBjYWxsZWUgc2lkZS4KKworICAgICAgICBUaGlzIGNvbnRyaWJ1dGVz
IHRvIDAuMyUgcHJvZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogYXNzZW1i
bGVyL0NQVS5oOgorICAgICAgICAoSlNDOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OnNldE1vbm9tb3JwaGljQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZv
OjpjbGVhckNhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRv
U3R1Yik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0U3R1Yik6CisgICAgICAgIChKU0M6Ok9wdGlt
aXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9w
dGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAg
ICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgor
ICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjpvZmZzZXRPZkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtNb25vbW9ycGhpY0NhbGwpOgorICAgICAgICAoSlND
OjpsaW5rRGlyZWN0Q2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JXaXRoRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBm
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgor
ICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjYWxsZWVGcmFtZUNv
ZGVCbG9ja0JlZm9yZUNhbGwpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxl
ZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwcmVwYXJlRm9y
VGFpbENhbGxTbG93KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmly
dHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpyZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVtb3RlRnVu
Y3Rpb24pOgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpkb09TUkVudHJ5KToKKwogMjAyMi0wNC0wNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2Fy
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE9ubHkgY2hlY2sgaXNQYWdlZE91dCgpIHVuZGVyIG1l
bW9yeSBwcmVzc3VyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9DUFUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKaW5kZXggYjNi
N2NlNTQ4M2NmZTZkNGE5MzhmNDAwMzY5MmI3MzNkZmMxODRjOS4uZmI4OGU3NDM5YzI0ZjAwNTdk
NWFhNzVkOWMyZjc0YzkxYWE5MWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9DUFUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQ
VS5oCkBAIC0xNjgsNSArMTY4LDIzIEBAIEFMV0FZU19JTkxJTkUgaW50NjRfdCBod0wzQ2FjaGVT
aXplKCkgeyByZXR1cm4gMDsgfQogQUxXQVlTX0lOTElORSBpbnQzMl90IGh3UGh5c2ljYWxDUFVN
YXgoKSB7IHJldHVybiBrZXJuVENTTUF3YXJlTnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyB9CiAj
ZW5kaWYKIAorY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKK3sK
KyNpZiBFTkFCTEUoQ19MT09QKQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50
ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2YoQ1BVUmVn
aXN0ZXIpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICAvLyBQcm9sb2d1ZSBvbmx5IHNhdmVzIHRo
ZSBmcmFtZVBvaW50ZXJSZWdpc3RlcgorICAgIHJldHVybiBzaXplb2YoQ1BVUmVnaXN0ZXIpOwor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShS
SVNDVjY0KQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBh
bmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpOworI2Vs
c2UKKyNlcnJvciB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzCisjZW5kaWYKK30KKworCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCmluZGV4IDM3MTZmMmFmODU5ZWRhNDExYzg1MTQxOTZmZGNmYzhmYWMx
NGVhYzcuLjljNzUzMWNkODFlOTAwOGE4MGRjZmU2MTFlNjY5ZDdjNDEzYjc0ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0xMDgs
MTcgKzEwOCwxOSBAQCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlu
a0luZm86OmRvbmVMb2NhdGlvbigpCiAgICAgcmV0dXJuIG1fZG9uZUxvY2F0aW9uOwogfQogCi12
b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4gY29kZVB0cikKK3ZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihjYWxsZWUpICYgcG9seW1vcnBoaWNDYWxsZWVNYXNrKSk7CiAgICAg
bV9jYWxsZWVPckNvZGVCbG9jay5zZXQodm0sIG93bmVyLCBjYWxsZWUpOwogCi0gICAgaWYgKGlz
RGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVz
dGluYXRpb24gPSBjb2RlUHRyOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2Fz
dDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4odGhpcyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxv
Y2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9j
YWxsZWVMb2NhdGlvbiwgY2FsbGVlKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0xMzAsMTAgKzEzMiwxMiBAQCB2b2lkIENhbGxMaW5rSW5mbzo6Y2xl
YXJDYWxsZWUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBtX2Nh
bGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgaWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlz
RGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAg
ICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0cjsKLSAg
ICBlbHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgeworICAgIH0gZWxzZSBpZiAoIWNsZWFy
ZWRCeUpldHRpc29uKCkpIHsKICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxl
ZUxvY2F0aW9uLCBudWxscHRyKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yOTgsOSArMzAyLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRD
YWxsVG9TdHViKCkKIAogICAgIGlmIChpc0RhdGFJQygpKSB7CiAgICAgICAgIG1fY2FsbGVlT3JD
b2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRy
OwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldp
dGhQYXRjaCgKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6c3RhcnRPZkJyYW5jaFB0cldpdGhQ
YXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiksIGNhbGxlZUdQUigpLCBu
dWxscHRyKTsKICNlbHNlCkBAIC0zNjMsOSArMzY5LDE4IEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luCiAKICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JU
YWlsQ2FsbCgpOworCisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVy
czo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBv
ZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVQ
dHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZVRh
aWxDYWxsKCkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7IC8vIFBv
bHltb3JwaGljIHN0dWIgaGFuZGxlcyB0YWlsIGNhbGwgc3RhY2sgcHJlcC4KICAgICAgICAgICAg
IGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNl
dE9mTW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zm
c2V0T2ZDb2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRy
KHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVDYWxs
KCkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
Zk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAg
fQpAQCAtMzc0LDE1ICszODksMjAgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5r
SW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgY2FsbGVlR1BSLCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpKSk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgICAg
IENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOwogICAgICAgICBpZiAo
aXNUYWlsQ2FsbCkgewogICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAg
ICAgICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxv
Y2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxDYWxs
KCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29kZUJs
b2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2Fs
bCgpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIGppdC5hZGRMaW5r
VGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwp
OworICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3Jl
KTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTQxMSw4ICs0MzEsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86
OnNldFN0dWIoUmVmPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAKICAg
ICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1f
Y2FsbGVlT3JDb2RlQmxvY2suc2xvdCgpKSA9IHBvbHltb3JwaGljQ2FsbGVlTWFzazsKKyAgICAg
ICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOyAvLyBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZSB3aWxsIHNldCBDb2RlQmxvY2sgaW5zaWRlIGl0LgogICAgICAgICB1LmRhdGFJQy5t
X21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbV9zdHViLT5jb2RlKCkuY29kZSgpLnJldGFn
Z2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29k
ZUlDLm1fY2FsbGVlTG9jYXRpb24pLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3R1Yi0+Y29kZSgpLmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5
OCwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCkKIAogICAgIEFTU0VSVChVc2VEYXRhSUM6Ok5vID09IHRoaXMtPnVz
ZURhdGFJQygpKTsKIAorICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRo
UGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6
OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQu
bmVhckNhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1f
Y29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4oY29kZUJsb2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3Ro
aXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAt
NTAxLDkgKzUyNSwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9w
cyhDQ2FsbEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRh
aWxDYWxsKCk7CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRj
aChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2Fs
bGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQu
bmVhclRhaWxDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJ
Qy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNr
KFt0aGlzXSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsK
QEAgLTUxNCw2ICs1NDAsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxp
emVEaXJlY3RDYWxsKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKICAgICBB
U1NFUlQobV9jYWxsTG9jYXRpb24pOworICAgIEFTU0VSVCh1LmNvZGVJQy5tX2NvZGVCbG9ja0xv
Y2F0aW9uKTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZhc3RQYXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVy
KGZhc3RQYXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShD
Q2FsbEhlbHBlcnMmIGppdCkgewpAQCAtNTI2LDcgKzU1Myw3IEBAIHZvaWQgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOwogfQog
Ci12b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxv
Y2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQordm9pZCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
aXNEaXJlY3QoKSk7CiAKQEAgLTU0MCw2ICs1NjcsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlu
a0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRh
ZwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9j
YXRpb24sIHRhcmdldCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29k
ZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIGNvZGVCbG9jayk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IGZiMjBlNDc4
MTQ3OTM1MjE3NTA0MzQ0NWIyOTc3MzFiOTcxMjk4NjcuLjM5MjA4NmEwOGQxYjdhNmUyNjcxZmM1
MjJhM2Y5Y2VmZmQxNjUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKCk7CiAKLSAgICB2b2lk
IHNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIHNldFNsb3dQYXRo
Q2FsbERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAg
ICAgdm9pZCBjbGVhckNhbGxlZSgpOwogICAgIEpTT2JqZWN0KiBjYWxsZWUoKTsKQEAgLTMxNyw2
ICszMTcsMTEgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxs
TGlua0luZm8sIG1fY2FsbGVlT3JDb2RlQmxvY2spOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0
YUlDLm1fY29kZUJsb2NrKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwg
ZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24pOwpAQCAtNDAxLDE0ICs0MDYsMTYg
QEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxs
TGlua0luZm8+IHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9z
bG93UGF0aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlvblR5cGUgewogICAgICAgICBV
bmlvblR5cGUoKQotICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyIH0KKyAgICAgICAgICAg
IDogZGF0YUlDIHsgbnVsbHB0ciwgbnVsbHB0ciB9CiAgICAgICAgIHsgfQogCiAgICAgICAgIHN0
cnVjdCBEYXRhSUMgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsgLy8gVGhp
cyBpcyB3ZWVrbHkgaGVsZC4gQW5kIGNsZWFyZWQgd2hlbmV2ZXIgbV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbiBpcyBjaGFuZ2VkLgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb247CiAgICAgICAgIH0g
ZGF0YUlDOwogCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jb2RlQmxvY2tMb2NhdGlvbjsKICAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxlZUxv
Y2F0aW9uOwogICAgICAgICB9IGNvZGVJQzsKICAgICB9IHU7CkBAIC01MDMsNyArNTEwLDcgQEAg
Y2xhc3MgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyBmaW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8g
ewogICAgIHZvaWQgZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYpOwogICAgIHZvaWQg
ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgU2NvcGVkTGFtYmRhPHZv
aWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpOwogICAgIHZvaWQgaW5pdGlhbGl6ZURpcmVjdENh
bGwoKTsKLSAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNF
bnRyeVB0clRhZz4pOworICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqLCBD
b2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBlbWl0U2xvd1BhdGgo
Vk0mLCBDQ2FsbEhlbHBlcnMmKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUikgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlcGF0Y2guY3BwCmluZGV4IGU5NzYwY2NjOGVlNDA1MjY2Y2ZmNGEwYTMwNGQyOWExNThh
Yzg0MTYuLjFmYzgwNGE3OWMzMGRiY2Y1YzBlZjE3MzVmNDQ2MzQ5ZWRkMzgwNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIGxpbmtNb25vbW9ycGhpY0NhbGwoCiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFT
U0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5zZXRNb25v
bW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY29kZVB0cik7CisgICAgY2FsbExpbmtJ
bmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlLCBjYWxsZWVDb2RlQmxv
Y2ssIGNvZGVQdHIpOwogICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZSh2bSwgb3du
ZXIsIGNhbGxlZSk7CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNv
ZGVCbG9jaykpCkBAIC0xNTY0LDcgKzE1NjQsNyBAQCB2b2lkIGxpbmtEaXJlY3RDYWxsKAogICAg
IGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAg
ZGF0YUxvZygiTGlua2luZyBjYWxsIGluICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9j
aywgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4oKSksICIgdG8gIiwgcG9pbnRlckR1bXAoY2FsbGVl
Q29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2RlUHRyLCAiXG4iKTsKIAotICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KGNvZGVQdHIpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChq
c0Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihjYWxsZWVDb2RlQmxvY2spLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAKICAgICBpZiAoY2FsbGVlQ29kZUJsb2Nr
KQogICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbEZyYW1lLCAm
Y2FsbExpbmtJbmZvKTsKQEAgLTE3ODcsNyArMTc4Nyw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGlj
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q2FsCiAgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CiAgICAgICAg
IHNpemVfdCBjYXNlSW5kZXggPSBiaW5hcnlTd2l0Y2guY2FzZUluZGV4KCk7CiAgICAgICAgIAot
ICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFu
dCgpOworICAgICAgICBQb2x5bW9ycGhpY0NhbGxDYXNlJiBjYWxsQ2FzZSA9IGNhbGxDYXNlc1tj
YXNlSW5kZXhdOworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2UudmFyaWFu
dCgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNvZGVQdHI7CiAgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKSkgewpAQCAtMTgx
MCwxNCArMTgxMSwyMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBib29sIG5l
ZWRzRG9uZUp1bXAgPSBmYWxzZTsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKICAgICAg
ICAgICAgIENhbGxGcmFtZVNodWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90
KCkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVC
bG9jaygpKQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVG
cmFtZUNvZGVCbG9ja0JlZm9yZVRhaWxDYWxsKCkpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUlu
ZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVG
b3JUYWlsQ2FsbFNsb3coKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkK
KyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2Rl
QmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2Fs
bCA9IHN0dWJKaXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAoaXNEYXRhSUMpCisgICAgICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc1RhaWxD
YWxsKCkpOworICAgICAgICAgICAgaWYgKGlzRGF0YUlDKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNhbGxDYXNlLmNvZGVCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LnN0b3Jl
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIEND
YWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAg
ICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgp
OwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKICAg
ICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7
CiAgICAgICAgICAgICAgICAgbmVlZHNEb25lSnVtcCA9IHRydWU7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCmluZGV4
IDUxNzFiYzEyNDAwNTJjM2NjY2Q2ZTZmYWY0NjgyNTMzN2VlM2U3ODkuLjk1OGQ3ZmI4YjNiMzc3
MTA0NzA3MThiMzk0ODJiYjMwNWI3MGY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCkBAIC0xOTUsOCArMTk1LDggQEAgQUxXQVlTX0lO
TElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKIAogICAgIERlZmVyVHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNh
bid0IGpldHRpc29uIGlmIHdlJ3JlIGdvaW5nIHRvIGNhbGwgdGhpcyBDb2RlQmxvY2suCiAKLSAg
ICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgaWYgKCFleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCiAg
ICAgICAgIGF1dG8gaGFuZGxlVGhyb3dFeGNlcHRpb24gPSBbJl0gKCkgewogICAgICAgICAgICAg
dm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGgoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKQEAgLTIxMiw2ICsyMTIsNyBAQCBBTFdB
WVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5k
LCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgaGFuZGxlVGhyb3dFeGNlcHRpb24oKSk7CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBv
cnQgd2FzbSBJQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMzM5CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRl
eCBkNWVhOWQ2NzU5NzU1YTM5NGQ2ZjU1ZWQ3ZDcyNmFmZmVhZjc2YTFkLi40ZmNkNGQzODZiMjQy
MTc4MWFmNzM5Y2E1MzI4OGZhNTlmMGU5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAj
aW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDcg
KzExMSwxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNr
KSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8g
YWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3
aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgcHJvYmVEZWJ1
ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6REZHSklUKTsKKyAgICB9KTsK
KyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JF
bnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmluZGV4IDEx
MzJjZjBkOWY2NWIxMzk3ZmViOWViOTU3MTQxZWI0ZDExNTg1ZjcuLjRjOGYyZWVkZWZhY2I1MjVm
YzI4YzgyYTIzYzdlMzZlYzc3ODRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCkBAIC0zMzQsOSArMzM0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY28K
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgLy8gNykgRml4IHRoZSBjYWxs
IGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCi0gICAgCisKICAgICAqYml0d2lz
ZV9jYXN0PENvZGVCbG9jayoqPihwaXZvdCAtIChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKyAx
KSkgPSBjb2RlQmxvY2s7CiAgICAgCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9T
UigpLCAiICAgIE9TUiByZXR1cm5pbmcgZGF0YSBidWZmZXIgIiwgUmF3UG9pbnRlcihzY3JhdGNo
KSk7CkBAIC00MDgsNiArNDA4LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25I
YW5kbGVyUHRyVGFnPiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShWTSYgdm0sIENhbGxGCiAKICAgICAv
LyBUaGUgYWN0aXZlIGxlbmd0aCBvZiBjYXRjaE9TUkVudHJ5QnVmZmVyIHdpbGwgYmUgemVyb2Vk
IGJ5IENsZWFyQ2F0Y2hMb2NhbHMgbm9kZS4KICAgICBkZmdDb21tb24tPmNhdGNoT1NSRW50cnlC
dWZmZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICAv
LyBBdCB0aGlzIHBvaW50LCB3ZSdyZSBjb21taXR0ZWQgdG8gdHJpZ2dlcmluZyBhbiBPU1IgZW50
cnkgaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgcmV0dXJuLiBIZW5jZSwgaXQgaXMgc2FmZSB0byBtb2Rp
Znkgc3RhY2sgaGVyZS4KKyAgICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhvcHRpbWl6ZWRDb2Rl
QmxvY2spOworCiAgICAgcmV0dXJuIGNhdGNoRW50cnlwb2ludC0+bWFjaGluZUNvZGU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggNTVlZjc2MTU0ZDIwNTFiMjJjOWVkZDc4NzY5NWQ1NTZjODE1MmQ3Ni4uMTQ3NmI0ZTgzODRi
MzdmZjliZGE0NzMzZjUxMThmZWFmMWI3YzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIyMTcsNyArMjIxNyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2soKQogICAgICAgICBtX2ppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0
ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5l
bWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlciht
X2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICAgICAgLy8g
Q29kZUJsb2NrIGluIHRoZSBzdGFjayBpcyBhbHJlYWR5IHJlcGxhY2VkIGluIE9TUiBlbnRyeS4K
ICAgICB9CiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0
KCkpOwpAQCAtMTEyOTgsNyArMTEyOTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhleGVjdXRhYmxlLmdwcigpLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mUmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsK
LSAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwg
RnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSwgcmVzdWx0
LmdwcigpKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dC5ncHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YTo6b2Zmc2V0T2ZBc1N0cmluZygp
KSwgcmVzdWx0LmdwcigpKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBt
X2ppdC5qdW1wKCk7CiAKICAgICBpc05hdGl2ZUV4ZWN1dGFibGUubGluaygmbV9qaXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IDQ0YTlhMWE5OGYyNzk0YTI3
MDIyOWM2ZDcyYzFiOTM2MDU1MDhjODkuLmNjNmMwNTIzMWQ3MzM5OThkOWI4MDQ0NWEyMTgzMjhk
M2RjYmJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMTQ4LDYgKzE0OSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVy
YXRvcihWTSYgdm0pCiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVn
VDIpOwogICAgIGppdC5nZXRFZmZlY3RpdmVBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QyLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNFaWdodCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgCisgICAgLy8gQ29weWluZyBsb2NhbHMgYW5kIGhlYWRlciBmcm9tIHNjcmF0Y2ggYnVm
ZmVyIHRvIHRoZSBuZXcgQ2FsbEZyYW1lLiBUaGlzIGFsc28gcmVwbGFjZXMKICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwogICAgIGppdC5zdWJQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC5uZWdQ
dHIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKQEAgLTE2MCw2ICsxNjIsMTQgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJh
dG9yKFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVu
dHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7CisKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIGppdC5wcm9iZURlYnVnKFtdKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJs
b2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChj
b2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0pOworI2VuZGlmCisKICAgICBqaXQucmVzdG9y
ZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZy
YW1lKTsKICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaAppbmRleCBhYjFmNWI4Njc1OWQwNTU2OWQzOGMwNDhkY2M4M2FhN2ZkNWZiMGVjLi5mZTI5
ZGQyYmU3YzI1M2U1MWE4NDNhZjI5N2Q4NTFiYTlmNDQ1NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNzgs
NyArNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1h
cHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJn
dW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1l
bnRzRGVzY3JpcHRvcigpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlX3JhcmVEYXRh
LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mUmFyZURhdGEoKSkgXAotICAgIG1hY3JvKEZ1
bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhX2FzU3RyaW5nLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mQXNTdHJpbmdJblJhcmVEYXRhKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFi
bGVSYXJlRGF0YV9hc1N0cmluZywgRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YTo6b2Zmc2V0
T2ZBc1N0cmluZygpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAog
ICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlv
blJhcmVEYXRhX3Byb3RvdHlwZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpv
ZmZzZXRPZlByb3RvdHlwZSgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApp
bmRleCAyOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4Li4zZWY0YWE0OGZm
ZTRjNjg3NmRjNDljM2MxNGI5MDY1YWVmZTJkNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlcjsKIAogICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBmcmFtZSA9IENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PGludDMyX3Q+KEFz
c2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CisgICAgICAgIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKICAgICAKICAgICBzd2l0Y2ggKGdyYXBoLm1f
cGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYjFlMDM2
OTE0MTBiODI3YjBjMGVkNGQwZmVjMjdkODc1NTljNTk0NC4uNzhkNTJjZjViYWFkNTA3YmNkMTc5
YzZiMWJhMDc1OTBjMTFiMTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtMTk4LDE1ICsxOTgsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICB7CiAgICAgICAgICAgICBtX3Byb2Muc2V0TnVtRW50cnlwb2ludHMobV9n
cmFwaC5tX251bWJlck9mRW50cnlwb2ludHMpOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLm1fY29kZUJsb2NrOwogCiAgICAgICAgICAgICBSZWY8QjM6OkFpcjo6
UHJvbG9ndWVHZW5lcmF0b3I+IGNhdGNoUHJvbG9ndWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRU
YXNrPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yRnVuY3Rpb24+KAotICAgICAgICAgICAgICAg
IFtjb2RlQmxvY2tdIChDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgewor
ICAgICAgICAgICAgICAgIFtdKENDYWxsSGVscGVycyYgaml0LCBCMzo6QWlyOjpDb2RlJiBjb2Rl
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFtZVNpemUoKSksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAg
ICAgICAgICAgICAgICBqaXQuZW1pdFNhdmUoY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFk
ZXIoY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7
CisgICAgICAgICAgICAgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFk
eSByZXBsYWNlZCBpbiBGVEw6OnByZXBhcmVPU1JFbnRyeS4KICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjYXRjaEVudHJ5cG9pbnRJbmRleCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0ZWNvZGVJbmRleC5rZXlzKCkpIHsKQEAgLTI3
Miw5ICsyNzEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX3Byb2MuYWRkRmFz
dENvbnN0YW50KG1fbnVtYmVyVGFnLT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29u
c3RhbnQobV9ub3RDZWxsTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJl
Y2F1c2UKLSAgICAgICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxl
Y3RlZC4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9j
YXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKSk7CisgICAgICAgIC8vIFdoZW4gcnVubmluZyBGVEwg
Y29kZSwgd2UgYWxyZWFkeSBzdG9yZSBDb2RlQmxvY2sgdG8gQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrLgogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgogICAgICAgICB1bnNpZ25l
ZCBleGl0RnJhbWVTaXplID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpOwpAQCAtMjkzLDYgKzI5MCwxMyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZ0bEZyYW1lU2l6ZSA9IHBhcmFtcy5wcm9j
KCkuZnJhbWVTaXplKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWF4RnJhbWVTaXplID0g
c3RkOjptYXgoZXhpdEZyYW1lU2l6ZSwgZnRsRnJhbWVTaXplKTsKIAorI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgICAgICAgICAgICAgaml0LnByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBj
dHgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8
Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCk7CisgICAgICAg
ICAgICAgICAgfSk7CisjZW5kaWYKKwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OwogICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZl
ZFpvbmVTaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCmluZGV4IDQxOWVmYjM2YTQwOTVkYmUxYzhhMjA0NjEyNWU4YzVjNzgyZjMzMGQuLmI0
ZmNiYWNmYzBlMjI2ZjdjNjM0N2Y1ODliMWE4ZDM0MTRiY2ZjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWJzdHJhY3RQQy5oIgorI2luY2x1ZGUgIkNQVS5oIgog
I2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpAQCAtMTA0LDYgKzEwNSw0MSBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpemVJblJlZ2lzdGVycyA9IDIg
KiBzaXplb2YoQ1BVUmVnaXN0ZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICB9OwogICAgIHN0
YXRpY19hc3NlcnQoQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzID09IHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSAvIHNpemVvZihSZWdpc3RlciksICJDYWxsZXJGcmFtZUFuZFBDOjpz
aXplSW5SZWdpc3RlcnMgaXMgaW5jb3JyZWN0LiIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpID49IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSk7CisjaWYg
IUNQVShYODZfNjQpCisgICAgLy8gT25seSB4ODZfNjQgImNhbGwiIHB1c2hlcyByZXR1cm4gYWRk
cmVzcyBvbiB0aGUgc3RhY2suIE90aGVyIGFyY2hpdGVjdHVyZSBwdXNoZXMgaW4gdGhlIGZ1bmN0
aW9uIHByb2xvZ3VlIGFmdGVyIHRoZSBjYWxsLgorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpID09IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSk7CisjZW5kaWYK
KworICAgIC8vICAgICAgTGF5b3V0IG9mIENhbGxGcmFtZQorICAgIC8vCisgICAgLy8gICB8ICAg
ICAgICAgIC4uLi4uLiAgICAgICAgICAgIHwgICB8CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgICB8CisgICAgLy8gICB8ICAgICAgICAgICBhcmdOICAgICAgICAgICAg
IHwgICB2ICBsb3dlciBhZGRyZXNzCisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKyAgICAvLyAgIHwgICAgICAgICAgIGFyZzEgICAgICAgICAgICAgfAorICAgIC8vICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgICAgICBhcmcw
ICAgICAgICAgICAgIHwKKyAgICAvLyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwor
ICAgIC8vICAgfCAgICAgICAgICAgdGhpcyAgICAgICAgICAgICB8CisgICAgLy8gICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8g
ICB8ICAgICAgICAgIGNhbGxlZSAgICAgICAgICAgIHwKKyAgICAvLyAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgIC8vICAgfCAgICAgICAgY29kZUJsb2NrICAgICAgICAgICB8
CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgICAg
ICByZXR1cm4tYWRkcmVzcyAgICAgICAgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgIGNhbGxlckZyYW1lICAgICAgICAgIHwKKyAgICAv
LyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgPC0gY2FsbGVlJ3MgY2ZyIGlzIHBv
aW50aW5nIHRoaXMgYWRkcmVzcworICAgIC8vICAgfCAgICAgICAgICBsb2NhbDAgICAgICAgICAg
ICB8CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwg
ICAgICAgICAgbG9jYWwxICAgICAgICAgICAgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgICAgIGxvY2FsTiAgICAgICAgICAgIHwKKyAg
ICAvLyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIC8vICAgfCAgICAgICAg
ICAuLi4uLi4gICAgICAgICAgICB8CiAKICAgICBlbnVtIGNsYXNzIENhbGxGcmFtZVNsb3Qgewog
ICAgICAgICBjb2RlQmxvY2sgPSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyN2RkNTk3
OTBiNzFmOThhMjE3YjEyNTg3NzY3NzE2NWFjNjhlZTBjLi5lN2FkNDVmMzliZTk5ODcwYWE4YzQw
YzllOGUzOGM0YjA2ZTRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTQwNiwxMiArNDA2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQotICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsK
LSAgICAgICAgLy8gUHJvbG9ndWUgb25seSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIK
LSAgICAgICAgcmV0dXJuIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAgICBwdXNoKGZyYW1lUG9pbnRlclJlZ2lzdGVy
KTsKQEAgLTQ3NywxMiArNDcxLDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAjaWYgQ1BVKEFSTV9USFVN
QjIpIHx8IENQVShBUk02NCkKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0
YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBm
cmFtZVBvaW50ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCi0gICAgICAgIHJldHVybiAyICog
c2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0KICAgICB2b2lkIGVtaXRGdW5jdGlvblByb2xvZ3VlKCkK
ICAgICB7CiAgICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKQEAgLTUyOCwxMiArNTE2LDYgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgog
CiAjaWYgQ1BVKE1JUFMpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJh
bWVQb2ludGVyUmVnaXN0ZXIgYW5kIHJldHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1
cm4gMiAqIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpCiAgICAgewogICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0
dXJuQWRkcmVzc1JlZ2lzdGVyKTsKQEAgLTU2OCwxMiArNTUwLDYgQEAgY2xhc3MgQXNzZW1ibHlI
ZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogCiAjaWYgQ1BVKFJJU0NW
NjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVn
aXN0ZXIgYW5kIHJldHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVv
Zih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAg
ewogICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsK
QEAgLTEyODEsNiArMTI1NywxNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVTbG90KFZpcnR1YWxSZWdp
c3RlcigwKSkud2l0aE9mZnNldChDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpOwogICAg
IH0KIAorICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgp
CisgICAgeworICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spOworICAgIH0KKworICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1l
Q29kZUJsb2NrQmVmb3JlVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN0YWNrUG9p
bnRlclJlZ2lzdGVyIHN0YXRlIGlzICJhZnRlciB0aGUgY2FsbCwgYnV0IGJlZm9yZSB0aGUgZnVu
Y3Rpb24gcHJvbG9ndWUiLgorICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLndpdGhPZmZzZXQoc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKTsKKyAgICB9CisKICAgICBzdGF0aWMg
R1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoUmVnaXN0ZXJTZXQgcHJlc2VydmVkKQogICAgIHsKICAg
ICAgICAgR1BSUmVnIHJlZ2lzdGVyc1tdID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKaW5kZXggMjliMDJhZjlmMTgwNThhM2M0Njk5ZDZkMTExOTFmOThkOWE5ZmMz
NS4uYjRiOWMzYzBhMWZhNmYyMzdmY2NhMDRiMmE4NzdiZjIzNGU2YWE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC03NDQsMTEgKzc0NCwxOSBAQCBjbGFz
cyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgZmFySnVt
cChHUFJJbmZvOjpyZWdUMSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CiAgICAgfQogCi0gICAg
dm9pZCBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUlJlZyBwcmVzZXJ2ZWRHUFIgPSBJbnZhbGlk
R1BSUmVnKQorICAgIHZvaWQgcHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJSZWcgcHJlc2VydmVk
R1BSMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZWRHUFIyID0gSW52YWxpZEdQUlJl
ZykKICAgICB7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMSA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZv
OjpyZWdUMCA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIEdQUlJl
ZyB0ZW1wMiA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMSA/IEdQUkluZm86OnJlZ1Qz
IDogR1BSSW5mbzo6cmVnVDE7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMyA9IHByZXNlcnZlZEdQUiA9
PSBHUFJJbmZvOjpyZWdUMiA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDI7CisgICAg
ICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZDsKKyAgICAgICAgaWYgKHByZXNlcnZlZEdQUjEgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHByZXNlcnZlZC5hZGQocHJlc2VydmVkR1BSMSk7
CisgICAgICAgIGlmIChwcmVzZXJ2ZWRHUFIyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBwcmVzZXJ2ZWQuYWRkKHByZXNlcnZlZEdQUjIpOworCisgICAgICAgIEdQUlJlZyB0ZW1wMSA9
IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1w
MSk7CisgICAgICAgIEdQUlJlZyB0ZW1wMiA9IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsK
KyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMik7CisgICAgICAgIEdQUlJlZyB0ZW1wMyA9IHNl
bGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKIAogICAgICAgICBHUFJSZWcgbmV3RnJhbWVQb2lu
dGVyID0gdGVtcDE7CiAgICAgICAgIEdQUlJlZyBuZXdGcmFtZVNpemVHUFIgPSB0ZW1wMjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0
NjcwOTAwZThiZTliLi44NzAwMmI5NmNjOGZlNDczNTU0NDc1Y2Y2MmE1ZTQ3YThiNDY3YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDMsMjggKzIwMyw2IEBAIHZvaWQgSklU
OjplbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIs
IFNsb3dQYXRoRnVuY3RpCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQotewotICAg
IFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90
OjpjYWxsZWUsIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhh
c0V4ZWN1dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVzdWx0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVu
Y3Rpb246OnJhcmVEYXRhVGFnKSwgcmVzdWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhp
cyk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNv
ZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tG
b3JDYWxsKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHBy
b2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJ
VCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MSwxMCArNzI5LDgg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRp
b25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0
ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9w
dGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAg
ICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAg
IHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhp
cyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXpl
U3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0
aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJl
bCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2NSw4ICs3
NDEsMTYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0g
RnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUo
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBwcm9iZURlYnVnKFs9XShQ
cm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4
LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBpZiAoY29kZUJsb2NrLT5q
aXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1lKj4oKSkpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOworI2VuZGlm
CiAKICAgICBMYWJlbCBiZWdpbkxhYmVsKHRoaXMpOwogCkBAIC04MjksNyArODEzLDE3IEBAIHZv
aWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZm
b3J0IGVmZm9ydCkKICAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKIAogICAgICAgICBl
bWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUlu
UHJvbG9ndWUocmVnVDApOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkQ29kZUJs
b2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICAgICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7
CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6QmFzZWxp
bmVKSVQpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZQICIsIFJhd1BvaW50ZXIoY3R4
LmZwPENhbGxGcmFtZSo+KCkpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyNlbmRpZgorICAgICAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIHJl
Z1QwKTsKICAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZlNob3VsZEFsd2F5c0JlSW5saW5lZCgpKSk7CiAKICAgICAgICAgbG9h
ZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
LCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlNWE5ZDRjYzM0Mjg4NzQyYmY3
YjJhMWM0ZjU0NDFlY2FmMmZjMjhmLi5kYWEyYzUyMTgzNmVlMjZjMDgzMzg3ZmQ1Mjk0YjY3ZTI4
NmY1YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVh
bFJlZ2lzdGVyLCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENv
ZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7Ci0KICAgICAg
ICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGY4MWRkZjI1Nzg0
MjRjOGY5ZWFhNDhjMzFkNTU4ZTVjMWVlMzQzYTYuLmViMzgzNzBjYjkxNjI4ODVhMTk3N2YxN2Jm
MzliN2Y1ZDcwZTk0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25HZXRXcmFwcGVkVmFsdWVGb3JDYWxsZXIsIEVuY29kZWRKU1ZhbHVlLCAoSlNSCiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0V3JhcHBlZFZhbHVl
KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSkpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXpl
UmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCB2b2lkKiwgKEpTUmVtb3RlRnVuY3Rpb24qIGNhbGxl
ZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVG
dW5jdGlvblRhcmdldENvZGUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24q
IGNhbGxlZSkpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1
LDE0ICsxNzUsMTQgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFs
aXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlLCB2b2lkKiwgKEoKICAgICAvLyBGb3JjZSB0aGUg
ZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMgYXJpdHkgZW50cnlwb2ludC4KICAgICB7CiAgICAgICAg
IERlZmVyVHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNhbid0IGpldHRpc29uIGFueSBjb2Rl
IHVudGlsIGFmdGVyIHdlIGxpbmsgdGhlIGNhbGwuCisgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrU2xvdCA9IG51bGxwdHI7CiAgICAgICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rp
b24oKSkgewogICAgICAgICAgICAgSlNTY29wZSogc2NvcGUgPSB0YXJnZXRGdW5jdGlvbi0+c2Nv
cGVVbmNoZWNrZWQoKTsKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7
Ci0gICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1Nsb3QgPSBudWxscHRyOwogICAgICAg
ICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4odm0sIHRhcmdldEZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIGNvZGVCbG9j
a1Nsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
UmVzdWx0KG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGNvZGVCbG9ja1Nsb3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBkOGEyMzc0MTM0YzRmNTU5OGRhMGJmNjRiMjg4NDVj
NDVmYjgxODY2Li5iOWU4MzBjYWQzYjNkNWYzYTQzMjAzMzkyYjRkNzdhNmMwOTE0OThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTYxLDcgKzE2MSw3
IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93
RXJyb3JGcm9tVGh1bmssIHZvaWQsIChKU0dsCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdCwgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRXcmFwcGVkVmFs
dWVGb3JDYWxsZXIsIEVuY29kZWRKU1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiosIEVuY29kZWRK
U1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBwZWRW
YWx1ZUZvclRhcmdldCwgRW5jb2RlZEpTVmFsdWUsIChKU1JlbW90ZUZ1bmN0aW9uKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxp
emVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUsIHZvaWQqLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5j
dGlvblRhcmdldENvZGUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKEpTUmVtb3RlRnVuY3Rpb24qKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93UmVtb3RlRnVuY3Rpb25F
eGNlcHRpb24sIEVuY29kZWRKU1ZhbHVlLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKIAogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgdm9p
ZCwgKENvZGVCbG9jayopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAppbmRleCAzYzRhM2FlM2E5ODhjZWU5NjU2NDQzZmM3NjEwOTBhZTBlYzNjNTYx
Li42ZDNhOGY1ZTRhMDdkN2Q0NGVjNzc5MmVhMThjMTVkYmFlNzQ3NThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yODgsMjUgKzI4OCwy
OSBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFs
VGh1bmtGb3IoVk0mIHZtLCBDYWxsTW9kZSBtbwogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdl
IGhhdmUgYSBKU0Z1bmN0aW9uLgogCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVE
YXRhKCkpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJy
YW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDQsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCBHUFJJ
bmZvOjpyZWdUNCk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgYXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQ
dHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKKyAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCBHUFJJbmZvOjpyZWdU
MCk7CiAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZqaXQpOwogICAgIGppdC5sb2FkUHRyKAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNl
OjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKSksCisgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9m
SklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpKSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQp
OwogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olpl
cm8sIEdQUkluZm86OnJlZ1Q0KSk7CiAgICAgCi0gICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBo
YXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKLSAg
ICAvLyBjYWxsLgorICAgIC8vIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywg
YW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcgYSBmYXN0IGNhbGwuCisKKyAgICBhdXRvIGlz
TmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVj
dXRhYmxlVHlwZSk7CisgICAgaml0LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9j
a0ZvcihraW5kKSksCisgICAgICAgIEdQUkluZm86OnJlZ1Q1KTsKIAogICAgIC8vIE1ha2UgYSB0
YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFjayB0byBKSVQgY29kZS4KLSAgICBKU0ludGVy
ZmFjZUpJVDo6TGFiZWwgY2FsbENvZGUoaml0LmxhYmVsKCkpOwogICAgIGVtaXRQb2ludGVyVmFs
aWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKICAgICBpZiAoaXNU
YWlsQ2FsbCkgewogICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5m
bzo6cmVnVDQpOworICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZvOjpy
ZWdUNCwgR1BSSW5mbzo6cmVnVDUpOwogICAgIH0KKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6
cmVnVDUsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgp
KTsKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRhZyk7CiAKICAg
ICAvLyBOdWxsU2V0dGVyRnVuY3Rpb25UeXBlIGRvZXMgbm90IGdldCB0aGUgZmFzdCBwYXRoIHN1
cHBvcnQuIEJ1dCBpdCBpcyBPSyBzaW5jZSB1c2luZyBOdWxsU2V0dGVyRnVuY3Rpb25UeXBlIGlz
IGV4dHJlbWVseSByYXJlLgpAQCAtMzE0LDcgKzMxOCwxNCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0mIHZtLCBDYWxsTW9k
ZSBtbwogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJl
Z1QwLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSkpOwogICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNz
ID0gdm0uZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3Ioa2luZCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhl
Y3V0YWJsZUFkZHJlc3MpLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgaml0Lmp1bXAoKS5saW5rVG8o
Y2FsbENvZGUsICZqaXQpOworCisgICAgaXNOYXRpdmUubGluaygmaml0KTsKKyAgICBlbWl0UG9p
bnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRhZyk7CisgICAg
aWYgKGlzVGFpbENhbGwpIHsKKyAgICAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93
KEdQUkluZm86OnJlZ1Q0KTsKKyAgICB9CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDQs
IEpTRW50cnlQdHJUYWcpOwogCiAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAKQEAgLTEz
ODYsMTEgKzEzOTcsMjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBi
b3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmxvYWRQdHIoCiAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBF
eGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNh
bGwpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBu
b0NvZGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgR1BSSW5mbzo6cmVnVDEpOworICAgIENDYWxsSGVscGVyczo6SnVtcCBu
b0NvZGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJl
Z1QxKTsKKworICAgIGF1dG8gaXNOYXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86
OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKTsKKyAgICBqaXQubG9hZFB0cigKKyAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLAorICAgICAgICBH
UFJJbmZvOjpyZWdUMik7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdUMiwgQ0NhbGxI
ZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CisKKyAgICBpc05hdGl2
ZS5saW5rKCZqaXQpOwogICAgIAotICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUklu
Zm86OnJlZ1QwLCBKU0VudHJ5UHRyVGFnKTsKLSAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMCwg
SlNFbnRyeVB0clRhZyk7CisgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6
cmVnVDEsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QxLCBKU0Vu
dHJ5UHRyVGFnKTsKIAogICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgIGppdC5y
ZXQoKTsKQEAgLTE1MzIsMzMgKzE1NTIsNDUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5s
b2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNr
Rm9yKENvZGVGb3JDYWxsKSksCi0gICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICBhdXRvIGNv
ZGVFeGlzdHMgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUklu
Zm86OnJlZ1QxKTsKKyAgICAgICAgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gY29kZUV4aXN0
cyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVn
VDIpOwogCiAgICAgLy8gVGhlIGNhbGxzIHRvIG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvclRh
cmdldCBhYm92ZSBtYXkgR0MsIGFuZCBhbnkgR0MgY2FuIHBvdGVudGlhbGx5IGpldHRpc29uIHRo
ZSBKSVQgY29kZSBpbiB0aGUgdGFyZ2V0IEpTRnVuY3Rpb24uCiAgICAgLy8gSWYgd2UgZmluZCB0
aGF0IHRoZSBKSVQgY29kZSBpcyBudWxsIChpLmUuIGhhcyBiZWVuIGpldHRpc29uZWQpLCB0aGVu
IHdlIG5lZWQgdG8gcmUtbWF0ZXJpYWxpemUgaXQgZm9yIHRoZSBjYWxsIGJlbG93LiBOb3RlIHRo
YXQgd2Uga25vdwogICAgIC8vIHRoYXQgb3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlv
blRhcmdldENvZGUgc2hvdWxkIGJlIGFibGUgdG8gcmUtbWF0ZXJpYWxpemUgdGhlIEpJVCBjb2Rl
IChleGNlcHQgZm9yIGFueSBPT01FKSBiZWNhdXNlIHdlIG9ubHkKICAgICAvLyB3ZW50IGRvd24g
dGhpcyBjb2RlIHBhdGggYWZ0ZXIgd2UgZm91bmQgYSBub24tbnVsbCBKSVQgY29kZSAoaW4gdGhl
IG5vQ29kZSBjaGVjaykgYWJvdmUgaS5lLiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gbWF0ZXJp
YWxpemUgdGhlIEpJVCBjb2RlLgorICAgIC8vIEZJWE1FOiBXaW5kb3dzIHg2NCBpcyBub3Qgc3Vw
cG9ydGVkIHNpbmNlIG9wZXJhdGlvbk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2Rl
IHJldHVybnMgU2xvd1BhdGhSZXR1cm5UeXBlLgogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSk+KEdQUklu
Zm86OnJlZ1QwKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSkpLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZv
Ojpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChq
aXQuZW1pdEp1bXBJZkV4Y2VwdGlvbih2bSkpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVD
YWxsKCkpOworICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpy
ZWdUMik7CisgICAgYXV0byBtYXRlcmlhbGl6ZWQgPSBqaXQuanVtcCgpOwogCiAgICAgY29kZUV4
aXN0cy5saW5rKCZqaXQpOworICAgIGF1dG8gaXNOYXRpdmUgPSBqaXQuYnJhbmNoSWZOb3RUeXBl
KEdQUkluZm86OnJlZ1QxLCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKTsKKyAgICBqaXQubG9hZFB0
cigKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDEsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLAor
ICAgICAgICBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdU
MywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CisKKyAg
ICBpc05hdGl2ZS5saW5rKCZqaXQpOworICAgIG1hdGVyaWFsaXplZC5saW5rKCZqaXQpOwogICAg
IC8vIEJhc2VkIG9uIHRoZSBjaGVjayBhYm92ZSwgd2Ugc2hvdWxkIGJlIGdvb2Qgd2l0aCB0aGlz
LiBPbiBBUk02NCwgZW1pdFBvaW50ZXJWYWxpZGF0aW9uIHdpbGwgZG8gdGhpcy4KICNpZiBBU1NF
UlRfRU5BQkxFRCAmJiAhQ1BVKEFSTTY0RSkKICAgICB7Ci0gICAgICAgIENDYWxsSGVscGVyczo6
SnVtcCBjaGVja05vdE51bGwgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblpl
cm8sIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNoZWNrTm90
TnVsbCA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6
cmVnVDIpOwogICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52YWxpZFBvaW50ZXIpOwog
ICAgICAgICBjaGVja05vdE51bGwubGluaygmaml0KTsKICAgICB9CiAjZW5kaWYKIAotICAgIGVt
aXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsK
LSAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMSwgSlNFbnRyeVB0clRhZyk7CisgICAgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDIsIEpTRW50cnlQdHJUYWcpOworICAg
IGppdC5jYWxsKEdQUkluZm86OnJlZ1QyLCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIC8vIFdyYXAg
cmV0dXJuIHZhbHVlCiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxZmRiNGE1N2Q1OTRi
ZWVhNmViYjgwYWE2OTdiZGFkNDNmOTBmODczLi41ZDc5Y2ZjODkwMjBiMDVhNGUxNmM4N2NjZTBl
NTE5MzFmMmE4MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzAsNiArMTcwLDcgQEAgY29uc3QgU3RhY2tBbGln
bm1lbnRTbG90cyA9IGNvbnN0ZXhwciAoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKIGNvbnN0
IFN0YWNrQWxpZ25tZW50TWFzayA9IFN0YWNrQWxpZ25tZW50IC0gMQogCiBjb25zdCBDYWxsZXJG
cmFtZUFuZFBDU2l6ZSA9IGNvbnN0ZXhwciAoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorY29u
c3QgUHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSA9IGNvbnN0ZXhwciAocHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpKQogCiBjb25zdCBDYWxsZXJGcmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0g
Q2FsbGVyRnJhbWUgKyBNYWNoaW5lUmVnaXN0ZXJTaXplCkBAIC01NjYsNiArNTY3LDcgQEAgY29u
c3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29uc3QgRGVyaXZlZEFycmF5VHlw
ZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBj
b25zdGV4cHIgUHJveHlPYmplY3RUeXBlCiBjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhw
ciBIZWFwQmlnSW50VHlwZQorY29uc3QgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSA9IGNvbnN0ZXhw
ciBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQg
dG8gYmUgbnVtYmVyZWQgaW4gYSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVh
bGx5IHdyaXR0ZW4KICMgc3dpdGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlf
dmFsLgpAQCAtMTE5Miw3ICsxMTk0LDggQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKICAgICBl
bmQKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwodGVtcDEsIHRlbXAyLCB0ZW1w
MywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwodGVtcDEsIHRlbXAyLCB0ZW1w
MywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQorICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9jayAr
IFBheWxvYWRPZmZzZXQgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZVtzcF0pCiBlbmQKIAogbWFjcm8g
aW52b2tlRm9yUmVndWxhckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIG1heWJl
T2xkQ0ZSLCBjYWxsUHRyVGFnKQpAQCAtMTIwOCw3ICsxMjExLDcgQEAgZW5kCiAKICMgc3AgcG9p
bnRzIHRvIHRoZSBuZXcgZnJhbWUgKyBDYWxsZXJGcmFtZUFuZFBDU2l6ZQogIyBXZSBsZWF2ZSBj
ZnIgdGVtcDQgdG8gdXNlIGl0IGZvciB1bnRhZ2dpbmcuCi1tYWNybyBwcmVwYXJlRm9yVGFpbENh
bGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCittYWNybyBwcmVwYXJlRm9yVGFpbENhbGwo
dGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHN0b3JlQ29kZUJsb2NrKQogICAgIHJlc3RvcmVD
YWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgpAQCAtMTI2Myw2ICsxMjY2LDggQEAg
bWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQogICAg
IGVuZAogCiAgICAgbW92ZSB0ZW1wMSwgc3AKKworICAgIHN0b3JlQ29kZUJsb2NrKENvZGVCbG9j
ayArIFBheWxvYWRPZmZzZXQgLSBQcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhW3NwXSkKIGVuZAog
CiBtYWNybyBpbnZva2VGb3JUYWlsQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwg
bWF5YmVPbGRDRlIsIGNhbGxQdHJUYWcpCkBAIC0xMzAzLDcgKzEzMDgsNyBAQCBtYWNybyBzbG93
UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAg
ICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAgICAg
IG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMs
IHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhh
ZGRyZXNzKSBlbmQpCiAgICAgICAgIC5kb250VXBkYXRlU1A6CiAgICAgICAgICAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5
U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKQEAgLTE0ODIsNDQgKzE0ODcsNiBAQCBtYWNy
byBhc3NlcnROb3RDb25zdGFudChzaXplLCBpbmRleCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8g
ZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGlmIEpT
VkFMVUU2NAotICAgICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBl
bHNlCi0gICAgICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdGFyZ2V0UmVn
aXN0ZXIKLSAgICBlbmQKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVE
YXRhW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBidHB6IHRhcmdldFJlZ2lz
dGVyLCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlzRXhlY3V0YWJsZQot
ICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAoY29uc3RleHByIEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rlcgot
LmlzRXhlY3V0YWJsZToKLSAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2Nr
Rm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYg
SlNWQUxVRTY0Ci0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAg
IGVsc2UKLSAgICAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRS
ZWdpc3RlcgotICAgIGVuZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFy
ZURhdGFbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVn
aXN0ZXIsIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxl
Ci0gICAgbG9hZHAgKEZ1bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIg
SlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
Ci0uaXNFeGVjdXRhYmxlOgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQotICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgotZW5kCi0KLW1hY3JvIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQotICAgIHN0b3JlcCBzb3VyY2VSZWdpc3Rlciwg
Q29kZUJsb2NrW2Nmcl0KLWVuZAotCi1tYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihz
b3VyY2VSZWdpc3RlcikKLSAgICAjIE5vdGhpbmcgdG8gZG8hCi1lbmQKLQogbWFjcm8gY29udmVy
dENhbGxlZVRvVk0oY2FsbGVlKQogICAgIGJ0cG56IGNhbGxlZSwgKGNvbnN0ZXhwciBQcmVjaXNl
QWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCksIC5wcmVjaXNlQWxsb2NhdGlvbgogICAgIGFuZHAg
TWFya2VkQmxvY2tNYXNrLCBjYWxsZWUKQEAgLTE1MzIsNyArMTQ5OSw3IEBAIGVuZAogCiAjIERv
IHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQ
QywgbGVhdmUgdGhlIENvZGVCbG9jayoKICMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9n
dWUgZW50cnkgT1NSLgotbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tT
ZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQorbWFjcm8gcHJvbG9ndWUob3NyU2xv
d1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNo
ZWNrIGlmIHdlIHNob3VsZCBPU1IuCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKQEAg
LTE1NDEsOCArMTUwOCw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgY2FsbFNsb3dQ
YXRoKHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGFkZHAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwsIHNwCiAgICAgZW5kCi0gICAgY29kZUJsb2NrR2V0dGVyKHQxKQotICAgIGNvZGVCbG9j
a1NldHRlcih0MSkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBpZiBub3QgKENf
TE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRD
b2RlW3QxXSwgdDAKICAgICAgICAgYmFkZGlzIDUsIChVbmxpbmtlZENvZGVCbG9jazo6bV9sbGlu
dEV4ZWN1dGVDb3VudGVyICsgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyOjptX2NvdW50ZXIpW3Qw
XSwgLmNvbnRpbnVlCkBAIC0xNTgyLDcgKzE1NDgsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAg
ICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKICAgICAgICAgZW5kCiAgICAgLnJlY292
ZXI6Ci0gICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQorICAgICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICAuY29udGludWU6CiAgICAgZW5kCiAKQEAgLTE2MjEs
NyArMTU4Nyw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0
dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKIC5zdGFja0hlaWdodE9LR2V0Q29kZUJs
b2NrOgogICAgICMgU3RhY2sgY2hlY2sgc2xvdyBwYXRoIHJldHVybmVkIHRoYXQgdGhlIHN0YWNr
IHdhcyBvay4KICAgICAjIFNpbmNlIHRoZXkgd2VyZSBjbG9iYmVyZWQsIG5lZWQgdG8gZ2V0IENv
ZGVCbG9jayBhbmQgbmV3IHNwCi0gICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JD
b2RlQmxvY2sodDEsIHQwKQogICAgIHN1YnAgY2ZyLCB0MCwgdDAKIApAQCAtMjAyNCwzOSArMTk5
MCwzOSBAQCBub1dpZGUobGxpbnRfb3Bfd2lkZTMyKQogbm9XaWRlKGxsaW50X29wX2VudGVyKQog
CiBvcChsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xvZ3VlKG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3VlKF9sbGludF9l
bnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQog
CiAKIG9wKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCBtYWNybyAoKQotICAgIHByb2xv
Z3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIHByb2xvZ3Vl
KF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgw
KQogZW5kKQogCiAKIG9wKGxsaW50X2V2YWxfcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9n
dWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUo
X2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDAp
CiBlbmQpCiAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUsIG1hY3JvICgp
Ci0gICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9l
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlv
bl9mb3JfY2FsbCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2go
MCkKIGVuZCkKICAgICAKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dl
dHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKICAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKICAgICAKIAogb3Ao
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCi0gICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRf
dHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zv
cl9jYWxsKQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlD
aGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9u
KDApCkBAIC0yMDY0LDcgKzIwMzAsNyBAQCBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaywgbWFjcm8gKCkKIGVuZCkKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVj
dENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlD
aGVja19mb3JfY29uc3RydWN0KQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3Jf
Y29uc3RydWN0KQogICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0
aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAg
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKQEAgLTI1MjUsNyArMjQ5MSw3IEBAIG1hY3JvIGxp
bmtTbG93UGF0aEZvcihmdW5jdGlvbikKICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBi
dHB6IHIxLCAuZG9Ob3RUcmFzaAogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0
MSkKLSAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEsIHQyLCB0MywgdDQpCisgICAgcHJlcGFyZUZv
clRhaWxDYWxsKHQxLCB0MiwgdDMsIHQ0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgdW50YWdS
ZXR1cm5BZGRyZXNzIHQ0CiAuZG9Ob3RUcmFzaDoKICAgICBqbXAgdDAsIEpTRW50cnlQdHJUYWcK
QEAgLTI1MzQsNyArMjUwMCw3IEBAIGVuZAogIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkgaXMgY2Fs
bGVlCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmpl
Y3QKLW1hY3JvIHZpcnR1YWxUaHVua0ZvcihvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVjaywg
aW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUsIHByZXBhcmVDYWxsLCBzbG93Q2FzZSkKK21hY3Jv
IHZpcnR1YWxUaHVua0ZvcihvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVjaywgb2Zmc2V0T2ZD
b2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lLCBwcmVwYXJlQ2FsbCwgc2xvd0Nh
c2UpCiAgICAgYWRkaSAxLCBDYWxsTGlua0luZm86Om1fc2xvd1BhdGhDb3VudFt0Ml0KICAgICBp
ZiBKU1ZBTFVFNjQKICAgICAgICAgYnRxbnogdDAsIE5vdENlbGxNYXNrLCBzbG93Q2FzZQpAQCAt
MjU0MiwxNCArMjUwOCwxOSBAQCBtYWNybyB2aXJ0dWFsVGh1bmtGb3Iob2Zmc2V0T2ZKSVRDb2Rl
V2l0aEFyaXR5Q2hlY2ssIGludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lLAogICAgICAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgc2xvd0Nhc2UKICAgICBlbmQKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlw
ZVt0MF0sIEpTRnVuY3Rpb25UeXBlLCAubm90SlNGdW5jdGlvbgotICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdDBdLCB0MQotICAgIGJ0cHogdDEsIChjb25zdGV4
cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1
bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFy
ZURhdGFUYWcpKVt0MV0sIHQxCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JS
YXJlRGF0YVt0MF0sIHQ1CisgICAgYnRweiB0NSwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKKyAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0YTo6bV9l
eGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3Q1XSwgdDUK
IC5pc0V4ZWN1dGFibGU6Ci0gICAgbG9hZHAgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tb
dDFdLCB0MQotICAgIGJ0cHogdDEsIHNsb3dDYXNlCisgICAgbG9hZHAgb2Zmc2V0T2ZKSVRDb2Rl
V2l0aEFyaXR5Q2hlY2tbdDVdLCB0NAorICAgIGJ0cHogdDQsIHNsb3dDYXNlICMgV2hlbiBqdW1w
aW5nIHRvIHNsb3dDYXNlLCB0MCwgdDEsIHQyLCB0MyBuZWVkcyB0byBiZSB1bm1vZGlmaWVkLgor
ICAgIG1vdmUgdDQsIHQxCisgICAgbW92ZSAwLCB0MAorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBl
W3Q1XSwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgLmNhbGxDb2RlCisgICAgbG9hZHAgb2Zmc2V0
T2ZDb2RlQmxvY2tbdDVdLCB0MAogLmNhbGxDb2RlOgogICAgIHByZXBhcmVDYWxsKHQ1LCB0Miwg
dDMsIHQ0KQorICAgIHN0b3JlcCB0MCwgQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNldCAtIFByb2xv
Z3VlU3RhY2tQb2ludGVyRGVsdGFbc3BdCiAgICAgam1wIHQxLCBKU0VudHJ5UHRyVGFnCiAubm90
SlNGdW5jdGlvbjoKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEludGVybmFsRnVuY3Rp
b25UeXBlLCBzbG93Q2FzZQpAQCAtMjU2OCw3ICsyNTM5LDcgQEAgZW5kKQogIyB0MiBpcyBDYWxs
TGlua0luZm8qCiAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0
dWFsX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0
YWJsZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFs
X2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0KSBlbmQsIC5zbG93Q2FzZSkKKyAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6
Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNhbGwsIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUs
IG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nhc2UpCiAuc2xv
d0Nhc2U6CiAgICAgbGlua1Nsb3dQYXRoRm9yKF9sbGludF92aXJ0dWFsX2NhbGwpCiBlbmQpCkBA
IC0yNTc3LDcgKzI1NDgsNyBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMgaXMg
Y2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY29uc3RydWN0X3RyYW1w
b2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9u
X2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQp
IGVuZCwgLnNsb3dDYXNlKQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QsIF9sbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3Rf
dHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93
Q2FzZSkKIC5zbG93Q2FzZToKICAgICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2Fs
bCkKIGVuZCkKQEAgLTI1ODYsOSArMjU1Nyw5IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZv
KgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF90YWls
X2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJs
ZUJhc2U6Om1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgX2xsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
KQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCwgX2xs
aW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAxLCB0ZW1w
MiwgdGVtcDMsIHRlbXA0KQogICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
dGVtcDEpCi0gICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0
ZW1wNCkKKyAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0LCBtYWNybyhhZGRyZXNzKSBlbmQpCiAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1w
NAogICAgIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBh
Y2U4NzExNjcyZTcwMjE2ZDM5YTQ4ZGYxNWZkNjZkNmI1N2M0MTFlLi5hZDI1MDE3ZWYwYjQ3ZmMw
YjA1MDQ3NDdkYjU3NWI5MTUwMThhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjI1OSw3ICsy
MjU5LDEwIEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAKIC5ub3RQb2x5bW9ycGhpYzoKICAg
ICBicG5lcSB0MCwgdDMsIC5vcENhbGxTbG93Ci0gICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwg
dDEpCisgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAg
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRh
SUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICBl
bmQpCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0
NV0sIHQ1CkBAIC0yMzM4LDcgKzIzNDEsMTAgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVO
YW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKIAog
ICAgICAgICAubm90UG9seW1vcnBoaWM6CiAgICAgICAgICAgICBicG5lcSB0MCwgdDMsIC5vcENh
bGxTbG93Ci0gICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAg
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICAg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5k
YXRhSUMubV9jb2RlQmxvY2tbdDVdLCB0MgorICAgICAgICAgICAgICAgIHN0b3JlcCB0MiwgYWRk
cmVzcworICAgICAgICAgICAgZW5kKQogCiAgICAgICAgIC5nb1BvbHltb3JwaGljOgogICAgICAg
ICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRh
dGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXgg
NWRlN2JjYzdmZDBkNGYwNDBmMmRmOTRiZDQ3MzQ1ZDgzNTg2OTQ0Ny4uOGNkN2RiZTJhNGEyNTkw
NjQzNjFkMzZmNTZmOGNiM2U0OTUwOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTI0ODMsNyArMjQ4Mywx
MCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogCiAubm90UG9seW1vcnBoaWM6CiAgICAgYnFu
ZXEgdDAsIHQxLCAub3BDYWxsU2xvdwotICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQor
ICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1f
Y29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgZW5kKQog
CiAuZ29Qb2x5bW9ycGhpYzoKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0
NQpAQCAtMjU2MSw3ICsyNTY0LDEwIEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bjb2RlTmFtZSwg
c2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpCiAKICAgICAg
ICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnFuZXEgdDAsIHQxLCAub3BDYWxsU2xv
dwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgICAgICAgICBw
cmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgICAgICAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlD
Lm1fY29kZUJsb2NrW3Q1XSwgdDIKKyAgICAgICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MK
KyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMu
bV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCA3MTM1ZjRmNmZjMjBjYjM5ZTg1YmFiYzFk
MWNmMWVhYjU4YjYyYmQ2Li4yNGMxNGIzZjhmNmI1ZjQ1NWJkMGE1YTc3YzU5MzJiZTlmNjhlZWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE0
Nyw3ICsxNDcsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2Nr
UmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCiAgICAg
ICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6Ci0gICAgICAgICAgICBub3RGdW5jdGlvbkNv
ZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKKyAgICAgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBjb2RlQmxvY2tSZWdpc3RlcgogICAgICAgICBlbmQpCiAgICAgZW5kCiBlbmQK
QEAgLTI4Myw3ICsyODMsNyBAQCBtYWNybyByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkK
ICAgICBzdWJwIGNmciwgd3MxLCBzcAogZW5kCiAKLW1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKK21hY3JvIHdhc21Q
cm9sb2d1ZShsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFu
ZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQog
ICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKQEAgLTI5Myw4ICsyOTMsOSBAQCBt
YWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRX
YXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fb3duZXJbd2FzbUluc3Rh
bmNlXSwgd3MwCiAgICAgc3RvcmVwIHdzMCwgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nmcl0KIAotICAg
IGNvZGVCbG9ja0dldHRlcih3czApCi0gICAgY29kZUJsb2NrU2V0dGVyKHdzMCkKKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgd3MwCisgICAgYW5kcCB+Mywgd3MwCisgICAgc3RvcmVwIHdzMCwgQ29k
ZUJsb2NrW2Nmcl0KIAogICAgICMgR2V0IG5ldyBzcCBpbiB3czEgYW5kIGNoZWNrIHN0YWNrIGhl
aWdodC4KICAgICBsb2FkaSBXYXNtOjpMTEludENhbGxlZTo6bV9udW1DYWxsZWVMb2NhbHNbd3Mw
XSwgd3MxCkBAIC01MTQsNyArNTE1LDcgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgbWFj
cm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Qcm9sb2d1ZSh3YXNtQ29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZUZy
b21UTFMpCisgICAgd2FzbVByb2xvZ3VlKGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTKQogICAgIHdh
c21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCkBAIC01MjMsNyArNTI0LDcgQEAgb3Aod2FzbV9m
dW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgICAgIGVycm9yCiAgICAgZW5k
CiAKLSAgICB3YXNtUHJvbG9ndWUod2FzbUNvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIG1hY3JvICgpIGVuZCkKKyAgICB3YXNtUHJvbG9ndWUobWFjcm8gKCkgZW5kKQog
ICAgIHdhc21OZXh0SW5zdHJ1Y3Rpb24oKQogZW5kKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDM3ZTBjNWRiNjFhY2E2
NDJlNWVmZGY2ODYxMmYwMjMxYzQ1OGZmZWEuLjI2YTRkYWNhZjVmOTIwYTI4ZDc2YzY4NDlmNTQz
YTE4ZTFlYzAyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yODgsMjAgKzI4OCwyNiBAQCBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgfQogCiAgICAg
c3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1fcmFyZURhdGEpOyB9Ci0gICAgc3RhdGlj
IGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZ0luUmFyZURhdGEoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNTdHJpbmcpOyB9CiAgICAgc3RhdGljIGlubGlu
ZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JDYWxsKTsgfQogICAgIHN0
YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QpOyB9CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNl
OwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24pOwotICAgIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTY3JpcHRFeGVjdXRh
YmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwotCi0gICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1
dGFibGU7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9ja0ZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBtX2NvZGVCbG9ja0ZvckNhbGwpOworICAgICAgICBjYXNl
IENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uRXhlY3V0YWJsZSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOworICAgICAgICB9Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KIAogICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKKworICAgICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRP
ZkFzU3RyaW5nKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJhcmVEYXRhLCBtX2FzU3RyaW5n
KTsgfQorCiAgICAgICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7
CiAgICAgICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKQEAgLTMxNCw2ICszMjAsMTQgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+IG1fYXNTdHJpbmc7CiAgICAgfTsKIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRXhl
Y3V0YWJsZUJhc2U7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29k
ZSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgSW50cmluc2ljLCBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbik7CisgICAgCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFNj
cmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSk7CisKKyAgICBmcmllbmQgY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKKwogICAgIFJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YSgpCiAgICAg
ewogICAgICAgICBpZiAoTElLRUxZKG1fcmFyZURhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Nhc3QuaAppbmRleCBhNjk5MzE1OTA5OWNjYzFiNzM5NmE5N2M1OGZkNGVlMzFhNWMx
ODJlLi44ZGMyZjE3ODJlMGJjZDU0NzI1ZTI3NzliYmZlNjBmZTc3YzY0Nzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtODksNiArODksNyBAQCBzdHJ1Y3QgSlNU
eXBlUmFuZ2UgewogICAgIG1hY3JvKFJlZ0V4cE9iamVjdCwgSlNUeXBlOjpSZWdFeHBPYmplY3RU
eXBlLCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU1dlYkFzc2VtYmx5
TW9kdWxlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSwgSlNUeXBlOjpXZWJBc3NlbWJs
eU1vZHVsZVR5cGUpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHMsIEpTVHlwZTo6RGlyZWN0
QXJndW1lbnRzVHlwZSwgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlKSBcCisgICAgbWFjcm8o
RnVuY3Rpb25FeGVjdXRhYmxlLCBKU1R5cGU6OkZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIEpTVHlw
ZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSkgXAogICAgIG1hY3JvKFNjb3BlZEFyZ3VtZW50cywg
SlNUeXBlOjpTY29wZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OlNjb3BlZEFyZ3VtZW50c1R5cGUp
IFwKICAgICBtYWNybyhDbG9uZWRBcmd1bWVudHMsIEpTVHlwZTo6Q2xvbmVkQXJndW1lbnRzVHlw
ZSwgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSBcCiAgICAgbWFjcm8oSlNHbG9iYWxPYmpl
Y3QsIEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSwgSlNUeXBlOjpHbG9iYWxPYmplY3RUeXBlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggM2JiNDU4ZWU4ZTM2ZDZiNGUy
NjVmZGI5YzE5M2EyZWRkMjJkZTA4Mi4uYTI3OThkZDNlYjljZmU3MzM2ZjM2M2VmZjU3MzI4OGNi
NGRhZTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzE2LDkgKzcx
NiwxNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0UmVtb3RlRnVuY3Rpb24oYm9vbCBpc0pT
RnVuY3Rpb24pCiAgICAgYXV0byBnZXRPckNyZWF0ZSA9IFsmXSAoV2VhazxOYXRpdmVFeGVjdXRh
YmxlPiYgc2xvdCkgLT4gTmF0aXZlRXhlY3V0YWJsZSogewogICAgICAgICBpZiAoYXV0byogY2Fj
aGVkID0gc2xvdC5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CisKKyAgICAgICAg
SW50cmluc2ljIGludHJpbnNpYyA9IE5vSW50cmluc2ljOworICAgICAgICBpZiAoIXNsb3dDYXNl
KSB7CisjaWYgIShPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KSkKKyAgICAgICAgICAgIGludHJp
bnNpYyA9IFJlbW90ZUZ1bmN0aW9uQ2FsbEludHJpbnNpYzsKKyNlbmRpZgorICAgICAgICB9CisK
ICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogcmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAogICAg
ICAgICAgICAgc2xvd0Nhc2UgPyByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmljIDogcmVtb3RlRnVu
Y3Rpb25DYWxsRm9ySlNGdW5jdGlvbiwKLSAgICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5z
aWMgOiBSZW1vdGVGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBpbnRyaW5zaWMs
CiAgICAgICAgICAgICBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgU3Ry
aW5nKCkpOwogICAgICAgICBzbG90ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxlPihyZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU9wZXJhdGlvbnMuY3BwCmluZGV4IGJiNDZmOGE4MTMyZDFlZDU1ZTFjMzRhZjZhMDBmMGQyNDlm
ZjBmYzMuLjUxNDY0NTcyZjFjZjJlYzFmMGNhYWY1OGRkYjc4NGFmY2ZiMzY5MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKQEAgLTE5MiwxNCAr
MTkyLDE0IEBAIHN0YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCwgQkJRQ2FsbGVlJiBjCiAgICAgLy8gcG9wKGZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVy
Kj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMTsK
LSAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3Vl
U3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMSk7CiAjZWxpZiBDUFUoQVJN
NjRFKSB8fCBDUFUoQVJNNjQpCiAgICAgLy8gbW92ZShmcmFtZVBvaW50ZXJSZWdpc3Rlciwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIC8vIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7CiAgICAgY29udGV4dC5mcCgpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdp
c3Rlcio+KCpmcmFtZVBvaW50ZXIpOwogICAgIGNvbnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjps
cikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEpKTsKICAg
ICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3NlcnQoQXNz
ZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQq
KSAqIDIpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09
IHNpemVvZih2b2lkKikgKiAyKTsKICNpZiBDUFUoQVJNNjRFKQogICAgIC8vIExSIG5lZWRzIHRv
IGJlIHVudGFnZ2VkIHNpbmNlIE9TUiBlbnRyeSBmdW5jdGlvbiBwcm9sb2d1ZSB3aWxsIHRhZyBp
dCB3aXRoIFNQLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGFpbC1jYWxsLgogICAgIGNvbnRleHQuZ3By
KEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPih1bnRhZ0Nv
ZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChjb250ZXh0Lmdwcjx2b2lkKj4oQVJNNjRS
ZWdpc3RlcnM6OmxyKSwgY29udGV4dC5zcCgpKSk7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGlj
IHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBjb250
ZXh0LCBCQlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJl
Z2lzdGVyKj4oKmZyYW1lUG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoUklTQ1Y2NFJlZ2lzdGVy
czo6cmEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFtZVBvaW50ZXIgKyAxKSk7
CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMjsKLSAgICBzdGF0aWNfYXNzZXJ0
KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2
b2lkKikgKiAyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEo
KSA9PSBzaXplb2Yodm9pZCopICogMik7CiAjZWxzZQogI2Vycm9yIFVuc3VwcG9ydGVkIGFyY2hp
dGVjdHVyZS4KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456664</attachid>
            <date>2022-04-04 20:19:49 -0700</date>
            <delta_ts>2022-04-04 20:19:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238535-20220404201948.patch</filename>
            <type>text/plain</type>
            <size>74389</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NmU3ZWYwZDk4MDg5MDlmMzliYzNjMTZhMGNlYjZkNDFmYTY4NGFiLi5kYzVjYzM5NzQzNGNkZTBj
NzQ0M2Q1YWMzYzdiYmZhNzFiOWMwYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAyMi0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIENvZGVCbG9jayBpbiBjYWxsZXIgc2lkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2Vz
IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgSlMgZnVuY3Rpb25zLiBOb3csIHdlIG5lZWQgdG8g
c3RvcmUgQ29kZUJsb2NrIHRvIHRoZSBzdGFjayBpbiB0aGUgY2FsbGVyIHNpZGUgaW5zdGVhZC4K
KyAgICAgICAgVGhpcyBoZWxwcyBMTEludCwgdW5saW5rZWQgQmFzZWxpbmUsIGFuZCBERkcgc2lu
Y2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gbG9hZCBDb2RlQmxvY2sgZnJvbSBjYWxsZWUgdmlhIGNv
c3RseSBkZXBlbmRlbnQgbG9hZHM6IHVubGlua2VkCisgICAgICAgIG9uZXMgY2Fubm90IGVtYmVk
IENvZGVCbG9jayByYXcgcG9pbnRlciBpbnRvIHRoZSBtYWNoaW5lIGNvZGUgaXRzZWxmLiBTbyB3
ZSBuZWVkZWQgdG8gbG9hZCBpdCBmcm9tIGNhbGxlZS4gQnV0IG5vdywgY2FsbGVyIHB1dHMgdGhl
CisgICAgICAgIHJpZ2h0IENvZGVCbG9jayBwb2ludGVyIGludG8gdGhlIHN0YWNrIHNvIHdlIGRv
IG5vdCBuZWVkIHRoYXQgY29kZS4gQW5kIGluIG1vc3QgY2FzZXMsIGNhbGxlciBhbHJlYWR5IGtu
b3dzIENvZGVCbG9jayBzaW5jZSBpdCBpcyB0aWVkCisgICAgICAgIHRvIGFjdHVhbGx5IHVzZWQg
bWFjaGluZSBjb2RlIHBvaW50ZXIuCisgICAgICAgIE9TUiBlbnRyeSBhbHNvIG1hdGVyaWFsaXpl
cyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGluIHRoZSBPU1IgZW50cnkgc2lkZSBpbnN0ZWFkIG9m
IGRvaW5nIGl0IGluIHRoZSBjYWxsZWUgc2lkZS4KKworICAgICAgICBUaGlzIGNvbnRyaWJ1dGVz
IHRvIDAuMyUgcHJvZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICogYXNzZW1i
bGVyL0NQVS5oOgorICAgICAgICAoSlNDOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OnNldE1vbm9tb3JwaGljQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZv
OjpjbGVhckNhbGxlZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6cmV2ZXJ0Q2FsbFRv
U3R1Yik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0U3R1Yik6CisgICAgICAgIChKU0M6Ok9wdGlt
aXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9w
dGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAg
ICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgor
ICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjpvZmZzZXRPZkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtNb25vbW9ycGhpY0NhbGwpOgorICAgICAgICAoSlND
OjpsaW5rRGlyZWN0Q2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1JlcGF0Y2hJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JXaXRoRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkp
OgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBm
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgor
ICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjYWxsZWVGcmFtZUNv
ZGVCbG9ja0JlZm9yZUNhbGwpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxl
ZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwcmVwYXJlRm9y
VGFpbENhbGxTbG93KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmly
dHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpyZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0UmVtb3RlRnVu
Y3Rpb24pOgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpkb09TUkVudHJ5KToKKwogMjAyMi0wNC0wNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2Fy
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE9ubHkgY2hlY2sgaXNQYWdlZE91dCgpIHVuZGVyIG1l
bW9yeSBwcmVzc3VyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9DUFUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKaW5kZXggYjNi
N2NlNTQ4M2NmZTZkNGE5MzhmNDAwMzY5MmI3MzNkZmMxODRjOS4uZmI4OGU3NDM5YzI0ZjAwNTdk
NWFhNzVkOWMyZjc0YzkxYWE5MWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9DUFUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQ
VS5oCkBAIC0xNjgsNSArMTY4LDIzIEBAIEFMV0FZU19JTkxJTkUgaW50NjRfdCBod0wzQ2FjaGVT
aXplKCkgeyByZXR1cm4gMDsgfQogQUxXQVlTX0lOTElORSBpbnQzMl90IGh3UGh5c2ljYWxDUFVN
YXgoKSB7IHJldHVybiBrZXJuVENTTUF3YXJlTnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyB9CiAj
ZW5kaWYKIAorY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKK3sK
KyNpZiBFTkFCTEUoQ19MT09QKQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50
ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2YoQ1BVUmVn
aXN0ZXIpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICAvLyBQcm9sb2d1ZSBvbmx5IHNhdmVzIHRo
ZSBmcmFtZVBvaW50ZXJSZWdpc3RlcgorICAgIHJldHVybiBzaXplb2YoQ1BVUmVnaXN0ZXIpOwor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShS
SVNDVjY0KQorICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBmcmFtZVBvaW50ZXJSZWdpc3RlciBh
bmQgbGlua1JlZ2lzdGVyCisgICAgcmV0dXJuIDIgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpOworI2Vs
c2UKKyNlcnJvciB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzCisjZW5kaWYKK30KKworCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCmluZGV4IDM3MTZmMmFmODU5ZWRhNDExYzg1MTQxOTZmZGNmYzhmYWMx
NGVhYzcuLjljNzUzMWNkODFlOTAwOGE4MGRjZmU2MTFlNjY5ZDdjNDEzYjc0ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0xMDgs
MTcgKzEwOCwxOSBAQCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlu
a0luZm86OmRvbmVMb2NhdGlvbigpCiAgICAgcmV0dXJuIG1fZG9uZUxvY2F0aW9uOwogfQogCi12
b2lkIENhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4gY29kZVB0cikKK3ZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghaXNEaXJlY3QoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihjYWxsZWUpICYgcG9seW1vcnBoaWNDYWxsZWVNYXNrKSk7CiAgICAg
bV9jYWxsZWVPckNvZGVCbG9jay5zZXQodm0sIG93bmVyLCBjYWxsZWUpOwogCi0gICAgaWYgKGlz
RGF0YUlDKCkpCisgICAgaWYgKGlzRGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVz
dGluYXRpb24gPSBjb2RlUHRyOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2Fz
dDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4odGhpcyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBjb2RlQmxv
Y2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9j
YWxsZWVMb2NhdGlvbiwgY2FsbGVlKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0xMzAsMTAgKzEzMiwxMiBAQCB2b2lkIENhbGxMaW5rSW5mbzo6Y2xl
YXJDYWxsZWUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0RpcmVjdCgpKTsKICAgICBtX2Nh
bGxlZU9yQ29kZUJsb2NrLmNsZWFyKCk7Ci0gICAgaWYgKGlzRGF0YUlDKCkpCisgICAgaWYgKGlz
RGF0YUlDKCkpIHsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOwogICAg
ICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0cjsKLSAg
ICBlbHNlIGlmICghY2xlYXJlZEJ5SmV0dGlzb24oKSkgeworICAgIH0gZWxzZSBpZiAoIWNsZWFy
ZWRCeUpldHRpc29uKCkpIHsKICNpZiBFTkFCTEUoSklUKQorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaFBvaW50ZXIodS5jb2RlSUMubV9jb2RlQmxvY2tMb2NhdGlvbiwgbnVsbHB0cik7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxl
ZUxvY2F0aW9uLCBudWxscHRyKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yOTgsOSArMzAyLDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRD
YWxsVG9TdHViKCkKIAogICAgIGlmIChpc0RhdGFJQygpKSB7CiAgICAgICAgIG1fY2FsbGVlT3JD
b2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRy
OwogICAgICAgICB1LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShKSVQpCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldp
dGhQYXRjaCgKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6c3RhcnRPZkJyYW5jaFB0cldpdGhQ
YXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiksIGNhbGxlZUdQUigpLCBu
dWxscHRyKTsKICNlbHNlCkBAIC0zNjMsOSArMzY5LDE4IEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luCiAKICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKICAgICAgICAgICAgIHByZXBhcmVGb3JU
YWlsQ2FsbCgpOworCisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVy
czo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBv
ZmZzZXRPZkNvZGVCbG9jaygpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVQ
dHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZVRh
aWxDYWxsKCkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7IC8vIFBv
bHltb3JwaGljIHN0dWIgaGFuZGxlcyB0YWlsIGNhbGwgc3RhY2sgcHJlcC4KICAgICAgICAgICAg
IGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNl
dE9mTW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQdHJUYWcpOwogICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBDQ2FsbEhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zm
c2V0T2ZDb2RlQmxvY2soKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlUHRy
KHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVDYWxs
KCkpOworCiAgICAgICAgICAgICBnb1BvbHltb3JwaGljLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
Zk1vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAg
fQpAQCAtMzc0LDE1ICszODksMjAgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5r
SW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgY2FsbGVlR1BSLCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpKSk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgICAg
IENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOwogICAgICAgICBpZiAo
aXNUYWlsQ2FsbCkgewogICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAg
ICAgICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxv
Y2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxDYWxs
KCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29kZUJs
b2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2Fs
bCgpKTsKICAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIGppdC5hZGRMaW5r
VGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwp
OworICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNvZGVCbG9ja1N0b3Jl
KTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTQxMSw4ICs0MzEsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86
OnNldFN0dWIoUmVmPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAKICAg
ICBpZiAoaXNEYXRhSUMoKSkgewogICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1f
Y2FsbGVlT3JDb2RlQmxvY2suc2xvdCgpKSA9IHBvbHltb3JwaGljQ2FsbGVlTWFzazsKKyAgICAg
ICAgdS5kYXRhSUMubV9jb2RlQmxvY2sgPSBudWxscHRyOyAvLyBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZSB3aWxsIHNldCBDb2RlQmxvY2sgaW5zaWRlIGl0LgogICAgICAgICB1LmRhdGFJQy5t
X21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uID0gbV9zdHViLT5jb2RlKCkuY29kZSgpLnJldGFn
Z2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIG51bGxwdHIp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29k
ZUlDLm1fY2FsbGVlTG9jYXRpb24pLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3R1Yi0+Y29kZSgpLmNvZGUoKSkpOwpAQCAtNDc2LDkgKzQ5
OCwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCkKIAogICAgIEFTU0VSVChVc2VEYXRhSUM6Ok5vID09IHRoaXMtPnVz
ZURhdGFJQygpKTsKIAorICAgIGF1dG8gY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRo
UGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6
OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQu
bmVhckNhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIHUuY29kZUlDLm1f
Y29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4oY29kZUJsb2NrU3RvcmUpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3Ro
aXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwpAQCAt
NTAxLDkgKzUyNSwxMSBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogICAgIGppdC5lbWl0Tm9w
cyhDQ2FsbEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOwogCiAgICAgcHJlcGFyZUZvclRh
aWxDYWxsKCk7CisgICAgYXV0byBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRj
aChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2Fs
bGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICBhdXRvIGNhbGwgPSBqaXQu
bmVhclRhaWxDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewogICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAgICB1LmNvZGVJ
Qy5tX2NvZGVCbG9ja0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGNvZGVCbG9ja1N0b3JlKTsKICAgICB9KTsKICAgICBqaXQuYWRkTGF0ZUxpbmtUYXNr
KFt0aGlzXSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsK
QEAgLTUxNCw2ICs1NDAsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxp
emVEaXJlY3RDYWxsKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpKTsKICAgICBB
U1NFUlQobV9jYWxsTG9jYXRpb24pOworICAgIEFTU0VSVCh1LmNvZGVJQy5tX2NvZGVCbG9ja0xv
Y2F0aW9uKTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZhc3RQYXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVy
KGZhc3RQYXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShD
Q2FsbEhlbHBlcnMmIGppdCkgewpAQCAtNTI2LDcgKzU1Myw3IEBAIHZvaWQgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOwogfQog
Ci12b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxv
Y2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQordm9pZCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
aXNEaXJlY3QoKSk7CiAKQEAgLTU0MCw2ICs1NjcsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlu
a0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRh
ZwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9j
YXRpb24sIHRhcmdldCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29k
ZUlDLm1fY29kZUJsb2NrTG9jYXRpb24sIGNvZGVCbG9jayk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IGZiMjBlNDc4
MTQ3OTM1MjE3NTA0MzQ0NWIyOTc3MzFiOTcxMjk4NjcuLjM5MjA4NmEwOGQxYjdhNmUyNjcxZmM1
MjJhM2Y5Y2VmZmQxNjUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBw
dWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKCk7CiAKLSAgICB2b2lk
IHNldE1vbm9tb3JwaGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKKyAgICB2b2lkIHNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZUJsb2NrKiwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKICAgICB2b2lkIHNldFNsb3dQYXRo
Q2FsbERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAg
ICAgdm9pZCBjbGVhckNhbGxlZSgpOwogICAgIEpTT2JqZWN0KiBjYWxsZWUoKTsKQEAgLTMxNyw2
ICszMTcsMTEgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxs
TGlua0luZm8sIG1fY2FsbGVlT3JDb2RlQmxvY2spOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwgZGF0
YUlDLm1fY29kZUJsb2NrKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9uVHlwZSwg
ZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24pOwpAQCAtNDAxLDE0ICs0MDYsMTYg
QEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxs
TGlua0luZm8+IHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9z
bG93UGF0aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlvblR5cGUgewogICAgICAgICBV
bmlvblR5cGUoKQotICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyIH0KKyAgICAgICAgICAg
IDogZGF0YUlDIHsgbnVsbHB0ciwgbnVsbHB0ciB9CiAgICAgICAgIHsgfQogCiAgICAgICAgIHN0
cnVjdCBEYXRhSUMgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsgLy8gVGhp
cyBpcyB3ZWVrbHkgaGVsZC4gQW5kIGNsZWFyZWQgd2hlbmV2ZXIgbV9tb25vbW9ycGhpY0NhbGxE
ZXN0aW5hdGlvbiBpcyBjaGFuZ2VkLgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb247CiAgICAgICAgIH0g
ZGF0YUlDOwogCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jb2RlQmxvY2tMb2NhdGlvbjsKICAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxlZUxv
Y2F0aW9uOwogICAgICAgICB9IGNvZGVJQzsKICAgICB9IHU7CkBAIC01MDMsNyArNTEwLDcgQEAg
Y2xhc3MgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyBmaW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8g
ewogICAgIHZvaWQgZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYpOwogICAgIHZvaWQg
ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgU2NvcGVkTGFtYmRhPHZv
aWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpOwogICAgIHZvaWQgaW5pdGlhbGl6ZURpcmVjdENh
bGwoKTsKLSAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNF
bnRyeVB0clRhZz4pOworICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlQmxvY2sqLCBD
b2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBlbWl0U2xvd1BhdGgo
Vk0mLCBDQ2FsbEhlbHBlcnMmKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUikgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlcGF0Y2guY3BwCmluZGV4IGU5NzYwY2NjOGVlNDA1MjY2Y2ZmNGEwYTMwNGQyOWExNThh
Yzg0MTYuLjFmYzgwNGE3OWMzMGRiY2Y1YzBlZjE3MzVmNDQ2MzQ5ZWRkMzgwNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIGxpbmtNb25vbW9ycGhpY0NhbGwoCiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFT
U0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5zZXRNb25v
bW9ycGhpY0NhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSwgY29kZVB0cik7CisgICAgY2FsbExpbmtJ
bmZvLnNldE1vbm9tb3JwaGljQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlLCBjYWxsZWVDb2RlQmxv
Y2ssIGNvZGVQdHIpOwogICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZSh2bSwgb3du
ZXIsIGNhbGxlZSk7CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNv
ZGVCbG9jaykpCkBAIC0xNTY0LDcgKzE1NjQsNyBAQCB2b2lkIGxpbmtEaXJlY3RDYWxsKAogICAg
IGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAg
ZGF0YUxvZygiTGlua2luZyBjYWxsIGluICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9j
aywgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4oKSksICIgdG8gIiwgcG9pbnRlckR1bXAoY2FsbGVl
Q29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2RlUHRyLCAiXG4iKTsKIAotICAgIGNh
bGxMaW5rSW5mby5zZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+KGNvZGVQdHIpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0RGlyZWN0Q2FsbFRhcmdldChq
c0Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihjYWxsZWVDb2RlQmxvY2spLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAKICAgICBpZiAoY2FsbGVlQ29kZUJsb2Nr
KQogICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbEZyYW1lLCAm
Y2FsbExpbmtJbmZvKTsKQEAgLTE3ODcsNyArMTc4Nyw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGlj
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q2FsCiAgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CiAgICAgICAg
IHNpemVfdCBjYXNlSW5kZXggPSBiaW5hcnlTd2l0Y2guY2FzZUluZGV4KCk7CiAgICAgICAgIAot
ICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFyaWFu
dCgpOworICAgICAgICBQb2x5bW9ycGhpY0NhbGxDYXNlJiBjYWxsQ2FzZSA9IGNhbGxDYXNlc1tj
YXNlSW5kZXhdOworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2UudmFyaWFu
dCgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNvZGVQdHI7CiAgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKSkgewpAQCAtMTgx
MCwxNCArMTgxMSwyMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBib29sIG5l
ZWRzRG9uZUp1bXAgPSBmYWxzZTsKICAgICAgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsKICAgICAg
ICAgICAgIENhbGxGcmFtZVNodWZmbGVyKHN0dWJKaXQsIGZyYW1lU2h1ZmZsZXItPnNuYXBzaG90
KCkpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOworICAgICAgICAgICAgaWYgKGNhbGxDYXNlLmNvZGVC
bG9jaygpKQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVG
cmFtZUNvZGVCbG9ja0JlZm9yZVRhaWxDYWxsKCkpOwogICAgICAgICAgICAgY2FsbHNbY2FzZUlu
ZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBhcmVG
b3JUYWlsQ2FsbFNsb3coKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkK
KyAgICAgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2Rl
QmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2Fs
bCA9IHN0dWJKaXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAoaXNEYXRhSUMpCisgICAgICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc1RhaWxD
YWxsKCkpOworICAgICAgICAgICAgaWYgKGlzRGF0YUlDKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNhbGxDYXNlLmNvZGVCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LnN0b3Jl
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2FzZS5jb2RlQmxvY2soKSksIEND
YWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKICAgICAg
ICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2FsbCgp
OwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbENhc2UuY29kZUJsb2Nr
KCkpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKICAg
ICAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7
CiAgICAgICAgICAgICAgICAgbmVlZHNEb25lSnVtcCA9IHRydWU7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCmluZGV4
IDUxNzFiYzEyNDAwNTJjM2NjY2Q2ZTZmYWY0NjgyNTMzN2VlM2U3ODkuLjk1OGQ3ZmI4YjNiMzc3
MTA0NzA3MThiMzk0ODJiYjMwNWI3MGY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCkBAIC0xOTUsOCArMTk1LDggQEAgQUxXQVlTX0lO
TElORSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKIAogICAgIERlZmVyVHJhcHMgZGVmZXJUcmFwcyh2bSk7IC8vIFdlIGNh
bid0IGpldHRpc29uIGlmIHdlJ3JlIGdvaW5nIHRvIGNhbGwgdGhpcyBDb2RlQmxvY2suCiAKLSAg
ICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgaWYgKCFleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCiAg
ICAgICAgIGF1dG8gaGFuZGxlVGhyb3dFeGNlcHRpb24gPSBbJl0gKCkgewogICAgICAgICAgICAg
dm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGgoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKQEAgLTIxMiw2ICsyMTIsNyBAQCBBTFdB
WVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5k
LCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgaGFuZGxlVGhyb3dFeGNlcHRpb24oKSk7CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBv
cnQgd2FzbSBJQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMzM5CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRl
eCBkNWVhOWQ2NzU5NzU1YTM5NGQ2ZjU1ZWQ3ZDcyNmFmZmVhZjc2YTFkLi40ZmNkNGQzODZiMjQy
MTc4MWFmNzM5Y2E1MzI4OGZhNTlmMGU5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAj
aW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDcg
KzExMSwxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNr
KSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8g
YWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3
aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgcHJvYmVEZWJ1
ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6REZHSklUKTsKKyAgICB9KTsK
KyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JF
bnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmluZGV4IDEx
MzJjZjBkOWY2NWIxMzk3ZmViOWViOTU3MTQxZWI0ZDExNTg1ZjcuLjRjOGYyZWVkZWZhY2I1MjVm
YzI4YzgyYTIzYzdlMzZlYzc3ODRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCkBAIC0zMzQsOSArMzM0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY28K
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgLy8gNykgRml4IHRoZSBjYWxs
IGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCi0gICAgCisKICAgICAqYml0d2lz
ZV9jYXN0PENvZGVCbG9jayoqPihwaXZvdCAtIChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKyAx
KSkgPSBjb2RlQmxvY2s7CiAgICAgCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9T
UigpLCAiICAgIE9TUiByZXR1cm5pbmcgZGF0YSBidWZmZXIgIiwgUmF3UG9pbnRlcihzY3JhdGNo
KSk7CkBAIC00MDgsNiArNDA4LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25I
YW5kbGVyUHRyVGFnPiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShWTSYgdm0sIENhbGxGCiAKICAgICAv
LyBUaGUgYWN0aXZlIGxlbmd0aCBvZiBjYXRjaE9TUkVudHJ5QnVmZmVyIHdpbGwgYmUgemVyb2Vk
IGJ5IENsZWFyQ2F0Y2hMb2NhbHMgbm9kZS4KICAgICBkZmdDb21tb24tPmNhdGNoT1NSRW50cnlC
dWZmZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICAv
LyBBdCB0aGlzIHBvaW50LCB3ZSdyZSBjb21taXR0ZWQgdG8gdHJpZ2dlcmluZyBhbiBPU1IgZW50
cnkgaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgcmV0dXJuLiBIZW5jZSwgaXQgaXMgc2FmZSB0byBtb2Rp
Znkgc3RhY2sgaGVyZS4KKyAgICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhvcHRpbWl6ZWRDb2Rl
QmxvY2spOworCiAgICAgcmV0dXJuIGNhdGNoRW50cnlwb2ludC0+bWFjaGluZUNvZGU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggNTVlZjc2MTU0ZDIwNTFiMjJjOWVkZDc4NzY5NWQ1NTZjODE1MmQ3Ni4uMTQ3NmI0ZTgzODRi
MzdmZjliZGE0NzMzZjUxMThmZWFmMWI3YzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIyMTcsNyArMjIxNyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2soKQogICAgICAgICBtX2ppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0
ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5l
bWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlciht
X2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICAgICAgLy8g
Q29kZUJsb2NrIGluIHRoZSBzdGFjayBpcyBhbHJlYWR5IHJlcGxhY2VkIGluIE9TUiBlbnRyeS4K
ICAgICB9CiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0
KCkpOwpAQCAtMTEyOTgsNyArMTEyOTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhleGVjdXRhYmxlLmdwcigpLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mUmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsK
LSAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwg
RnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSwgcmVzdWx0
LmdwcigpKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dC5ncHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YTo6b2Zmc2V0T2ZBc1N0cmluZygp
KSwgcmVzdWx0LmdwcigpKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBt
X2ppdC5qdW1wKCk7CiAKICAgICBpc05hdGl2ZUV4ZWN1dGFibGUubGluaygmbV9qaXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IDQ0YTlhMWE5OGYyNzk0YTI3
MDIyOWM2ZDcyYzFiOTM2MDU1MDhjODkuLmNjNmMwNTIzMWQ3MzM5OThkOWI4MDQ0NWEyMTgzMjhk
M2RjYmJhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMTQ4LDYgKzE0OSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVy
YXRvcihWTSYgdm0pCiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVn
VDIpOwogICAgIGppdC5nZXRFZmZlY3RpdmVBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QyLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNFaWdodCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgCisgICAgLy8gQ29weWluZyBsb2NhbHMgYW5kIGhlYWRlciBmcm9tIHNjcmF0Y2ggYnVm
ZmVyIHRvIHRoZSBuZXcgQ2FsbEZyYW1lLiBUaGlzIGFsc28gcmVwbGFjZXMKICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwogICAgIGppdC5zdWJQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC5uZWdQ
dHIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKQEAgLTE2MCw2ICsxNjIsMTQgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJh
dG9yKFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVu
dHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7CisKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIGppdC5wcm9iZURlYnVnKFtdKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJs
b2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChj
b2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0pOworI2VuZGlmCisKICAgICBqaXQucmVzdG9y
ZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZy
YW1lKTsKICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaAppbmRleCBhYjFmNWI4Njc1OWQwNTU2OWQzOGMwNDhkY2M4M2FhN2ZkNWZiMGVjLi5mZTI5
ZGQyYmU3YzI1M2U1MWE4NDNhZjI5N2Q4NTFiYTlmNDQ1NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNzgs
NyArNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1h
cHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJn
dW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1l
bnRzRGVzY3JpcHRvcigpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlX3JhcmVEYXRh
LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mUmFyZURhdGEoKSkgXAotICAgIG1hY3JvKEZ1
bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhX2FzU3RyaW5nLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mQXNTdHJpbmdJblJhcmVEYXRhKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFi
bGVSYXJlRGF0YV9hc1N0cmluZywgRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YTo6b2Zmc2V0
T2ZBc1N0cmluZygpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAog
ICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlv
blJhcmVEYXRhX3Byb3RvdHlwZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpv
ZmZzZXRPZlByb3RvdHlwZSgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApp
bmRleCAyOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4Li4zZWY0YWE0OGZm
ZTRjNjg3NmRjNDljM2MxNGI5MDY1YWVmZTJkNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlcjsKIAogICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBmcmFtZSA9IENDYWxsSGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PGludDMyX3Q+KEFz
c2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKSk7CisgICAgICAgIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxpbnQzMl90Pihw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkpKTsKICAgICAKICAgICBzd2l0Y2ggKGdyYXBoLm1f
cGxhbi5tb2RlKCkpIHsKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYjFlMDM2
OTE0MTBiODI3YjBjMGVkNGQwZmVjMjdkODc1NTljNTk0NC4uNzhkNTJjZjViYWFkNTA3YmNkMTc5
YzZiMWJhMDc1OTBjMTFiMTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtMTk4LDE1ICsxOTgsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICB7CiAgICAgICAgICAgICBtX3Byb2Muc2V0TnVtRW50cnlwb2ludHMobV9n
cmFwaC5tX251bWJlck9mRW50cnlwb2ludHMpOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLm1fY29kZUJsb2NrOwogCiAgICAgICAgICAgICBSZWY8QjM6OkFpcjo6
UHJvbG9ndWVHZW5lcmF0b3I+IGNhdGNoUHJvbG9ndWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRU
YXNrPEIzOjpBaXI6OlByb2xvZ3VlR2VuZXJhdG9yRnVuY3Rpb24+KAotICAgICAgICAgICAgICAg
IFtjb2RlQmxvY2tdIChDQ2FsbEhlbHBlcnMmIGppdCwgQjM6OkFpcjo6Q29kZSYgY29kZSkgewor
ICAgICAgICAgICAgICAgIFtdKENDYWxsSGVscGVycyYgaml0LCBCMzo6QWlyOjpDb2RlJiBjb2Rl
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFtZVNpemUoKSksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAg
ICAgICAgICAgICAgICBqaXQuZW1pdFNhdmUoY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFk
ZXIoY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7
CisgICAgICAgICAgICAgICAgICAgIC8vIENvZGVCbG9jayBpbiB0aGUgc3RhY2sgaXMgYWxyZWFk
eSByZXBsYWNlZCBpbiBGVEw6OnByZXBhcmVPU1JFbnRyeS4KICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjYXRjaEVudHJ5cG9pbnRJbmRleCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0ZWNvZGVJbmRleC5rZXlzKCkpIHsKQEAgLTI3
Miw5ICsyNzEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX3Byb2MuYWRkRmFz
dENvbnN0YW50KG1fbnVtYmVyVGFnLT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29u
c3RhbnQobV9ub3RDZWxsTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJl
Y2F1c2UKLSAgICAgICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxl
Y3RlZC4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9j
YXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKSk7CisgICAgICAgIC8vIFdoZW4gcnVubmluZyBGVEwg
Y29kZSwgd2UgYWxyZWFkeSBzdG9yZSBDb2RlQmxvY2sgdG8gQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrLgogCiAgICAgICAgIC8vIFN0YWNrIE92ZXJmbG93IENoZWNrLgogICAgICAgICB1bnNpZ25l
ZCBleGl0RnJhbWVTaXplID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpOwpAQCAtMjkzLDYgKzI5MCwxMyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZ0bEZyYW1lU2l6ZSA9IHBhcmFtcy5wcm9j
KCkuZnJhbWVTaXplKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWF4RnJhbWVTaXplID0g
c3RkOjptYXgoZXhpdEZyYW1lU2l6ZSwgZnRsRnJhbWVTaXplKTsKIAorI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgICAgICAgICAgICAgaml0LnByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBj
dHgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8
Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCk7CisgICAgICAg
ICAgICAgICAgfSk7CisjZW5kaWYKKwogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtbWF4RnJhbWVTaXplKSwgZnAsIHNjcmF0Y2gpOwogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzdGFja092ZXJmbG93OwogICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXhGcmFtZVNpemUgPiBPcHRpb25zOjpyZXNlcnZl
ZFpvbmVTaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCmluZGV4IDQxOWVmYjM2YTQwOTVkYmUxYzhhMjA0NjEyNWU4YzVjNzgyZjMzMGQuLmI0
ZmNiYWNmYzBlMjI2ZjdjNjM0N2Y1ODliMWE4ZDM0MTRiY2ZjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWJzdHJhY3RQQy5oIgorI2luY2x1ZGUgIkNQVS5oIgog
I2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpAQCAtMTA0LDYgKzEwNSw0MSBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpemVJblJlZ2lzdGVycyA9IDIg
KiBzaXplb2YoQ1BVUmVnaXN0ZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICB9OwogICAgIHN0
YXRpY19hc3NlcnQoQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzID09IHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSAvIHNpemVvZihSZWdpc3RlciksICJDYWxsZXJGcmFtZUFuZFBDOjpz
aXplSW5SZWdpc3RlcnMgaXMgaW5jb3JyZWN0LiIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpID49IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSk7CisjaWYg
IUNQVShYODZfNjQpCisgICAgLy8gT25seSB4ODZfNjQgImNhbGwiIHB1c2hlcyByZXR1cm4gYWRk
cmVzcyBvbiB0aGUgc3RhY2suIE90aGVyIGFyY2hpdGVjdHVyZSBwdXNoZXMgaW4gdGhlIGZ1bmN0
aW9uIHByb2xvZ3VlIGFmdGVyIHRoZSBjYWxsLgorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpID09IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSk7CisjZW5kaWYK
KworICAgIC8vICAgICAgTGF5b3V0IG9mIENhbGxGcmFtZQorICAgIC8vCisgICAgLy8gICB8ICAg
ICAgICAgIC4uLi4uLiAgICAgICAgICAgIHwgICB8CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgICB8CisgICAgLy8gICB8ICAgICAgICAgICBhcmdOICAgICAgICAgICAg
IHwgICB2ICBsb3dlciBhZGRyZXNzCisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKyAgICAvLyAgIHwgICAgICAgICAgIGFyZzEgICAgICAgICAgICAgfAorICAgIC8vICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgICAgICBhcmcw
ICAgICAgICAgICAgIHwKKyAgICAvLyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwor
ICAgIC8vICAgfCAgICAgICAgICAgdGhpcyAgICAgICAgICAgICB8CisgICAgLy8gICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8g
ICB8ICAgICAgICAgIGNhbGxlZSAgICAgICAgICAgIHwKKyAgICAvLyAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgIC8vICAgfCAgICAgICAgY29kZUJsb2NrICAgICAgICAgICB8
CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwgICAg
ICByZXR1cm4tYWRkcmVzcyAgICAgICAgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgIGNhbGxlckZyYW1lICAgICAgICAgIHwKKyAgICAv
LyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgPC0gY2FsbGVlJ3MgY2ZyIGlzIHBv
aW50aW5nIHRoaXMgYWRkcmVzcworICAgIC8vICAgfCAgICAgICAgICBsb2NhbDAgICAgICAgICAg
ICB8CisgICAgLy8gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgIHwg
ICAgICAgICAgbG9jYWwxICAgICAgICAgICAgfAorICAgIC8vICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisgICAgLy8gICB8ICAgICAgICAgIGxvY2FsTiAgICAgICAgICAgIHwKKyAg
ICAvLyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIC8vICAgfCAgICAgICAg
ICAuLi4uLi4gICAgICAgICAgICB8CiAKICAgICBlbnVtIGNsYXNzIENhbGxGcmFtZVNsb3Qgewog
ICAgICAgICBjb2RlQmxvY2sgPSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyN2RkNTk3
OTBiNzFmOThhMjE3YjEyNTg3NzY3NzE2NWFjNjhlZTBjLi5lN2FkNDVmMzliZTk5ODcwYWE4YzQw
YzllOGUzOGM0YjA2ZTRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTQwNiwxMiArNDA2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQotICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsK
LSAgICAgICAgLy8gUHJvbG9ndWUgb25seSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVnaXN0ZXIK
LSAgICAgICAgcmV0dXJuIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpCiAgICAgewogICAgICAgICBwdXNoKGZyYW1lUG9pbnRlclJlZ2lzdGVy
KTsKQEAgLTQ3NywxMiArNDcxLDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAjaWYgQ1BVKEFSTV9USFVN
QjIpIHx8IENQVShBUk02NCkKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0
YWNrUG9pbnRlckRlbHRhKCkKLSAgICB7Ci0gICAgICAgIC8vIFByb2xvZ3VlIHNhdmVzIHRoZSBm
cmFtZVBvaW50ZXJSZWdpc3RlciBhbmQgbGlua1JlZ2lzdGVyCi0gICAgICAgIHJldHVybiAyICog
c2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0KICAgICB2b2lkIGVtaXRGdW5jdGlvblByb2xvZ3VlKCkK
ICAgICB7CiAgICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKQEAgLTUyOCwxMiArNTE2LDYgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgog
CiAjaWYgQ1BVKE1JUFMpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFj
a1BvaW50ZXJEZWx0YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJh
bWVQb2ludGVyUmVnaXN0ZXIgYW5kIHJldHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1
cm4gMiAqIHNpemVvZih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpCiAgICAgewogICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0
dXJuQWRkcmVzc1JlZ2lzdGVyKTsKQEAgLTU2OCwxMiArNTUwLDYgQEAgY2xhc3MgQXNzZW1ibHlI
ZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogCiAjaWYgQ1BVKFJJU0NW
NjQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpCi0gICAgewotICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2ludGVyUmVn
aXN0ZXIgYW5kIHJldHVybkFkZHJlc3NSZWdpc3RlcgotICAgICAgICByZXR1cm4gMiAqIHNpemVv
Zih2b2lkKik7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAg
ewogICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsK
QEAgLTEyODEsNiArMTI1NywxNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVTbG90KFZpcnR1YWxSZWdp
c3RlcigwKSkud2l0aE9mZnNldChDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpOwogICAg
IH0KIAorICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgp
CisgICAgeworICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spOworICAgIH0KKworICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1l
Q29kZUJsb2NrQmVmb3JlVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN0YWNrUG9p
bnRlclJlZ2lzdGVyIHN0YXRlIGlzICJhZnRlciB0aGUgY2FsbCwgYnV0IGJlZm9yZSB0aGUgZnVu
Y3Rpb24gcHJvbG9ndWUiLgorICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLndpdGhPZmZzZXQoc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpKTsKKyAgICB9CisKICAgICBzdGF0aWMg
R1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoUmVnaXN0ZXJTZXQgcHJlc2VydmVkKQogICAgIHsKICAg
ICAgICAgR1BSUmVnIHJlZ2lzdGVyc1tdID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKaW5kZXggMjliMDJhZjlmMTgwNThhM2M0Njk5ZDZkMTExOTFmOThkOWE5ZmMz
NS4uYjRiOWMzYzBhMWZhNmYyMzdmY2NhMDRiMmE4NzdiZjIzNGU2YWE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC03NDQsMTEgKzc0NCwxOSBAQCBjbGFz
cyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgZmFySnVt
cChHUFJJbmZvOjpyZWdUMSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CiAgICAgfQogCi0gICAg
dm9pZCBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUlJlZyBwcmVzZXJ2ZWRHUFIgPSBJbnZhbGlk
R1BSUmVnKQorICAgIHZvaWQgcHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJSZWcgcHJlc2VydmVk
R1BSMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZWRHUFIyID0gSW52YWxpZEdQUlJl
ZykKICAgICB7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMSA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZv
OjpyZWdUMCA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIEdQUlJl
ZyB0ZW1wMiA9IHByZXNlcnZlZEdQUiA9PSBHUFJJbmZvOjpyZWdUMSA/IEdQUkluZm86OnJlZ1Qz
IDogR1BSSW5mbzo6cmVnVDE7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMyA9IHByZXNlcnZlZEdQUiA9
PSBHUFJJbmZvOjpyZWdUMiA/IEdQUkluZm86OnJlZ1QzIDogR1BSSW5mbzo6cmVnVDI7CisgICAg
ICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZDsKKyAgICAgICAgaWYgKHByZXNlcnZlZEdQUjEgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHByZXNlcnZlZC5hZGQocHJlc2VydmVkR1BSMSk7
CisgICAgICAgIGlmIChwcmVzZXJ2ZWRHUFIyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBwcmVzZXJ2ZWQuYWRkKHByZXNlcnZlZEdQUjIpOworCisgICAgICAgIEdQUlJlZyB0ZW1wMSA9
IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKKyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1w
MSk7CisgICAgICAgIEdQUlJlZyB0ZW1wMiA9IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsK
KyAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMik7CisgICAgICAgIEdQUlJlZyB0ZW1wMyA9IHNl
bGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsKIAogICAgICAgICBHUFJSZWcgbmV3RnJhbWVQb2lu
dGVyID0gdGVtcDE7CiAgICAgICAgIEdQUlJlZyBuZXdGcmFtZVNpemVHUFIgPSB0ZW1wMjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZDhmYjBmNTNlNTdhNWE1MDJmMWNhMjc2MDU0
NjcwOTAwZThiZTliLi5mMzliNzFjNDkwMjBkNWI2ODFhM2FjYzEzZWRmZWMxZTdmOWFjOWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDMsMjggKzIwMyw2IEBAIHZvaWQgSklU
OjplbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIs
IFNsb3dQYXRoRnVuY3RpCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQotewotICAg
IFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90
OjpjYWxsZWUsIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhh
c0V4ZWN1dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVzdWx0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVu
Y3Rpb246OnJhcmVEYXRhVGFnKSwgcmVzdWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhp
cyk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNv
ZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tG
b3JDYWxsKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHBy
b2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Ci0gICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJ
VCk7Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogewogICAgIGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTc1MSwxMCArNzI5LDgg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRp
b25FZmZvcnQgZWZmb3J0KQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0
ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAKICAgICBzdGQ6Om9w
dGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7Ci0gICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7Ci0gICAg
ICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7Ci0gICAgICAg
IHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhp
cyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXpl
U3RhdGlzdGljcygpKSkKKyAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0
aWNzLT5tYXJrU3RhcnQoIkJhc2VsaW5lX3Byb2xvZ3VlIl9zLCAqdGhpcyk7CiAKICAgICBMYWJl
bCBlbnRyeUxhYmVsKHRoaXMpOwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKQEAgLTc2NSw4ICs3
NDEsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBub3AoKTsKIAogICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0g
RnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUo
KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0
JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1l
Kj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBK
SVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJGUCAiLCBSYXdQ
b2ludGVyKGN0eC5mcDxDYWxsRnJhbWUqPigpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisjZW5kaWYKIAogICAgIExhYmVs
IGJlZ2luTGFiZWwodGhpcyk7CiAKQEAgLTgyOSw3ICs4MTIsMTcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQog
ICAgICAgICBtX2FyaXR5Q2hlY2sgPSBsYWJlbCgpOwogCiAgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7Ci0gICAgICAgIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZWdU
MCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBl
KCkgPT0gRnVuY3Rpb25Db2RlKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBwcm9iZURl
YnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAg
IGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbigiRlAgIiwgUmF3UG9pbnRlcihjdHguZnA8Q2FsbEZyYW1l
Kj4oKSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworI2VuZGlmCisgICAgICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgcmVnVDApOwogICAgICAg
ICBzdG9yZTgoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNl
dE9mU2hvdWxkQWx3YXlzQmVJbmxpbmVkKCkpKTsKIAogICAgICAgICBsb2FkMzIocGF5bG9hZEZv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIHJlZ1QxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGU1YTlkNGNjMzQyODg3NDJiZjdiMmExYzRmNTQ0MWVj
YWYyZmMyOGYuLmRhYTJjNTIxODM2ZWUyNmMwODMzODdmZDUyOTRiNjdlMjg2ZjViNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjYxLDggKzI2MSw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGxvYWRDb2RlQmxvY2tDb25zdGFudFRhZyhWaXJ0dWFsUmVnaXN0ZXIsIFJl
Z2lzdGVySUQpOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFt
ZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCA9IHJlZ1QwKTsKLQogICAgICAgICB2b2lkIGV4Y2Vw
dGlvbkNoZWNrKEp1bXAganVtcFRvSGFuZGxlcikKICAgICAgICAgewogICAgICAgICAgICAgbV9l
eGNlcHRpb25DaGVja3MuYXBwZW5kKGp1bXBUb0hhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZjgxZGRmMjU3ODQyNGM4ZjllYWE0OGMz
MWQ1NThlNWMxZWUzNDNhNi4uZWIzODM3MGNiOTE2Mjg4NWExOTc3ZjE3YmYzOWI3ZjVkNzBlOTQ4
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
NTgsNyArMTU4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBw
ZWRWYWx1ZUZvckNhbGxlciwgRW5jb2RlZEpTVmFsdWUsIChKU1IKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRXcmFwcGVkVmFsdWUoZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlv
blRhcmdldENvZGUsIHZvaWQqLCAoSlNSZW1vdGVGdW5jdGlvbiogY2FsbGVlKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0
Q29kZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoSlNSZW1vdGVGdW5jdGlvbiogY2FsbGVlKSkKIHsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qo
KTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xNzUsMTQgKzE3NSwxNCBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5j
dGlvblRhcmdldENvZGUsIHZvaWQqLCAoSgogICAgIC8vIEZvcmNlIHRoZSBleGVjdXRhYmxlIHRv
IGNhY2hlIGl0cyBhcml0eSBlbnRyeXBvaW50LgogICAgIHsKICAgICAgICAgRGVmZXJUcmFwcyBk
ZWZlclRyYXBzKHZtKTsgLy8gV2UgY2FuJ3QgamV0dGlzb24gYW55IGNvZGUgdW50aWwgYWZ0ZXIg
d2UgbGluayB0aGUgY2FsbC4KKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tTbG90ID0gbnVs
bHB0cjsKICAgICAgICAgaWYgKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CiAgICAg
ICAgICAgICBKU1Njb3BlKiBzY29wZSA9IHRhcmdldEZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgp
OwogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrU2xvdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBmdW5jdGlv
bkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwg
dGFyZ2V0RnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgY29kZUJsb2NrU2xvdCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVSZXN1bHQobnVsbHB0
ciwgbnVsbHB0cikpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKENvZGVGb3JDYWxsLCBNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9y
KENvZGVGb3JDYWxsLCBNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY29kZUJs
b2NrU2xvdCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IGQ4YTIzNzQxMzRjNGY1NTk4ZGEwYmY2NGIyODg0NWM0NWZiODE4NjYuLmI5
ZTgzMGNhZDNiM2Q1ZjNhNDMyMDMzOTJiNGQ3N2E2YzA5MTQ5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNjEsNyArMTYxLDcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVu
aywgdm9pZCwgKEpTR2wKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dJ
dGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFdyYXBwZWRWYWx1ZUZvckNhbGxlciwg
RW5jb2RlZEpTVmFsdWUsIChKU1JlbW90ZUZ1bmN0aW9uKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yVGFyZ2V0
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTUmVtb3RlRnVuY3Rpb24qLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0
aW9uVGFyZ2V0Q29kZSwgdm9pZCosIChKU1JlbW90ZUZ1bmN0aW9uKikpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29k
ZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoSlNSZW1vdGVGdW5jdGlvbiopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dSZW1vdGVGdW5jdGlvbkV4Y2VwdGlvbiwgRW5j
b2RlZEpTVmFsdWUsIChKU1JlbW90ZUZ1bmN0aW9uKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCB2b2lkLCAoQ29kZUJsb2Nr
KikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmlu
ZGV4IDNjNGEzYWUzYTk4OGNlZTk2NTY0NDNmYzc2MTA5MGFlMGVjM2M1NjEuLjZkM2E4ZjVlNGEw
N2Q3ZDQ0ZWM3NzkyZWExOGMxNWRiYWU3NDc1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTI4OCwyNSArMjg4LDI5IEBAIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYg
dm0sIENhbGxNb2RlIG1vCiAgICAgCiAgICAgLy8gTm93IHdlIGtub3cgd2UgaGF2ZSBhIEpTRnVu
Y3Rpb24uCiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIEdQUklu
Zm86OnJlZ1Q0KTsKLSAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Q0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpOwotICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUNCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIEdQUkluZm86OnJlZ1Q0KTsK
KyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpT
RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIEdQUkluZm86OnJlZ1QwLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1
bmN0aW9uOjpyYXJlRGF0YVRhZykpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxl
KCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIEdQUkluZm86OnJlZ1QwKTsKICAgICBoYXNF
eGVjdXRhYmxlLmxpbmsoJmppdCk7CiAgICAgaml0LmxvYWRQdHIoCi0gICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklU
Q29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpKSwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFy
aXR5Q2hlY2tGb3Ioa2luZCkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CiAgICAgc2xvd0Nh
c2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6
cmVnVDQpKTsKICAgICAKLSAgICAvLyBOb3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSBDb2RlQmxv
Y2ssIGFuZCB3ZSdyZSBjb21taXR0ZWQgdG8gbWFraW5nIGEgZmFzdAotICAgIC8vIGNhbGwuCisg
ICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29t
bWl0dGVkIHRvIG1ha2luZyBhIGZhc3QgY2FsbC4KKworICAgIGF1dG8gaXNOYXRpdmUgPSBqaXQu
YnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlKTsK
KyAgICBqaXQubG9hZFB0cigKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yKGtpbmQpKSwK
KyAgICAgICAgR1BSSW5mbzo6cmVnVDUpOwogCiAgICAgLy8gTWFrZSBhIHRhaWwgY2FsbC4gVGhp
cyB3aWxsIHJldHVybiBiYWNrIHRvIEpJVCBjb2RlLgotICAgIEpTSW50ZXJmYWNlSklUOjpMYWJl
bCBjYWxsQ29kZShqaXQubGFiZWwoKSk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwg
R1BSSW5mbzo6cmVnVDQsIEpTRW50cnlQdHJUYWcpOwogICAgIGlmIChpc1RhaWxDYWxsKSB7CiAg
ICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdyhHUFJJbmZvOjpyZWdUNCk7Cisg
ICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZv
OjpyZWdUNSk7CiAgICAgfQorICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUNSwgQ0NhbGxI
ZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZVRhaWxDYWxsKCkpOwogICAgIGppdC5m
YXJKdW1wKEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIC8vIE51bGxTZXR0
ZXJGdW5jdGlvblR5cGUgZG9lcyBub3QgZ2V0IHRoZSBmYXN0IHBhdGggc3VwcG9ydC4gQnV0IGl0
IGlzIE9LIHNpbmNlIHVzaW5nIE51bGxTZXR0ZXJGdW5jdGlvblR5cGUgaXMgZXh0cmVtZWx5IHJh
cmUuCkBAIC0zMTQsNyArMzE4LDE0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vCiAgICAgc2xv
d0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVnVDAsIEludGVybmFs
RnVuY3Rpb25UeXBlKSk7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MgPSB2bS5nZXRDVElJ
bnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihraW5kKS5leGVjdXRhYmxlQWRkcmVzcygpOwog
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihleGVjdXRhYmxlQWRkcmVz
cyksIEdQUkluZm86OnJlZ1Q0KTsKLSAgICBqaXQuanVtcCgpLmxpbmtUbyhjYWxsQ29kZSwgJmpp
dCk7CisKKyAgICBpc05hdGl2ZS5saW5rKCZqaXQpOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlv
bihqaXQsIEdQUkluZm86OnJlZ1Q0LCBKU0VudHJ5UHRyVGFnKTsKKyAgICBpZiAoaXNUYWlsQ2Fs
bCkgeworICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVn
VDQpOworICAgIH0KKyAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRh
Zyk7CiAKICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwogICAgIApAQCAtMTM4NiwxMSArMTM5Nywy
MCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEV4ZWN1dGFibGVCYXNl
OjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCkpLAotICAgICAg
ICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5i
cmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICBHUFJJbmZvOjpyZWdUMSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5i
cmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDEpOworCisgICAg
YXV0byBpc05hdGl2ZSA9IGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVnVDAsIEZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGUpOworICAgIGppdC5sb2FkUHRyKAorICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgRnVuY3Rpb25FeGVjdXRh
YmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksCisgICAgICAgIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OmNhbGxl
ZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKKworICAgIGlzTmF0aXZlLmxpbmsoJmppdCk7
CiAgICAgCi0gICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDAsIEpT
RW50cnlQdHJUYWcpOwotICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1QwLCBKU0VudHJ5UHRyVGFn
KTsKKyAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMSwgSlNFbnRy
eVB0clRhZyk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOwog
CiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwpAQCAtMTUz
MiwzMyArMTU1Miw0NSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJl
bW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmxvYWRQdHIoCiAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLCBF
eGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNh
bGwpKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgIGF1dG8gY29kZUV4aXN0cyA9IGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDEpOwor
ICAgICAgICBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBjb2RlRXhpc3RzID0gaml0LmJyYW5j
aFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMik7CiAKICAgICAv
LyBUaGUgY2FsbHMgdG8gb3BlcmF0aW9uR2V0V3JhcHBlZFZhbHVlRm9yVGFyZ2V0IGFib3ZlIG1h
eSBHQywgYW5kIGFueSBHQyBjYW4gcG90ZW50aWFsbHkgamV0dGlzb24gdGhlIEpJVCBjb2RlIGlu
IHRoZSB0YXJnZXQgSlNGdW5jdGlvbi4KICAgICAvLyBJZiB3ZSBmaW5kIHRoYXQgdGhlIEpJVCBj
b2RlIGlzIG51bGwgKGkuZS4gaGFzIGJlZW4gamV0dGlzb25lZCksIHRoZW4gd2UgbmVlZCB0byBy
ZS1tYXRlcmlhbGl6ZSBpdCBmb3IgdGhlIGNhbGwgYmVsb3cuIE5vdGUgdGhhdCB3ZSBrbm93CiAg
ICAgLy8gdGhhdCBvcGVyYXRpb25NYXRlcmlhbGl6ZVJlbW90ZUZ1bmN0aW9uVGFyZ2V0Q29kZSBz
aG91bGQgYmUgYWJsZSB0byByZS1tYXRlcmlhbGl6ZSB0aGUgSklUIGNvZGUgKGV4Y2VwdCBmb3Ig
YW55IE9PTUUpIGJlY2F1c2Ugd2Ugb25seQogICAgIC8vIHdlbnQgZG93biB0aGlzIGNvZGUgcGF0
aCBhZnRlciB3ZSBmb3VuZCBhIG5vbi1udWxsIEpJVCBjb2RlIChpbiB0aGUgbm9Db2RlIGNoZWNr
KSBhYm92ZSBpLmUuIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBtYXRlcmlhbGl6ZSB0aGUgSklU
IGNvZGUuCisgICAgLy8gRklYTUU6IFdpbmRvd3MgeDY0IGlzIG5vdCBzdXBwb3J0ZWQgc2luY2Ug
b3BlcmF0aW9uTWF0ZXJpYWxpemVSZW1vdGVGdW5jdGlvblRhcmdldENvZGUgcmV0dXJucyBTbG93
UGF0aFJldHVyblR5cGUuCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlKT4oR1BSSW5mbzo6cmVnVDApOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bk1hdGVyaWFsaXplUmVtb3RlRnVuY3Rpb25UYXJnZXRDb2RlKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOwogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAs
IE9wZXJhdGlvblB0clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3Bl
cmF0aW9uUHRyVGFnKTsKICAgICBleGNlcHRpb25DaGVja3MuYXBwZW5kKGppdC5lbWl0SnVtcElm
RXhjZXB0aW9uKHZtKSk7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJldHVyblZhbHVlR1BS
MiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CisgICAg
aml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBh
dXRvIG1hdGVyaWFsaXplZCA9IGppdC5qdW1wKCk7CiAKICAgICBjb2RlRXhpc3RzLmxpbmsoJmpp
dCk7CisgICAgYXV0byBpc05hdGl2ZSA9IGppdC5icmFuY2hJZk5vdFR5cGUoR1BSSW5mbzo6cmVn
VDEsIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpOworICAgIGppdC5sb2FkUHRyKAorICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwgRnVuY3Rp
b25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksCisgICAgICAgIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJlZ1QzLCBDQ2FsbEhlbHBl
cnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKKworICAgIGlzTmF0aXZlLmxp
bmsoJmppdCk7CisgICAgbWF0ZXJpYWxpemVkLmxpbmsoJmppdCk7CiAgICAgLy8gQmFzZWQgb24g
dGhlIGNoZWNrIGFib3ZlLCB3ZSBzaG91bGQgYmUgZ29vZCB3aXRoIHRoaXMuIE9uIEFSTTY0LCBl
bWl0UG9pbnRlclZhbGlkYXRpb24gd2lsbCBkbyB0aGlzLgogI2lmIEFTU0VSVF9FTkFCTEVEICYm
ICFDUFUoQVJNNjRFKQogICAgIHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNoZWNrTm90
TnVsbCA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6
cmVnVDEpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY2hlY2tOb3ROdWxsID0gaml0LmJy
YW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
ICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRlcik7CiAgICAgICAgIGNoZWNr
Tm90TnVsbC5saW5rKCZqaXQpOwogICAgIH0KICNlbmRpZgogCi0gICAgZW1pdFBvaW50ZXJWYWxp
ZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDEsIEpTRW50cnlQdHJUYWcpOwotICAgIGppdC5jYWxs
KEdQUkluZm86OnJlZ1QxLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBlbWl0UG9pbnRlclZhbGlkYXRp
b24oaml0LCBHUFJJbmZvOjpyZWdUMiwgSlNFbnRyeVB0clRhZyk7CisgICAgaml0LmNhbGwoR1BS
SW5mbzo6cmVnVDIsIEpTRW50cnlQdHJUYWcpOwogCiAgICAgLy8gV3JhcCByZXR1cm4gdmFsdWUK
ICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDFmZGI0YTU3ZDU5NGJlZWE2ZWJiODBhYTY5
N2JkYWQ0M2Y5MGY4NzMuLjVkNzljZmM4OTAyMGIwNWE0ZTE2Yzg3Y2NlMGU1MTkzMWYyYTgzN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTE3MCw2ICsxNzAsNyBAQCBjb25zdCBTdGFja0FsaWdubWVudFNsb3RzID0g
Y29uc3RleHByIChzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQogY29uc3QgU3RhY2tBbGlnbm1l
bnRNYXNrID0gU3RhY2tBbGlnbm1lbnQgLSAxCiAKIGNvbnN0IENhbGxlckZyYW1lQW5kUENTaXpl
ID0gY29uc3RleHByIChzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpCitjb25zdCBQcm9sb2d1ZVN0
YWNrUG9pbnRlckRlbHRhID0gY29uc3RleHByIChwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkp
CiAKIGNvbnN0IENhbGxlckZyYW1lID0gMAogY29uc3QgUmV0dXJuUEMgPSBDYWxsZXJGcmFtZSAr
IE1hY2hpbmVSZWdpc3RlclNpemUKQEAgLTU2Niw2ICs1NjcsNyBAQCBjb25zdCBBcnJheVR5cGUg
PSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHBy
IERlcml2ZWRBcnJheVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94
eU9iamVjdFR5cGUKIGNvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRU
eXBlCitjb25zdCBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlID0gY29uc3RleHByIEZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGUKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJl
ZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgog
IyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCkBAIC0xMTky
LDcgKzExOTQsOCBAQCBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogICAgIGVuZAogZW5kCiAKLW1h
Y3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkKK21h
Y3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgc3Rv
cmVDb2RlQmxvY2spCisgICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9mZnNl
dCAtIENhbGxlckZyYW1lQW5kUENTaXplW3NwXSkKIGVuZAogCiBtYWNybyBpbnZva2VGb3JSZWd1
bGFyQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgbWF5YmVPbGRDRlIsIGNhbGxQ
dHJUYWcpCkBAIC0xMjA4LDcgKzEyMTEsNyBAQCBlbmQKIAogIyBzcCBwb2ludHMgdG8gdGhlIG5l
dyBmcmFtZSArIENhbGxlckZyYW1lQW5kUENTaXplCiAjIFdlIGxlYXZlIGNmciB0ZW1wNCB0byB1
c2UgaXQgZm9yIHVudGFnZ2luZy4KLW1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVt
cDIsIHRlbXAzLCB0ZW1wNCkKK21hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbCh0ZW1wMSwgdGVtcDIs
IHRlbXAzLCB0ZW1wNCwgc3RvcmVDb2RlQmxvY2spCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNl
ZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMjYzLDYgKzEyNjYsOCBAQCBtYWNybyBwcmVwYXJl
Rm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCiAgICAgZW5kCiAKICAgICBt
b3ZlIHRlbXAxLCBzcAorCisgICAgc3RvcmVDb2RlQmxvY2soQ29kZUJsb2NrICsgUGF5bG9hZE9m
ZnNldCAtIFByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGFbc3BdKQogZW5kCiAKIG1hY3JvIGludm9r
ZUZvclRhaWxDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBtYXliZU9sZENGUiwg
Y2FsbFB0clRhZykKQEAgLTEzMDMsNyArMTMwOCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
CiAgICAgICAgIG1hY3JvIChjYWxsZWUsIGNhbGxlZUZyYW1lUHRyKQogICAgICAgICAgICAgYnRw
eiBjYWxsZWVGcmFtZVB0ciwgLmRvbnRVcGRhdGVTUAogICAgICAgICAgICAgbW92ZSBjYWxsZWVG
cmFtZVB0ciwgc3AKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAg
ICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpIGVuZCkK
ICAgICAgICAgLmRvbnRVcGRhdGVTUDoKICAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbigl
b3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIEpTRW50cnlTbG93UGF0aFB0clRh
ZykKICAgICAgICAgZW5kKQpAQCAtMTQ4Miw0NCArMTQ4Nyw2IEBAIG1hY3JvIGFzc2VydE5vdENv
bnN0YW50KHNpemUsIGluZGV4KQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBmdW5jdGlvbkZvckNh
bGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgaWYgSlNWQUxVRTY0Ci0gICAg
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVsc2UKLSAgICAgICAg
bG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGVu
ZAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZU9yUmFyZURhdGFbdGFyZ2V0UmVn
aXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgotICAgIGJ0cHogdGFyZ2V0UmVnaXN0ZXIsIChjb25zdGV4
cHIgSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCAuaXNFeGVjdXRhYmxlCi0gICAgbG9hZHAgKEZ1
bmN0aW9uUmFyZURhdGE6Om1fZXhlY3V0YWJsZSAtIChjb25zdGV4cHIgSlNGdW5jdGlvbjo6cmFy
ZURhdGFUYWcpKVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0uaXNFeGVjdXRhYmxl
OgotICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3Rhcmdl
dFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLWVuZAotCi1tYWNybyBmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKLSAgICBpZiBKU1ZBTFVFNjQKLSAg
ICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgZWxzZQotICAgICAg
ICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAg
ZW5kCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlT3JSYXJlRGF0YVt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi0gICAgYnRweiB0YXJnZXRSZWdpc3RlciwgKGNvbnN0
ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAo
RnVuY3Rpb25SYXJlRGF0YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpy
YXJlRGF0YVRhZykpW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLS5pc0V4ZWN1dGFi
bGU6Ci0gICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gbm90RnVuY3Rp
b25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhcmdldFJlZ2lzdGVyCi1lbmQKLQotbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIo
c291cmNlUmVnaXN0ZXIpCi0gICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2Zy
XQotZW5kCi0KLW1hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVy
KQotICAgICMgTm90aGluZyB0byBkbyEKLWVuZAotCiBtYWNybyBjb252ZXJ0Q2FsbGVlVG9WTShj
YWxsZWUpCiAgICAgYnRwbnogY2FsbGVlLCAoY29uc3RleHByIFByZWNpc2VBbGxvY2F0aW9uOjpo
YWxmQWxpZ25tZW50KSwgLnByZWNpc2VBbGxvY2F0aW9uCiAgICAgYW5kcCBNYXJrZWRCbG9ja01h
c2ssIGNhbGxlZQpAQCAtMTUzMiw3ICsxNDk5LDcgQEAgZW5kCiAKICMgRG8gdGhlIGJhcmUgbWlu
aW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUg
Q29kZUJsb2NrKgogIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1Iu
Ci1tYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xv
d1BhdGgsIHRyYWNlU2xvd1BhdGgpCittYWNybyBwcm9sb2d1ZShvc3JTbG93UGF0aCwgdHJhY2VT
bG93UGF0aCkKICAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hv
dWxkIE9TUi4KICAgICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKIApAQCAtMTU0MSw4ICsxNTA4
LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9z
clNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93
UGF0aCkKICAgICAgICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc3AKICAg
ICBlbmQKLSAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCi0gICAgY29kZUJsb2NrU2V0dGVyKHQxKQor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGlmIG5vdCAoQ19MT09QIG9yIENfTE9P
UF9XSU4pCiAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0MAog
ICAgICAgICBiYWRkaXMgNSwgKFVubGlua2VkQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50
ZXIgKyBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlcilbdDBdLCAuY29udGludWUK
QEAgLTE1ODIsNyArMTU0OCw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29k
ZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgICAgIGpt
cCByMCwgSlNFbnRyeVB0clRhZwogICAgICAgICBlbmQKICAgICAucmVjb3ZlcjoKLSAgICAgICAg
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MQogICAgIC5jb250aW51ZToKICAgICBlbmQKIApAQCAtMTYyMSw3ICsxNTg3LDcgQEAg
bWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQ
YXRoLCB0cmFjZVNsb3dQYXRoKQogLnN0YWNrSGVpZ2h0T0tHZXRDb2RlQmxvY2s6CiAgICAgIyBT
dGFjayBjaGVjayBzbG93IHBhdGggcmV0dXJuZWQgdGhhdCB0aGUgc3RhY2sgd2FzIG9rLgogICAg
ICMgU2luY2UgdGhleSB3ZXJlIGNsb2JiZXJlZCwgbmVlZCB0byBnZXQgQ29kZUJsb2NrIGFuZCBu
ZXcgc3AKLSAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDEKICAgICBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayh0MSwg
dDApCiAgICAgc3VicCBjZnIsIHQwLCB0MAogCkBAIC0yMDI0LDM5ICsxOTkwLDM5IEBAIG5vV2lk
ZShsbGludF9vcF93aWRlMzIpCiBub1dpZGUobGxpbnRfb3BfZW50ZXIpCiAKIG9wKGxsaW50X3By
b2dyYW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zciwgX2xs
aW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAogb3AobGxpbnRf
bW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsIG1hY3JvICgpCi0gICAgcHJvbG9ndWUobm90RnVuY3Rp
b25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5
X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKIAog
b3AobGxpbnRfZXZhbF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShub3RGdW5jdGlv
bkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBwcm9sb2d1ZShfbGxpbnRfZW50cnlf
b3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAogCiBv
cChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgbWFjcm8gKCkKLSAgICBwcm9sb2d1
ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NhbGwpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQog
ICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogICAg
IAogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCBtYWNybyAoKQot
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKyAgICBwcm9s
b2d1ZShfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6
YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogICAgIAogCiBvcChsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKLSAgICBwcm9sb2d1ZShmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNo
ZWNrX2Zvcl9jYWxsKQorICAgIHByb2xvZ3VlKF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCiAgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAu
ZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0
aW9uRm9yQ2FsbEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKQEAgLTIwNjQs
NyArMjAzMCw3IEBAIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNy
byAoKQogZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
LCBtYWNybyAoKQotICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpCisgICAgcHJvbG9ndWUoX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCiAg
ICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0
aWFsaXphdGlvbigxKQpAQCAtMjUyNSw3ICsyNDkxLDcgQEAgbWFjcm8gbGlua1Nsb3dQYXRoRm9y
KGZ1bmN0aW9uKQogICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIGJ0cHogcjEsIC5kb05v
dFRyYXNoCiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKQotICAgIHByZXBh
cmVGb3JUYWlsQ2FsbCh0MSwgdDIsIHQzLCB0NCkKKyAgICBwcmVwYXJlRm9yVGFpbENhbGwodDEs
IHQyLCB0MywgdDQsIG1hY3JvKGFkZHJlc3MpIGVuZCkKICAgICB1bnRhZ1JldHVybkFkZHJlc3Mg
dDQKIC5kb05vdFRyYXNoOgogICAgIGptcCB0MCwgSlNFbnRyeVB0clRhZwpAQCAtMjUzNCw3ICsy
NTAwLDcgQEAgZW5kCiAjIDY0Yml0OnQwIDMyYml0KHQwLHQxKSBpcyBjYWxsZWUKICMgdDIgaXMg
Q2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAotbWFjcm8gdmly
dHVhbFRodW5rRm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBpbnRlcm5hbEZ1bmN0
aW9uVHJhbXBvbGluZSwgcHJlcGFyZUNhbGwsIHNsb3dDYXNlKQorbWFjcm8gdmlydHVhbFRodW5r
Rm9yKG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrLCBvZmZzZXRPZkNvZGVCbG9jaywgaW50
ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUsIHByZXBhcmVDYWxsLCBzbG93Q2FzZSkKICAgICBhZGRp
IDEsIENhbGxMaW5rSW5mbzo6bV9zbG93UGF0aENvdW50W3QyXQogICAgIGlmIEpTVkFMVUU2NAog
ICAgICAgICBidHFueiB0MCwgTm90Q2VsbE1hc2ssIHNsb3dDYXNlCkBAIC0yNTQyLDE0ICsyNTA4
LDE5IEBAIG1hY3JvIHZpcnR1YWxUaHVua0ZvcihvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVj
aywgaW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmUsCiAgICAgICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCBzbG93Q2FzZQogICAgIGVuZAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgSlNGdW5j
dGlvblR5cGUsIC5ub3RKU0Z1bmN0aW9uCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRh
YmxlT3JSYXJlRGF0YVt0MF0sIHQxCi0gICAgYnRweiB0MSwgKGNvbnN0ZXhwciBKU0Z1bmN0aW9u
OjpyYXJlRGF0YVRhZyksIC5pc0V4ZWN1dGFibGUKLSAgICBsb2FkcCAoRnVuY3Rpb25SYXJlRGF0
YTo6bV9leGVjdXRhYmxlIC0gKGNvbnN0ZXhwciBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpW3Qx
XSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVPclJhcmVEYXRhW3QwXSwg
dDUKKyAgICBidHB6IHQ1LCAoY29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgLmlz
RXhlY3V0YWJsZQorICAgIGxvYWRwIChGdW5jdGlvblJhcmVEYXRhOjptX2V4ZWN1dGFibGUgLSAo
Y29uc3RleHByIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSlbdDVdLCB0NQogLmlzRXhlY3V0YWJs
ZToKLSAgICBsb2FkcCBvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja1t0MV0sIHQxCi0gICAg
YnRweiB0MSwgc2xvd0Nhc2UKKyAgICBsb2FkcCBvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVj
a1t0NV0sIHQ0CisgICAgYnRweiB0NCwgc2xvd0Nhc2UgIyBXaGVuIGp1bXBpbmcgdG8gc2xvd0Nh
c2UsIHQwLCB0MSwgdDIsIHQzIG5lZWRzIHRvIGJlIHVubW9kaWZpZWQuCisgICAgbW92ZSB0NCwg
dDEKKyAgICBtb3ZlIDAsIHQwCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDVdLCBGdW5jdGlv
bkV4ZWN1dGFibGVUeXBlLCAuY2FsbENvZGUKKyAgICBsb2FkcCBvZmZzZXRPZkNvZGVCbG9ja1t0
NV0sIHQwCiAuY2FsbENvZGU6CiAgICAgcHJlcGFyZUNhbGwodDUsIHQyLCB0MywgdDQpCisgICAg
c3RvcmVwIHQwLCBDb2RlQmxvY2sgKyBQYXlsb2FkT2Zmc2V0IC0gUHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YVtzcF0KICAgICBqbXAgdDEsIEpTRW50cnlQdHJUYWcKIC5ub3RKU0Z1bmN0aW9uOgog
ICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgSW50ZXJuYWxGdW5jdGlvblR5cGUsIHNsb3dD
YXNlCkBAIC0yNTY4LDcgKzI1MzksNyBAQCBlbmQpCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMg
dDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY2FsbF90cmFt
cG9saW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2Fs
bF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNs
b3dDYXNlKQorICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2Fs
bCwgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKHRlbXAx
LCB0ZW1wMiwgdGVtcDMsIHRlbXA0KSBlbmQsIC5zbG93Q2FzZSkKIC5zbG93Q2FzZToKICAgICBs
aW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkKQEAgLTI1NzcsNyArMjU0
OCw3IEBAIGVuZCkKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0ds
b2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbWFjcm8g
KCkKLSAgICB2aXJ0dWFsVGh1bmtGb3IoRXhlY3V0YWJsZUJhc2U6Om1faml0Q29kZUZvckNvbnN0
cnVjdFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3Ry
YW1wb2xpbmUsIG1hY3JvICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCkgZW5kLCAuc2xvd0Nh
c2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25z
dHJ1Y3RXaXRoQXJpdHlDaGVjaywgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdCwgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBt
YWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dD
YXNlOgogICAgIGxpbmtTbG93UGF0aEZvcihfbGxpbnRfdmlydHVhbF9jYWxsKQogZW5kKQpAQCAt
MjU4Niw5ICsyNTU3LDkgQEAgZW5kKQogIyB0MiBpcyBDYWxsTGlua0luZm8qCiAjIHQzIGlzIGNh
bGxlcidzIEpTR2xvYmFsT2JqZWN0CiBvcChsbGludF92aXJ0dWFsX3RhaWxfY2FsbF90cmFtcG9s
aW5lLCBtYWNybyAoKQotICAgIHZpcnR1YWxUaHVua0ZvcihFeGVjdXRhYmxlQmFzZTo6bV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90
cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgdmlydHVh
bFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ss
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsLCBfbGxpbnRfaW50ZXJuYWxf
ZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVt
cDQpCiAgICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKLSAgICAg
ICAgcHJlcGFyZUZvclRhaWxDYWxsKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0KQorICAgICAg
ICBwcmVwYXJlRm9yVGFpbENhbGwodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIG1hY3JvKGFk
ZHJlc3MpIGVuZCkKICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXA0CiAgICAgZW5kLCAu
c2xvd0Nhc2UpCiAuc2xvd0Nhc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGFjZTg3MTE2NzJlNzAy
MTZkMzlhNDhkZjE1ZmQ2NmQ2YjU3YzQxMWUuLmFkMjUwMTdlZjBiNDdmYzBiMDUwNDc0N2RiNTc1
YjkxNTAxOGFmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMjU5LDcgKzIyNTksMTAgQEAgbWFj
cm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWEKIAogLm5vdFBvbHltb3JwaGljOgogICAgIGJwbmVxIHQwLCB0
MywgLm9wQ2FsbFNsb3cKLSAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICBwcmVw
YXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8oYWRkcmVzcykKKyAgICAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9j
a1t0NV0sIHQyCisgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgIGVuZCkKIAogLmdvUG9s
eW1vcnBoaWM6CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKQEAgLTIz
MzgsNyArMjM0MSwxMCBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKG9wY29kZU5hbWUsIHNpemUsIGdl
dCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaQogCiAgICAgICAgIC5ub3RQ
b2x5bW9ycGhpYzoKICAgICAgICAgICAgIGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cKLSAgICAg
ICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxKQorICAgICAgICAgICAgcHJlcGFyZUNh
bGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgICAgICAgICAgbG9hZHAg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX2NvZGVC
bG9ja1t0NV0sIHQyCisgICAgICAgICAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNzCisgICAgICAg
ICAgICBlbmQpCiAKICAgICAgICAgLmdvUG9seW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21v
cnBoaWNDYWxsRGVzdGluYXRpb25bdDVdLCB0NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA1ZGU3YmNjN2ZkMGQ0
ZjA0MGYyZGY5NGJkNDczNDVkODM1ODY5NDQ3Li44Y2Q3ZGJlMmE0YTI1OTA2NDM2MWQzNmY1NmY4
Y2IzZTQ5NTA5ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjQ4Myw3ICsyNDgzLDEwIEBAIG1hY3JvIGNh
bGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmlydHVhCiAKIC5ub3RQb2x5bW9ycGhpYzoKICAgICBicW5lcSB0MCwgdDEsIC5v
cENhbGxTbG93Ci0gICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEpCisgICAgcHJlcGFyZUNh
bGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVd
LCB0MgorICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKKyAgICBlbmQpCiAKIC5nb1BvbHltb3Jw
aGljOgogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
dS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CkBAIC0yNTYxLDcg
KzI1NjQsMTAgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVOYW1lLCBzaXplLCBnZXQsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKIAogICAgICAgICAubm90UG9seW1v
cnBoaWM6CiAgICAgICAgICAgICBicW5lcSB0MCwgdDEsIC5vcENhbGxTbG93Ci0gICAgICAgICAg
ICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSkKKyAgICAgICAgICAgIHByZXBhcmVDYWxsKHQy
LCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQorICAgICAgICAgICAgICAgIGxvYWRwICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tb
dDVdLCB0MgorICAgICAgICAgICAgICAgIHN0b3JlcCB0MiwgYWRkcmVzcworICAgICAgICAgICAg
ZW5kKQogCiAgICAgICAgIC5nb1BvbHltb3JwaGljOgogICAgICAgICAgICAgbG9hZHAgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGlj
Q2FsbERlc3RpbmF0aW9uW3Q1XSwgdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2Vi
QXNzZW1ibHkuYXNtCmluZGV4IDcxMzVmNGY2ZmMyMGNiMzllODViYWJjMWQxY2YxZWFiNThiNjJi
ZDYuLjI0YzE0YjNmOGY2YjVmNDU1YmQwYTVhNzdjNTkzMmJlOWY2OGVlYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZShjb2RlQmxvY2tSZWdpc3RlcikKICAg
ICAgICAgICAgICAgICBqbXAgd3MwLCBXYXNtRW50cnlQdHJUYWcKICAgICAgICAgICAgIGVuZAog
ICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
KGNvZGVCbG9ja1JlZ2lzdGVyKQorICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNv
ZGVCbG9ja1JlZ2lzdGVyCiAgICAgICAgIGVuZCkKICAgICBlbmQKIGVuZApAQCAtMjgzLDcgKzI4
Myw3IEBAIG1hY3JvIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIHN1YnAgY2Zy
LCB3czEsIHNwCiBlbmQKIAotbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29k
ZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQorbWFjcm8gd2FzbVByb2xvZ3VlKGxvYWRX
YXNtSW5zdGFuY2UpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdl
IHNob3VsZCBPU1IuCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAgICAgcHJlc2VydmVD
YWxsZWVTYXZlc1VzZWRCeVdhc20oKQpAQCAtMjkzLDggKzI5Myw5IEBAIG1hY3JvIHdhc21Qcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkK
ICAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9vd25lclt3YXNtSW5zdGFuY2VdLCB3czAKICAg
ICBzdG9yZXAgd3MwLCBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyXQogCi0gICAgY29kZUJsb2NrR2V0
dGVyKHdzMCkKLSAgICBjb2RlQmxvY2tTZXR0ZXIod3MwKQorICAgIGxvYWRwIENhbGxlZVtjZnJd
LCB3czAKKyAgICBhbmRwIH4zLCB3czAKKyAgICBzdG9yZXAgd3MwLCBDb2RlQmxvY2tbY2ZyXQog
CiAgICAgIyBHZXQgbmV3IHNwIGluIHdzMSBhbmQgY2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxv
YWRpIFdhc206OkxMSW50Q2FsbGVlOjptX251bUNhbGxlZUxvY2Fsc1t3czBdLCB3czEKQEAgLTUx
NCw3ICs1MTUsNyBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCBtYWNybyAoKQogICAgICAg
ICBlcnJvcgogICAgIGVuZAogCi0gICAgd2FzbVByb2xvZ3VlKHdhc21Db2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlRnJvbVRMUykKKyAgICB3
YXNtUHJvbG9ndWUobG9hZFdhc21JbnN0YW5jZUZyb21UTFMpCiAgICAgd2FzbU5leHRJbnN0cnVj
dGlvbigpCiBlbmQpCiAKQEAgLTUyMyw3ICs1MjQsNyBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xv
Z3VlX25vX3RscywgbWFjcm8gKCkKICAgICAgICAgZXJyb3IKICAgICBlbmQKIAotICAgIHdhc21Q
cm9sb2d1ZSh3YXNtQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgbWFj
cm8gKCkgZW5kKQorICAgIHdhc21Qcm9sb2d1ZShtYWNybyAoKSBlbmQpCiAgICAgd2FzbU5leHRJ
bnN0cnVjdGlvbigpCiBlbmQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggMzdlMGM1ZGI2MWFjYTY0MmU1ZWZkZjY4NjEy
ZjAyMzFjNDU4ZmZlYS4uMjZhNGRhY2FmNWY5MjBhMjhkNzZjNjg0OWY1NDNhMThlMWVjMDJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTI4OCwyMCArMjg4LDI2IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5l
IHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uRXhlY3V0YWJsZSwgbV9yYXJlRGF0YSk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRp
ZmZfdCBvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihSYXJlRGF0YSwgbV9hc1N0cmluZyk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBv
ZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rp
b25FeGVjdXRhYmxlLCBtX2NvZGVCbG9ja0ZvckNhbGwpOyB9CiAgICAgc3RhdGljIGlubGluZSBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7IH0K
IAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7Ci0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7Ci0gICAg
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVs
RXhlY3V0YWJsZSk7Ci0KLSAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIENv
ZGVGb3JDYWxsOgorICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4
ZWN1dGFibGUsIG1fY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0
cnVjdDoKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRh
YmxlLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAg
c3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQXNTdHJpbmcoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNTdHJpbmcpOyB9CisKICAgICAg
ICAgUmVmUHRyPFR5cGVTZXQ+IG1fcmV0dXJuU3RhdGVtZW50VHlwZVNldDsKICAgICAgICAgdW5z
aWduZWQgbV9saW5lQ291bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpAQCAtMzE0
LDYgKzMyMCwxNCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9hc1N0cmlu
ZzsKICAgICB9OwogCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqLCBJbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uKTsKKyAgICAKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhlY3V0YWJs
ZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKworICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRh
YmxlOworCiAgICAgUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCkKICAgICB7CiAgICAgICAgIGlm
IChMSUtFTFkobV9yYXJlRGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Nhc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5o
CmluZGV4IGE2OTkzMTU5MDk5Y2NjMWI3Mzk2YTk3YzU4ZmQ0ZWUzMWE1YzE4MmUuLjhkYzJmMTc4
MmUwYmNkNTQ3MjVlMjc3OWJiZmU2MGZlNzdjNjQ3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FzdC5oCkBAIC04OSw2ICs4OSw3IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAg
ICAgbWFjcm8oUmVnRXhwT2JqZWN0LCBKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUsIEpTVHlwZTo6
UmVnRXhwT2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTV2ViQXNzZW1ibHlNb2R1bGUsIEpTVHlw
ZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlLCBKU1R5cGU6OldlYkFzc2VtYmx5TW9kdWxlVHlwZSkg
XAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50cywgSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBl
LCBKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1
dGFibGUsIEpTVHlwZTo6RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgSlNUeXBlOjpGdW5jdGlvbkV4
ZWN1dGFibGVUeXBlKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzLCBKU1R5cGU6OlNjb3Bl
ZEFyZ3VtZW50c1R5cGUsIEpTVHlwZTo6U2NvcGVkQXJndW1lbnRzVHlwZSkgXAogICAgIG1hY3Jv
KENsb25lZEFyZ3VtZW50cywgSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlLCBKU1R5cGU6OkNs
b25lZEFyZ3VtZW50c1R5cGUpIFwKICAgICBtYWNybyhKU0dsb2JhbE9iamVjdCwgSlNUeXBlOjpH
bG9iYWxPYmplY3RUeXBlLCBKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzYmI0NThlZThlMzZkNmI0ZTI2NWZkYjljMTkzYTJl
ZGQyMmRlMDgyLi5hMjc5OGRkM2ViOWNmZTczMzZmMzYzZWZmNTczMjg4Y2I0ZGFlMWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03MTYsOSArNzE2LDE3IEBAIE5hdGl2
ZUV4ZWN1dGFibGUqIFZNOjpnZXRSZW1vdGVGdW5jdGlvbihib29sIGlzSlNGdW5jdGlvbikKICAg
ICBhdXRvIGdldE9yQ3JlYXRlID0gWyZdIChXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+JiBzbG90KSAt
PiBOYXRpdmVFeGVjdXRhYmxlKiB7CiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWQgPSBzbG90Lmdl
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKKworICAgICAgICBJbnRyaW5zaWMgaW50
cmluc2ljID0gTm9JbnRyaW5zaWM7CisgICAgICAgIGlmICghc2xvd0Nhc2UpIHsKKyNpZiAhKE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpKQorICAgICAgICAgICAgaW50cmluc2ljID0gUmVtb3Rl
RnVuY3Rpb25DYWxsSW50cmluc2ljOworI2VuZGlmCisgICAgICAgIH0KKwogICAgICAgICBOYXRp
dmVFeGVjdXRhYmxlKiByZXN1bHQgPSBnZXRIb3N0RnVuY3Rpb24oCiAgICAgICAgICAgICBzbG93
Q2FzZSA/IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyaWMgOiByZW1vdGVGdW5jdGlvbkNhbGxGb3JK
U0Z1bmN0aW9uLAotICAgICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IFJlbW90ZUZ1
bmN0aW9uQ2FsbEludHJpbnNpYywKKyAgICAgICAgICAgIGludHJpbnNpYywKICAgICAgICAgICAg
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLCBTdHJpbmcoKSk7CiAgICAg
ICAgIHNsb3QgPSBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KHJlc3VsdCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5j
cHAKaW5kZXggYmI0NmY4YTgxMzJkMWVkNTVlMWMzNGFmNmEwMGYwZDI0OWZmMGZjMy4uNTE0NjQ1
NzJmMWNmMmVjMWYwY2FhZjU4ZGRiNzg0YWZjZmIzNjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtMTkyLDE0ICsxOTIsMTQgQEAgc3Rh
dGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBj
b250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICAvLyBwb3AoZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwog
ICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJhbWVQb2lu
dGVyKTsKICAgICBjb250ZXh0LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAxOwotICAgIHN0YXRpY19h
c3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6
ZW9mKHZvaWQqKSAqIDEpOworICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJE
ZWx0YSgpID09IHNpemVvZih2b2lkKikgKiAxKTsKICNlbGlmIENQVShBUk02NEUpIHx8IENQVShB
Uk02NCkKICAgICAvLyBtb3ZlKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CiAgICAgLy8gcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVy
KTsKICAgICBjb250ZXh0LmZwKCkgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyKj4oKmZyYW1l
UG9pbnRlcik7CiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2Vf
Y2FzdDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2ludGVyICsgMSkpOwogICAgIGNvbnRleHQuc3Ao
KSA9IGZyYW1lUG9pbnRlciArIDI7Ci0gICAgc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
OnByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7CisgICAg
c3RhdGljX2Fzc2VydChwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQq
KSAqIDIpOwogI2lmIENQVShBUk02NEUpCiAgICAgLy8gTFIgbmVlZHMgdG8gYmUgdW50YWdnZWQg
c2luY2UgT1NSIGVudHJ5IGZ1bmN0aW9uIHByb2xvZ3VlIHdpbGwgdGFnIGl0IHdpdGggU1AuIFRo
aXMgaXMgc2ltaWxhciB0byB0YWlsLWNhbGwuCiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3Rl
cnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KHVudGFnQ29kZVB0cldpdGhTdGFj
a1BvaW50ZXJGb3JKSVRDYWxsKGNvbnRleHQuZ3ByPHZvaWQqPihBUk02NFJlZ2lzdGVyczo6bHIp
LCBjb250ZXh0LnNwKCkpKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBkb09TUkVu
dHJ5KEluc3RhbmNlKiBpbnN0YW5jZSwgUHJvYmU6OkNvbnRleHQmIGNvbnRleHQsIEJCUUNhbGxl
ZSYgYwogICAgIGNvbnRleHQuZnAoKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXIqPigqZnJh
bWVQb2ludGVyKTsKICAgICBjb250ZXh0LmdwcihSSVNDVjY0UmVnaXN0ZXJzOjpyYSkgPSBiaXR3
aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPigqKGZyYW1lUG9pbnRlciArIDEpKTsKICAgICBjb250ZXh0
LnNwKCkgPSBmcmFtZVBvaW50ZXIgKyAyOwotICAgIHN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgPT0gc2l6ZW9mKHZvaWQqKSAqIDIpOwor
ICAgIHN0YXRpY19hc3NlcnQocHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpID09IHNpemVvZih2
b2lkKikgKiAyKTsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgogI2Vu
ZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>