<?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>232639</bug_id>
          
          <creation_ts>2021-11-02 14:42:41 -0700</creation_ts>
          <short_desc>[WebIDL] convertVariadicArguments() should return a FixedVector</short_desc>
          <delta_ts>2021-12-20 18:27:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811270</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-02 14:42:41 -0700</bug_when>
    <thetext>[WebIDL] convertVariadicArguments() should return a FixedVector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811273</commentid>
    <comment_count>1</comment_count>
      <attachid>443136</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-02 14:45:18 -0700</bug_when>
    <thetext>Created attachment 443136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811284</commentid>
    <comment_count>2</comment_count>
      <attachid>443136</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-02 15:00:23 -0700</bug_when>
    <thetext>Comment on attachment 443136
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811316</commentid>
    <comment_count>3</comment_count>
      <attachid>443145</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-02 16:40:29 -0700</bug_when>
    <thetext>Created attachment 443145
Patch

Make the change for deprecated document.createTouchList() as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811418</commentid>
    <comment_count>4</comment_count>
      <attachid>443181</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-03 02:14:31 -0700</bug_when>
    <thetext>Created attachment 443181
Patch

Add missing FixedVector imports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811994</commentid>
    <comment_count>5</comment_count>
      <attachid>443350</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-04 16:01:17 -0700</bug_when>
    <thetext>Created attachment 443350
Patch

Add some more FixedVector imports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822302</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-09 13:16:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/86287565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825218</commentid>
    <comment_count>7</comment_count>
      <attachid>447484</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-17 15:28:34 -0800</bug_when>
    <thetext>Created attachment 447484
Patch

Add / remove tokens in WebKitDOMDOMTokenList one-by-one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825219</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-12-17 15:29:29 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825343</commentid>
    <comment_count>9</comment_count>
      <attachid>447484</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-18 08:03:35 -0800</bug_when>
    <thetext>Comment on attachment 447484
Patch

(In reply to Yusuke Suzuki from comment #2)
&gt; Comment on attachment 443136 [details]
&gt; Patch
&gt; 
&gt; r=me

Thanks for review, Yusuke!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825344</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-18 08:59:31 -0800</bug_when>
    <thetext>Patch 447484 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825349</commentid>
    <comment_count>11</comment_count>
      <attachid>447522</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-18 09:39:59 -0800</bug_when>
    <thetext>Created attachment 447522
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825350</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-18 09:40:18 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #11)
&gt; Created attachment 447522 [details]
&gt; Patch for landing

Rebase on top of r287220.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825363</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-18 11:43:07 -0800</bug_when>
    <thetext>Found 1 new test failure: http/wpt/push-api/pushEvent.any.serviceworker.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825828</commentid>
    <comment_count>14</comment_count>
      <attachid>447522</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-20 17:52:26 -0800</bug_when>
    <thetext>Comment on attachment 447522
Patch for landing

(In reply to EWS from comment #13)
&gt; Found 1 new test failure: http/wpt/push-api/pushEvent.any.serviceworker.html

Weird, this test never failed for this patch, and looks to be flaky on some bots.
Let&apos;s try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825842</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-20 18:27:02 -0800</bug_when>
    <thetext>Committed r287294 (245446@main): &lt;https://commits.webkit.org/245446@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447522.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443136</attachid>
            <date>2021-11-02 14:45:18 -0700</date>
            <delta_ts>2021-11-02 16:40:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232639-20211102214517.patch</filename>
            <type>text/plain</type>
            <size>53939</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTAyICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBzdGQ6OmluaXRpYWxpemVyX2xp
c3QgY29uc3RydWN0b3IgZm9yIEZpeGVkVmVjdG9yIGFuZCBhIFdURjo6bWFwKCkgb3ZlcmxvYWQu
CisKKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6OkZpeGVkVmVjdG9yKToKKyAgICAgICAgKFdURjo6bWFwKToKKyAgICAgICAgKiB3dGYvVmVj
dG9yVHJhaXRzLmg6CisKIDIwMjEtMTEtMDIgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0ZpeGVkVmVjdG9yLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XVEYvd3Rm
L0ZpeGVkVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDE2IEBAIHB1YmxpYzoK
ICAgICB7IH0KICAgICBGaXhlZFZlY3RvcihGaXhlZFZlY3RvciYmIG90aGVyKSA9IGRlZmF1bHQ7
CiAKKyAgICBGaXhlZFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJM
aXN0KQorICAgICAgICA6IG1fc3RvcmFnZShpbml0aWFsaXplckxpc3Quc2l6ZSgpKQorICAgIHsK
KyAgICAgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogaW5pdGlhbGl6ZXJMaXN0KSB7CisgICAgICAgICAgICBtX3N0b3JhZ2UuYXQoaW5kZXgp
ID0gZWxlbWVudDsKKyAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBGaXhlZFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhlcikKICAgICB7
CiAgICAgICAgIEZpeGVkVmVjdG9yIHRtcChvdGhlcik7CkBAIC0xMzksNiArMTQ5LDIwIEBAIGlu
bGluZSB2b2lkIHN3YXAoRml4ZWRWZWN0b3I8VD4mIGEsIEZpeGUKICAgICBhLnN3YXAoYik7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBS
ZXR1cm5UeXBlID0gdHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0PE1hcEZ1bmN0aW9uLCBjb25z
dCBUJj46OnR5cGU+CitGaXhlZFZlY3RvcjxSZXR1cm5UeXBlPiBtYXAoY29uc3QgRml4ZWRWZWN0
b3I8VD4mIHNvdXJjZSwgTWFwRnVuY3Rpb24mJiBtYXBGdW5jdGlvbikKK3sKKyAgICBGaXhlZFZl
Y3RvcjxSZXR1cm5UeXBlPiByZXN1bHQoc291cmNlLnNpemUoKSk7CisKKyAgICBzaXplX3QgcmVz
dWx0SW5kZXggPSAwOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IHNvdXJjZSkgeworICAg
ICAgICByZXN1bHRbcmVzdWx0SW5kZXhdID0gbWFwRnVuY3Rpb24oaXRlbSk7CisgICAgICAgIHJl
c3VsdEluZGV4Kys7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Rml4ZWRWZWN0b3I7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9WZWN0b3JUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFp
dHMuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFJlZlB0cjxQPj4gOiBTaW1w
bGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0
IFZlY3RvclRyYWl0czxzdGQ6OnVuaXF1ZV9wdHI8UD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFp
dHMgeyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWZWN0b3JUcmFpdHM8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+IDogU2lt
cGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRy
YWl0czxBdG9tU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEzIEBACisyMDIxLTExLTAyICBBbGV4ZXkgU2h2YXlr
YSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFk
aWNBcmd1bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIGl0J3MgZXh0cmVtZWx5IHVu
bGlrZWx5IChDU1NOdW1lcmljQXJyYXkgaXMgaW1tdXRhYmxlKSB0aGF0IHdlIHdvdWxkIG5lZWQg
dG8KKyAgICAgICAgbXV0YXRlIHZhcmlhZGljIGFyZ3VtZW50cyBiZWZvcmUgcHJvY2Vzc2luZyB0
aGVtIG9yIHN0b3JpbmcsIGFuZCB3ZSBrbm93IHRoZWlyIHNpemUKKyAgICAgICAgdXBmcm9udCwg
aXQgbWFrZXMgdGhlIG1vc3Qgc2Vuc2UgdG8gc2F2ZSBzb21lIG1lbW9yeSBieSB1dGlsaXppbmcg
YSBGaXhlZFZlY3Rvci4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZHVjZXMgc2l6ZW9mKFNjaGVk
dWxlZEFjdGlvbikgYnkgOCwgZW5hYmxpbmcgbWVtb3J5LW5ldXRyYWwgYWRkaXRpb24KKyAgICAg
ICAgb2YgYSBmaWVsZCBsaWtlIG1faW5jdW1iZW50R2xvYmFsT2JqZWN0LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0U3RyZWFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldE1lZGlhU3RyZWFtSWRzKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVh
bUlkcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZh
cmlhZGljLmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmFkZEFyZ3VtZW50cyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmg6CisgICAgICAgICogY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1Zh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6YWRkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6c3ViKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U051bWVyaWNWYWx1ZTo6bXVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6
ZGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6bWluKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6bWF4KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051
bWVyaWNWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6
dG9TdW0pOgorICAgICAgICAqIGNzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNYXRoTWF4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1heDo6Q1NT
TWF0aE1heCk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4Lmg6Cisg
ICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU01hdGhNaW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoTWlu
OjpDU1NNYXRoTWluKToKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4u
aDoKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU01hdGhQcm9kdWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTWF0aFByb2R1Y3Q6OkNTU01hdGhQcm9kdWN0KToKKyAgICAgICAgKiBjc3MvdHlwZWRv
bS9udW1lcmljL0NTU01hdGhQcm9kdWN0Lmg6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoU3VtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hdGhTdW06OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoU3VtOjpDU1NNYXRoU3VtKToKKyAgICAgICAgKiBj
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaDoKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9u
dW1lcmljL0NTU051bWVyaWNBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmlj
QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljQXJyYXk6OkNTU051
bWVyaWNBcnJheSk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJy
YXkuaDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGRyZW4pOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3cml0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGVsbik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVNldFByZVRy
YW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YWZ0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6cmVwbGFjZVdpdGgpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAg
ICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmUpOgorICAgICAg
ICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Z2V0
Q29udGV4dCk6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuaDoKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldFRpbWVv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXRJbnRlcnZhbCk6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlOjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAyMS0xMS0wMiAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFByb3ZpZGUgYmlk
aSBwcm9wZXJ0aWVzIHdoZW4gY29uc3RydWN0aW5nIFRleHRSdW4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDE0LDcgKzQxNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJrQXNOZWVkaW4K
ICAgICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZU5lZ290aWF0aW9uTmVlZGVkRmxhZyhldmVudElk
KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJpbmc+JiYpCitFeGNl
cHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrJiwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmKQogewogICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9Owog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBn
ZXRTdGF0cyhSVENSdHBTZW5kZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFJlY2VpdmVyJiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJikgPSAwOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4g
YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJpbmc+JiYpOworICAgIHZpcnR1
YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJh
Y2smLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUcmFj
ayhSVENSdHBTZW5kZXImKSB7IH0KIAogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjg1MTgz
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBSVENQZWVyQ29ubmVjdGlv
bjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKICAgICBzdG9wKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1l
ZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0
cmVhbXMpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTE0MywxMSArMTQz
LDkgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDbwogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIH0KIAotICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhU3RyZWFtSWRzOwotICAgIGZvciAoYXV0byBzdHJlYW0gOiBz
dHJlYW1zKQotICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLmdldCgpLmlkKCkp
OwotCi0gICAgcmV0dXJuIG1fYmFja2VuZC0+YWRkVHJhY2sodHJhY2suZ2V0KCksIFdURk1vdmUo
bWVkaWFTdHJlYW1JZHMpKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayh0cmFjay5n
ZXQoKSwgV1RGOjptYXAoc3RyZWFtcywgW10oYXV0byYgc3RyZWFtKSAtPiBTdHJpbmcgeworICAg
ICAgICByZXR1cm4gc3RyZWFtLmdldCgpLmlkKCk7CisgICAgfSkpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5k
ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJU
Q1J0cFRyYW5zY2VpdmVyPj4mIGN1cnJlbnRUcmFuc2NlaXZlcnMoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zY2VpdmVyU2V0Lmxpc3QoKTsgfQogCi0gICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7CisgICAgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBG
aXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mKTsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKTsKIAogICAgIHVzaW5n
IEFkZFRyYW5zY2VpdmVyVHJhY2tPcktpbmQgPSBzdGQ6OnZhcmlhbnQ8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+LCBTdHJpbmc+OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsMTQgKzE2MiwxNCBAQCB2b2lkIFJUQ1J0cFNlbmRlcjo6c2V0UGFyYW1l
dGVycyhjb25zdCBSCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+c2V0UGFyYW1ldGVycyhwYXJhbWV0
ZXJzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU2Vu
ZGVyOjpzZXRTdHJlYW1zKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlh
U3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6OnNldFN0
cmVhbXMoY29uc3QgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVh
bT4+JiBzdHJlYW1zKQogewogICAgIHJldHVybiBzZXRNZWRpYVN0cmVhbUlkcyhXVEY6Om1hcChz
dHJlYW1zLCBbXShhdXRvJiBzdHJlYW0pIC0+IFN0cmluZyB7CiAgICAgICAgIHJldHVybiBzdHJl
YW0uZ2V0KCkuaWQoKTsKICAgICB9KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNl
bmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmVhbUlkcykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMoY29uc3Qg
Rml4ZWRWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQogewogICAgIGlmICghbV9jb25uZWN0aW9u
IHx8IG1fY29ubmVjdGlvbi0+aXNDbG9zZWQoKSB8fCAhbV9iYWNrZW5kKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJjb25uZWN0aW9uIGlzIGNsb3NlZCJf
cyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBt
X3RyYWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhY2tLaW5kOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRNZWRpYVN0cmVhbUlk
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0cmVh
bXMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYpOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZpeGVkVmVjdG9y
PFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHJlYW1zKGNvbnN0IEZpeGVk
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYpOwogCiAgICAgYm9v
bCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5kOyB9CiAgICAgdm9pZCBzdG9w
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJh
bWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFj
a2VuZD4gY3JlYXRlRFRNRkJhY2tlbmQoKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8UlRDUnRwVHJh
bnNmb3JtQmFja2VuZD4gcnRjUnRwVHJhbnNmb3JtQmFja2VuZCgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4m
KSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRHRsc1RyYW5zcG9ydEJhY2tl
bmQ+IGR0bHNUcmFuc3BvcnRCYWNrZW5kKCkgPSAwOwogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldFJlbW90ZQogICAgIHN0YXJ0TG9nZ2luZ1N0YXRzKCk7
CiB9CiAKLWJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2soTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIG1lZGlhU3RyZWFtSWRzKQorYm9vbCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjphZGRUcmFjayhMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJiBzZW5kZXIsIE1lZGlhU3RyZWFt
VHJhY2smIHRyYWNrLCBjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykK
IHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3AoKTsK
ICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tlbmQ7IH0KIAotICAg
IGJvb2wgYWRkVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYsIE1lZGlhU3RyZWFtVHJh
Y2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIGJvb2wgYWRkVHJhY2soTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZCYsIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBGaXhlZFZlY3RvcjxT
dHJpbmc+Jik7CiAgICAgdm9pZCByZW1vdmVUcmFjayhMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
Jik7CiAKICAgICBzdHJ1Y3QgQmFja2VuZHMgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCShyZXZpc2lvbiAyODUxODMp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIy
LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcykKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBT
ZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2smIHRyYWNrLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7
CiAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjaygq
c2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCShyZXZpc2lvbiAy
ODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyAr
ODMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRTdGF0c1N1Y2NlZWRlZChjb25zdCBEZWZl
cnJlZFByb21pc2UmLCBSZWY8UlRDU3RhdHNSZXBvcnQ+JiYpOwogCi0gICAgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBWZWN0b3I8U3Ry
aW5nPiYmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJh
Y2soTWVkaWFTdHJlYW1UcmFjayYsIEZpeGVkVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKSBmaW5hbDsKIAogICAgIEV4Y2VwdGlvbk9y
PFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPgogICAgIHJldHVybiBiYWNrZW5k
ID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENEdGxzVHJhbnNwb3J0QmFja2VuZD4oV1RGTW92ZShiYWNr
ZW5kKSkgOiBudWxscHRyOwogfQogCi12b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNl
dE1lZGlhU3RyZWFtSWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJlYW1JZHMpCit2b2lkIExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZpeGVkVmVj
dG9yPFN0cmluZz4mIHN0cmVhbUlkcykKIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
aWRzOwogICAgIGZvciAoYXV0byYgaWQgOiBzdHJlYW1JZHMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURUTUZCYWNr
ZW5kKCkgZmluYWw7CiAgICAgUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IHJ0Y1J0cFRyYW5z
Zm9ybUJhY2tlbmQoKSBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRHRsc1RyYW5zcG9y
dEJhY2tlbmQ+IGR0bHNUcmFuc3BvcnRCYWNrZW5kKCkgZmluYWw7Ci0gICAgdm9pZCBzZXRNZWRp
YVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOworICAgIHZvaWQgc2V0TWVk
aWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBzdGFydFNvdXJjZSgpOwogICAgIHZvaWQgc3RvcFNvdXJjZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCShyZXZpc2lv
biAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJp
YWRpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBWYXJpYWRpY0Nv
bnZlcnRlciB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gVmVjdG9y
PHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpJdGVtPiBjb252ZXJ0VmFyaWFk
aWNBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgc2l6ZV90IHN0YXJ0SW5kZXgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBJRExUeXBlPiBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJRExU
eXBlPjo6SXRlbT4gY29udmVydFZhcmlhZGljQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIHNpemVfdCBz
dGFydEluZGV4KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTUs
MTUgKzU1LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IFZlY3Rvcjx0eXBlbmEKICAg
ICBpZiAoc3RhcnRJbmRleCA+PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBW
ZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46Okl0ZW0+IHJlc3VsdDsK
LSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsK
KyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6SXRl
bT4gcmVzdWx0KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwogCisgICAgc2l6ZV90IHJlc3VsdEluZGV4
ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVy
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudW5jaGVja2VkQXJndW1lbnQoaSkpOwog
ICAgICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwgISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdmFsdWUpOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkpOworICAg
ICAgICByZXN1bHRbcmVzdWx0SW5kZXhdID0gV1RGTW92ZSgqdmFsdWUpOworICAgICAgICByZXN1
bHRJbmRleCsrOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHJldmlzaW9uIDI4NTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgU2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRB
Y3Rpb24oRE9NV3JhcAogCiBTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24oKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgU2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVudHMoVmVjdG9yPEpTQzo6
U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQordm9pZCBTY2hlZHVsZWRBY3Rpb246
OmFkZEFyZ3VtZW50cyhGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFy
Z3VtZW50cykKIHsKICAgICBtX2FyZ3VtZW50cyA9IFdURk1vdmUoYXJndW1lbnRzKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCShyZXZp
c2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMu
aD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQzLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBj
cmVhdGUoRE9NV3JhcHBlcldvcmxkJiwgU3RyaW5nJiYpOwogICAgIH5TY2hlZHVsZWRBY3Rpb24o
KTsKIAotICAgIHZvaWQgYWRkQXJndW1lbnRzKFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+PiYmKTsKKyAgICB2b2lkIGFkZEFyZ3VtZW50cyhGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7IENvZGUsIEZ1bmN0aW9u
IH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7CkBAIC02MCw3ICs1OSw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWY8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7CiAgICAgSlNDOjpTdHJv
bmc8SlNDOjpVbmtub3duPiBtX2Z1bmN0aW9uOwotICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24+PiBtX2FyZ3VtZW50czsKKyAgICBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24+PiBtX2FyZ3VtZW50czsKICAgICBTdHJpbmcgbV9jb2RlOwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwCShyZXZp
c2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU051bWVyaWNWYWx1ZSk7CiAKLVJl
ZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWRkKFZlY3RvcjxDU1NOdW1iZXJp
c2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjphZGQo
Rml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0o
dmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxD
U1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWQKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6c3ViKFZlY3RvcjxDU1NO
dW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVl
OjpzdWIoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBVTlVTRURf
UEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC02MCw3ICs2MCw3IEBA
IFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6c3UKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bXVsKFZlY3Rv
cjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJp
Y1ZhbHVlOjptdWwoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBV
TlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC02OCwyMSAr
NjgsMjEgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptdQogICAgIHJl
dHVybiAqdGhpczsKIH0KIAotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjpk
aXYoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBD
U1NOdW1lcmljVmFsdWU6OmRpdihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQog
ewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1wbC4KIAog
ICAgIHJldHVybiAqdGhpczsKIH0KLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1
ZTo6bWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1
ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptaW4oRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVl
cykKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwu
CiAKICAgICByZXR1cm4gKnRoaXM7CiB9Ci1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmlj
VmFsdWU6Om1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmlj
VmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2
YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBp
bXBsLgpAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNW
YWx1ZTo6cmUKICAgICB9KTsKIH0KIAotYm9vbCBDU1NOdW1lcmljVmFsdWU6OmVxdWFscyhWZWN0
b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlKQorYm9vbCBDU1NOdW1lcmljVmFsdWU6OmVxdWFscyhG
aXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVkLW9t
LyNkb20tY3NzbnVtZXJpY3ZhbHVlLWVxdWFscwpAQCAtMTE2LDcgKzExNiw3IEBAIFJlZjxDU1NV
bml0VmFsdWU+IENTU051bWVyaWNWYWx1ZTo6dG8oU3QKICAgICByZXR1cm4gQ1NTVW5pdFZhbHVl
OjpjcmVhdGUoMS4wLCAibnVtYmVyIik7CiB9CiAKLVJlZjxDU1NNYXRoU3VtPiBDU1NOdW1lcmlj
VmFsdWU6OnRvU3VtKFZlY3RvcjxTdHJpbmc+JiYgdW5pdHMpCitSZWY8Q1NTTWF0aFN1bT4gQ1NT
TnVtZXJpY1ZhbHVlOjp0b1N1bShGaXhlZFZlY3RvcjxTdHJpbmc+JiYgdW5pdHMpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHVuaXRzKTsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5v
cmcvY3NzLXR5cGVkLW9tLyNkb20tY3NzbnVtZXJpY3ZhbHVlLXRvc3VtCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaAkocmV2aXNpb24gMjg1MTgz
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTU1N0eWxlVmFsdWUuaCIK
ICNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDE3ICs0NSwxNyBAQCBjbGFzcyBDU1NOdW1lcmljVmFs
dWUgOiBwdWJsaWMgQ1NTU3R5bGVWCiBwdWJsaWM6CiAgICAgdXNpbmcgQ1NTTnVtYmVyaXNoID0g
c3RkOjp2YXJpYW50PGRvdWJsZSwgUmVmUHRyPENTU051bWVyaWNWYWx1ZT4+OwogCi0gICAgUmVm
PENTU051bWVyaWNWYWx1ZT4gYWRkKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAgIFJlZjxD
U1NOdW1lcmljVmFsdWU+IHN1YihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8Q1NT
TnVtZXJpY1ZhbHVlPiBtdWwoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgUmVmPENTU051
bWVyaWNWYWx1ZT4gZGl2KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAgIFJlZjxDU1NOdW1l
cmljVmFsdWU+IG1pbihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8Q1NTTnVtZXJp
Y1ZhbHVlPiBtYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVmPENTU051bWVyaWNW
YWx1ZT4gYWRkKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVmPENTU051bWVy
aWNWYWx1ZT4gc3ViKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVmPENTU051
bWVyaWNWYWx1ZT4gbXVsKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVmPENT
U051bWVyaWNWYWx1ZT4gZGl2KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVm
PENTU051bWVyaWNWYWx1ZT4gbWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAg
UmVmPENTU051bWVyaWNWYWx1ZT4gbWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAg
ICAgCi0gICAgYm9vbCBlcXVhbHMoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgYm9vbCBl
cXVhbHMoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICAKICAgICBSZWY8Q1NTVW5p
dFZhbHVlPiB0byhTdHJpbmcmJik7Ci0gICAgUmVmPENTU01hdGhTdW0+IHRvU3VtKFZlY3RvcjxT
dHJpbmc+JiYpOworICAgIFJlZjxDU1NNYXRoU3VtPiB0b1N1bShGaXhlZFZlY3RvcjxTdHJpbmc+
JiYpOwogICAgIENTU051bWVyaWNUeXBlIHR5cGUoKTsKICAgICAKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IHBhcnNlKFN0cmluZyYmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcAkocmV2
aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NN
YXRoTWF4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU01hdGhNYXgpOwogCi1S
ZWY8Q1NTTWF0aE1heD4gQ1NTTWF0aE1heDo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYg
bnVtYmVyaXNoZXMpCitSZWY8Q1NTTWF0aE1heD4gQ1NTTWF0aE1heDo6Y3JlYXRlKEZpeGVkVmVj
dG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NNYXRoTWF4KFdURk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhNYXg6
OkNTU01hdGhNYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhN
YXg6OkNTU01hdGhNYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQog
ICAgIDogQ1NTTWF0aFZhbHVlKENTU01hdGhPcGVyYXRvcjo6TWF4KQogICAgICwgbV92YWx1ZXMo
Q1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmgJKHJl
dmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aE1heC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgQ1NTTnVt
ZXJpY0FycmF5OwogY2xhc3MgQ1NTTWF0aE1heCA6IHB1YmxpYyBDU1NNYXRoVmFsdWUgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTWF0aE1heCk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDU1NNYXRoTWF4PiBjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgc3Rh
dGljIFJlZjxDU1NNYXRoTWF4PiBjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsK
ICAgICBjb25zdCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogICAgIAogcHJpdmF0
ZToKLSAgICBDU1NNYXRoTWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhN
YXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5
PiBtX3ZhbHVlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aE1pbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVk
b20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENTU01hdGhNaW4pOwogCi1SZWY8Q1NTTWF0aE1pbj4gQ1NTTWF0aE1pbjo6
Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8Q1NTTWF0aE1p
bj4gQ1NTTWF0aE1pbjo6Y3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJp
c2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoTWluKFdURk1vdmUobnVt
YmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhNaW46OkNTU01hdGhNaW4oVmVjdG9yPENTU051bWJl
cmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhNaW46OkNTU01hdGhNaW4oRml4ZWRWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogICAgIDogQ1NTTWF0aFZhbHVlKENTU01hdGhP
cGVyYXRvcjo6TWluKQogICAgICwgbV92YWx1ZXMoQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RG
TW92ZShudW1iZXJpc2hlcykpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoTWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxMSArMzcsMTEgQEAgY2xhc3MgQ1NTTnVtZXJpY0FycmF5OwogY2xhc3MgQ1NTTWF0aE1p
biA6IHB1YmxpYyBDU1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NT
TWF0aE1pbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NNYXRoTWluPiBjcmVhdGUoVmVj
dG9yPENTU051bWJlcmlzaD4mJik7CisgICAgc3RhdGljIFJlZjxDU1NNYXRoTWluPiBjcmVhdGUo
Rml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmljQXJyYXkm
IHZhbHVlcygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBDU1NNYXRoTWluKFZlY3RvcjxD
U1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhNaW4oRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1Y3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1
Y3QuY3BwCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9u
dW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENT
U01hdGhQcm9kdWN0KTsKIAotUmVmPENTU01hdGhQcm9kdWN0PiBDU1NNYXRoUHJvZHVjdDo6Y3Jl
YXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8Q1NTTWF0aFByb2R1
Y3Q+IENTU01hdGhQcm9kdWN0OjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51
bWJlcmlzaGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU01hdGhQcm9kdWN0KFdU
Rk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhQcm9kdWN0OjpDU1NNYXRoUHJvZHVj
dChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorQ1NTTWF0aFByb2R1Y3Q6OkNT
U01hdGhQcm9kdWN0KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKICAg
ICA6IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6OlByb2R1Y3QpCiAgICAgLCBtX3ZhbHVl
cyhDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJv
ZHVjdC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9u
dW1lcmljL0NTU01hdGhQcm9kdWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMyBA
QCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFzcyBDU1NNYXRoUHJvZHVjdCA6IHB1YmxpYyBD
U1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTWF0aFByb2R1Y3Qp
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0aFByb2R1Y3Q+IGNyZWF0ZShWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01hdGhQcm9kdWN0PiBjcmVhdGUo
Rml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmljQXJyYXkm
IHZhbHVlcygpIGNvbnN0OwogICAgIAogICAgIENTU01hdGhPcGVyYXRvciBnZXRPcGVyYXRvcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVyYXRvcjo6UHJvZHVjdDsgfQogCiBwcml2
YXRlOgotICAgIENTU01hdGhQcm9kdWN0KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENT
U01hdGhQcm9kdWN0KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgUmVmPENTU051
bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NNYXRoU3VtKTsKIAotUmVmPENTU01hdGhTdW0+IENT
U01hdGhTdW06OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVm
PENTU01hdGhTdW0+IENTU01hdGhTdW06OmNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+
JiYgbnVtYmVyaXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTWF0aFN1bShX
VEZNb3ZlKG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoU3VtOjpDU1NNYXRoU3VtKFZlY3Rv
cjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRoU3VtOjpDU1NNYXRoU3VtKEZp
eGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKICAgICA6IENTU01hdGhWYWx1
ZShDU1NNYXRoT3BlcmF0b3I6OlN1bSkKICAgICAsIG1fdmFsdWVzKENTU051bWVyaWNBcnJheTo6
Y3JlYXRlKFdURk1vdmUobnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCShyZXZpc2lvbiAyODUxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNz
IENTU01hdGhTdW0gOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKENTU01hdGhTdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0aFN1bT4g
Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTWF0aFN1
bT4gY3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgY29uc3QgQ1NTTnVt
ZXJpY0FycmF5JiB2YWx1ZXMoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NNYXRoU3VtKFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhTdW0oRml4ZWRWZWN0b3I8Q1NTTnVt
YmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051
bWVyaWNBcnJheS5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MjIgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKENTU051bWVyaWNBcnJheSk7CiAKLVJlZjxDU1NOdW1lcmljQXJyYXk+IENTU051bWVy
aWNBcnJheTo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8
Q1NTTnVtZXJpY0FycmF5PiBDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShjb25zdCBGaXhlZFZlY3Rv
cjxDU1NOdW1iZXJpc2g+JiBudW1iZXJpc2hlcykKIHsKLSAgICBWZWN0b3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+IHZhbHVlczsKLSAgICB2YWx1ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1i
ZXJpc2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYmIG51bWJlcmlzaCA6IG51bWJlcmlzaGVz
KQotICAgICAgICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKENTU051bWVyaWNWYWx1ZTo6cmVjdGlm
eU51bWJlcmlzaChXVEZNb3ZlKG51bWJlcmlzaCkpKTsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NOdW1lcmljQXJyYXkoV1RGTW92ZSh2YWx1ZXMpKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTTnVtZXJpY0FycmF5KFdURjo6bWFwKG51bWJlcmlzaGVzLCBbXShhdXRv
JiBudW1iZXJpc2gpIC0+IFJlZjxDU1NOdW1lcmljVmFsdWU+IHsKKyAgICAgICAgcmV0dXJuIENT
U051bWVyaWNWYWx1ZTo6cmVjdGlmeU51bWJlcmlzaChjb25zdF9jYXN0PENTU051bWJlcmlzaCYm
PihudW1iZXJpc2gpKTsKKyAgICB9KSkpOwogfQogCi1SZWY8Q1NTTnVtZXJpY0FycmF5PiBDU1NO
dW1lcmljQXJyYXk6OmNyZWF0ZShWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVz
KQorUmVmPENTU051bWVyaWNBcnJheT4gQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoRml4ZWRWZWN0
b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU051bWVyaWNBcnJheShXVEZNb3ZlKHZhbHVlcykpKTsKIH0KIAotQ1NTTnVtZXJp
Y0FycmF5OjpDU1NOdW1lcmljQXJyYXkoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZh
bHVlcykKK0NTU051bWVyaWNBcnJheTo6Q1NTTnVtZXJpY0FycmF5KEZpeGVkVmVjdG9yPFJlZjxD
U1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKICAgICA6IG1fYXJyYXkoV1RGTW92ZSh2YWx1ZXMp
KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1l
cmljQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1l
cmljL0NTU051bWVyaWNBcnJheS5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxNCArNDAsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwog
Y2xhc3MgQ1NTTnVtZXJpY0FycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTTnVtZXJpY0FycmF5
PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NOdW1lcmljQXJyYXkpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoVmVjdG9yPENTU051bWJl
cmlzaD4mJik7Ci0gICAgc3RhdGljIFJlZjxDU1NOdW1lcmljQXJyYXk+IGNyZWF0ZShWZWN0b3I8
UmVmPENTU051bWVyaWNWYWx1ZT4+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5
PiBjcmVhdGUoY29uc3QgRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYpOworICAgIHN0YXRpYyBS
ZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoRml4ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1
ZT4+JiYpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LnNpemUo
KTsgfTsKICAgICBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gaXRlbShzaXplX3Qg
aW5kZXgpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gbV9h
cnJheTsKLSAgICBDU1NOdW1lcmljQXJyYXkoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYm
KTsKKyAgICBGaXhlZFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gbV9hcnJheTsKKyAgICBD
U1NOdW1lcmljQXJyYXkoRml4ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzEsNyArOTcxLDcgQEAgdW5zaWduZWQgQ29u
dGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bgogICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNo
aWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVj
dG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUo
V1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtOTg0
LDcgKzk4NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZCgKICAg
ICByZXR1cm4gYXBwZW5kQ2hpbGQoKm5vZGUpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBDb250
YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9yKQorRXhjZXB0
aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYgdmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5vZGVzT3JTdHJpbmdz
SW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQpAQCAtOTk4LDcgKzk5OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnBy
ZXBlbmQKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tcGFyZW50bm9k
ZS1yZXBsYWNlY2hpbGRyZW4KLUV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VDaGlsZHJlbihWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZHJlbihGaXhlZFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYgdmVjdG9yKQogewogICAgIC8vIHN0ZXAgMQogICAgIGF1dG8gcmVzdWx0ID0gY29udmVy
dE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGZpcnN0RWxlbWVudENoaWxkKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogbGFzdEVsZW1lbnRDaGlsZCgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkRWxlbWVudENvdW50KCkgY29u
c3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYp
OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4m
Jik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJlcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxkcmVuKFZlY3RvcjxO
b2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZHJlbihG
aXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5z
dXJlUHJlSW5zZXJ0aW9uVmFsaWRpdHkoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzM2LDcgKzMz
MzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9jdW1lCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50
KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCitFeGNlcHRpb25Pcjx2
b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIEZpeGVkVmVjdG9y
PFN0cmluZz4mJiBzdHJpbmdzKQogewogICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Ro
cm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtMzM0OCw3ICszMzQ4LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZQogICAgIHJldHVybiB3cml0ZShlbnRyeURv
Y3VtZW50LCBXVEZNb3ZlKHRleHQpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6
OndyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYgc3RyaW5n
cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZWxuKERvY3VtZW50KiBlbnRyeURv
Y3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYgc3RyaW5ncykKIHsKICAgICBpZiAoIWlzSFRN
TERvY3VtZW50KCkgfHwgbV90aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjg4LDggKzY4OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNhbmNlbFBhcnNpbmcoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRlKERvY3Vt
ZW50KiBlbnRyeURvY3VtZW50LCBTZWdtZW50ZWRTdHJpbmcmJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gd3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3Rv
cjxTdHJpbmc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRl
bG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50
LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHdyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIEZpeGVkVmVjdG9yPFN0cmlu
Zz4mJik7CiAKICAgICBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3Jt
ZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNyArNTEzLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YXBwZW5kQ2hpbGQoTm9kZQogICAgIHJldHVybiBkb3du
Y2FzdDxDb250YWluZXJOb2RlPigqdGhpcykuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpOwogfQogCi1z
dGF0aWMgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2Rl
T3JTdHJpbmdWZWN0b3IoY29uc3QgVmVjdG9yPE5vZGVPclN0cmluZz4mIHZlY3RvcikKK3N0YXRp
YyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0
cmluZ1ZlY3Rvcihjb25zdCBGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiB2ZWN0b3IpCiB7CiAg
ICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQ7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2
YXJpYW50IDogdmVjdG9yKSB7CkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIFJlZlB0cjxOb2Rl
PiBmaXJzdEZvbGxvd2luZ1NpYmxpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FeGNlcHRp
b25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZl
Y3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8UmVm
UHRyPE5vZGU+PiBOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShGaXhlZFZlY3Rv
cjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQogewogICAgIGlmIChub2RlT3JT
dHJpbmdWZWN0b3IuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU2OSw3
ICs1NjksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnROCiAgICAg
cmV0dXJuIFJlZlB0cjxOb2RlPiB7IFdURk1vdmUobm9kZVRvUmV0dXJuKSB9OwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JT
dHJpbmdWZWN0b3IpCitFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoRml4ZWRWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNTkz
LDcgKzU5Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmJlZm9yZShWZWN0b3I8Tm8KICAg
ICByZXR1cm4gcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUsIHZpYWJsZVByZXZpb3VzU2libGlu
Zy5nZXQoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmFmdGVyKFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6
YWZ0ZXIoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsK
ICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlm
ICghcGFyZW50KQpAQCAtNjEyLDcgKzYxMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmFm
dGVyKFZlY3RvcjxOb2QKICAgICByZXR1cm4gcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUsIHZp
YWJsZU5leHRTaWJsaW5nLmdldCgpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6cmVw
bGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitFeGNl
cHRpb25Pcjx2b2lkPiBOb2RlOjpyZXBsYWNlV2l0aChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQogewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJl
bnQgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJl
dmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NCw5ICsxODQsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVu
dCogbmV4dEVsZW1lbnRTaWJsaW5nKCkgY29uc3Q7CiAKICAgICAvLyBGcm9tIHRoZSBDaGlsZE5v
ZGUgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGJlZm9yZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKLSAgICBFeGNlcHRpb25P
cjx2b2lkPiBhZnRlcihWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKLSAgICBFeGNlcHRpb25Pcjx2
b2lkPiByZXBsYWNlV2l0aChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBiZWZvcmUoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBhZnRlcihGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHJlcGxhY2VXaXRoKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKCk7CiAKICAgICAvLyBP
dGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCkBAIC02OTEsNyArNjkxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlKFN0eWxlOjpWYWxpZGl0eSwgU3R5bGU6Oklu
dmFsaWRhdGlvbk1vZGUgPSBTdHlsZTo6SW52YWxpZGF0aW9uTW9kZTo6Tm9ybWFsKTsKICAgICB2
b2lkIHVwZGF0ZUFuY2VzdG9yc0ZvclN0eWxlUmVjYWxjKCk7CiAKLSAgICBFeGNlcHRpb25PcjxS
ZWZQdHI8Tm9kZT4+IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gY29udmVydE5vZGVzT3JT
dHJpbmdzSW50b05vZGUoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFBzZXVkb0lkIGN1c3RvbVBzZXVkb0lkKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcs
NyBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjphCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHRva2VucykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6YWRk
KGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHRva2VucykKIHsKICAgICByZXR1cm4gYWRkSW50
ZXJuYWwodG9rZW5zLmRhdGEoKSwgdG9rZW5zLnNpemUoKSk7CiB9CkBAIC0xMjIsNyArMTIyLDcg
QEAgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cgogICAgIHJldHVybiB7
IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0b2tlbnMpCitFeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnJl
bW92ZShjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCiB7CiAgICAgcmV0dXJuIHJl
bW92ZUludGVybmFsKHRva2Vucy5kYXRhKCksIHRva2Vucy5zaXplKCkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBA
IHB1YmxpYzoKICAgICBjb25zdCBBdG9tU3RyaW5nJiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbVN0cmluZyYp
IGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+Jik7
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiByZW1vdmUoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpOwogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHJlbW92ZShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xlKGNvbnN0IEF0b21TdHJpbmcmLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGZvcmNlKTsKICAgICBFeGNlcHRpb25Pcjxib29sPiByZXBsYWNlKGNvbnN0IEF0
b21TdHJpbmcmIHRva2VuLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdUb2tlbik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjg1MTgzKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52
YXNBcmVhCiAgICAgbWF4Q2FudmFzQXJlYUZvclRlc3RpbmcgPSBzaXplOwogfQogCi1FeGNlcHRp
b25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6
Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBjb250
ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4
Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVt
ZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBjb25zdCBTdHJpbmcm
IGNvbnRleHRJZCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1
bWVudHMpCiB7CiAgICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICBpZiAobV9jb250ZXh0LT5p
c1BsYWNlaG9sZGVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NvbnRleHQuZ2V0KCk7IH0KLSAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJp
bmcmIGNvbnRleHRJZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1l
bnRzKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBn
ZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwg
Rml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogCiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAkocmV2aXNpb24gMjg1
MTgzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUNv
bnRleHRXZWJHTAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi1FeGNlcHRpb25PcjxzdGQ6
Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6Omdl
dENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBl
IGNvbnRleHRUeXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVu
dHMpCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+
PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUs
IFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICBpZiAobV9kZXRhY2hlZCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3
ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJp
bmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAg
ICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBn
ZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRp
b25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgRml4ZWRWZWN0b3I8
SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxJbWFnZUJpdG1hcD4+IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOwogICAgIHZvaWQg
Y29udmVydFRvQmxvYihJbWFnZUVuY29kZU9wdGlvbnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4m
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NTE4MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc5Myw3ICsxNzkzLDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRoLCBm
bAogICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdCgqcGFn
ZSwgdXBkYXRlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRUaW1lb3V0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0
aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
Pj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0VGltZW91dChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlv
bj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMTgxOCw3ICsxODE4LDcgQEAgdm9p
ZCBET01XaW5kb3c6OmNsZWFyVGltZW91dChpbnQgdGltZW91dAogICAgIERPTVRpbWVyOjpyZW1v
dmVCeUlkKCpjb250ZXh0LCB0aW1lb3V0SWQpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IERPTVdp
bmRvdzo6c2V0SW50ZXJ2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIHN0ZDo6dW5pcXVl
X3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0
cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gRE9NV2lu
ZG93OjpzZXRJbnRlcnZhbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVf
cHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyIGNvbnRl
eHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsOSArMjkzLDkgQEAgcHVi
bGljOgogICAgIFZpc3VhbFZpZXdwb3J0JiB2aXN1YWxWaWV3cG9ydCgpOwogCiAgICAgLy8gVGlt
ZXJzCi0gICAgRXhjZXB0aW9uT3I8aW50PiBzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8
aW50PiBzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFyVGltZW91dChpbnQgdGltZW91
dElkKTsKLSAgICBFeGNlcHRpb25PcjxpbnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9u
T3I8aW50PiBzZXRJbnRlcnZhbChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRy
PFNjaGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVhckludGVydmFsKGludCB0
aW1lb3V0SWQpOwogCiAgICAgaW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8UmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2s+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERl
ZGljYXRlZFdvcmtlckdsb2JhbFMKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdXJscykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpCiB7
CiAgICAgYXV0byByZXN1bHQgPSBCYXNlOjppbXBvcnRTY3JpcHRzKHVybHMpOwogICAgIHRocmVh
ZCgpLndvcmtlck9iamVjdFByb3h5KCkucmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdB
Y3Rpdml0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIERlZGljYXRl
ZFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIAogICAgIGJvb2wgaXNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
LSAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB1cmxzKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0
IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpIGZpbmFsOwogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHByZXBh
cmVGb3JEZXN0cnVjdGlvbigpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6c2V0SXNPbmxpbmUoYm9vbAogICAg
ICAgICBtX25hdmlnYXRvci0+c2V0SXNPbmxpbmUoaXNPbmxpbmUpOwogfQogCi1FeGNlcHRpb25P
cjxpbnQ+IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1l
b3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNl
cHRpb25PcjxpbnQ+IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxP
YmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGlu
dCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3Vt
ZW50cykKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBo
ZXJlPyBPciBzaG91bGQgaXQgaGFwcGVuIHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAg
IGlmIChhY3Rpb24tPnR5cGUoKSA9PSBTY2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKQEAg
LTMwNSw3ICszMDUsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhclRpbWVvdXQoaW50
CiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoKnRoaXMsIHRpbWVvdXRJZCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPGludD4gV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKEpTQzo6SlNHbG9iYWxP
YmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGlu
dCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMp
CitFeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0
aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4m
JiBhcmd1bWVudHMpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNoZWNrIHJlYWxseSBo
YXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJvdXQgdG8gZXZh
bD8KICAgICBpZiAoYWN0aW9uLT50eXBlKCkgPT0gU2NoZWR1bGVkQWN0aW9uOjpUeXBlOjpDb2Rl
KSB7CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJJbnRl
cnZhbChpbgogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlkKCp0aGlzLCB0aW1lb3V0SWQpOwogfQog
Ci1FeGNlcHRpb25Pcjx2b2lkPiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdXJscykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNj
b3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpCiB7CiAg
ICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgV29ya2VyTG9jYXRpb24mIGxvY2F0aW9u
KCkgY29uc3Q7CiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2
b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKTsKKyAgICB2aXJ0
dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3Ry
aW5nPiYgdXJscyk7CiAgICAgV29ya2VyTmF2aWdhdG9yJiBuYXZpZ2F0b3IoKTsKIAogICAgIHZv
aWQgc2V0SXNPbmxpbmUoYm9vbCk7CiAKLSAgICBFeGNlcHRpb25PcjxpbnQ+IHNldFRpbWVvdXQo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBp
bnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRz
KTsKKyAgICBFeGNlcHRpb25PcjxpbnQ+IHNldFRpbWVvdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgRml4ZWRWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIHZvaWQgY2xl
YXJUaW1lb3V0KGludCB0aW1lb3V0SWQpOwotICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2
YWwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+
LCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1l
bnRzKTsKKyAgICBFeGNlcHRpb25PcjxpbnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEZpeGVk
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lk
IGNsZWFySW50ZXJ2YWwoaW50IHRpbWVvdXRJZCk7CiAKICAgICBib29sIGlzU2VjdXJlQ29udGV4
dCgpIGNvbnN0IGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443145</attachid>
            <date>2021-11-02 16:40:29 -0700</date>
            <delta_ts>2021-11-03 02:14:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232639-20211102234028.patch</filename>
            <type>text/plain</type>
            <size>56423</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODUxODgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTAyICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW50cm9kdWNlIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dCBjb25zdHJ1Y3RvciBmb3IgRml4ZWRWZWN0b3IgYW5kIGEgV1RGOjptYXAoKSBvdmVybG9hZC4K
KworICAgICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6Rml4ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjptYXApOgorICAgICAgICAqIHd0Zi9WZWN0
b3JUcmFpdHMuaDoKKwogMjAyMS0xMS0wMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXVEZdIE1pbm9yIGNsZWFuLXVwIGZvciBmb3JtYXQtcmVsYXRlZCBm
dW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291
cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTYg
QEAgcHVibGljOgogICAgIHsgfQogICAgIEZpeGVkVmVjdG9yKEZpeGVkVmVjdG9yJiYgb3RoZXIp
ID0gZGVmYXVsdDsKIAorICAgIEZpeGVkVmVjdG9yKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBp
bml0aWFsaXplckxpc3QpCisgICAgICAgIDogbV9zdG9yYWdlKGluaXRpYWxpemVyTGlzdC5zaXpl
KCkpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXplckxpc3QpIHsKKyAgICAgICAgICAgIG1fc3RvcmFn
ZS5hdChpbmRleCkgPSBlbGVtZW50OworICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgRml4ZWRWZWN0b3ImIG90
aGVyKQogICAgIHsKICAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90aGVyKTsKQEAgLTEzOSw2ICsx
NDksMjAgQEAgaW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxUPiYgYSwgRml4ZQogICAgIGEu
c3dhcChiKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFwRnVuY3Rpb24s
IHR5cGVuYW1lIFJldHVyblR5cGUgPSB0eXBlbmFtZSBzdGQ6Omludm9rZV9yZXN1bHQ8TWFwRnVu
Y3Rpb24sIGNvbnN0IFQmPjo6dHlwZT4KK0ZpeGVkVmVjdG9yPFJldHVyblR5cGU+IG1hcChjb25z
dCBGaXhlZFZlY3RvcjxUPiYgc291cmNlLCBNYXBGdW5jdGlvbiYmIG1hcEZ1bmN0aW9uKQorewor
ICAgIEZpeGVkVmVjdG9yPFJldHVyblR5cGU+IHJlc3VsdChzb3VyY2Uuc2l6ZSgpKTsKKworICAg
IHNpemVfdCByZXN1bHRJbmRleCA9IDA7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogc291
cmNlKSB7CisgICAgICAgIHJlc3VsdFtyZXN1bHRJbmRleF0gPSBtYXBGdW5jdGlvbihpdGVtKTsK
KyAgICAgICAgcmVzdWx0SW5kZXgrKzsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGaXhlZFZlY3RvcjsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1ZlY3RvclRyYWl0cy5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV1RGL3d0Zi9WZWN0
b3JUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWZWN0b3JUcmFpdHM8UmVmUHRy
PFA+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6dW5pcXVlX3B0cjxQPj4gOiBTaW1wbGVDbGFz
c1ZlY3RvclRyYWl0cyB7IH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3Rv
clRyYWl0czxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFA+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJh
aXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFJl
ZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkgQEAKKzIwMjEtMTEtMDIgIEFs
ZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJJRExdIGNv
bnZlcnRWYXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4gYSBGaXhlZFZlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTaW5jZSBpdCdzIGhp
Z2hseSB1bmxpa2VseSAoQ1NTTnVtZXJpY0FycmF5IGlzIGltbXV0YWJsZSkgdGhhdCB3ZSB3b3Vs
ZCBuZWVkIHRvCisgICAgICAgIG11dGF0ZSB2YXJpYWRpYyBhcmd1bWVudHMgYmVmb3JlIHByb2Nl
c3NpbmcgdGhlbSBvciBzdG9yaW5nLCBhbmQgd2Uga25vdyB0aGVpciBzaXplCisgICAgICAgIHVw
ZnJvbnQsIGl0IG1ha2VzIHRoZSBtb3N0IHNlbnNlIHRvIHNhdmUgc29tZSBtZW1vcnkgYnkgdXRp
bGl6aW5nIGEgRml4ZWRWZWN0b3IuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWR1Y2VzIHNpemVv
ZihTY2hlZHVsZWRBY3Rpb24pIGJ5IDgsIGVuYWJsaW5nIG1lbW9yeS1uZXV0cmFsIGFkZGl0aW9u
CisgICAgICAgIG9mIGEgZmllbGQgbGlrZSBtX2luY3VtYmVudEdsb2JhbE9iamVjdC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldFN0cmVhbXMp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlkcyk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFRyYWNrKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0TWVk
aWFTdHJlYW1JZHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRWYXJpYWRpYy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFZhcmlhZGljQXJndW1l
bnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVudHMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL0NTU051
bWVyaWNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmFkZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnN1Yik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NOdW1lcmljVmFsdWU6Om11bCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmlj
VmFsdWU6OmRpdik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1pbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1heCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NOdW1lcmljVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmlj
VmFsdWU6OnRvU3VtKToKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaDoK
KyAgICAgICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTTWF0aE1heDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hdGhN
YXg6OkNTU01hdGhNYXgpOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1h
eC5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TWF0aE1pbjo6Q1NTTWF0aE1pbik6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NN
YXRoTWluLmg6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoUHJvZHVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU01hdGhQcm9kdWN0OjpDU1NNYXRoUHJvZHVjdCk6CisgICAgICAgICogY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oOgorICAgICAgICAqIGNzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aFN1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoU3VtOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aFN1bTo6Q1NTTWF0aFN1bSk6CisgICAg
ICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmg6CisgICAgICAgICogY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TnVtZXJpY0FycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTnVtZXJpY0FycmF5
OjpDU1NOdW1lcmljQXJyYXkpOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVt
ZXJpY0FycmF5Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVw
bGFjZUNoaWxkcmVuKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlbG4pOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlzdCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50VG91Y2guaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpu
b2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKiBkb20vVG91Y2hMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExp
c3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExpc3Q6OlRvdWNoTGlzdCk6Cisg
ICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9r
ZW5MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmUpOgor
ICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29u
dGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZh
czo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuaDoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNl
dFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXRJbnRlcnZhbCk6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAyMS0xMS0wMiAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFByb3Zp
ZGUgYmlkaSBwcm9wZXJ0aWVzIHdoZW4gY29uc3RydWN0aW5nIFRleHRSdW4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJrQXNO
ZWVkaW4KICAgICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZU5lZ290aWF0aW9uTmVlZGVkRmxhZyhl
dmVudElkKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJpbmc+JiYp
CitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmKQogewogICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJf
cyB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRTdGF0cyhSVENSdHBTZW5kZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFJlY2VpdmVyJiwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJikgPSAwOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2Vu
ZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJpbmc+JiYpOworICAg
IHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2smLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVUcmFjayhSVENSdHBTZW5kZXImKSB7IH0KIAogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24g
Mjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBSVENQZWVyQ29u
bmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKICAgICBzdG9wKCk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1l
ZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVy
Pj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRy
YWNrLCBjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFt
Pj4mIHN0cmVhbXMpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTE0Mywx
MSArMTQzLDkgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDbwogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIH0K
IAotICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhU3RyZWFtSWRzOwotICAgIGZvciAoYXV0byBzdHJl
YW0gOiBzdHJlYW1zKQotICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLmdldCgp
LmlkKCkpOwotCi0gICAgcmV0dXJuIG1fYmFja2VuZC0+YWRkVHJhY2sodHJhY2suZ2V0KCksIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayh0
cmFjay5nZXQoKSwgV1RGOjptYXAoc3RyZWFtcywgW10oYXV0byYgc3RyZWFtKSAtPiBTdHJpbmcg
eworICAgICAgICByZXR1cm4gc3RyZWFtLmdldCgpLmlkKCk7CisgICAgfSkpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPFJUQ1J0cFRyYW5zY2VpdmVyPj4mIGN1cnJlbnRUcmFuc2NlaXZlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3RyYW5zY2VpdmVyU2V0Lmxpc3QoKTsgfQogCi0gICAgRXhjZXB0aW9uT3I8UmVmPFJU
Q1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7CisgICAgRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBj
b25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKTsKIAogICAg
IHVzaW5nIEFkZFRyYW5zY2VpdmVyVHJhY2tPcktpbmQgPSBzdGQ6OnZhcmlhbnQ8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+LCBTdHJpbmc+OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAkocmV2aXNpb24gMjg1MTgzKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjIsMTQgKzE2MiwxNCBAQCB2b2lkIFJUQ1J0cFNlbmRlcjo6c2V0
UGFyYW1ldGVycyhjb25zdCBSCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+c2V0UGFyYW1ldGVycyhw
YXJhbWV0ZXJzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UnRwU2VuZGVyOjpzZXRTdHJlYW1zKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6
OnNldFN0cmVhbXMoY29uc3QgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRp
YVN0cmVhbT4+JiBzdHJlYW1zKQogewogICAgIHJldHVybiBzZXRNZWRpYVN0cmVhbUlkcyhXVEY6
Om1hcChzdHJlYW1zLCBbXShhdXRvJiBzdHJlYW0pIC0+IFN0cmluZyB7CiAgICAgICAgIHJldHVy
biBzdHJlYW0uZ2V0KCkuaWQoKTsKICAgICB9KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJU
Q1J0cFNlbmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmVh
bUlkcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMo
Y29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQogewogICAgIGlmICghbV9jb25u
ZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9zZWQoKSB8fCAhbV9iYWNrZW5kKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJjb25uZWN0aW9uIGlzIGNs
b3NlZCJfcyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4
ICs3MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJl
dHVybiBtX3RyYWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhY2tLaW5kOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRNZWRpYVN0
cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFN0cmVhbXMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+
PiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZpeGVk
VmVjdG9yPFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHJlYW1zKGNvbnN0
IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYpOwogCiAg
ICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5kOyB9CiAgICAgdm9p
ZCBzdG9wKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2Vu
ZGVyQmFja2VuZD4gY3JlYXRlRFRNRkJhY2tlbmQoKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8UlRD
UnRwVHJhbnNmb3JtQmFja2VuZD4gcnRjUnRwVHJhbnNmb3JtQmFja2VuZCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0
cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRHRsc1RyYW5zcG9y
dEJhY2tlbmQ+IGR0bHNUcmFuc3BvcnRCYWNrZW5kKCkgPSAwOwogfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAJKHJldmlzaW9uIDI4NTE4MykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldFJlbW90ZQogICAgIHN0YXJ0TG9nZ2luZ1N0
YXRzKCk7CiB9CiAKLWJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2soTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIG1lZGlhU3RyZWFtSWRzKQorYm9vbCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjphZGRUcmFjayhMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJiBzZW5kZXIsIE1lZGlh
U3RyZWFtVHJhY2smIHRyYWNrLCBjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVh
bUlkcykKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
b3AoKTsKICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tlbmQ7IH0K
IAotICAgIGJvb2wgYWRkVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYsIE1lZGlhU3Ry
ZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIGJvb2wgYWRkVHJhY2soTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZCYsIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBGaXhlZFZl
Y3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCByZW1vdmVUcmFjayhMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kJik7CiAKICAgICBzdHJ1Y3QgQmFja2VuZHMgewpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCShyZXZpc2lvbiAy
ODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIs
NyArMzIyLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0
cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcykKK0V4Y2VwdGlvbk9yPFJlZjxS
VENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1J
ZHMpCiB7CiAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRU
cmFjaygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCShyZXZp
c2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNyArODMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRTdGF0c1N1Y2NlZWRlZChjb25z
dCBEZWZlcnJlZFByb21pc2UmLCBSZWY8UlRDU3RhdHNSZXBvcnQ+JiYpOwogCi0gICAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBWZWN0
b3I8U3RyaW5nPiYmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4g
YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIEZpeGVkVmVjdG9yPFN0cmluZz4mJikgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKSBmaW5hbDsKIAogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPgogICAgIHJldHVybiBi
YWNrZW5kID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENEdGxzVHJhbnNwb3J0QmFja2VuZD4oV1RGTW92
ZShiYWNrZW5kKSkgOiBudWxscHRyOwogfQogCi12b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6OnNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJlYW1JZHMpCit2
b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZp
eGVkVmVjdG9yPFN0cmluZz4mIHN0cmVhbUlkcykKIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gaWRzOwogICAgIGZvciAoYXV0byYgaWQgOiBzdHJlYW1JZHMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCShyZXZpc2lvbiAyODUxODMp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURU
TUZCYWNrZW5kKCkgZmluYWw7CiAgICAgUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IHJ0Y1J0
cFRyYW5zZm9ybUJhY2tlbmQoKSBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRHRsc1Ry
YW5zcG9ydEJhY2tlbmQ+IGR0bHNUcmFuc3BvcnRCYWNrZW5kKCkgZmluYWw7Ci0gICAgdm9pZCBz
ZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOworICAgIHZvaWQg
c2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBzdGFydFNvdXJjZSgpOwogICAgIHZvaWQgc3RvcFNvdXJjZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCShy
ZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRWYXJpYWRpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBWYXJp
YWRpY0NvbnZlcnRlciB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4g
VmVjdG9yPHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpJdGVtPiBjb252ZXJ0
VmFyaWFkaWNBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgc2l6ZV90IHN0YXJ0SW5kZXgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJRExUeXBlPiBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRl
cjxJRExUeXBlPjo6SXRlbT4gY29udmVydFZhcmlhZGljQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIHNp
emVfdCBzdGFydEluZGV4KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtNTUsMTUgKzU1LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IFZlY3Rvcjx0eXBl
bmEKICAgICBpZiAoc3RhcnRJbmRleCA+PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46Okl0ZW0+IHJl
c3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydElu
ZGV4KTsKKyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBl
Pjo6SXRlbT4gcmVzdWx0KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwogCisgICAgc2l6ZV90IHJlc3Vs
dEluZGV4ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6
Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudW5jaGVja2VkQXJndW1lbnQo
aSkpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwgISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdmFsdWUpOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkp
OworICAgICAgICByZXN1bHRbcmVzdWx0SW5kZXhdID0gV1RGTW92ZSgqdmFsdWUpOworICAgICAg
ICByZXN1bHRJbmRleCsrOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHJldmlzaW9u
IDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgU2NoZWR1bGVkQWN0aW9uOjpTY2hl
ZHVsZWRBY3Rpb24oRE9NV3JhcAogCiBTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24o
KSA9IGRlZmF1bHQ7CiAKLXZvaWQgU2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVudHMoVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQordm9pZCBTY2hlZHVsZWRB
Y3Rpb246OmFkZEFyZ3VtZW50cyhGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
PiYmIGFyZ3VtZW50cykKIHsKICAgICBtX2FyZ3VtZW50cyA9IFdURk1vdmUoYXJndW1lbnRzKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5o
CShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQzLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0
aW9uPiBjcmVhdGUoRE9NV3JhcHBlcldvcmxkJiwgU3RyaW5nJiYpOwogICAgIH5TY2hlZHVsZWRB
Y3Rpb24oKTsKIAotICAgIHZvaWQgYWRkQXJndW1lbnRzKFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24+PiYmKTsKKyAgICB2b2lkIGFkZEFyZ3VtZW50cyhGaXhlZFZlY3RvcjxKU0M6OlN0
cm9uZzxKU0M6OlVua25vd24+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7IENvZGUsIEZ1
bmN0aW9uIH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7CkBAIC02MCw3ICs1OSw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWY8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7CiAgICAgSlND
OjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Z1bmN0aW9uOwotICAgIFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+PiBtX2FyZ3VtZW50czsKKyAgICBGaXhlZFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+PiBtX2FyZ3VtZW50czsKICAgICBTdHJpbmcgbV9jb2RlOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3Bw
CShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1l
cmljVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU051bWVyaWNWYWx1ZSk7
CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWRkKFZlY3RvcjxDU1NO
dW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVl
OjphZGQoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBVTlVTRURf
UEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC01Miw3ICs1Miw3IEBA
IFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWQKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6c3ViKFZlY3Rv
cjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJp
Y1ZhbHVlOjpzdWIoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBV
TlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC02MCw3ICs2
MCw3IEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6c3UKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bXVs
KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NT
TnVtZXJpY1ZhbHVlOjptdWwoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsK
ICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC02
OCwyMSArNjgsMjEgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptdQog
ICAgIHJldHVybiAqdGhpczsKIH0KIAotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1Zh
bHVlOjpkaXYoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY1Zh
bHVlPiBDU1NOdW1lcmljVmFsdWU6OmRpdihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFs
dWVzKQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1w
bC4KIAogICAgIHJldHVybiAqdGhpczsKIH0KLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVy
aWNWYWx1ZTo6bWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVy
aWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptaW4oRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRk
IGltcGwuCiAKICAgICByZXR1cm4gKnRoaXM7CiB9Ci1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NO
dW1lcmljVmFsdWU6Om1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NO
dW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlz
aD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6
IGFkZCBpbXBsLgpAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051
bWVyaWNWYWx1ZTo6cmUKICAgICB9KTsKIH0KIAotYm9vbCBDU1NOdW1lcmljVmFsdWU6OmVxdWFs
cyhWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlKQorYm9vbCBDU1NOdW1lcmljVmFsdWU6OmVx
dWFscyhGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHZhbHVlKTsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5
cGVkLW9tLyNkb20tY3NzbnVtZXJpY3ZhbHVlLWVxdWFscwpAQCAtMTE2LDcgKzExNiw3IEBAIFJl
ZjxDU1NVbml0VmFsdWU+IENTU051bWVyaWNWYWx1ZTo6dG8oU3QKICAgICByZXR1cm4gQ1NTVW5p
dFZhbHVlOjpjcmVhdGUoMS4wLCAibnVtYmVyIik7CiB9CiAKLVJlZjxDU1NNYXRoU3VtPiBDU1NO
dW1lcmljVmFsdWU6OnRvU3VtKFZlY3RvcjxTdHJpbmc+JiYgdW5pdHMpCitSZWY8Q1NTTWF0aFN1
bT4gQ1NTTnVtZXJpY1ZhbHVlOjp0b1N1bShGaXhlZFZlY3RvcjxTdHJpbmc+JiYgdW5pdHMpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHVuaXRzKTsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91
ZGluaS5vcmcvY3NzLXR5cGVkLW9tLyNkb20tY3NzbnVtZXJpY3ZhbHVlLXRvc3VtCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaAkocmV2aXNpb24g
Mjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTU1N0eWxlVmFs
dWUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDE3ICs0NSwxNyBAQCBjbGFzcyBDU1NOdW1l
cmljVmFsdWUgOiBwdWJsaWMgQ1NTU3R5bGVWCiBwdWJsaWM6CiAgICAgdXNpbmcgQ1NTTnVtYmVy
aXNoID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgUmVmUHRyPENTU051bWVyaWNWYWx1ZT4+OwogCi0g
ICAgUmVmPENTU051bWVyaWNWYWx1ZT4gYWRkKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAg
IFJlZjxDU1NOdW1lcmljVmFsdWU+IHN1YihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBS
ZWY8Q1NTTnVtZXJpY1ZhbHVlPiBtdWwoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgUmVm
PENTU051bWVyaWNWYWx1ZT4gZGl2KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAgIFJlZjxD
U1NOdW1lcmljVmFsdWU+IG1pbihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8Q1NT
TnVtZXJpY1ZhbHVlPiBtYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVmPENTU051
bWVyaWNWYWx1ZT4gYWRkKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVmPENT
U051bWVyaWNWYWx1ZT4gc3ViKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgUmVm
PENTU051bWVyaWNWYWx1ZT4gbXVsKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAg
UmVmPENTU051bWVyaWNWYWx1ZT4gZGl2KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7Cisg
ICAgUmVmPENTU051bWVyaWNWYWx1ZT4gbWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7
CisgICAgUmVmPENTU051bWVyaWNWYWx1ZT4gbWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4m
Jik7CiAgICAgCi0gICAgYm9vbCBlcXVhbHMoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAg
Ym9vbCBlcXVhbHMoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICAKICAgICBSZWY8
Q1NTVW5pdFZhbHVlPiB0byhTdHJpbmcmJik7Ci0gICAgUmVmPENTU01hdGhTdW0+IHRvU3VtKFZl
Y3RvcjxTdHJpbmc+JiYpOworICAgIFJlZjxDU1NNYXRoU3VtPiB0b1N1bShGaXhlZFZlY3RvcjxT
dHJpbmc+JiYpOwogICAgIENTU051bWVyaWNUeXBlIHR5cGUoKTsKICAgICAKICAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IHBhcnNlKFN0cmluZyYmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNw
cAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoTWF4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU01hdGhNYXgp
OwogCi1SZWY8Q1NTTWF0aE1heD4gQ1NTTWF0aE1heDo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJp
c2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8Q1NTTWF0aE1heD4gQ1NTTWF0aE1heDo6Y3JlYXRlKEZp
eGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NNYXRoTWF4KFdURk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01h
dGhNYXg6OkNTU01hdGhNYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NT
U01hdGhNYXg6OkNTU01hdGhNYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlz
aGVzKQogICAgIDogQ1NTTWF0aFZhbHVlKENTU01hdGhPcGVyYXRvcjo6TWF4KQogICAgICwgbV92
YWx1ZXMoQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4
LmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aE1heC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3Mg
Q1NTTnVtZXJpY0FycmF5OwogY2xhc3MgQ1NTTWF0aE1heCA6IHB1YmxpYyBDU1NNYXRoVmFsdWUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTWF0aE1heCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDU1NNYXRoTWF4PiBjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Cisg
ICAgc3RhdGljIFJlZjxDU1NNYXRoTWF4PiBjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogICAgIAog
cHJpdmF0ZToKLSAgICBDU1NNYXRoTWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENT
U01hdGhNYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJp
Y0FycmF5PiBtX3ZhbHVlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aE1pbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKENTU01hdGhNaW4pOwogCi1SZWY8Q1NTTWF0aE1pbj4gQ1NTTWF0
aE1pbjo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8Q1NT
TWF0aE1pbj4gQ1NTTWF0aE1pbjo6Y3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBu
dW1iZXJpc2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoTWluKFdURk1v
dmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhNaW46OkNTU01hdGhNaW4oVmVjdG9yPENT
U051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhNaW46OkNTU01hdGhNaW4oRml4ZWRW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogICAgIDogQ1NTTWF0aFZhbHVlKENT
U01hdGhPcGVyYXRvcjo6TWluKQogICAgICwgbV92YWx1ZXMoQ1NTTnVtZXJpY0FycmF5OjpjcmVh
dGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgQ1NTTnVtZXJpY0FycmF5OwogY2xhc3MgQ1NT
TWF0aE1pbiA6IHB1YmxpYyBDU1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoQ1NTTWF0aE1pbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NNYXRoTWluPiBjcmVh
dGUoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgc3RhdGljIFJlZjxDU1NNYXRoTWluPiBj
cmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmlj
QXJyYXkmIHZhbHVlcygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBDU1NNYXRoTWluKFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhNaW4oRml4ZWRWZWN0b3I8Q1NTTnVt
YmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1Y3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aFByb2R1Y3QuY3BwCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIg
KzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKENTU01hdGhQcm9kdWN0KTsKIAotUmVmPENTU01hdGhQcm9kdWN0PiBDU1NNYXRoUHJvZHVj
dDo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8Q1NTTWF0
aFByb2R1Y3Q+IENTU01hdGhQcm9kdWN0OjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmIG51bWJlcmlzaGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU01hdGhQcm9k
dWN0KFdURk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhQcm9kdWN0OjpDU1NNYXRo
UHJvZHVjdChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorQ1NTTWF0aFByb2R1
Y3Q6OkNTU01hdGhQcm9kdWN0KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hl
cykKICAgICA6IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6OlByb2R1Y3QpCiAgICAgLCBt
X3ZhbHVlcyhDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NN
YXRoUHJvZHVjdC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICsz
NywxMyBAQCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFzcyBDU1NNYXRoUHJvZHVjdCA6IHB1
YmxpYyBDU1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTWF0aFBy
b2R1Y3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0aFByb2R1Y3Q+IGNyZWF0ZShW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01hdGhQcm9kdWN0PiBj
cmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmlj
QXJyYXkmIHZhbHVlcygpIGNvbnN0OwogICAgIAogICAgIENTU01hdGhPcGVyYXRvciBnZXRPcGVy
YXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVyYXRvcjo6UHJvZHVjdDsgfQog
CiBwcml2YXRlOgotICAgIENTU01hdGhQcm9kdWN0KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwor
ICAgIENTU01hdGhQcm9kdWN0KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgUmVm
PENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAJKHJldmlzaW9uIDI4NTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NNYXRoU3VtKTsKIAotUmVmPENTU01hdGhT
dW0+IENTU01hdGhTdW06OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVz
KQorUmVmPENTU01hdGhTdW0+IENTU01hdGhTdW06OmNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTWF0
aFN1bShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoU3VtOjpDU1NNYXRoU3Vt
KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRoU3VtOjpDU1NNYXRo
U3VtKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKICAgICA6IENTU01h
dGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6OlN1bSkKICAgICAsIG1fdmFsdWVzKENTU051bWVyaWNB
cnJheTo6Y3JlYXRlKFdURk1vdmUobnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCShyZXZpc2lvbiAyODUx
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsK
IGNsYXNzIENTU01hdGhTdW0gOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKENTU01hdGhTdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0
aFN1bT4gY3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NT
TWF0aFN1bT4gY3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgY29uc3Qg
Q1NTTnVtZXJpY0FycmF5JiB2YWx1ZXMoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NNYXRo
U3VtKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhTdW0oRml4ZWRWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0Fy
cmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmlj
L0NTU051bWVyaWNBcnJheS5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMjIgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENTU051bWVyaWNBcnJheSk7CiAKLVJlZjxDU1NOdW1lcmljQXJyYXk+IENT
U051bWVyaWNBcnJheTo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMp
CitSZWY8Q1NTTnVtZXJpY0FycmF5PiBDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShjb25zdCBGaXhl
ZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiBudW1iZXJpc2hlcykKIHsKLSAgICBWZWN0b3I8UmVmPENT
U051bWVyaWNWYWx1ZT4+IHZhbHVlczsKLSAgICB2YWx1ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1iZXJpc2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYmIG51bWJlcmlzaCA6IG51bWJl
cmlzaGVzKQotICAgICAgICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKENTU051bWVyaWNWYWx1ZTo6
cmVjdGlmeU51bWJlcmlzaChXVEZNb3ZlKG51bWJlcmlzaCkpKTsKLSAgICAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NOdW1lcmljQXJyYXkoV1RGTW92ZSh2YWx1ZXMpKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTnVtZXJpY0FycmF5KFdURjo6bWFwKG51bWJlcmlzaGVzLCBb
XShhdXRvJiBudW1iZXJpc2gpIC0+IFJlZjxDU1NOdW1lcmljVmFsdWU+IHsKKyAgICAgICAgcmV0
dXJuIENTU051bWVyaWNWYWx1ZTo6cmVjdGlmeU51bWJlcmlzaChjb25zdF9jYXN0PENTU051bWJl
cmlzaCYmPihudW1iZXJpc2gpKTsKKyAgICB9KSkpOwogfQogCi1SZWY8Q1NTTnVtZXJpY0FycmF5
PiBDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYg
dmFsdWVzKQorUmVmPENTU051bWVyaWNBcnJheT4gQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoRml4
ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU051bWVyaWNBcnJheShXVEZNb3ZlKHZhbHVlcykpKTsKIH0KIAotQ1NT
TnVtZXJpY0FycmF5OjpDU1NOdW1lcmljQXJyYXkoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+
PiYmIHZhbHVlcykKK0NTU051bWVyaWNBcnJheTo6Q1NTTnVtZXJpY0FycmF5KEZpeGVkVmVjdG9y
PFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKICAgICA6IG1fYXJyYXkoV1RGTW92ZSh2
YWx1ZXMpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9D
U1NOdW1lcmljQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRv
bS9udW1lcmljL0NTU051bWVyaWNBcnJheS5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxNCArNDAsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlv
bk9yOwogY2xhc3MgQ1NTTnVtZXJpY0FycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTTnVtZXJp
Y0FycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NOdW1lcmljQXJyYXkpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoVmVjdG9yPENT
U051bWJlcmlzaD4mJik7Ci0gICAgc3RhdGljIFJlZjxDU1NOdW1lcmljQXJyYXk+IGNyZWF0ZShW
ZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJp
Y0FycmF5PiBjcmVhdGUoY29uc3QgRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYpOworICAgIHN0
YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoRml4ZWRWZWN0b3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+JiYpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5
LnNpemUoKTsgfTsKICAgICBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gaXRlbShz
aXplX3QgaW5kZXgpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVl
Pj4gbV9hcnJheTsKLSAgICBDU1NOdW1lcmljQXJyYXkoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFs
dWU+PiYmKTsKKyAgICBGaXhlZFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gbV9hcnJheTsK
KyAgICBDU1NOdW1lcmljQXJyYXkoRml4ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzEsNyArOTcxLDcgQEAgdW5zaWdu
ZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bgogICAgIHJldHVybiBzdGQ6OmRpc3Rh
bmNlKGNoaWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKK0V4Y2VwdGlv
bk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYgdmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50
b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpA
QCAtOTg0LDcgKzk4NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVu
ZCgKICAgICByZXR1cm4gYXBwZW5kQ2hpbGQoKm5vZGUpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9yKQor
RXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZChGaXhlZFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYgdmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5vZGVzT3JT
dHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQpAQCAtOTk4LDcgKzk5OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OnByZXBlbmQKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tcGFy
ZW50bm9kZS1yZXBsYWNlY2hpbGRyZW4KLUV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6
OnJlcGxhY2VDaGlsZHJlbihWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKK0V4Y2VwdGlv
bk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZHJlbihGaXhlZFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYgdmVjdG9yKQogewogICAgIC8vIHN0ZXAgMQogICAgIGF1dG8gcmVzdWx0ID0g
Y29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDEwICsxMjcs
MTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGZpcnN0RWxlbWVudENo
aWxkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogbGFzdEVsZW1lbnRDaGls
ZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkRWxlbWVudENvdW50
KCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmlu
Zz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kKEZpeGVkVmVjdG9yPE5vZGVPclN0
cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJlcGVuZChGaXhlZFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxkcmVuKFZl
Y3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGls
ZHJlbihGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gZW5zdXJlUHJlSW5zZXJ0aW9uVmFsaWRpdHkoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNo
aWxkKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODUxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzM2
LDcgKzMzMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9jdW1lCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERv
Y3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCitFeGNlcHRp
b25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIEZpeGVk
VmVjdG9yPFN0cmluZz4mJiBzdHJpbmdzKQogewogICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8
fCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtMzM0OCw3ICszMzQ4LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZQogICAgIHJldHVybiB3cml0ZShl
bnRyeURvY3VtZW50LCBXVEZNb3ZlKHRleHQpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRG9j
dW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYg
c3RyaW5ncykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZWxuKERvY3VtZW50KiBl
bnRyeURvY3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYgc3RyaW5ncykKIHsKICAgICBpZiAo
IWlzSFRNTERvY3VtZW50KCkgfHwgbV90aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjg4LDggKzY4OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNhbmNlbFBhcnNpbmcoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRl
KERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBTZWdtZW50ZWRTdHJpbmcmJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gd3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQs
IFZlY3RvcjxTdHJpbmc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+
IHdyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRlKERvY3VtZW50KiBlbnRyeURv
Y3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHdyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIEZpeGVkVmVjdG9y
PFN0cmluZz4mJik7CiAKICAgICBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dl
bGxGb3JtZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAkocmV2
aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFJlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6
Y3JlYXRlVG91Y2goRG8KICAgICByZXR1cm4gVG91Y2g6OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBp
ZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1
c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAotUmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRU
b3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCitSZWY8VG91Y2hMaXN0PiBEb2N1bWVudFRvdWNoOjpj
cmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFRvdWNoPj4mJiB0b3VjaGVzKQogewogICAgIHJldHVybiBUb3VjaExpc3Q6OmNyZWF0ZShX
VEZNb3ZlKHRvdWNoZXMpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRv
dWNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaAko
cmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXaW5kb3dQcm94eTsKIGNsYXNz
IERvY3VtZW50VG91Y2ggewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRv
dWNoKERvY3VtZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKTsKLSAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50
JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKKyAgICBzdGF0aWMg
UmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgRml4ZWRWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYpOwogfTsKIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MTMsNyArNTEzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6
YXBwZW5kQ2hpbGQoTm9kZQogICAgIHJldHVybiBkb3duY2FzdDxDb250YWluZXJOb2RlPigqdGhp
cykuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpOwogfQogCi1zdGF0aWMgSGFzaFNldDxSZWZQdHI8Tm9k
ZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0b3IoY29uc3QgVmVj
dG9yPE5vZGVPclN0cmluZz4mIHZlY3RvcikKK3N0YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4g
bm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihjb25zdCBGaXhlZFZl
Y3RvcjxOb2RlT3JTdHJpbmc+JiB2ZWN0b3IpCiB7CiAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+
IG5vZGVTZXQ7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYW50IDogdmVjdG9yKSB7CkBAIC01
NDMsNyArNTQzLDcgQEAgc3RhdGljIFJlZlB0cjxOb2RlPiBmaXJzdEZvbGxvd2luZ1NpYmxpbgog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6
OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9k
ZU9yU3RyaW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBOb2RlOjpjb252ZXJ0
Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9y
U3RyaW5nVmVjdG9yKQogewogICAgIGlmIChub2RlT3JTdHJpbmdWZWN0b3IuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU2OSw3ICs1NjksNyBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnROCiAgICAgcmV0dXJuIFJlZlB0cjxOb2RlPiB7IFdU
Rk1vdmUobm9kZVRvUmV0dXJuKSB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZv
cmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitFeGNlcHRpb25P
cjx2b2lkPiBOb2RlOjpiZWZvcmUoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0
cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50
Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNTkzLDcgKzU5Myw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE5vZGU6OmJlZm9yZShWZWN0b3I8Tm8KICAgICByZXR1cm4gcGFyZW50LT5pbnNlcnRC
ZWZvcmUoKm5vZGUsIHZpYWJsZVByZXZpb3VzU2libGluZy5nZXQoKSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPHZvaWQ+IE5vZGU6OmFmdGVyKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5n
VmVjdG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YWZ0ZXIoRml4ZWRWZWN0b3I8Tm9kZU9y
U3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNjEyLDcgKzYx
Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmFmdGVyKFZlY3RvcjxOb2QKICAgICByZXR1
cm4gcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUsIHZpYWJsZU5leHRTaWJsaW5nLmdldCgpKTsK
IH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6cmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0
cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpyZXBs
YWNlV2l0aChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQog
ewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CiAgICAg
aWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw5ICsxODQsOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogbmV4dEVsZW1lbnRTaWJsaW5nKCkg
Y29uc3Q7CiAKICAgICAvLyBGcm9tIHRoZSBDaGlsZE5vZGUgLSBodHRwczovL2RvbS5zcGVjLndo
YXR3Zy5vcmcvI2NoaWxkbm9kZQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJlZm9yZShWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZnRlcihWZWN0b3I8Tm9k
ZU9yU3RyaW5nPiYmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlV2l0aChWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBiZWZvcmUoRml4ZWRWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZnRlcihGaXhlZFZl
Y3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VXaXRo
KEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8dm9pZD4gcmVtb3ZlKCk7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBv
ZiBET00pCkBAIC02OTEsNyArNjkxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0
ZVN0eWxlKFN0eWxlOjpWYWxpZGl0eSwgU3R5bGU6OkludmFsaWRhdGlvbk1vZGUgPSBTdHlsZTo6
SW52YWxpZGF0aW9uTW9kZTo6Tm9ybWFsKTsKICAgICB2b2lkIHVwZGF0ZUFuY2VzdG9yc0ZvclN0
eWxlUmVjYWxjKCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGNvbnZlcnROb2Rl
c09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2VwdGlv
bk9yPFJlZlB0cjxOb2RlPj4gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoRml4ZWRWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBzZXVkb0lkIGN1
c3RvbVBzZXVkb0lkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmgJKHJldmlzaW9u
IDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUb3VjaExpc3QpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3Jl
YXRlKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJiB0b3VjaGVzKQorICAg
IHN0YXRpYyBSZWY8VG91Y2hMaXN0PiBjcmVhdGUoRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRvdWNoTGlzdChXVEZNb3ZlKHRvdWNoZXMpKSk7CiAgICAgfQpAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRvdWNoTGlzdCgpID0gZGVmYXVsdDsKIAotICAg
IGV4cGxpY2l0IFRvdWNoTGlzdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+
JiYgdG91Y2hlcykKKyAgICBleHBsaWNpdCBUb3VjaExpc3QoRml4ZWRWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKICAgICB7CiAgICAgICAgIG1fdmFsdWVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG91Y2hlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1
dG8mIHRvdWNoIDogdG91Y2hlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5j
cHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8
dm9pZD4gRE9NVG9rZW5MaXN0OjphCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucykKK0V4
Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmlu
Zz4mIHRva2VucykKIHsKICAgICByZXR1cm4gYWRkSW50ZXJuYWwodG9rZW5zLmRhdGEoKSwgdG9r
ZW5zLnNpemUoKSk7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgaW5saW5lIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTVRva2VuTGlzdDo6cgogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCitF
eGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBGaXhlZFZlY3RvcjxT
dHJpbmc+JiB0b2tlbnMpCiB7CiAgICAgcmV0dXJuIHJlbW92ZUludGVybmFsKHRva2Vucy5kYXRh
KCksIHRva2Vucy5zaXplKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tl
bkxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5o
CShyZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9t
U3RyaW5nJiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY29udGFpbnMoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGFkZChjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
YWRkKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29u
c3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3Qg
Rml4ZWRWZWN0b3I8U3RyaW5nPiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShjb25z
dCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Ym9vbD4gdG9n
Z2xlKGNvbnN0IEF0b21TdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZvcmNlKTsKICAgICBF
eGNlcHRpb25Pcjxib29sPiByZXBsYWNlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuLCBjb25zdCBB
dG9tU3RyaW5nJiBuZXdUb2tlbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhCiAgICAgbWF4Q2FudmFzQXJl
YUZvclRlc3RpbmcgPSBzaXplOwogfQogCi1FeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgRml4ZWRWZWN0b3I8
SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fY29u
dGV4dCkgewogICAgICAgICBpZiAobV9jb250ZXh0LT5pc1BsYWNlaG9sZGVyKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShyZXZpc2lvbiAyODUxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXpl
JiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIHJlbmRl
cmluZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLSAg
ICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgVmVjdG9yPEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25Pcjxz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcg
QEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUNvbnRleHRXZWJHTAogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQogCi1FeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRl
cmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxzdGQ6Om9w
dGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENv
bnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNv
bnRleHRUeXBlLCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3Vt
ZW50cykKIHsKICAgICBpZiAobV9kZXRhY2hlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVl
bkNhbnZhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmgJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAg
ICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlv
bmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5r
bm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNj
cmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBS
ZW5kZXJpbmdDb250ZXh0VHlwZSwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
Pj4mJiBhcmd1bWVudHMpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IHRy
YW5zZmVyVG9JbWFnZUJpdG1hcCgpOwogICAgIHZvaWQgY29udmVydFRvQmxvYihJbWFnZUVuY29k
ZU9wdGlvbnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgdm9pZCBE
T01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRoLCBmbAogICAgIHBhZ2UtPmNocm9tZSgpLnNl
dFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdCgqcGFnZSwgdXBkYXRlKSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0
YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0
LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRp
b25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0VGltZW91dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0
ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwg
Rml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAg
ICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFj
b250ZXh0KQpAQCAtMTgxOCw3ICsxODE4LDcgQEAgdm9pZCBET01XaW5kb3c6OmNsZWFyVGltZW91
dChpbnQgdGltZW91dAogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlkKCpjb250ZXh0LCB0aW1lb3V0
SWQpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoSlNDOjpK
U0dsb2JhbE9iamVjdCYgc3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFj
dGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFy
Z3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRJbnRlcnZhbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0
aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4m
JiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShy
ZXZpc2lvbiAyODUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTMsOSArMjkzLDkgQEAgcHVibGljOgogICAgIFZpc3VhbFZpZXdwb3J0
JiB2aXN1YWxWaWV3cG9ydCgpOwogCiAgICAgLy8gVGltZXJzCi0gICAgRXhjZXB0aW9uT3I8aW50
PiBzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1
bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRUaW1lb3V0KEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVv
dXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsK
ICAgICB2b2lkIGNsZWFyVGltZW91dChpbnQgdGltZW91dElkKTsKLSAgICBFeGNlcHRpb25Pcjxp
bnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRJbnRlcnZhbChKU0M6
OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0
aW1lb3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50
cyk7CiAgICAgdm9pZCBjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQpOwogCiAgICAgaW50IHJl
cXVlc3RBbmltYXRpb25GcmFtZShSZWY8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+JiYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFMKICAg
ICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscykKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNv
bnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpCiB7CiAgICAgYXV0byByZXN1bHQgPSBCYXNl
OjppbXBvcnRTY3JpcHRzKHVybHMpOwogICAgIHRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCku
cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJ
KHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIERlZGljYXRlZFdvcmtlclRocmVhZCYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqKTsKIAogICAgIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBp
bXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKSBmaW5hbDsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVy
bHMpIGZpbmFsOwogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFs
OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJ
KHJldmlzaW9uIDI4NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6c2V0SXNPbmxpbmUoYm9vbAogICAgICAgICBtX25hdmlnYXRvci0+c2V0SXNP
bmxpbmUoaXNPbmxpbmUpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2JhbFNjb3Bl
OjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8
U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2Jh
bFNjb3BlOjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1
ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBoZXJlPyBPciBzaG91bGQgaXQgaGFwcGVu
IHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAgIGlmIChhY3Rpb24tPnR5cGUoKSA9PSBT
Y2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdv
cmtlckdsb2JhbFNjb3BlOjpjbGVhclRpbWVvdXQoaW50CiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5
SWQoKnRoaXMsIHRpbWVvdXRJZCk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gV29ya2VyR2xvYmFs
U2NvcGU6OnNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1
ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IFdvcmtl
ckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRml4ZWRW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgLy8g
RklYTUU6IFNob3VsZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0
IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KICAgICBpZiAoYWN0aW9uLT50eXBl
KCkgPT0gU2NoZWR1bGVkQWN0aW9uOjpUeXBlOjpDb2RlKSB7CkBAIC0zMjMsNyArMzIzLDcgQEAg
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJJbnRlcnZhbChpbgogICAgIERPTVRpbWVyOjpy
ZW1vdmVCeUlkKCp0aGlzLCB0aW1lb3V0SWQpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXb3Jr
ZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0
IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpCiB7CiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0
eVBvbGljeSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAkocmV2aXNpb24gMjg1MTgzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBwdWJs
aWM6CiAgICAgV29ya2VyTG9jYXRpb24mIGxvY2F0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB1cmxzKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGlt
cG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdXJscyk7CiAgICAgV29ya2Vy
TmF2aWdhdG9yJiBuYXZpZ2F0b3IoKTsKIAogICAgIHZvaWQgc2V0SXNPbmxpbmUoYm9vbCk7CiAK
LSAgICBFeGNlcHRpb25PcjxpbnQ+IHNldFRpbWVvdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0
ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6
U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25PcjxpbnQ+
IHNldFRpbWVvdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVs
ZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpOwogICAgIHZvaWQgY2xlYXJUaW1lb3V0KGludCB0aW1lb3V0SWQp
OwotICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVjdG9yPEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25Pcjxp
bnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFySW50ZXJ2YWwoaW50IHRpbWVv
dXRJZCk7CiAKICAgICBib29sIGlzU2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443181</attachid>
            <date>2021-11-03 02:14:31 -0700</date>
            <delta_ts>2021-11-04 16:01:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232639-20211103091429.patch</filename>
            <type>text/plain</type>
            <size>56828</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTAzICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW50cm9kdWNlIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dCBjb25zdHJ1Y3RvciBmb3IgRml4ZWRWZWN0b3IgYW5kIGEgV1RGOjptYXAoKSBvdmVybG9hZC4K
KworICAgICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6Rml4ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjptYXApOgorICAgICAgICAqIHd0Zi9WZWN0
b3JUcmFpdHMuaDoKKwogMjAyMS0xMS0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTm90aWZpY2F0aW9ucyBvbiBpT1MgZW5hYmxlZCBhdCBjb21waWxlLXRp
bWUsIGRpc2FibGVkIGF0IHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkocmV2aXNpb24g
Mjg1MjAwKQorKysgU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsMTYgQEAgcHVibGljOgogICAgIHsgfQogICAgIEZpeGVkVmVjdG9yKEZpeGVk
VmVjdG9yJiYgb3RoZXIpID0gZGVmYXVsdDsKIAorICAgIEZpeGVkVmVjdG9yKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxUPiBpbml0aWFsaXplckxpc3QpCisgICAgICAgIDogbV9zdG9yYWdlKGluaXRp
YWxpemVyTGlzdC5zaXplKCkpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXggPSAwOworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXplckxpc3QpIHsKKyAgICAg
ICAgICAgIG1fc3RvcmFnZS5hdChpbmRleCkgPSBlbGVtZW50OworICAgICAgICAgICAgaW5kZXgr
KzsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29uc3Qg
Rml4ZWRWZWN0b3ImIG90aGVyKQogICAgIHsKICAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90aGVy
KTsKQEAgLTEzOSw2ICsxNDksMjAgQEAgaW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxUPiYg
YSwgRml4ZQogICAgIGEuc3dhcChiKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFJldHVyblR5cGUgPSB0eXBlbmFtZSBzdGQ6Omludm9r
ZV9yZXN1bHQ8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPjo6dHlwZT4KK0ZpeGVkVmVjdG9yPFJldHVy
blR5cGU+IG1hcChjb25zdCBGaXhlZFZlY3RvcjxUPiYgc291cmNlLCBNYXBGdW5jdGlvbiYmIG1h
cEZ1bmN0aW9uKQoreworICAgIEZpeGVkVmVjdG9yPFJldHVyblR5cGU+IHJlc3VsdChzb3VyY2Uu
c2l6ZSgpKTsKKworICAgIHNpemVfdCByZXN1bHRJbmRleCA9IDA7CisgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogc291cmNlKSB7CisgICAgICAgIHJlc3VsdFtyZXN1bHRJbmRleF0gPSBtYXBG
dW5jdGlvbihpdGVtKTsKKyAgICAgICAgcmVzdWx0SW5kZXgrKzsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGaXhlZFZl
Y3RvcjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8UmVmUHRyPFA+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6dW5pcXVlX3B0cjxQ
Pj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UD4gc3RydWN0IFZlY3RvclRyYWl0czxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFA+PiA6IFNpbXBs
ZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3Qg
VmVjdG9yVHJhaXRzPFJlZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xhc3NW
ZWN0b3JUcmFpdHMgeyB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODUyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkgQEAK
KzIwMjEtMTEtMDMgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJJRExdIGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4gYSBG
aXhlZFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAg
ICBTaW5jZSBpdCdzIGhpZ2hseSB1bmxpa2VseSAoQ1NTTnVtZXJpY0FycmF5IGlzIGltbXV0YWJs
ZSkgdGhhdCB3ZSB3b3VsZCBuZWVkIHRvCisgICAgICAgIG11dGF0ZSB2YXJpYWRpYyBhcmd1bWVu
dHMgYmVmb3JlIHByb2Nlc3NpbmcgdGhlbSBvciBzdG9yaW5nLCBhbmQgd2Uga25vdyB0aGVpciBz
aXplCisgICAgICAgIHVwZnJvbnQsIGl0IG1ha2VzIHRoZSBtb3N0IHNlbnNlIHRvIHNhdmUgc29t
ZSBtZW1vcnkgYnkgdXRpbGl6aW5nIGEgRml4ZWRWZWN0b3IuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZWR1Y2VzIHNpemVvZihTY2hlZHVsZWRBY3Rpb24pIGJ5IDgsIGVuYWJsaW5nIG1lbW9yeS1u
ZXV0cmFsIGFkZGl0aW9uCisgICAgICAgIG9mIGEgZmllbGQgbGlrZSBtX2luY3VtYmVudEdsb2Jh
bE9iamVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5k
ZXI6OnNldFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRNZWRp
YVN0cmVhbUlkcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZDo6c2V0TWVkaWFTdHJlYW1JZHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFZhcmlhZGljQXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVudHMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAqIGNz
cy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1l
cmljVmFsdWU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnN1Yik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om11bCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NOdW1lcmljVmFsdWU6OmRpdik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmlj
VmFsdWU6Om1pbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1heCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NOdW1lcmljVmFsdWU6OnRvU3VtKToKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9DU1NO
dW1lcmljVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1heDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU01hdGhNYXg6OkNTU01hdGhNYXgpOgorICAgICAgICAqIGNzcy90eXBlZG9tL251
bWVyaWMvQ1NTTWF0aE1heC5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aE1pbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTTWF0aE1pbjo6Q1NTTWF0aE1pbik6CisgICAgICAgICogY3NzL3R5cGVk
b20vbnVtZXJpYy9DU1NNYXRoTWluLmg6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9D
U1NNYXRoUHJvZHVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoUHJvZHVjdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hdGhQcm9kdWN0OjpDU1NNYXRoUHJvZHVjdCk6
CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oOgorICAgICAg
ICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNYXRoU3VtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aFN1bTo6Q1NT
TWF0aFN1bSk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmg6Cisg
ICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTTnVtZXJpY0FycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTTnVtZXJpY0FycmF5OjpDU1NOdW1lcmljQXJyYXkpOgorICAgICAgICAqIGNzcy90eXBlZG9t
L251bWVyaWMvQ1NTTnVtZXJpY0FycmF5Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkcmVuKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlbG4pOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFRvdWNoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlzdCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBsYWNlV2l0aCk6CisgICAg
ICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vVG91Y2hMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExpc3Q6
OlRvdWNoTGlzdCk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5M
aXN0OjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgICog
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFz
RWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5D
YW52YXMuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpz
ZXRJbnRlcnZhbCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlw
dHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAyMS0xMS0w
MiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWZpY2F0
aW9ucyBvbiBpT1MgZW5hYmxlZCBhdCBjb21waWxlLXRpbWUsIGRpc2FibGVkIGF0IHJ1bnRpbWUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjptYXJrQXNOZWVkaW4KICAgICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZU5lZ290aWF0aW9u
TmVlZGVkRmxhZyhldmVudElkKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3Rv
cjxTdHJpbmc+JiYpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgRml4ZWRWZWN0b3I8U3RyaW5n
PiYmKQogewogICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBp
bXBsZW1lbnRlZCJfcyB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCShyZXZpc2lvbiAy
ODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBTZW5kZXImLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFJlY2VpdmVyJiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJp
bmc+JiYpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRy
YWNrKE1lZGlhU3RyZWFtVHJhY2smLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKSB7IH0KIAogICAgIHZpcnR1YWwgRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBA
QCBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKICAgICBzdG9wKCk7CiB9
CiAKLUV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRk
VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25PcjxSZWY8
UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmIHRyYWNrLCBjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7
CiAKQEAgLTE0MywxMSArMTQzLDkgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJU
Q1BlZXJDbwogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJv
ciB9OwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhU3RyZWFtSWRzOwotICAgIGZv
ciAoYXV0byBzdHJlYW0gOiBzdHJlYW1zKQotICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQo
c3RyZWFtLmdldCgpLmlkKCkpOwotCi0gICAgcmV0dXJuIG1fYmFja2VuZC0+YWRkVHJhY2sodHJh
Y2suZ2V0KCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKKyAgICByZXR1cm4gbV9iYWNrZW5k
LT5hZGRUcmFjayh0cmFjay5nZXQoKSwgV1RGOjptYXAoc3RyZWFtcywgW10oYXV0byYgc3RyZWFt
KSAtPiBTdHJpbmcgeworICAgICAgICByZXR1cm4gc3RyZWFtLmdldCgpLmlkKCk7CisgICAgfSkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyODUyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPj4mIGN1cnJlbnRUcmFuc2NlaXZlcnMo
KSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0Lmxpc3QoKTsgfQogCi0gICAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYm
LCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlh
U3RyZWFtPj4mKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVUcmFjayhSVENSdHBTZW5k
ZXImKTsKIAogICAgIHVzaW5nIEFkZFRyYW5zY2VpdmVyVHJhY2tPcktpbmQgPSBzdGQ6OnZhcmlh
bnQ8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBTdHJpbmc+OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAkocmV2aXNp
b24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsMTQgKzE2MiwxNCBAQCB2b2lkIFJUQ1J0
cFNlbmRlcjo6c2V0UGFyYW1ldGVycyhjb25zdCBSCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+c2V0
UGFyYW1ldGVycyhwYXJhbWV0ZXJzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRTdHJlYW1zKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25Pcjx2b2lkPiBS
VENSdHBTZW5kZXI6OnNldFN0cmVhbXMoY29uc3QgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zKQogewogICAgIHJldHVybiBzZXRNZWRpYVN0
cmVhbUlkcyhXVEY6Om1hcChzdHJlYW1zLCBbXShhdXRvJiBzdHJlYW0pIC0+IFN0cmluZyB7CiAg
ICAgICAgIHJldHVybiBzdHJlYW0uZ2V0KCkuaWQoKTsKICAgICB9KSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0cmVhbUlkcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0TWVk
aWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQogewogICAg
IGlmICghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9zZWQoKSB8fCAhbV9iYWNr
ZW5kKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJjb25u
ZWN0aW9uIGlzIGNsb3NlZCJfcyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQo
KSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tLaW5kOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldFN0cmVhbXMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
TWVkaWFTdHJlYW0+PiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlhU3RyZWFtSWRz
KGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRT
dHJlYW1zKGNvbnN0IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJl
YW0+PiYpOwogCiAgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5k
OyB9CiAgICAgdm9pZCBzdG9wKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAkocmV2aXNpb24gMjg1
MjAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJC
YWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiwgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gY3JlYXRlRFRNRkJhY2tlbmQoKSA9IDA7CiAgICAgdmly
dHVhbCBSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4gcnRjUnRwVHJhbnNmb3JtQmFja2VuZCgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZp
eGVkVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
RHRsc1RyYW5zcG9ydEJhY2tlbmQ+IGR0bHNUcmFuc3BvcnRCYWNrZW5kKCkgPSAwOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAJKHJldmlz
aW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyAr
MTg1LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb1NldFJlbW90ZQogICAgIHN0
YXJ0TG9nZ2luZ1N0YXRzKCk7CiB9CiAKLWJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
VHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0cmVhbVRyYWNr
JiB0cmFjaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1lZGlhU3RyZWFtSWRzKQorYm9vbCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjphZGRUcmFjayhMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJiBz
ZW5kZXIsIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+
JiBtZWRpYVN0cmVhbUlkcykKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAkocmV2aXNpb24gMjg1MjAwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0b3AoKTsKICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFt
X2JhY2tlbmQ7IH0KIAotICAgIGJvb2wgYWRkVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZCYsIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIGJvb2wg
YWRkVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYsIE1lZGlhU3RyZWFtVHJhY2smLCBj
b25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCByZW1vdmVUcmFjayhMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kJik7CiAKICAgICBzdHJ1Y3QgQmFja2VuZHMgewpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjIsNyArMzIyLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVy
PiBmaW5kRQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UlRDUnRw
U2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0
cmVhbVRyYWNrJiB0cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcykKK0V4Y2Vw
dGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYg
bWVkaWFTdHJlYW1JZHMpCiB7CiAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgaWYgKCFtX2Vu
ZHBvaW50LT5hZGRUcmFjaygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRTdGF0c1N1
Y2NlZWRlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBSZWY8UlRDU3RhdHNSZXBvcnQ+JiYpOwog
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFt
VHJhY2smLCBWZWN0b3I8U3RyaW5nPiYmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwU2VuZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIEZpeGVkVmVjdG9yPFN0cmlu
Zz4mJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKSBmaW5hbDsK
IAogICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAJKHJl
dmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNyArMTYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPgog
ICAgIHJldHVybiBiYWNrZW5kID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENEdGxzVHJhbnNwb3J0QmFj
a2VuZD4oV1RGTW92ZShiYWNrZW5kKSkgOiBudWxscHRyOwogfQogCi12b2lkIExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ6OnNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
dHJlYW1JZHMpCit2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNldE1lZGlhU3RyZWFt
SWRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHN0cmVhbUlkcykKIHsKICAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gaWRzOwogICAgIGZvciAoYXV0byYgaWQgOiBzdHJlYW1JZHMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCShyZXZp
c2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tl
bmQ+IGNyZWF0ZURUTUZCYWNrZW5kKCkgZmluYWw7CiAgICAgUmVmPFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQ+IHJ0Y1J0cFRyYW5zZm9ybUJhY2tlbmQoKSBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQ+IGR0bHNUcmFuc3BvcnRCYWNrZW5kKCkgZmluYWw7
Ci0gICAgdm9pZCBzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFs
OworICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYp
IGZpbmFsOwogCiAgICAgdm9pZCBzdGFydFNvdXJjZSgpOwogICAgIHZvaWQgc3RvcFNvdXJjZSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRW
YXJpYWRpYy5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
IHN0cnVjdCBWYXJpYWRpY0NvbnZlcnRlciB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgSURMVHlwZT4gVmVjdG9yPHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpJ
dGVtPiBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgc2l6ZV90IHN0YXJ0SW5k
ZXgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBWYXJp
YWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6SXRlbT4gY29udmVydFZhcmlhZGljQXJndW1lbnRzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBj
YWxsRnJhbWUsIHNpemVfdCBzdGFydEluZGV4KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNTUsMTUgKzU1LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
IFZlY3Rvcjx0eXBlbmEKICAgICBpZiAoc3RhcnRJbmRleCA+PSBsZW5ndGgpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlw
ZT46Okl0ZW0+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5n
dGggLSBzdGFydEluZGV4KTsKKyAgICBGaXhlZFZlY3Rvcjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZl
cnRlcjxJRExUeXBlPjo6SXRlbT4gcmVzdWx0KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwogCisgICAg
c2l6ZV90IHJlc3VsdEluZGV4ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsg
aSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBWYXJpYWRpY0NvbnZlcnRl
cjxJRExUeXBlPjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudW5jaGVj
a2VkQXJndW1lbnQoaSkpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUX1VOVVNFRChzY29wZSwg
ISFzY29wZS5leGNlcHRpb24oKSA9PSAhdmFsdWUpOwogICAgICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKCp2YWx1ZSkpOworICAgICAgICByZXN1bHRbcmVzdWx0SW5kZXhdID0gV1RGTW92ZSgqdmFs
dWUpOworICAgICAgICByZXN1bHRJbmRleCsrOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgU2NoZWR1bGVk
QWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24oRE9NV3JhcAogCiBTY2hlZHVsZWRBY3Rpb246On5TY2hl
ZHVsZWRBY3Rpb24oKSA9IGRlZmF1bHQ7CiAKLXZvaWQgU2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1
bWVudHMoVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQordm9p
ZCBTY2hlZHVsZWRBY3Rpb246OmFkZEFyZ3VtZW50cyhGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICBtX2FyZ3VtZW50cyA9IFdURk1vdmUo
YXJndW1lbnRzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTQzLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2NoZWR1bGVkQWN0aW9uPiBjcmVhdGUoRE9NV3JhcHBlcldvcmxkJiwgU3RyaW5nJiYpOwogICAg
IH5TY2hlZHVsZWRBY3Rpb24oKTsKIAotICAgIHZvaWQgYWRkQXJndW1lbnRzKFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+PiYmKTsKKyAgICB2b2lkIGFkZEFyZ3VtZW50cyhGaXhlZFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgVHlw
ZSB7IENvZGUsIEZ1bmN0aW9uIH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7CkBAIC02MCw3ICs1
OSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29y
bGQ7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Z1bmN0aW9uOwotICAgIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiBtX2FyZ3VtZW50czsKKyAgICBGaXhlZFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiBtX2FyZ3VtZW50czsKICAgICBTdHJpbmcgbV9j
b2RlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1l
cmljVmFsdWUuY3BwCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU051
bWVyaWNWYWx1ZSk7CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWRk
KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NT
TnVtZXJpY1ZhbHVlOjphZGQoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsK
ICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCkBAIC01
Miw3ICs1Miw3IEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWQKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1
ZTo6c3ViKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1
ZT4gQ1NTTnVtZXJpY1ZhbHVlOjpzdWIoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVl
cykKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwu
CkBAIC02MCw3ICs2MCw3IEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6
c3UKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVy
aWNWYWx1ZTo6bXVsKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVy
aWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptdWwoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
IHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRk
IGltcGwuCkBAIC02OCwyMSArNjgsMjEgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJp
Y1ZhbHVlOjptdQogICAgIHJldHVybiAqdGhpczsKIH0KIAotUmVmPENTU051bWVyaWNWYWx1ZT4g
Q1NTTnVtZXJpY1ZhbHVlOjpkaXYoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8
Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OmRpdihGaXhlZFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYgdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJ
WE1FOiBhZGQgaW1wbC4KIAogICAgIHJldHVybiAqdGhpczsKIH0KLVJlZjxDU1NOdW1lcmljVmFs
dWU+IENTU051bWVyaWNWYWx1ZTo6bWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQor
UmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptaW4oRml4ZWRWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAv
LyBGSVhNRTogYWRkIGltcGwuCiAKICAgICByZXR1cm4gKnRoaXM7CiB9Ci1SZWY8Q1NTTnVtZXJp
Y1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVl
cykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bWF4KEZpeGVkVmVjdG9y
PENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAg
ICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxDU1NOdW1lcmlj
VmFsdWU+IENTU051bWVyaWNWYWx1ZTo6cmUKICAgICB9KTsKIH0KIAotYm9vbCBDU1NOdW1lcmlj
VmFsdWU6OmVxdWFscyhWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlKQorYm9vbCBDU1NOdW1l
cmljVmFsdWU6OmVxdWFscyhGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGlu
aS5vcmcvY3NzLXR5cGVkLW9tLyNkb20tY3NzbnVtZXJpY3ZhbHVlLWVxdWFscwpAQCAtMTE2LDcg
KzExNiw3IEBAIFJlZjxDU1NVbml0VmFsdWU+IENTU051bWVyaWNWYWx1ZTo6dG8oU3QKICAgICBy
ZXR1cm4gQ1NTVW5pdFZhbHVlOjpjcmVhdGUoMS4wLCAibnVtYmVyIik7CiB9CiAKLVJlZjxDU1NN
YXRoU3VtPiBDU1NOdW1lcmljVmFsdWU6OnRvU3VtKFZlY3RvcjxTdHJpbmc+JiYgdW5pdHMpCitS
ZWY8Q1NTTWF0aFN1bT4gQ1NTTnVtZXJpY1ZhbHVlOjp0b1N1bShGaXhlZFZlY3RvcjxTdHJpbmc+
JiYgdW5pdHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVuaXRzKTsKICAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVkLW9tLyNkb20tY3NzbnVtZXJpY3ZhbHVlLXRv
c3VtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUu
aAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVt
ZXJpY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkNTU1N0eWxlVmFsdWUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9GaXhl
ZFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDE3ICs0NSwxNyBAQCBj
bGFzcyBDU1NOdW1lcmljVmFsdWUgOiBwdWJsaWMgQ1NTU3R5bGVWCiBwdWJsaWM6CiAgICAgdXNp
bmcgQ1NTTnVtYmVyaXNoID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgUmVmUHRyPENTU051bWVyaWNW
YWx1ZT4+OwogCi0gICAgUmVmPENTU051bWVyaWNWYWx1ZT4gYWRkKFZlY3RvcjxDU1NOdW1iZXJp
c2g+JiYpOwotICAgIFJlZjxDU1NOdW1lcmljVmFsdWU+IHN1YihWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmKTsKLSAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBtdWwoVmVjdG9yPENTU051bWJlcmlzaD4m
Jik7Ci0gICAgUmVmPENTU051bWVyaWNWYWx1ZT4gZGl2KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYp
OwotICAgIFJlZjxDU1NOdW1lcmljVmFsdWU+IG1pbihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsK
LSAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBtYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Cisg
ICAgUmVmPENTU051bWVyaWNWYWx1ZT4gYWRkKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7
CisgICAgUmVmPENTU051bWVyaWNWYWx1ZT4gc3ViKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4m
Jik7CisgICAgUmVmPENTU051bWVyaWNWYWx1ZT4gbXVsKEZpeGVkVmVjdG9yPENTU051bWJlcmlz
aD4mJik7CisgICAgUmVmPENTU051bWVyaWNWYWx1ZT4gZGl2KEZpeGVkVmVjdG9yPENTU051bWJl
cmlzaD4mJik7CisgICAgUmVmPENTU051bWVyaWNWYWx1ZT4gbWluKEZpeGVkVmVjdG9yPENTU051
bWJlcmlzaD4mJik7CisgICAgUmVmPENTU051bWVyaWNWYWx1ZT4gbWF4KEZpeGVkVmVjdG9yPENT
U051bWJlcmlzaD4mJik7CiAgICAgCi0gICAgYm9vbCBlcXVhbHMoVmVjdG9yPENTU051bWJlcmlz
aD4mJik7CisgICAgYm9vbCBlcXVhbHMoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAg
ICAKICAgICBSZWY8Q1NTVW5pdFZhbHVlPiB0byhTdHJpbmcmJik7Ci0gICAgUmVmPENTU01hdGhT
dW0+IHRvU3VtKFZlY3RvcjxTdHJpbmc+JiYpOworICAgIFJlZjxDU1NNYXRoU3VtPiB0b1N1bShG
aXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogICAgIENTU051bWVyaWNUeXBlIHR5cGUoKTsKICAgICAK
ICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IHBhcnNlKFN0cmlu
ZyYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1h
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9D
U1NNYXRoTWF4LmNwcAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KENTU01hdGhNYXgpOwogCi1SZWY8Q1NTTWF0aE1heD4gQ1NTTWF0aE1heDo6Y3JlYXRlKFZlY3Rv
cjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitSZWY8Q1NTTWF0aE1heD4gQ1NTTWF0aE1h
eDo6Y3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoTWF4KFdURk1vdmUobnVtYmVyaXNoZXMpKSk7
CiB9CiAKLUNTU01hdGhNYXg6OkNTU01hdGhNYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1i
ZXJpc2hlcykKK0NTU01hdGhNYXg6OkNTU01hdGhNYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmIG51bWJlcmlzaGVzKQogICAgIDogQ1NTTWF0aFZhbHVlKENTU01hdGhPcGVyYXRvcjo6TWF4
KQogICAgICwgbV92YWx1ZXMoQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJp
c2hlcykpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NN
YXRoTWF4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoTWF4LmgJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcs
MTEgQEAgY2xhc3MgQ1NTTnVtZXJpY0FycmF5OwogY2xhc3MgQ1NTTWF0aE1heCA6IHB1YmxpYyBD
U1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTWF0aE1heCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NNYXRoTWF4PiBjcmVhdGUoVmVjdG9yPENTU051bWJl
cmlzaD4mJik7CisgICAgc3RhdGljIFJlZjxDU1NNYXRoTWF4PiBjcmVhdGUoRml4ZWRWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNv
bnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBDU1NNYXRoTWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+
JiYpOworICAgIENTU01hdGhNYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBS
ZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAkocmV2aXNpb24gMjg1
MjAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU01hdGhNaW4pOwogCi1SZWY8Q1NTTWF0
aE1pbj4gQ1NTTWF0aE1pbjo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNo
ZXMpCitSZWY8Q1NTTWF0aE1pbj4gQ1NTTWF0aE1pbjo6Y3JlYXRlKEZpeGVkVmVjdG9yPENTU051
bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NN
YXRoTWluKFdURk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhNaW46OkNTU01hdGhN
aW4oVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhNaW46OkNTU01h
dGhNaW4oRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogICAgIDogQ1NT
TWF0aFZhbHVlKENTU01hdGhPcGVyYXRvcjo6TWluKQogICAgICwgbV92YWx1ZXMoQ1NTTnVtZXJp
Y0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmgJKHJldmlzaW9uIDI4
NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgQ1NTTnVtZXJpY0FycmF5
OwogY2xhc3MgQ1NTTWF0aE1pbiA6IHB1YmxpYyBDU1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoQ1NTTWF0aE1pbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NN
YXRoTWluPiBjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgc3RhdGljIFJlZjxD
U1NNYXRoTWluPiBjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25z
dCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBD
U1NNYXRoTWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhNaW4oRml4ZWRW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVl
czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aFByb2R1Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251
bWVyaWMvQ1NTTWF0aFByb2R1Y3QuY3BwCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKENTU01hdGhQcm9kdWN0KTsKIAotUmVmPENTU01hdGhQcm9kdWN0PiBD
U1NNYXRoUHJvZHVjdDo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMp
CitSZWY8Q1NTTWF0aFByb2R1Y3Q+IENTU01hdGhQcm9kdWN0OjpjcmVhdGUoRml4ZWRWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU01hdGhQcm9kdWN0KFdURk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhQcm9k
dWN0OjpDU1NNYXRoUHJvZHVjdChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQor
Q1NTTWF0aFByb2R1Y3Q6OkNTU01hdGhQcm9kdWN0KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4m
JiBudW1iZXJpc2hlcykKICAgICA6IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6OlByb2R1
Y3QpCiAgICAgLCBtX3ZhbHVlcyhDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKG51bWJl
cmlzaGVzKSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NT
U01hdGhQcm9kdWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDEzICszNywxMyBAQCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFzcyBDU1NNYXRo
UHJvZHVjdCA6IHB1YmxpYyBDU1NNYXRoVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoQ1NTTWF0aFByb2R1Y3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0aFByb2R1
Y3Q+IGNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01h
dGhQcm9kdWN0PiBjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBjb25z
dCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogICAgIAogICAgIENTU01hdGhPcGVy
YXRvciBnZXRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVyYXRvcjo6
UHJvZHVjdDsgfQogCiBwcml2YXRlOgotICAgIENTU01hdGhQcm9kdWN0KFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYpOworICAgIENTU01hdGhQcm9kdWN0KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4m
Jik7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAJKHJl
dmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aFN1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NNYXRoU3VtKTsKIAot
UmVmPENTU01hdGhTdW0+IENTU01hdGhTdW06OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
IG51bWJlcmlzaGVzKQorUmVmPENTU01hdGhTdW0+IENTU01hdGhTdW06OmNyZWF0ZShGaXhlZFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTTWF0aFN1bShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoU3Vt
OjpDU1NNYXRoU3VtKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRo
U3VtOjpDU1NNYXRoU3VtKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykK
ICAgICA6IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6OlN1bSkKICAgICAsIG1fdmFsdWVz
KENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUobnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCShy
ZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NT
U01hdGhTdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGNsYXNzIENTU051
bWVyaWNBcnJheTsKIGNsYXNzIENTU01hdGhTdW0gOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU01hdGhTdW0pOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8Q1NTTWF0aFN1bT4gY3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0
YXRpYyBSZWY8Q1NTTWF0aFN1bT4gY3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7
CiAgICAgY29uc3QgQ1NTTnVtZXJpY0FycmF5JiB2YWx1ZXMoKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBDU1NNYXRoU3VtKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIENTU01hdGhTdW0o
Rml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBt
X3ZhbHVlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMv
Q1NTTnVtZXJpY0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5jcHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU051bWVyaWNBcnJheSk7CiAKLVJlZjxDU1NOdW1l
cmljQXJyYXk+IENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYg
bnVtYmVyaXNoZXMpCitSZWY8Q1NTTnVtZXJpY0FycmF5PiBDU1NOdW1lcmljQXJyYXk6OmNyZWF0
ZShjb25zdCBGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiBudW1iZXJpc2hlcykKIHsKLSAgICBW
ZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IHZhbHVlczsKLSAgICB2YWx1ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1iZXJpc2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYmIG51bWJl
cmlzaCA6IG51bWJlcmlzaGVzKQotICAgICAgICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKENTU051
bWVyaWNWYWx1ZTo6cmVjdGlmeU51bWJlcmlzaChXVEZNb3ZlKG51bWJlcmlzaCkpKTsKLSAgICAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NOdW1lcmljQXJyYXkoV1RGTW92ZSh2YWx1ZXMp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTnVtZXJpY0FycmF5KFdURjo6bWFwKG51
bWJlcmlzaGVzLCBbXShhdXRvJiBudW1iZXJpc2gpIC0+IFJlZjxDU1NOdW1lcmljVmFsdWU+IHsK
KyAgICAgICAgcmV0dXJuIENTU051bWVyaWNWYWx1ZTo6cmVjdGlmeU51bWJlcmlzaChjb25zdF9j
YXN0PENTU051bWJlcmlzaCYmPihudW1iZXJpc2gpKTsKKyAgICB9KSkpOwogfQogCi1SZWY8Q1NT
TnVtZXJpY0FycmF5PiBDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShWZWN0b3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNBcnJheT4gQ1NTTnVtZXJpY0FycmF5
OjpjcmVhdGUoRml4ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU051bWVyaWNBcnJheShXVEZNb3ZlKHZhbHVlcykp
KTsKIH0KIAotQ1NTTnVtZXJpY0FycmF5OjpDU1NOdW1lcmljQXJyYXkoVmVjdG9yPFJlZjxDU1NO
dW1lcmljVmFsdWU+PiYmIHZhbHVlcykKK0NTU051bWVyaWNBcnJheTo6Q1NTTnVtZXJpY0FycmF5
KEZpeGVkVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKICAgICA6IG1fYXJy
YXkoV1RGTW92ZSh2YWx1ZXMpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVk
b20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5oCShyZXZpc2lvbiAyODUyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIEV4Y2VwdGlvbk9yOwogY2xhc3MgQ1NTTnVtZXJpY0FycmF5IDogcHVibGljIFJlZkNvdW50
ZWQ8Q1NTTnVtZXJpY0FycmF5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NOdW1l
cmljQXJyYXkpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVh
dGUoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgc3RhdGljIFJlZjxDU1NOdW1lcmljQXJy
YXk+IGNyZWF0ZShWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYpOworICAgIHN0YXRpYyBS
ZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoY29uc3QgRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoRml4ZWRWZWN0b3I8
UmVmPENTU051bWVyaWNWYWx1ZT4+JiYpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5LnNpemUoKTsgfTsKICAgICBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJpY1Zh
bHVlPj4gaXRlbShzaXplX3QgaW5kZXgpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWY8Q1NT
TnVtZXJpY1ZhbHVlPj4gbV9hcnJheTsKLSAgICBDU1NOdW1lcmljQXJyYXkoVmVjdG9yPFJlZjxD
U1NOdW1lcmljVmFsdWU+PiYmKTsKKyAgICBGaXhlZFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVl
Pj4gbV9hcnJheTsKKyAgICBDU1NOdW1lcmljQXJyYXkoRml4ZWRWZWN0b3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzEsNyArOTcx
LDcgQEAgdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bgogICAgIHJldHVy
biBzdGQ6OmRpc3RhbmNlKGNoaWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3Rv
cikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZChGaXhlZFZlY3RvcjxO
b2RlT3JTdHJpbmc+JiYgdmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5vZGVz
T3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQpAQCAtOTg0LDcgKzk4NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OmFwcGVuZCgKICAgICByZXR1cm4gYXBwZW5kQ2hpbGQoKm5vZGUpOwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYgdmVjdG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZChGaXhl
ZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29u
dmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtOTk4LDcgKzk5OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IENvbnRhaW5lck5vZGU6OnByZXBlbmQKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNkb20tcGFyZW50bm9kZS1yZXBsYWNlY2hpbGRyZW4KLUV4Y2VwdGlvbk9yPHZvaWQ+IENv
bnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZHJlbihWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3Rv
cikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZHJlbihGaXhl
ZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9yKQogewogICAgIC8vIHN0ZXAgMQogICAgIGF1
dG8gcmVzdWx0ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3Ip
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMjg1MjAwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDEwICsxMjcsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGZp
cnN0RWxlbWVudENoaWxkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogbGFz
dEVsZW1lbnRDaGlsZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxk
RWxlbWVudENvdW50KCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kKFZlY3Rv
cjxOb2RlT3JTdHJpbmc+JiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHByZXBlbmQoVmVjdG9y
PE5vZGVPclN0cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kKEZpeGVkVmVj
dG9yPE5vZGVPclN0cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJlcGVuZChGaXhl
ZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFj
ZUNoaWxkcmVuKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlcGxhY2VDaGlsZHJlbihGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogCiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gZW5zdXJlUHJlSW5zZXJ0aW9uVmFsaWRpdHkoTm9kZSYgbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzM2LDcgKzMzMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3Jp
dGUoRG9jdW1lCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1l
bnQ6OndyaXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmIHN0cmlu
Z3MpCitFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9j
dW1lbnQsIEZpeGVkVmVjdG9yPFN0cmluZz4mJiBzdHJpbmdzKQogewogICAgIGlmICghaXNIVE1M
RG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtMzM0OCw3ICsz
MzQ4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZQogICAgIHJl
dHVybiB3cml0ZShlbnRyeURvY3VtZW50LCBXVEZNb3ZlKHRleHQpKTsKIH0KIAotRXhjZXB0aW9u
T3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3Rv
cjxTdHJpbmc+JiYgc3RyaW5ncykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZWxu
KERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYgc3RyaW5ncykK
IHsKICAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkgfHwgbV90aHJvd09uRHluYW1pY01hcmt1cElu
c2VydGlvbkNvdW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBA
QAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0eVN0
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNjg4LDggKzY4OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNhbmNlbFBhcnNpbmcoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHdy
aXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBTZWdtZW50ZWRTdHJpbmcmJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gd3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1l
bnQsIFZlY3RvcjxTdHJpbmc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZv
aWQ+IHdyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRlKERvY3VtZW50KiBlbnRy
eURvY3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IHdyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIEZpeGVkVmVj
dG9yPFN0cmluZz4mJik7CiAKICAgICBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBt
X3dlbGxGb3JtZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAko
cmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFJlZjxUb3VjaD4gRG9jdW1lbnRUb3Vj
aDo6Y3JlYXRlVG91Y2goRG8KICAgICByZXR1cm4gVG91Y2g6OmNyZWF0ZShmcmFtZSwgdGFyZ2V0
LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJhZGl1c1gsIHJh
ZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAotUmVmPFRvdWNoTGlzdD4gRG9jdW1l
bnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCitSZWY8VG91Y2hMaXN0PiBEb2N1bWVudFRvdWNo
OjpjcmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFRvdWNoPj4mJiB0b3VjaGVzKQogewogICAgIHJldHVybiBUb3VjaExpc3Q6OmNyZWF0
ZShXVEZNb3ZlKHRvdWNoZXMpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFRvdWNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2gu
aAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2gu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXaW5kb3dQcm94eTsKIGNs
YXNzIERvY3VtZW50VG91Y2ggewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0
ZVRvdWNoKERvY3VtZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGlu
dCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0
IGZvcmNlKTsKLSAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3Vt
ZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKKyAgICBzdGF0
aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgRml4ZWRWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYpOwogfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNyArNTEzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9k
ZTo6YXBwZW5kQ2hpbGQoTm9kZQogICAgIHJldHVybiBkb3duY2FzdDxDb250YWluZXJOb2RlPigq
dGhpcykuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpOwogfQogCi1zdGF0aWMgSGFzaFNldDxSZWZQdHI8
Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0b3IoY29uc3Qg
VmVjdG9yPE5vZGVPclN0cmluZz4mIHZlY3RvcikKK3N0YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2Rl
Pj4gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihjb25zdCBGaXhl
ZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiB2ZWN0b3IpCiB7CiAgICAgSGFzaFNldDxSZWZQdHI8Tm9k
ZT4+IG5vZGVTZXQ7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYW50IDogdmVjdG9yKSB7CkBA
IC01NDMsNyArNTQzLDcgQEAgc3RhdGljIFJlZlB0cjxOb2RlPiBmaXJzdEZvbGxvd2luZ1NpYmxp
bgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5v
ZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYg
bm9kZU9yU3RyaW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBOb2RlOjpjb252
ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9k
ZU9yU3RyaW5nVmVjdG9yKQogewogICAgIGlmIChub2RlT3JTdHJpbmdWZWN0b3IuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU2OSw3ICs1NjksNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnROCiAgICAgcmV0dXJuIFJlZlB0cjxOb2RlPiB7
IFdURk1vdmUobm9kZVRvUmV0dXJuKSB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpi
ZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitFeGNlcHRp
b25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVP
clN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFy
ZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNTkzLDcgKzU5Myw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE5vZGU6OmJlZm9yZShWZWN0b3I8Tm8KICAgICByZXR1cm4gcGFyZW50LT5pbnNl
cnRCZWZvcmUoKm5vZGUsIHZpYWJsZVByZXZpb3VzU2libGluZy5nZXQoKSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IE5vZGU6OmFmdGVyKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3Ry
aW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YWZ0ZXIoRml4ZWRWZWN0b3I8Tm9k
ZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVy
Tm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNjEyLDcg
KzYxMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmFmdGVyKFZlY3RvcjxOb2QKICAgICBy
ZXR1cm4gcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUsIHZpYWJsZU5leHRTaWJsaW5nLmdldCgp
KTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6cmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVP
clN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpy
ZXBsYWNlV2l0aChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9y
KQogewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CiAg
ICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw5ICsxODQsOSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogbmV4dEVsZW1lbnRTaWJsaW5n
KCkgY29uc3Q7CiAKICAgICAvLyBGcm9tIHRoZSBDaGlsZE5vZGUgLSBodHRwczovL2RvbS5zcGVj
LndoYXR3Zy5vcmcvI2NoaWxkbm9kZQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJlZm9yZShWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZnRlcihWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlV2l0aChWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBiZWZvcmUoRml4ZWRW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZnRlcihGaXhl
ZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VX
aXRoKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKCk7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFy
dCBvZiBET00pCkBAIC02OTEsNyArNjkxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxp
ZGF0ZVN0eWxlKFN0eWxlOjpWYWxpZGl0eSwgU3R5bGU6OkludmFsaWRhdGlvbk1vZGUgPSBTdHls
ZTo6SW52YWxpZGF0aW9uTW9kZTo6Tm9ybWFsKTsKICAgICB2b2lkIHVwZGF0ZUFuY2VzdG9yc0Zv
clN0eWxlUmVjYWxjKCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGNvbnZlcnRO
b2Rlc09yU3RyaW5nc0ludG9Ob2RlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxOb2RlPj4gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoRml4ZWRW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBzZXVkb0lk
IGN1c3RvbVBzZXVkb0lkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmgJKHJldmlz
aW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2VsaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAogI2lu
Y2x1ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUb3VjaExpc3QpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPFRvdWNoTGlz
dD4gY3JlYXRlKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJiB0b3VjaGVz
KQorICAgIHN0YXRpYyBSZWY8VG91Y2hMaXN0PiBjcmVhdGUoRml4ZWRWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRvdWNoTGlzdChXVEZNb3ZlKHRvdWNoZXMpKSk7CiAgICAgfQpAQCAtNTYs
NyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRvdWNoTGlzdCgpID0gZGVmYXVsdDsK
IAotICAgIGV4cGxpY2l0IFRvdWNoTGlzdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxU
b3VjaD4+JiYgdG91Y2hlcykKKyAgICBleHBsaWNpdCBUb3VjaExpc3QoRml4ZWRWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKICAgICB7CiAgICAgICAgIG1f
dmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG91Y2hlcy5zaXplKCkpOwogICAgICAgICBm
b3IgKGF1dG8mIHRvdWNoIDogdG91Y2hlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VG9rZW5MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5jcHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgRXhjZXB0
aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjphCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2Vu
cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IEZpeGVkVmVjdG9y
PFN0cmluZz4mIHRva2VucykKIHsKICAgICByZXR1cm4gYWRkSW50ZXJuYWwodG9rZW5zLmRhdGEo
KSwgdG9rZW5zLnNpemUoKSk7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgaW5saW5lIEV4Y2VwdGlv
bk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cgogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlv
bk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tl
bnMpCitFeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBGaXhlZFZl
Y3RvcjxTdHJpbmc+JiB0b2tlbnMpCiB7CiAgICAgcmV0dXJuIHJlbW92ZUludGVybmFsKHRva2Vu
cy5kYXRhKCksIHRva2Vucy5zaXplKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBjb25z
dCBBdG9tU3RyaW5nJiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGFkZChjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gYWRkKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1v
dmUoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUo
Y29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92
ZShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Ym9v
bD4gdG9nZ2xlKGNvbnN0IEF0b21TdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZvcmNlKTsK
ICAgICBFeGNlcHRpb25Pcjxib29sPiByZXBsYWNlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuLCBj
b25zdCBBdG9tU3RyaW5nJiBuZXdUb2tlbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUs
NyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhCiAgICAgbWF4Q2Fu
dmFzQXJlYUZvclRlc3RpbmcgPSBzaXplOwogfQogCi1FeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgRml4ZWRW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYg
KG1fY29udGV4dCkgewogICAgICAgICBpZiAobV9jb250ZXh0LT5pc1BsYWNlaG9sZGVyKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShyZXZpc2lvbiAyODUy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJ
bnRTaXplJiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQq
IHJlbmRlcmluZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KLSAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBnZXRD
b250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRp
b25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgRml4ZWRWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogCiAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyAr
MjEzLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUNvbnRleHRXZWJHTAogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQogCi1FeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVl
blJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0ds
b2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25Pcjxz
dGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6
OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRU
eXBlIGNvbnRleHRUeXBlLCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYm
IGFyZ3VtZW50cykKIHsKICAgICBpZiAobV9kZXRhY2hlZCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6
CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBFeGNlcHRpb25PcjxzdGQ6
Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFs
PE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1h
cD4+IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOwogICAgIHZvaWQgY29udmVydFRvQmxvYihJbWFn
ZUVuY29kZU9wdGlvbnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5Myw3ICsxNzkzLDcgQEAg
dm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRoLCBmbAogICAgIHBhZ2UtPmNocm9t
ZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdCgqcGFnZSwgdXBkYXRlKSk7CiB9CiAK
LUV4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0
aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitF
eGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0VGltZW91dChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGlt
ZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMp
CiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtMTgxOCw3ICsxODE4LDcgQEAgdm9pZCBET01XaW5kb3c6OmNsZWFy
VGltZW91dChpbnQgdGltZW91dAogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlkKCpjb250ZXh0LCB0
aW1lb3V0SWQpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0SW50ZXJ2YWwo
SlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rp
b24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRJbnRlcnZhbChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlv
bj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCShyZXZpc2lvbiAyODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsOSArMjkzLDkgQEAgcHVibGljOgogICAgIFZpc3VhbFZp
ZXdwb3J0JiB2aXN1YWxWaWV3cG9ydCgpOwogCiAgICAgLy8gVGltZXJzCi0gICAgRXhjZXB0aW9u
T3I8aW50PiBzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8
U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVu
a25vd24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRUaW1lb3V0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50
IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1l
bnRzKTsKICAgICB2b2lkIGNsZWFyVGltZW91dChpbnQgdGltZW91dElkKTsKLSAgICBFeGNlcHRp
b25PcjxpbnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9w
dHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRJbnRlcnZh
bChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4s
IGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFy
Z3VtZW50cyk7CiAgICAgdm9pZCBjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQpOwogCiAgICAg
aW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2s+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw3ICs5NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2Jh
bFMKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3Jp
cHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBCYXNlOjppbXBvcnRTY3JpcHRzKHVybHMpOwogICAgIHRocmVhZCgpLndvcmtlck9iamVjdFBy
b3h5KCkucmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmgJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFt
ZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIERlZGljYXRlZFdvcmtlclRocmVhZCYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIAogICAgIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBFeGNlcHRpb25Pcjx2
b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKSBmaW5hbDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmlu
Zz4mIHVybHMpIGZpbmFsOwogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigp
IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHJldmlzaW9uIDI4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6c2V0SXNPbmxpbmUoYm9vbAogICAgICAgICBtX25hdmlnYXRvci0+
c2V0SXNPbmxpbmUoaXNPbmxpbmUpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2Jh
bFNjb3BlOjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1
ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IFdvcmtl
ckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBGaXhlZFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBoZXJlPyBPciBzaG91bGQgaXQg
aGFwcGVuIHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAgIGlmIChhY3Rpb24tPnR5cGUo
KSA9PSBTY2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKQEAgLTMwNSw3ICszMDUsNyBAQCB2
b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhclRpbWVvdXQoaW50CiAgICAgRE9NVGltZXI6OnJl
bW92ZUJ5SWQoKnRoaXMsIHRpbWVvdXRJZCk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gV29ya2Vy
R2xvYmFsU2NvcGU6OnNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8
SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+
IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0
ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwg
Rml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hv
dWxkIGl0IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KICAgICBpZiAoYWN0aW9u
LT50eXBlKCkgPT0gU2NoZWR1bGVkQWN0aW9uOjpUeXBlOjpDb2RlKSB7CkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJJbnRlcnZhbChpbgogICAgIERPTVRp
bWVyOjpyZW1vdmVCeUlkKCp0aGlzLCB0aW1lb3V0SWQpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dXJscykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMpCiB7CiAgICAgQVNTRVJUKGNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg1MjAwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTQgKzEwNCwxNCBA
QCBwdWJsaWM6CiAgICAgV29ya2VyTG9jYXRpb24mIGxvY2F0aW9uKCkgY29uc3Q7CiAgICAgdm9p
ZCBjbG9zZSgpOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZv
aWQ+IGltcG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdXJscyk7CiAgICAg
V29ya2VyTmF2aWdhdG9yJiBuYXZpZ2F0b3IoKTsKIAogICAgIHZvaWQgc2V0SXNPbmxpbmUoYm9v
bCk7CiAKLSAgICBFeGNlcHRpb25PcjxpbnQ+IHNldFRpbWVvdXQoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25P
cjxpbnQ+IHNldFRpbWVvdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6dW5pcXVlX3B0cjxT
Y2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlND
OjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIHZvaWQgY2xlYXJUaW1lb3V0KGludCB0aW1l
b3V0SWQpOwotICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRp
b25PcjxpbnQ+IHNldEludGVydmFsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6OnVuaXF1ZV9w
dHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25n
PEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFySW50ZXJ2YWwoaW50
IHRpbWVvdXRJZCk7CiAKICAgICBib29sIGlzU2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443350</attachid>
            <date>2021-11-04 16:01:17 -0700</date>
            <delta_ts>2021-12-17 15:28:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232639-20211104230115.patch</filename>
            <type>text/plain</type>
            <size>58513</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODUzMTcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTA0ICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW50cm9kdWNlIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dCBjb25zdHJ1Y3RvciBmb3IgRml4ZWRWZWN0b3IgYW5kIGEgV1RGOjptYXAoKSBvdmVybG9hZC4K
KworICAgICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6Rml4ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjptYXApOgorICAgICAgICAqIHd0Zi9WZWN0
b3JUcmFpdHMuaDoKKwogMjAyMS0xMS0wNCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlcXVpcmUgTWVkaWFTZXNzaW9uIGVuYWJsZWQgdG8gZW5hYmxl
IE1lZGlhU2Vzc2lvbiBQbGF5TGlzdCBBUEkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkocmV2aXNp
b24gMjg1MjcyKQorKysgU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsMTYgQEAgcHVibGljOgogICAgIHsgfQogICAgIEZpeGVkVmVjdG9yKEZp
eGVkVmVjdG9yJiYgb3RoZXIpID0gZGVmYXVsdDsKIAorICAgIEZpeGVkVmVjdG9yKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxUPiBpbml0aWFsaXplckxpc3QpCisgICAgICAgIDogbV9zdG9yYWdlKGlu
aXRpYWxpemVyTGlzdC5zaXplKCkpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXggPSAwOwor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXplckxpc3QpIHsKKyAg
ICAgICAgICAgIG1fc3RvcmFnZS5hdChpbmRleCkgPSBlbGVtZW50OworICAgICAgICAgICAgaW5k
ZXgrKzsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29u
c3QgRml4ZWRWZWN0b3ImIG90aGVyKQogICAgIHsKICAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90
aGVyKTsKQEAgLTEyNyw2ICsxMzcsMjAgQEAgaW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxU
PiYgYSwgRml4ZQogICAgIGEuc3dhcChiKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFJldHVyblR5cGUgPSB0eXBlbmFtZSBzdGQ6Omlu
dm9rZV9yZXN1bHQ8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPjo6dHlwZT4KK0ZpeGVkVmVjdG9yPFJl
dHVyblR5cGU+IG1hcChjb25zdCBGaXhlZFZlY3RvcjxUPiYgc291cmNlLCBNYXBGdW5jdGlvbiYm
IG1hcEZ1bmN0aW9uKQoreworICAgIEZpeGVkVmVjdG9yPFJldHVyblR5cGU+IHJlc3VsdChzb3Vy
Y2Uuc2l6ZSgpKTsKKworICAgIHNpemVfdCByZXN1bHRJbmRleCA9IDA7CisgICAgZm9yIChjb25z
dCBhdXRvJiBpdGVtIDogc291cmNlKSB7CisgICAgICAgIHJlc3VsdFtyZXN1bHRJbmRleF0gPSBt
YXBGdW5jdGlvbihpdGVtKTsKKyAgICAgICAgcmVzdWx0SW5kZXgrKzsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGaXhl
ZFZlY3RvcjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCShyZXZpc2lvbiAyODUyNzIpCisrKyBT
b3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBW
ZWN0b3JUcmFpdHM8UmVmUHRyPFA+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6dW5pcXVlX3B0
cjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFA+PiA6IFNp
bXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1
Y3QgVmVjdG9yVHJhaXRzPFJlZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xh
c3NWZWN0b3JUcmFpdHMgeyB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODUyNzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkg
QEAKKzIwMjEtMTEtMDQgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJJRExdIGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4g
YSBGaXhlZFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBTaW5jZSBpdCdzIGhpZ2hseSB1bmxpa2VseSAoQ1NTTnVtZXJpY0FycmF5IGlzIGltbXV0
YWJsZSkgdGhhdCB3ZSB3b3VsZCBuZWVkIHRvCisgICAgICAgIG11dGF0ZSB2YXJpYWRpYyBhcmd1
bWVudHMgYmVmb3JlIHByb2Nlc3NpbmcgdGhlbSBvciBzdG9yaW5nLCBhbmQgd2Uga25vdyB0aGVp
ciBzaXplCisgICAgICAgIHVwZnJvbnQsIGl0IG1ha2VzIHRoZSBtb3N0IHNlbnNlIHRvIHNhdmUg
c29tZSBtZW1vcnkgYnkgdXRpbGl6aW5nIGEgRml4ZWRWZWN0b3IuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZWR1Y2VzIHNpemVvZihTY2hlZHVsZWRBY3Rpb24pIGJ5IDgsIGVuYWJsaW5nIG1lbW9y
eS1uZXV0cmFsIGFkZGl0aW9uCisgICAgICAgIG9mIGEgZmllbGQgbGlrZSBtX2luY3VtYmVudEds
b2JhbE9iamVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OnNldFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRN
ZWRpYVN0cmVhbUlkcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6c2V0TWVkaWFTdHJlYW1JZHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFZhcmlhZGljQXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVu
dHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAq
IGNzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NO
dW1lcmljVmFsdWU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnN1
Yik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om11bCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmRpdik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1l
cmljVmFsdWU6Om1pbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1heCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnRvU3VtKToKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9D
U1NOdW1lcmljVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhN
YXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1heDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU01hdGhNYXg6OkNTU01hdGhNYXgpOgorICAgICAgICAqIGNzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aE1heC5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aE1pbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1pbjo6Q1NTTWF0aE1pbik6CisgICAgICAgICogY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmg6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoUHJvZHVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoUHJvZHVjdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hdGhQcm9kdWN0OjpDU1NNYXRoUHJvZHVj
dCk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oOgorICAg
ICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNYXRoU3VtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aFN1bTo6
Q1NTTWF0aFN1bSk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmg6
CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTnVtZXJpY0FycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTnVtZXJpY0FycmF5OjpDU1NOdW1lcmljQXJyYXkpOgorICAgICAgICAqIGNzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkcmVuKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVy
Tm9kZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlbG4pOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFRvdWNoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlzdCk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBsYWNlV2l0aCk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vVG91Y2hMaXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExp
c3Q6OlRvdWNoTGlzdCk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9r
ZW5MaXN0OjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9PZmZzY3Jl
ZW5DYW52YXMuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzZXRJbnRlcnZhbCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0
SW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNj
cmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAyMS0x
MS0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGlzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3Mgc3RhdGUgZnJvbSBFbGVtZW50UnVsZUNvbGxlY3Rv
cgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAkocmV2aXNpb24gMjg1MjcyKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6Om1hcmtBc05lZWRpbgogICAgIG1fcGVlckNvbm5lY3Rpb24udXBkYXRlTmVnb3RpYXRp
b25OZWVkZWRGbGFnKGV2ZW50SWQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVy
Pj4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgVmVj
dG9yPFN0cmluZz4mJikKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBGaXhlZFZlY3RvcjxTdHJp
bmc+JiYpCiB7CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90
IGltcGxlbWVudGVkIl9zIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgJKHJldmlzaW9u
IDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJSVENSdHBTZW5kUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlv
bi5oIgogI2luY2x1ZGUgIlJUQ1NpZ25hbGluZ1N0YXRlLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVk
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKQEAgLTExNCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGdldFN0YXRzKFJUQ1J0cFNlbmRlciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUlRDUnRwUmVjZWl2ZXImLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+
PiBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgVmVjdG9yPFN0cmluZz4mJik7CisgICAgdmly
dHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1U
cmFjayYsIEZpeGVkVmVjdG9yPFN0cmluZz4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRy
YWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCiAgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENS
dHBUcmFuc2NlaXZlckluaXQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyODUy
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJUQ1BlZXJDb25uZWN0
aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24oKQogICAgIHN0b3AoKTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
TWVkaWFTdHJlYW0+PiYgc3RyZWFtcykKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBS
VENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ss
IGNvbnN0IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYg
c3RyZWFtcykKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtMTQzLDExICsx
NDMsOSBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvCiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgfQogCi0g
ICAgVmVjdG9yPFN0cmluZz4gbWVkaWFTdHJlYW1JZHM7Ci0gICAgZm9yIChhdXRvIHN0cmVhbSA6
IHN0cmVhbXMpCi0gICAgICAgIG1lZGlhU3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0KCkuaWQo
KSk7Ci0KLSAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayh0cmFjay5nZXQoKSwgV1RGTW92
ZShtZWRpYVN0cmVhbUlkcykpOworICAgIHJldHVybiBtX2JhY2tlbmQtPmFkZFRyYWNrKHRyYWNr
LmdldCgpLCBXVEY6Om1hcChzdHJlYW1zLCBbXShhdXRvJiBzdHJlYW0pIC0+IFN0cmluZyB7Cisg
ICAgICAgIHJldHVybiBzdHJlYW0uZ2V0KCkuaWQoKTsKKyAgICB9KSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXImIHNl
bmRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
UlRDUnRwVHJhbnNjZWl2ZXI+PiYgY3VycmVudFRyYW5zY2VpdmVycygpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNjZWl2ZXJTZXQubGlzdCgpOyB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRw
U2VuZGVyPj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0
IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYpOwogCiAgICAgdXNp
bmcgQWRkVHJhbnNjZWl2ZXJUcmFja09yS2luZCA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4sIFN0cmluZz47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCShyZXZpc2lvbiAyODUyNzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUlRDUnRwU2VuZGVyOjpzZXRQYXJh
bWV0ZXJzKGNvbnN0IFIKICAgICByZXR1cm4gbV9iYWNrZW5kLT5zZXRQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBT
ZW5kZXI6OnNldFN0cmVhbXMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVk
aWFTdHJlYW0+PiYgc3RyZWFtcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0
U3RyZWFtcyhjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3Ry
ZWFtPj4mIHN0cmVhbXMpCiB7CiAgICAgcmV0dXJuIHNldE1lZGlhU3RyZWFtSWRzKFdURjo6bWFw
KHN0cmVhbXMsIFtdKGF1dG8mIHN0cmVhbSkgLT4gU3RyaW5nIHsKICAgICAgICAgcmV0dXJuIHN0
cmVhbS5nZXQoKS5pZCgpOwogICAgIH0pKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRw
U2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRz
KQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25z
dCBGaXhlZFZlY3RvcjxTdHJpbmc+JiBzdHJlYW1JZHMpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgpIHx8ICFtX2JhY2tlbmQpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImNvbm5lY3Rpb24gaXMgY2xvc2Vk
Il9zIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmgJKHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcx
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdHJhY2tJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhY2tJZDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kKCkgY29uc3QgeyByZXR1
cm4gbV90cmFja0tpbmQ7IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlhU3RyZWFt
SWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3Ry
ZWFtcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0
b3I8U3RyaW5nPiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0cmVhbXMoY29uc3QgRml4
ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7CiAKICAgICBi
b29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tlbmQ7IH0KICAgICB2b2lkIHN0
b3AoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5oCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNpbmNs
dWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBT
ZW5kUGFyYW1ldGVycyYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7CiAgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURUTUZCYWNr
ZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IHJ0Y1J0
cFRyYW5zZm9ybUJhY2tlbmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFt
SWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRp
YVN0cmVhbUlkcyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPiBkdGxzVHJhbnNwb3J0QmFj
a2VuZCgpID0gMDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
ZG9TZXRSZW1vdGUKICAgICBzdGFydExvZ2dpbmdTdGF0cygpOwogfQogCi1ib29sIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmFkZFRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmIHNlbmRl
ciwgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0
cmVhbUlkcykKK2Jvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2soTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgY29uc3Qg
Rml4ZWRWZWN0b3I8U3RyaW5nPiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAgICAgQVNTRVJUKG1fYmFj
a2VuZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgJ
KHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgYm9vbCBpc1N0b3BwZWQo
KSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5kOyB9CiAKLSAgICBib29sIGFkZFRyYWNrKExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQmLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKKyAgICBib29sIGFkZFRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmLCBN
ZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQg
cmVtb3ZlVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYpOwogCiAgICAgc3RydWN0IEJh
Y2tlbmRzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHN0YXRpYyBpbmxpbmUg
UmVmUHRyPFJUQ1J0cFNlbmRlcj4gZmluZEUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVk
aWFTdHJlYW1JZHMpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgRml4
ZWRWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQogewogICAgIGF1dG8gc2VuZGVyQmFj
a2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxw
dHIpOwogICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQsIHRyYWNr
LCBtZWRpYVN0cmVhbUlkcykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZ2V0U3RhdHNTdWNjZWVkZWQoY29uc3QgRGVmZXJyZWRQcm9taXNlJiwgUmVmPFJU
Q1N0YXRzUmVwb3J0PiYmKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBh
ZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CisgICAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sm
LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRD
UnRwU2VuZGVyJikgZmluYWw7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+PiBhZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZl
ckluaXQmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENEdGxz
VHJhbnNwb3J0QmFja2VuZD4KICAgICByZXR1cm4gYmFja2VuZCA/IG1ha2VVbmlxdWU8TGliV2Vi
UlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQ+KFdURk1vdmUoYmFja2VuZCkpIDogbnVsbHB0cjsKIH0K
IAotdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiBzdHJlYW1J
ZHMpCiB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGlkczsKICAgICBmb3IgKGF1dG8m
IGlkIDogc3RyZWFtSWRzKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQuaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBjcmVhdGVEVE1GQmFja2VuZCgpIGZpbmFsOwogICAgIFJl
ZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBydGNSdHBUcmFuc2Zvcm1CYWNrZW5kKCkgZmluYWw7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPiBkdGxzVHJhbnNw
b3J0QmFja2VuZCgpIGZpbmFsOwotICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mKSBmaW5hbDsKKyAgICB2b2lkIHNldE1lZGlhU3RyZWFtSWRzKGNvbnN0IEZp
eGVkVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnRTb3VyY2UoKTsKICAg
ICB2b2lkIHN0b3BTb3VyY2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydFZhcmlhZGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnZlcnRCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDcsNyBAQCBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0
ZXIgewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IFZlY3Rvcjx0eXBl
bmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6SXRlbT4gY29udmVydFZhcmlhZGljQXJn
dW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2Fs
bEZyYW1lJiBjYWxsRnJhbWUsIHNpemVfdCBzdGFydEluZGV4KQordGVtcGxhdGU8dHlwZW5hbWUg
SURMVHlwZT4gRml4ZWRWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46
Okl0ZW0+IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBzaXplX3Qgc3RhcnRJ
bmRleCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTU1LDE1ICs1
NiwxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBWZWN0b3I8dHlwZW5hCiAgICAgaWYg
KHN0YXJ0SW5kZXggPj0gbGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9y
PHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpJdGVtPiByZXN1bHQ7Ci0gICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CisgICAg
Rml4ZWRWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46Okl0ZW0+IHJl
c3VsdChsZW5ndGggLSBzdGFydEluZGV4KTsKIAorICAgIHNpemVfdCByZXN1bHRJbmRleCA9IDA7
CiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICBhdXRvIHZhbHVlID0gVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAg
ICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXZhbHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdmFsdWUpKTsKKyAgICAgICAg
cmVzdWx0W3Jlc3VsdEluZGV4XSA9IFdURk1vdmUoKnZhbHVlKTsKKyAgICAgICAgcmVzdWx0SW5k
ZXgrKzsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lvbiAyODUyNzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9u
KERPTVdyYXAKIAogU2NoZWR1bGVkQWN0aW9uOjp+U2NoZWR1bGVkQWN0aW9uKCkgPSBkZWZhdWx0
OwogCi12b2lkIFNjaGVkdWxlZEFjdGlvbjo6YWRkQXJndW1lbnRzKFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK3ZvaWQgU2NoZWR1bGVkQWN0aW9uOjphZGRB
cmd1bWVudHMoRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVu
dHMpCiB7CiAgICAgbV9hcmd1bWVudHMgPSBXVEZNb3ZlKGFyZ3VtZW50cyk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAkocmV2aXNpb24g
Mjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Myw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gY3JlYXRl
KERPTVdyYXBwZXJXb3JsZCYsIFN0cmluZyYmKTsKICAgICB+U2NoZWR1bGVkQWN0aW9uKCk7CiAK
LSAgICB2b2lkIGFkZEFyZ3VtZW50cyhWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4m
Jik7CisgICAgdm9pZCBhZGRBcmd1bWVudHMoRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb2RlLCBGdW5jdGlvbiB9Owog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0OwpAQCAtNjAsNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOwogICAgIEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4gbV9mdW5jdGlvbjsKLSAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4gbV9hcmd1bWVudHM7CisgICAgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4gbV9hcmd1bWVudHM7CiAgICAgU3RyaW5nIG1fY29kZTsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAkocmV2aXNpb24g
Mjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NOdW1lcmljVmFsdWUpOwogCi1SZWY8Q1NT
TnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OmFkZChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
IHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWRkKEZpeGVk
VmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVl
cyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtNTIsNyArNTIsNyBAQCBSZWY8Q1NTTnVt
ZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OmFkCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1S
ZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OnN1YihWZWN0b3I8Q1NTTnVtYmVy
aXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6c3Vi
KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtNjAsNyArNjAsNyBAQCBSZWY8
Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OnN1CiAgICAgcmV0dXJuICp0aGlzOwog
fQogCi1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om11bChWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1
ZTo6bXVsKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtNjgsMjEgKzY4LDIx
IEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bXUKICAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6ZGl2KFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVt
ZXJpY1ZhbHVlOjpkaXYoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCiAKICAgICBy
ZXR1cm4gKnRoaXM7CiB9Ci1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om1p
bihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENT
U051bWVyaWNWYWx1ZTo6bWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgogCiAg
ICAgcmV0dXJuICp0aGlzOwogfQotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVl
OjptYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY1ZhbHVl
PiBDU1NOdW1lcmljVmFsdWU6Om1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVz
KQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1wbC4K
QEAgLTEwMCw3ICsxMDAsNyBAQCBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6
OnJlCiAgICAgfSk7CiB9CiAKLWJvb2wgQ1NTTnVtZXJpY1ZhbHVlOjplcXVhbHMoVmVjdG9yPENT
U051bWJlcmlzaD4mJiB2YWx1ZSkKK2Jvb2wgQ1NTTnVtZXJpY1ZhbHVlOjplcXVhbHMoRml4ZWRW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jZG9t
LWNzc251bWVyaWN2YWx1ZS1lcXVhbHMKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWY8Q1NTVW5pdFZh
bHVlPiBDU1NOdW1lcmljVmFsdWU6OnRvKFN0CiAgICAgcmV0dXJuIENTU1VuaXRWYWx1ZTo6Y3Jl
YXRlKDEuMCwgIm51bWJlciIpOwogfQogCi1SZWY8Q1NTTWF0aFN1bT4gQ1NTTnVtZXJpY1ZhbHVl
Ojp0b1N1bShWZWN0b3I8U3RyaW5nPiYmIHVuaXRzKQorUmVmPENTU01hdGhTdW0+IENTU051bWVy
aWNWYWx1ZTo6dG9TdW0oRml4ZWRWZWN0b3I8U3RyaW5nPiYmIHVuaXRzKQogewogICAgIFVOVVNF
RF9QQVJBTSh1bml0cyk7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nz
cy10eXBlZC1vbS8jZG9tLWNzc251bWVyaWN2YWx1ZS10b3N1bQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgJKHJldmlzaW9uIDI4NTI3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NTdHlsZVZhbHVlLmgiCiAjaW5j
bHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00NCwxNyArNDUsMTcgQEAgY2xhc3MgQ1NTTnVtZXJpY1ZhbHVlIDog
cHVibGljIENTU1N0eWxlVgogcHVibGljOgogICAgIHVzaW5nIENTU051bWJlcmlzaCA9IHN0ZDo6
dmFyaWFudDxkb3VibGUsIFJlZlB0cjxDU1NOdW1lcmljVmFsdWU+PjsKIAotICAgIFJlZjxDU1NO
dW1lcmljVmFsdWU+IGFkZChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8Q1NTTnVt
ZXJpY1ZhbHVlPiBzdWIoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgUmVmPENTU051bWVy
aWNWYWx1ZT4gbXVsKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAgIFJlZjxDU1NOdW1lcmlj
VmFsdWU+IGRpdihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8Q1NTTnVtZXJpY1Zh
bHVlPiBtaW4oVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgUmVmPENTU051bWVyaWNWYWx1
ZT4gbWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NOdW1lcmljVmFsdWU+
IGFkZChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NOdW1lcmljVmFs
dWU+IHN1YihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NOdW1lcmlj
VmFsdWU+IG11bChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NOdW1l
cmljVmFsdWU+IGRpdihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NO
dW1lcmljVmFsdWU+IG1pbihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxD
U1NOdW1lcmljVmFsdWU+IG1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIAot
ICAgIGJvb2wgZXF1YWxzKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIGJvb2wgZXF1YWxz
KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgCiAgICAgUmVmPENTU1VuaXRWYWx1
ZT4gdG8oU3RyaW5nJiYpOwotICAgIFJlZjxDU1NNYXRoU3VtPiB0b1N1bShWZWN0b3I8U3RyaW5n
PiYmKTsKKyAgICBSZWY8Q1NTTWF0aFN1bT4gdG9TdW0oRml4ZWRWZWN0b3I8U3RyaW5nPiYmKTsK
ICAgICBDU1NOdW1lcmljVHlwZSB0eXBlKCk7CiAgICAgCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxDU1NOdW1lcmljVmFsdWU+PiBwYXJzZShTdHJpbmcmJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5jcHAJKHJldmlzaW9u
IDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1h
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NNYXRoTWF4KTsKIAotUmVmPENT
U01hdGhNYXg+IENTU01hdGhNYXg6OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJl
cmlzaGVzKQorUmVmPENTU01hdGhNYXg+IENTU01hdGhNYXg6OmNyZWF0ZShGaXhlZFZlY3RvcjxD
U1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTTWF0aE1heChXVEZNb3ZlKG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoTWF4OjpDU1NN
YXRoTWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRoTWF4OjpD
U1NNYXRoTWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKICAgICA6
IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6Ok1heCkKICAgICAsIG1fdmFsdWVzKENTU051
bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUobnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oCShyZXZpc2lv
biAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhN
YXguaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIENTU051bWVyaWNB
cnJheTsKIGNsYXNzIENTU01hdGhNYXggOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKENTU01hdGhNYXgpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
Q1NTTWF0aE1heD4gY3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0YXRpYyBS
ZWY8Q1NTTWF0aE1heD4gY3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAg
Y29uc3QgQ1NTTnVtZXJpY0FycmF5JiB2YWx1ZXMoKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0g
ICAgQ1NTTWF0aE1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBDU1NNYXRoTWF4KEZp
eGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92
YWx1ZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NT
U01hdGhNaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251
bWVyaWMvQ1NTTWF0aE1pbi5jcHAJKHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChDU1NNYXRoTWluKTsKIAotUmVmPENTU01hdGhNaW4+IENTU01hdGhNaW46OmNyZWF0
ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVmPENTU01hdGhNaW4+IENT
U01hdGhNaW46OmNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTWF0aE1pbihXVEZNb3ZlKG51bWJlcmlz
aGVzKSkpOwogfQogCi1DU1NNYXRoTWluOjpDU1NNYXRoTWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+
JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRoTWluOjpDU1NNYXRoTWluKEZpeGVkVmVjdG9yPENTU051
bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKICAgICA6IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0
b3I6Ok1pbikKICAgICAsIG1fdmFsdWVzKENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUo
bnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aE1pbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aE1pbi5oCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
MTEgKzM3LDExIEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNzIENTU01hdGhNaW4gOiBw
dWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU01hdGhN
aW4pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0aE1pbj4gY3JlYXRlKFZlY3RvcjxD
U1NOdW1iZXJpc2g+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTWF0aE1pbj4gY3JlYXRlKEZpeGVk
VmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgY29uc3QgQ1NTTnVtZXJpY0FycmF5JiB2YWx1
ZXMoKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgQ1NTTWF0aE1pbihWZWN0b3I8Q1NTTnVt
YmVyaXNoPiYmKTsKKyAgICBDU1NNYXRoTWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7
CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNw
cAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoUHJvZHVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NNYXRo
UHJvZHVjdCk7CiAKLVJlZjxDU1NNYXRoUHJvZHVjdD4gQ1NTTWF0aFByb2R1Y3Q6OmNyZWF0ZShW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVmPENTU01hdGhQcm9kdWN0PiBD
U1NNYXRoUHJvZHVjdDo6Y3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJp
c2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoUHJvZHVjdChXVEZNb3Zl
KG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoUHJvZHVjdDo6Q1NTTWF0aFByb2R1Y3QoVmVj
dG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhQcm9kdWN0OjpDU1NNYXRo
UHJvZHVjdChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiAgICAgOiBD
U1NNYXRoVmFsdWUoQ1NTTWF0aE9wZXJhdG9yOjpQcm9kdWN0KQogICAgICwgbV92YWx1ZXMoQ1NT
TnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1Y3Qu
aAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoUHJvZHVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMTMgQEAgY2xh
c3MgQ1NTTnVtZXJpY0FycmF5OwogY2xhc3MgQ1NTTWF0aFByb2R1Y3QgOiBwdWJsaWMgQ1NTTWF0
aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU01hdGhQcm9kdWN0KTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU01hdGhQcm9kdWN0PiBjcmVhdGUoVmVjdG9yPENTU051
bWJlcmlzaD4mJik7CisgICAgc3RhdGljIFJlZjxDU1NNYXRoUHJvZHVjdD4gY3JlYXRlKEZpeGVk
VmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgY29uc3QgQ1NTTnVtZXJpY0FycmF5JiB2YWx1
ZXMoKSBjb25zdDsKICAgICAKICAgICBDU1NNYXRoT3BlcmF0b3IgZ2V0T3BlcmF0b3IoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBDU1NNYXRoT3BlcmF0b3I6OlByb2R1Y3Q7IH0KIAogcHJpdmF0ZToK
LSAgICBDU1NNYXRoUHJvZHVjdChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBDU1NNYXRo
UHJvZHVjdChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIFJlZjxDU1NOdW1lcmlj
QXJyYXk+IG1fdmFsdWVzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoU3VtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQ1NTTWF0aFN1bSk7CiAKLVJlZjxDU1NNYXRoU3VtPiBDU1NNYXRo
U3VtOjpjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK1JlZjxDU1NN
YXRoU3VtPiBDU1NNYXRoU3VtOjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51
bWJlcmlzaGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU01hdGhTdW0oV1RGTW92
ZShudW1iZXJpc2hlcykpKTsKIH0KIAotQ1NTTWF0aFN1bTo6Q1NTTWF0aFN1bShWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorQ1NTTWF0aFN1bTo6Q1NTTWF0aFN1bShGaXhlZFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiAgICAgOiBDU1NNYXRoVmFsdWUoQ1NT
TWF0aE9wZXJhdG9yOjpTdW0pCiAgICAgLCBtX3ZhbHVlcyhDU1NOdW1lcmljQXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDExICszOCwxMSBAQCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFzcyBDU1NN
YXRoU3VtIDogcHVibGljIENTU01hdGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChDU1NNYXRoU3VtKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU01hdGhTdW0+IGNyZWF0
ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01hdGhTdW0+IGNy
ZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIGNvbnN0IENTU051bWVyaWNB
cnJheSYgdmFsdWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTTWF0aFN1bShWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBDU1NNYXRoU3VtKEZpeGVkVmVjdG9yPENTU051bWJlcmlz
aD4mJik7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmlj
QXJyYXkuY3BwCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRv
bS9udW1lcmljL0NTU051bWVyaWNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIyICsz
OCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChDU1NOdW1lcmljQXJyYXkpOwogCi1SZWY8Q1NTTnVtZXJpY0FycmF5PiBDU1NOdW1lcmljQXJy
YXk6OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVmPENTU051
bWVyaWNBcnJheT4gQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoY29uc3QgRml4ZWRWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYgbnVtYmVyaXNoZXMpCiB7Ci0gICAgVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFs
dWU+PiB2YWx1ZXM7Ci0gICAgdmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyaXNo
ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mJiBudW1iZXJpc2ggOiBudW1iZXJpc2hlcykKLSAg
ICAgICAgdmFsdWVzLnVuY2hlY2tlZEFwcGVuZChDU1NOdW1lcmljVmFsdWU6OnJlY3RpZnlOdW1i
ZXJpc2goV1RGTW92ZShudW1iZXJpc2gpKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTTnVtZXJpY0FycmF5KFdURk1vdmUodmFsdWVzKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU051bWVyaWNBcnJheShXVEY6Om1hcChudW1iZXJpc2hlcywgW10oYXV0byYgbnVt
YmVyaXNoKSAtPiBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiB7CisgICAgICAgIHJldHVybiBDU1NOdW1l
cmljVmFsdWU6OnJlY3RpZnlOdW1iZXJpc2goY29uc3RfY2FzdDxDU1NOdW1iZXJpc2gmJj4obnVt
YmVyaXNoKSk7CisgICAgfSkpKTsKIH0KIAotUmVmPENTU051bWVyaWNBcnJheT4gQ1NTTnVtZXJp
Y0FycmF5OjpjcmVhdGUoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKK1Jl
ZjxDU1NOdW1lcmljQXJyYXk+IENTU051bWVyaWNBcnJheTo6Y3JlYXRlKEZpeGVkVmVjdG9yPFJl
ZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NOdW1lcmljQXJyYXkoV1RGTW92ZSh2YWx1ZXMpKSk7CiB9CiAKLUNTU051bWVyaWNBcnJh
eTo6Q1NTTnVtZXJpY0FycmF5KFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJiB2YWx1ZXMp
CitDU1NOdW1lcmljQXJyYXk6OkNTU051bWVyaWNBcnJheShGaXhlZFZlY3RvcjxSZWY8Q1NTTnVt
ZXJpY1ZhbHVlPj4mJiB2YWx1ZXMpCiAgICAgOiBtX2FycmF5KFdURk1vdmUodmFsdWVzKSkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9D
U1NOdW1lcmljQXJyYXkuaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTQgKzQwLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIGNsYXNz
IENTU051bWVyaWNBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU051bWVyaWNBcnJheT4gewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTnVtZXJpY0FycmF5KTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPENTU051bWVyaWNBcnJheT4gY3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+
JiYpOwotICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoVmVjdG9yPFJlZjxD
U1NOdW1lcmljVmFsdWU+PiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU051bWVyaWNBcnJheT4gY3Jl
YXRlKGNvbnN0IEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mKTsKKyAgICBzdGF0aWMgUmVmPENT
U051bWVyaWNBcnJheT4gY3JlYXRlKEZpeGVkVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYm
KTsKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS5zaXplKCk7IH07
CiAgICAgRXhjZXB0aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IGl0ZW0oc2l6ZV90IGluZGV4
KTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IG1fYXJyYXk7
Ci0gICAgQ1NTTnVtZXJpY0FycmF5KFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJik7Cisg
ICAgRml4ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IG1fYXJyYXk7CisgICAgQ1NTTnVt
ZXJpY0FycmF5KEZpeGVkVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAJKHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcxLDcgKzk3MSw3IEBAIHVuc2lnbmVkIENvbnRhaW5l
ck5vZGU6OmNoaWxkRWxlbWVudENvdW4KICAgICByZXR1cm4gc3RkOjpkaXN0YW5jZShjaGlsZHJl
bi5iZWdpbigpLCB7IH0pOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjph
cHBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCitFeGNlcHRpb25Pcjx2b2lkPiBD
b250YWluZXJOb2RlOjphcHBlbmQoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikK
IHsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1v
dmUodmVjdG9yKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTk4NCw3ICs5
ODQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjphcHBlbmQoCiAgICAgcmV0
dXJuIGFwcGVuZENoaWxkKCpub2RlKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVy
Tm9kZTo6cHJlcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKK0V4Y2VwdGlvbk9y
PHZvaWQ+IENvbnRhaW5lck5vZGU6OnByZXBlbmQoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYm
IHZlY3RvcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9O
b2RlKFdURk1vdmUodmVjdG9yKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAg
LTk5OCw3ICs5OTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpwcmVwZW5k
CiB9CiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLXBhcmVudG5vZGUtcmVw
bGFjZWNoaWxkcmVuCi1FeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGRyZW4oVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCitFeGNlcHRpb25Pcjx2b2lkPiBD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGRyZW4oRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYm
IHZlY3RvcikKIHsKICAgICAvLyBzdGVwIDEKICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnROb2Rl
c09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUodmVjdG9yKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgJKHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZEVsZW1lbnRDb3VudCgpIGNvbnN0Owot
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKLSAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHByZXBlbmQoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYm
KTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZHJlbihWZWN0b3I8Tm9kZU9y
U3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlQ2hpbGRyZW4oRml4ZWRW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuc3VyZVBy
ZUluc2VydGlvblZhbGlkaXR5KE5vZGUmIG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzNyw3ICszMzM3LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZQogICAgIHJldHVybiB7
IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZShEb2N1bWVudCogZW50
cnlEb2N1bWVudCwgVmVjdG9yPFN0cmluZz4mJiBzdHJpbmdzKQorRXhjZXB0aW9uT3I8dm9pZD4g
RG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBGaXhlZFZlY3RvcjxTdHJp
bmc+JiYgc3RyaW5ncykKIHsKICAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkgfHwgbV90aHJvd09u
RHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTMzNDksNyArMzM0OSw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IERvY3VtZW50Ojp3cml0ZShEb2N1bWUKICAgICByZXR1cm4gd3JpdGUoZW50cnlEb2N1bWVu
dCwgV1RGTW92ZSh0ZXh0KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0
ZWxuKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCitF
eGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGVsbihEb2N1bWVudCogZW50cnlEb2N1bWVu
dCwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCiB7CiAgICAgaWYgKCFpc0hUTUxEb2N1
bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJWaWV3cG9ydEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTY4OCw4ICs2ODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQYXJz
aW5nKCk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZShEb2N1bWVudCogZW50cnlEb2N1
bWVudCwgU2VnbWVudGVkU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHdyaXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZWxuKERvY3VtZW50KiBl
bnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiB3cml0ZShEb2N1bWVudCogZW50cnlEb2N1bWVudCwgRml4ZWRWZWN0b3I8
U3RyaW5nPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZWxu
KERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogCiAgICAg
Ym9vbCB3ZWxsRm9ybWVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWxsRm9ybWVkOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAJKHJldmlzaW9uIDI4NTI3MikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQCBSZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvCiAgICAg
cmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwg
c2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBm
b3JjZSk7CiB9CiAKLVJlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlz
dChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJiB0b3Vj
aGVzKQorUmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3Vt
ZW50JiwgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hl
cykKIHsKICAgICByZXR1cm4gVG91Y2hMaXN0OjpjcmVhdGUoV1RGTW92ZSh0b3VjaGVzKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgJKHJldmlzaW9uIDI4NTI3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlIDxmdW5j
dGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgV2lu
ZG93UHJveHk7CiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgRXZl
bnRUYXJnZXQqLCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlv
bkFuZ2xlLCBmbG9hdCBmb3JjZSk7Ci0gICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRv
dWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4m
Jik7CisgICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYs
IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEzLDcgKzUxMyw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE5vZGU6OmFwcGVuZENoaWxkKE5vZGUKICAgICByZXR1cm4gZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4oKnRoaXMpLmFwcGVuZENoaWxkKG5ld0NoaWxkKTsKIH0KIAotc3RhdGljIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5n
VmVjdG9yKGNvbnN0IFZlY3RvcjxOb2RlT3JTdHJpbmc+JiB2ZWN0b3IpCitzdGF0aWMgSGFzaFNl
dDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0
b3IoY29uc3QgRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYgdmVjdG9yKQogewogICAgIEhhc2hT
ZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0OwogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFudCA6
IHZlY3RvcikgewpAQCAtNTQzLDcgKzU0Myw3IEBAIHN0YXRpYyBSZWZQdHI8Tm9kZT4gZmlyc3RG
b2xsb3dpbmdTaWJsaW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
UHRyPE5vZGU+PiBOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8Tm9k
ZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKK0V4Y2VwdGlvbk9yPFJlZlB0cjxOb2Rl
Pj4gTm9kZTo6Y29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoRml4ZWRWZWN0b3I8Tm9kZU9y
U3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBpZiAobm9kZU9yU3RyaW5nVmVj
dG9yLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NjksNyArNTY5LDcg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBOb2RlOjpjb252ZXJ0TgogICAgIHJldHVybiBS
ZWZQdHI8Tm9kZT4geyBXVEZNb3ZlKG5vZGVUb1JldHVybikgfTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gTm9kZTo6YmVmb3JlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVj
dG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YmVmb3JlKEZpeGVkVmVjdG9yPE5vZGVPclN0
cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+
IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKQEAgLTU5Myw3ICs1OTMs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoVmVjdG9yPE5vCiAgICAgcmV0dXJu
IHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2RlLCB2aWFibGVQcmV2aW91c1NpYmxpbmcuZ2V0KCkp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjphZnRlcihWZWN0b3I8Tm9kZU9yU3RyaW5n
PiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmFmdGVyKEZp
eGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVm
UHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVu
dCkKQEAgLTYxMiw3ICs2MTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjphZnRlcihWZWN0
b3I8Tm9kCiAgICAgcmV0dXJuIHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2RlLCB2aWFibGVOZXh0
U2libGluZy5nZXQoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnJlcGxhY2VXaXRo
KFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8
dm9pZD4gTm9kZTo6cmVwbGFjZVdpdGgoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVP
clN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFy
ZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAy
ODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBh
Y3RQb2ludGVyVHVwbGUuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmg+
CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CkBAIC0xODQsOSArMTg1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQq
IG5leHRFbGVtZW50U2libGluZygpIGNvbnN0OwogCiAgICAgLy8gRnJvbSB0aGUgQ2hpbGROb2Rl
IC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjaGlsZG5vZGUKLSAgICBFeGNlcHRpb25P
cjx2b2lkPiBiZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7Ci0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gYWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gYmVmb3JlKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gYWZ0ZXIoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiByZXBsYWNlV2l0aChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZSgpOwogCiAgICAgLy8gT3Ro
ZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQpAQCAtNjkxLDcgKzY5Miw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZShTdHlsZTo6VmFsaWRpdHksIFN0eWxlOjpJbnZh
bGlkYXRpb25Nb2RlID0gU3R5bGU6OkludmFsaWRhdGlvbk1vZGU6Ok5vcm1hbCk7CiAgICAgdm9p
ZCB1cGRhdGVBbmNlc3RvcnNGb3JTdHlsZVJlY2FsYygpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVm
UHRyPE5vZGU+PiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8Tm9kZU9yU3Ry
aW5nPiYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGNvbnZlcnROb2Rlc09yU3Ry
aW5nc0ludG9Ob2RlKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoTGlzdC5oCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNlbGlmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlICJUb3VjaC5oIgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hMaXN0KTsKICAgICB9Ci0gICAg
c3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZShWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxUb3VjaD4+JiYgdG91Y2hlcykKKyAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlKEZp
eGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUb3VjaExpc3QoV1RGTW92ZSh0b3VjaGVz
KSkpOwogICAgIH0KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUb3Vj
aExpc3QoKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBUb3VjaExpc3QoVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCisgICAgZXhwbGljaXQgVG91Y2hM
aXN0KEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMp
CiAgICAgewogICAgICAgICBtX3ZhbHVlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdWNoZXMu
c2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiB0b3VjaCA6IHRvdWNoZXMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6YQogICAgIHJldHVy
biB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0b2tlbnMpCitFeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OmFk
ZChjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCiB7CiAgICAgcmV0dXJuIGFkZElu
dGVybmFsKHRva2Vucy5kYXRhKCksIHRva2Vucy5zaXplKCkpOwogfQpAQCAtMTIyLDcgKzEyMiw3
IEBAIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnIKICAgICByZXR1cm4g
eyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0Ojpy
ZW1vdmUoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQogewogICAgIHJldHVybiBy
ZW1vdmVJbnRlcm5hbCh0b2tlbnMuZGF0YSgpLCB0b2tlbnMuc2l6ZSgpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zp
eGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsOSArNDUsOSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21TdHJpbmcmKSBj
b25zdDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpOwog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gcmVtb3ZlKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mKTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiByZW1vdmUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPGJvb2w+IHRvZ2dsZShjb25zdCBBdG9tU3RyaW5nJiwgc3RkOjpvcHRpb25h
bDxib29sPiBmb3JjZSk7CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gcmVwbGFjZShjb25zdCBBdG9t
U3RyaW5nJiB0b2tlbiwgY29uc3QgQXRvbVN0cmluZyYgbmV3VG9rZW4pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTI3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4Q2FudmFz
QXJlYQogICAgIG1heENhbnZhc0FyZWFGb3JUZXN0aW5nID0gc2l6ZTsKIH0KIAotRXhjZXB0aW9u
T3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6Omdl
dENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIGNvbnN0IFN0cmluZyYgY29udGV4
dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNl
cHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBj
b250ZXh0SWQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1l
bnRzKQogewogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNQ
bGFjZWhvbGRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aAkocmV2aXNpb24gMjg1MjcyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9jb250ZXh0LmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5n
JiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50
cyk7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gZ2V0
Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIEZp
eGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKIAogICAg
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHQoY29uc3QgU3RyaW5nJik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJldmlzaW9uIDI4NTI3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVDb250
ZXh0V2ViR0wKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotRXhjZXB0aW9uT3I8c3RkOjpv
cHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRD
b250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBSZW5kZXJpbmdDb250ZXh0VHlwZSBj
b250ZXh0VHlwZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRz
KQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4g
T2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBS
ZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fZGV0YWNoZWQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJQaXBlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTEyNiw3ICsxMjcs
NyBAQCBwdWJsaWM6CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250
ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBFeGNl
cHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250
ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgVmVjdG9yPEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25Pcjxz
dGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRDb250ZXh0KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgRml4ZWRWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0
cjxJbWFnZUJpdG1hcD4+IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOwogICAgIHZvaWQgY29udmVy
dFRvQmxvYihJbWFnZUVuY29kZU9wdGlvbnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NTI3MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5Myw3
ICsxNzkzLDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRoLCBmbAogICAg
IHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdCgqcGFnZSwgdXBk
YXRlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRUaW1lb3V0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBh
Y3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBh
cmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0VGltZW91dChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0
aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4m
JiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMTgxOCw3ICsxODE4LDcgQEAgdm9pZCBET01X
aW5kb3c6OmNsZWFyVGltZW91dChpbnQgdGltZW91dAogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlk
KCpjb250ZXh0LCB0aW1lb3V0SWQpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6
c2V0SW50ZXJ2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxT
Y2hlZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93Ojpz
ZXRJbnRlcnZhbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJv
bmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
V2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hh
bmRsZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMjkz
LDkgKzI5NCw5IEBAIHB1YmxpYzoKICAgICBWaXN1YWxWaWV3cG9ydCYgdmlzdWFsVmlld3BvcnQo
KTsKIAogICAgIC8vIFRpbWVycwotICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0VGltZW91dChKU0M6
OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0
aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwor
ICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0VGltZW91dChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVhclRp
bWVvdXQoaW50IHRpbWVvdXRJZCk7Ci0gICAgRXhjZXB0aW9uT3I8aW50PiBzZXRJbnRlcnZhbChK
U0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGlu
dCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMp
OworICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgRml4ZWRWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIHZvaWQgY2xl
YXJJbnRlcnZhbChpbnQgdGltZW91dElkKTsKIAogICAgIGludCByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoUmVmPFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CShyZXZpc2lvbiAyODUyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNj
cmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMpCitFeGNlcHRpb25Pcjx2b2lkPiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBGaXhlZFZlY3RvcjxT
dHJpbmc+JiB1cmxzKQogewogICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6aW1wb3J0U2NyaXB0cyh1
cmxzKTsKICAgICB0aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLnJlcG9ydFBlbmRpbmdBY3Rp
dml0eShoYXNQZW5kaW5nQWN0aXZpdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODUyNzIp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmLCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9w
T3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7
CiAKICAgICBib29sIGlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0U2NyaXB0cyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdXJscykgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1w
b3J0U2NyaXB0cyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiB1cmxzKSBmaW5hbDsKICAgICBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODUyNzIp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnNldElz
T25saW5lKGJvb2wKICAgICAgICAgbV9uYXZpZ2F0b3ItPnNldElzT25saW5lKGlzT25saW5lKTsK
IH0KIAotRXhjZXB0aW9uT3I8aW50PiBXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4g
YWN0aW9uLCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYg
YXJndW1lbnRzKQorRXhjZXB0aW9uT3I8aW50PiBXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNoZWNr
IHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJv
dXQgdG8gZXZhbD8KICAgICBpZiAoYWN0aW9uLT50eXBlKCkgPT0gU2NoZWR1bGVkQWN0aW9uOjpU
eXBlOjpDb2RlKSB7CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6
Y2xlYXJUaW1lb3V0KGludAogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlkKCp0aGlzLCB0aW1lb3V0
SWQpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZh
bChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93
bj4+JiYgYXJndW1lbnRzKQorRXhjZXB0aW9uT3I8aW50PiBXb3JrZXJHbG9iYWxTY29wZTo6c2V0
SW50ZXJ2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25n
PEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBjaGVjayByZWFsbHkgaGFwcGVuIGhlcmU/IE9yIHNob3VsZCBpdCBoYXBwZW4gd2hlbiBjb2Rl
IGlzIGFib3V0IHRvIGV2YWw/CiAgICAgaWYgKGFjdGlvbi0+dHlwZSgpID09IFNjaGVkdWxlZEFj
dGlvbjo6VHlwZTo6Q29kZSkgewpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OmNsZWFySW50ZXJ2YWwoaW4KICAgICBET01UaW1lcjo6cmVtb3ZlQnlJZCgqdGhpcywg
dGltZW91dElkKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyR2xvYmFsU2NvcGU6Omlt
cG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMpCitFeGNlcHRpb25Pcjx2b2lk
PiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBGaXhlZFZlY3RvcjxTdHJp
bmc+JiB1cmxzKQogewogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9u
IDI4NTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTEwNCwxNCArMTA1LDE0IEBAIHB1YmxpYzoKICAgICBXb3JrZXJMb2Nh
dGlvbiYgbG9jYXRpb24oKSBjb25zdDsKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICB2aXJ0dWFs
IEV4Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVy
bHMpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0U2NyaXB0cyhjb25zdCBG
aXhlZFZlY3RvcjxTdHJpbmc+JiB1cmxzKTsKICAgICBXb3JrZXJOYXZpZ2F0b3ImIG5hdmlnYXRv
cigpOwogCiAgICAgdm9pZCBzZXRJc09ubGluZShib29sKTsKIAotICAgIEV4Y2VwdGlvbk9yPGlu
dD4gc2V0VGltZW91dChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNjaGVk
dWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
Pj4mJiBhcmd1bWVudHMpOworICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0VGltZW91dChKU0M6OkpT
R2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0aW1l
b3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7
CiAgICAgdm9pZCBjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCk7Ci0gICAgRXhjZXB0aW9uT3I8
aW50PiBzZXRJbnRlcnZhbChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpOworICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoSlND
OjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQg
dGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVu
dHMpOwogICAgIHZvaWQgY2xlYXJJbnRlcnZhbChpbnQgdGltZW91dElkKTsKIAogICAgIGJvb2wg
aXNTZWN1cmVDb250ZXh0KCkgY29uc3QgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447484</attachid>
            <date>2021-12-17 15:28:34 -0800</date>
            <delta_ts>2021-12-18 09:39:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232639-20211217232832.patch</filename>
            <type>text/plain</type>
            <size>61850</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTE3ICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW50cm9kdWNlIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dCBjb25zdHJ1Y3RvciBmb3IgRml4ZWRWZWN0b3IgYW5kIGEgV1RGOjptYXAoKSBvdmVybG9hZC4K
KworICAgICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6Rml4ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjptYXApOgorICAgICAgICAqIHd0Zi9WZWN0
b3JUcmFpdHMuaDoKKwogMjAyMS0xMi0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWpp
aUBzb255LmNvbT4KIAogICAgICAgICBNU1ZDIHJlcG9ydHMgInd0Zi9SZXRhaW5QdHIuaCgxOTYp
OiBlcnJvciBDMzg2MTogJ0NGQXV0b3JlbGVhc2UnOiBpZGVudGlmaWVyIG5vdCBmb3VuZCAiIHdp
dGggL3Blcm1pc3NpdmUtIG9uIFdpbmRvd3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkocmV2aXNp
b24gMjg3MjA2KQorKysgU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsMTYgQEAgcHVibGljOgogICAgIHsgfQogICAgIEZpeGVkVmVjdG9yKEZp
eGVkVmVjdG9yJiYgb3RoZXIpID0gZGVmYXVsdDsKIAorICAgIEZpeGVkVmVjdG9yKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxUPiBpbml0aWFsaXplckxpc3QpCisgICAgICAgIDogbV9zdG9yYWdlKGlu
aXRpYWxpemVyTGlzdC5zaXplKCkpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXggPSAwOwor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXplckxpc3QpIHsKKyAg
ICAgICAgICAgIG1fc3RvcmFnZS5hdChpbmRleCkgPSBlbGVtZW50OworICAgICAgICAgICAgaW5k
ZXgrKzsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29u
c3QgRml4ZWRWZWN0b3ImIG90aGVyKQogICAgIHsKICAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90
aGVyKTsKQEAgLTEzOSw2ICsxNDksMjAgQEAgaW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxU
PiYgYSwgRml4ZQogICAgIGEuc3dhcChiKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFJldHVyblR5cGUgPSB0eXBlbmFtZSBzdGQ6Omlu
dm9rZV9yZXN1bHQ8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPjo6dHlwZT4KK0ZpeGVkVmVjdG9yPFJl
dHVyblR5cGU+IG1hcChjb25zdCBGaXhlZFZlY3RvcjxUPiYgc291cmNlLCBNYXBGdW5jdGlvbiYm
IG1hcEZ1bmN0aW9uKQoreworICAgIEZpeGVkVmVjdG9yPFJldHVyblR5cGU+IHJlc3VsdChzb3Vy
Y2Uuc2l6ZSgpKTsKKworICAgIHNpemVfdCByZXN1bHRJbmRleCA9IDA7CisgICAgZm9yIChjb25z
dCBhdXRvJiBpdGVtIDogc291cmNlKSB7CisgICAgICAgIHJlc3VsdFtyZXN1bHRJbmRleF0gPSBt
YXBGdW5jdGlvbihpdGVtKTsKKyAgICAgICAgcmVzdWx0SW5kZXgrKzsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGaXhl
ZFZlY3RvcjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCShyZXZpc2lvbiAyODcyMDYpCisrKyBT
b3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBW
ZWN0b3JUcmFpdHM8UmVmUHRyPFA+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6dW5pcXVlX3B0
cjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFA+PiA6IFNp
bXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1
Y3QgVmVjdG9yVHJhaXRzPFJlZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xh
c3NWZWN0b3JUcmFpdHMgeyB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyMDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkg
QEAKKzIwMjEtMTItMTcgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJJRExdIGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4g
YSBGaXhlZFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBTaW5jZSBpdCdzIGhpZ2hseSB1bmxpa2VseSAoQ1NTTnVtZXJpY0FycmF5IGlzIGltbXV0
YWJsZSkgdGhhdCB3ZSB3b3VsZCBuZWVkIHRvCisgICAgICAgIG11dGF0ZSB2YXJpYWRpYyBhcmd1
bWVudHMgYmVmb3JlIHByb2Nlc3NpbmcgdGhlbSBvciBzdG9yaW5nLCBhbmQgd2Uga25vdyB0aGVp
ciBzaXplCisgICAgICAgIHVwZnJvbnQsIGl0IG1ha2VzIHRoZSBtb3N0IHNlbnNlIHRvIHNhdmUg
c29tZSBtZW1vcnkgYnkgdXRpbGl6aW5nIGEgRml4ZWRWZWN0b3IuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZWR1Y2VzIHNpemVvZihTY2hlZHVsZWRBY3Rpb24pIGJ5IDgsIGVuYWJsaW5nIG1lbW9y
eS1uZXV0cmFsIGFkZGl0aW9uCisgICAgICAgIG9mIGEgZmllbGQgbGlrZSBtX2luY3VtYmVudEds
b2JhbE9iamVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OnNldFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRN
ZWRpYVN0cmVhbUlkcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6c2V0TWVkaWFTdHJlYW1JZHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFZhcmlhZGljQXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVu
dHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAq
IGNzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NO
dW1lcmljVmFsdWU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnN1
Yik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om11bCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmRpdik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1l
cmljVmFsdWU6Om1pbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1heCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnRvU3VtKToKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9D
U1NOdW1lcmljVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhN
YXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1heDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU01hdGhNYXg6OkNTU01hdGhNYXgpOgorICAgICAgICAqIGNzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aE1heC5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aE1pbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1pbjo6Q1NTTWF0aE1pbik6CisgICAgICAgICogY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmg6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoUHJvZHVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoUHJvZHVjdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hdGhQcm9kdWN0OjpDU1NNYXRoUHJvZHVj
dCk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oOgorICAg
ICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNYXRoU3VtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aFN1bTo6
Q1NTTWF0aFN1bSk6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmg6
CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTnVtZXJpY0FycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTnVtZXJpY0FycmF5OjpDU1NOdW1lcmljQXJyYXkpOgorICAgICAgICAqIGNzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkcmVuKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVy
Tm9kZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlbG4pOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFRvdWNoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlzdCk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBsYWNlV2l0aCk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vVG91Y2hMaXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExp
c3Q6OlRvdWNoTGlzdCk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9r
ZW5MaXN0OjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dCk6CisgICAgICAgICogaHRtbC9PZmZzY3Jl
ZW5DYW52YXMuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzZXRJbnRlcnZhbCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0
SW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNj
cmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAyMS0x
Mi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IERlZHVwbGljYXRlIGNvZGUgaW4gUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAkocmV2aXNpb24gMjg3MjA2KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6Om1hcmtBc05lZWRpbgogICAgIG1fcGVlckNvbm5lY3Rpb24udXBkYXRlTmVn
b3RpYXRpb25OZWVkZWRGbGFnKGV2ZW50SWQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UlRDUnRw
U2VuZGVyPj4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNr
JiwgVmVjdG9yPFN0cmluZz4mJikKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBGaXhlZFZlY3Rv
cjxTdHJpbmc+JiYpCiB7CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiTm90IGltcGxlbWVudGVkIl9zIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgJKHJl
dmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJSVENSdHBTZW5kUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNj
cmlwdGlvbi5oIgogI2luY2x1ZGUgIlJUQ1NpZ25hbGluZ1N0YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTExNCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGdldFN0YXRzKFJUQ1J0cFNlbmRlciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUlRDUnRwUmVjZWl2ZXImLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBT
ZW5kZXI+PiBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgVmVjdG9yPFN0cmluZz4mJik7Cisg
ICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYsIEZpeGVkVmVjdG9yPFN0cmluZz4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCiAgICAgdmlydHVhbCBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lv
biAyODcyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJUQ1BlZXJD
b25uZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24oKQogICAgIHN0b3AoKTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8
TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8TWVkaWFTdHJlYW0+PiYgc3RyZWFtcykKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5k
ZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYg
dHJhY2ssIGNvbnN0IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJl
YW0+PiYgc3RyZWFtcykKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtMTQz
LDExICsxNDMsOSBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAg
fQogCi0gICAgVmVjdG9yPFN0cmluZz4gbWVkaWFTdHJlYW1JZHM7Ci0gICAgZm9yIChhdXRvIHN0
cmVhbSA6IHN0cmVhbXMpCi0gICAgICAgIG1lZGlhU3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0
KCkuaWQoKSk7Ci0KLSAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayh0cmFjay5nZXQoKSwg
V1RGTW92ZShtZWRpYVN0cmVhbUlkcykpOworICAgIHJldHVybiBtX2JhY2tlbmQtPmFkZFRyYWNr
KHRyYWNrLmdldCgpLCBXVEY6Om1hcChzdHJlYW1zLCBbXShhdXRvJiBzdHJlYW0pIC0+IFN0cmlu
ZyB7CisgICAgICAgIHJldHVybiBzdHJlYW0uZ2V0KCkuaWQoKTsKKyAgICB9KSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5k
ZXImIHNlbmRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgY3VycmVudFRyYW5zY2VpdmVycygpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhbnNjZWl2ZXJTZXQubGlzdCgpOyB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8
UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYs
IGNvbnN0IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYpOwogCiAg
ICAgdXNpbmcgQWRkVHJhbnNjZWl2ZXJUcmFja09yS2luZCA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4sIFN0cmluZz47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCShyZXZpc2lvbiAyODcyMDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUlRDUnRwU2VuZGVyOjpz
ZXRQYXJhbWV0ZXJzKGNvbnN0IFIKICAgICByZXR1cm4gbV9iYWNrZW5kLT5zZXRQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBS
VENSdHBTZW5kZXI6OnNldFN0cmVhbXMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8TWVkaWFTdHJlYW0+PiYgc3RyZWFtcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRl
cjo6c2V0U3RyZWFtcyhjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1l
ZGlhU3RyZWFtPj4mIHN0cmVhbXMpCiB7CiAgICAgcmV0dXJuIHNldE1lZGlhU3RyZWFtSWRzKFdU
Rjo6bWFwKHN0cmVhbXMsIFtdKGF1dG8mIHN0cmVhbSkgLT4gU3RyaW5nIHsKICAgICAgICAgcmV0
dXJuIHN0cmVhbS5nZXQoKS5pZCgpOwogICAgIH0pKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4g
UlRDUnRwU2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3Ry
ZWFtSWRzKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlk
cyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiBzdHJlYW1JZHMpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24gfHwgbV9jb25uZWN0aW9uLT5pc0Nsb3NlZCgpIHx8ICFtX2JhY2tlbmQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImNvbm5lY3Rpb24gaXMg
Y2xvc2VkIl9zIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLmgJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDggKzcxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdHJhY2tJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhY2tJZDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFja0tpbmQ7IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlh
U3RyZWFtSWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0U3RyZWFtcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVh
bT4+Jik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4
ZWRWZWN0b3I8U3RyaW5nPiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0cmVhbXMoY29u
c3QgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7CiAK
ICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tlbmQ7IH0KICAgICB2
b2lkIHN0b3AoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5oCShyZXZpc2lvbiAyODcyMDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAK
KyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyYW1ldGVycyhjb25zdCBS
VENSdHBTZW5kUGFyYW1ldGVycyYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7CiAg
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURU
TUZCYWNrZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+
IHJ0Y1J0cFRyYW5zZm9ybUJhY2tlbmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1lZGlh
U3RyZWFtSWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPiBkdGxzVHJhbnNw
b3J0QmFja2VuZCgpID0gMDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwCShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6ZG9TZXRSZW1vdGUKICAgICBzdGFydExvZ2dpbmdTdGF0cygpOwogfQogCi1ib29sIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQm
IHNlbmRlciwgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBt
ZWRpYVN0cmVhbUlkcykKK2Jvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkVHJhY2soTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyLCBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywg
Y29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAgICAgQVNTRVJU
KG1fYmFja2VuZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmgJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgYm9vbCBpc1N0
b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNrZW5kOyB9CiAKLSAgICBib29sIGFkZFRyYWNr
KExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKKyAgICBib29sIGFkZFRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQmLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYpOwogICAg
IHZvaWQgcmVtb3ZlVHJhY2soTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYpOwogCiAgICAgc3Ry
dWN0IEJhY2tlbmRzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHN0YXRpYyBp
bmxpbmUgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gZmluZEUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+
JiYgbWVkaWFTdHJlYW1JZHMpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFj
aywgRml4ZWRWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQogewogICAgIGF1dG8gc2Vu
ZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMs
IG51bGxwdHIpOwogICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQs
IHRyYWNrLCBtZWRpYVN0cmVhbUlkcykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZ2V0U3RhdHNTdWNjZWVkZWQoY29uc3QgRGVmZXJyZWRQcm9taXNlJiwg
UmVmPFJUQ1N0YXRzUmVwb3J0PiYmKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5k
ZXI+PiBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7
CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFt
VHJhY2smLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlVHJh
Y2soUlRDUnRwU2VuZGVyJikgZmluYWw7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJh
bnNjZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFu
c2NlaXZlckluaXQmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
VENEdGxzVHJhbnNwb3J0QmFja2VuZD4KICAgICByZXR1cm4gYmFja2VuZCA/IG1ha2VVbmlxdWU8
TGliV2ViUlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQ+KFdURk1vdmUoYmFja2VuZCkpIDogbnVsbHB0
cjsKIH0KIAotdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVhbUlk
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQordm9pZCBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiBz
dHJlYW1JZHMpCiB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGlkczsKICAgICBmb3Ig
KGF1dG8mIGlkIDogc3RyZWFtSWRzKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBjcmVhdGVEVE1GQmFja2VuZCgpIGZpbmFsOwog
ICAgIFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBydGNSdHBUcmFuc2Zvcm1CYWNrZW5kKCkg
ZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPiBkdGxz
VHJhbnNwb3J0QmFja2VuZCgpIGZpbmFsOwotICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKKyAgICB2b2lkIHNldE1lZGlhU3RyZWFtSWRzKGNv
bnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnRTb3VyY2Uo
KTsKICAgICB2b2lkIHN0b3BTb3VyY2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAkocmV2aXNpb24gMjg3MjA2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDcsNyBAQCBzdHJ1Y3QgVmFyaWFkaWND
b252ZXJ0ZXIgewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IFZlY3Rv
cjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6SXRlbT4gY29udmVydFZhcmlh
ZGljQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIHNpemVfdCBzdGFydEluZGV4KQordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4gRml4ZWRWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURM
VHlwZT46Okl0ZW0+IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBzaXplX3Qg
c3RhcnRJbmRleCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTU1
LDE1ICs1NiwxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBWZWN0b3I8dHlwZW5hCiAg
ICAgaWYgKHN0YXJ0SW5kZXggPj0gbGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
VmVjdG9yPHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpJdGVtPiByZXN1bHQ7
Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7
CisgICAgRml4ZWRWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46Okl0
ZW0+IHJlc3VsdChsZW5ndGggLSBzdGFydEluZGV4KTsKIAorICAgIHNpemVfdCByZXN1bHRJbmRl
eCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBhdXRvIHZhbHVlID0gVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OmNvbnZl
cnQobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsK
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXZhbHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdmFsdWUpKTsKKyAg
ICAgICAgcmVzdWx0W3Jlc3VsdEluZGV4XSA9IFdURk1vdmUoKnZhbHVlKTsKKyAgICAgICAgcmVz
dWx0SW5kZXgrKzsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lvbiAyODcy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVk
QWN0aW9uKERPTVdyYXAKIAogU2NoZWR1bGVkQWN0aW9uOjp+U2NoZWR1bGVkQWN0aW9uKCkgPSBk
ZWZhdWx0OwogCi12b2lkIFNjaGVkdWxlZEFjdGlvbjo6YWRkQXJndW1lbnRzKFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK3ZvaWQgU2NoZWR1bGVkQWN0aW9u
OjphZGRBcmd1bWVudHMoRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBh
cmd1bWVudHMpCiB7CiAgICAgbV9hcmd1bWVudHMgPSBXVEZNb3ZlKGFyZ3VtZW50cyk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAkocmV2
aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Myw3ICs0Miw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4g
Y3JlYXRlKERPTVdyYXBwZXJXb3JsZCYsIFN0cmluZyYmKTsKICAgICB+U2NoZWR1bGVkQWN0aW9u
KCk7CiAKLSAgICB2b2lkIGFkZEFyZ3VtZW50cyhWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJik7CisgICAgdm9pZCBhZGRBcmd1bWVudHMoRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb2RlLCBGdW5jdGlv
biB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0OwpAQCAtNjAsNyArNTksNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOwogICAgIEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj4gbV9mdW5jdGlvbjsKLSAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlND
OjpVbmtub3duPj4gbV9hcmd1bWVudHM7CisgICAgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlND
OjpVbmtub3duPj4gbV9hcmd1bWVudHM7CiAgICAgU3RyaW5nIG1fY29kZTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAkocmV2
aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1Zh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NOdW1lcmljVmFsdWUpOwogCi1S
ZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OmFkZChWZWN0b3I8Q1NTTnVtYmVy
aXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWRk
KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtNTIsNyArNTIsNyBAQCBSZWY8
Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OmFkCiAgICAgcmV0dXJuICp0aGlzOwog
fQogCi1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OnN1YihWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1
ZTo6c3ViKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtNjAsNyArNjAsNyBA
QCBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OnN1CiAgICAgcmV0dXJuICp0
aGlzOwogfQogCi1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om11bChWZWN0
b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVy
aWNWYWx1ZTo6bXVsKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgpAQCAtNjgsMjEg
KzY4LDIxIEBAIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6bXUKICAgICBy
ZXR1cm4gKnRoaXM7CiB9CiAKLVJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6
ZGl2KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQorUmVmPENTU051bWVyaWNWYWx1ZT4g
Q1NTTnVtZXJpY1ZhbHVlOjpkaXYoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykK
IHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCiAK
ICAgICByZXR1cm4gKnRoaXM7CiB9Ci1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFs
dWU6Om1pbihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NOdW1lcmljVmFs
dWU+IENTU051bWVyaWNWYWx1ZTo6bWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1
ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBs
LgogCiAgICAgcmV0dXJuICp0aGlzOwogfQotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJp
Y1ZhbHVlOjptYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJp
Y1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYg
dmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQg
aW1wbC4KQEAgLTEwMCw3ICsxMDAsNyBAQCBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmlj
VmFsdWU6OnJlCiAgICAgfSk7CiB9CiAKLWJvb2wgQ1NTTnVtZXJpY1ZhbHVlOjplcXVhbHMoVmVj
dG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZSkKK2Jvb2wgQ1NTTnVtZXJpY1ZhbHVlOjplcXVhbHMo
Rml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1v
bS8jZG9tLWNzc251bWVyaWN2YWx1ZS1lcXVhbHMKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWY8Q1NT
VW5pdFZhbHVlPiBDU1NOdW1lcmljVmFsdWU6OnRvKFN0CiAgICAgcmV0dXJuIENTU1VuaXRWYWx1
ZTo6Y3JlYXRlKDEuMCwgIm51bWJlciIpOwogfQogCi1SZWY8Q1NTTWF0aFN1bT4gQ1NTTnVtZXJp
Y1ZhbHVlOjp0b1N1bShWZWN0b3I8U3RyaW5nPiYmIHVuaXRzKQorUmVmPENTU01hdGhTdW0+IENT
U051bWVyaWNWYWx1ZTo6dG9TdW0oRml4ZWRWZWN0b3I8U3RyaW5nPiYmIHVuaXRzKQogewogICAg
IFVOVVNFRF9QQVJBTSh1bml0cyk7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy10eXBlZC1vbS8jZG9tLWNzc251bWVyaWN2YWx1ZS10b3N1bQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgJKHJldmlzaW9uIDI4NzIw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NTdHlsZVZhbHVlLmgi
CiAjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NCwxNyArNDUsMTcgQEAgY2xhc3MgQ1NTTnVtZXJpY1Zh
bHVlIDogcHVibGljIENTU1N0eWxlVgogcHVibGljOgogICAgIHVzaW5nIENTU051bWJlcmlzaCA9
IHN0ZDo6dmFyaWFudDxkb3VibGUsIFJlZlB0cjxDU1NOdW1lcmljVmFsdWU+PjsKIAotICAgIFJl
ZjxDU1NOdW1lcmljVmFsdWU+IGFkZChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8
Q1NTTnVtZXJpY1ZhbHVlPiBzdWIoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgUmVmPENT
U051bWVyaWNWYWx1ZT4gbXVsKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAgIFJlZjxDU1NO
dW1lcmljVmFsdWU+IGRpdihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBSZWY8Q1NTTnVt
ZXJpY1ZhbHVlPiBtaW4oVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0gICAgUmVmPENTU051bWVy
aWNWYWx1ZT4gbWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NOdW1lcmlj
VmFsdWU+IGFkZChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NOdW1l
cmljVmFsdWU+IHN1YihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxDU1NO
dW1lcmljVmFsdWU+IG11bChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJlZjxD
U1NOdW1lcmljVmFsdWU+IGRpdihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIFJl
ZjxDU1NOdW1lcmljVmFsdWU+IG1pbihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAg
IFJlZjxDU1NOdW1lcmljVmFsdWU+IG1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwog
ICAgIAotICAgIGJvb2wgZXF1YWxzKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIGJvb2wg
ZXF1YWxzKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgCiAgICAgUmVmPENTU1Vu
aXRWYWx1ZT4gdG8oU3RyaW5nJiYpOwotICAgIFJlZjxDU1NNYXRoU3VtPiB0b1N1bShWZWN0b3I8
U3RyaW5nPiYmKTsKKyAgICBSZWY8Q1NTTWF0aFN1bT4gdG9TdW0oRml4ZWRWZWN0b3I8U3RyaW5n
PiYmKTsKICAgICBDU1NOdW1lcmljVHlwZSB0eXBlKCk7CiAgICAgCiAgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiBwYXJzZShTdHJpbmcmJik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5jcHAJKHJl
dmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aE1heC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NNYXRoTWF4KTsKIAot
UmVmPENTU01hdGhNYXg+IENTU01hdGhNYXg6OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
IG51bWJlcmlzaGVzKQorUmVmPENTU01hdGhNYXg+IENTU01hdGhNYXg6OmNyZWF0ZShGaXhlZFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTTWF0aE1heChXVEZNb3ZlKG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoTWF4
OjpDU1NNYXRoTWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRo
TWF4OjpDU1NNYXRoTWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykK
ICAgICA6IENTU01hdGhWYWx1ZShDU1NNYXRoT3BlcmF0b3I6Ok1heCkKICAgICAsIG1fdmFsdWVz
KENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUobnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oCShy
ZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NT
U01hdGhNYXguaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIENTU051
bWVyaWNBcnJheTsKIGNsYXNzIENTU01hdGhNYXggOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU01hdGhNYXgpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8Q1NTTWF0aE1heD4gY3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0
YXRpYyBSZWY8Q1NTTWF0aE1heD4gY3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7
CiAgICAgY29uc3QgQ1NTTnVtZXJpY0FycmF5JiB2YWx1ZXMoKSBjb25zdDsKICAgICAKIHByaXZh
dGU6Ci0gICAgQ1NTTWF0aE1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBDU1NNYXRo
TWF4KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgUmVmPENTU051bWVyaWNBcnJh
eT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1l
cmljL0NTU01hdGhNaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHAJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChDU1NNYXRoTWluKTsKIAotUmVmPENTU01hdGhNaW4+IENTU01hdGhNaW46
OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVmPENTU01hdGhN
aW4+IENTU01hdGhNaW46OmNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVy
aXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTWF0aE1pbihXVEZNb3ZlKG51
bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoTWluOjpDU1NNYXRoTWluKFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NNYXRoTWluOjpDU1NNYXRoTWluKEZpeGVkVmVjdG9y
PENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKICAgICA6IENTU01hdGhWYWx1ZShDU1NNYXRo
T3BlcmF0b3I6Ok1pbikKICAgICAsIG1fdmFsdWVzKENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUobnVtYmVyaXNoZXMpKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aE1pbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5oCShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNzIENTU01hdGhN
aW4gOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENT
U01hdGhNaW4pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTWF0aE1pbj4gY3JlYXRlKFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTWF0aE1pbj4gY3JlYXRl
KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgY29uc3QgQ1NTTnVtZXJpY0FycmF5
JiB2YWx1ZXMoKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgQ1NTTWF0aE1pbihWZWN0b3I8
Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBDU1NNYXRoTWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlz
aD4mJik7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9k
dWN0LmNwcAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChD
U1NNYXRoUHJvZHVjdCk7CiAKLVJlZjxDU1NNYXRoUHJvZHVjdD4gQ1NTTWF0aFByb2R1Y3Q6OmNy
ZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVmPENTU01hdGhQcm9k
dWN0PiBDU1NNYXRoUHJvZHVjdDo6Y3JlYXRlKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiBu
dW1iZXJpc2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoUHJvZHVjdChX
VEZNb3ZlKG51bWJlcmlzaGVzKSkpOwogfQogCi1DU1NNYXRoUHJvZHVjdDo6Q1NTTWF0aFByb2R1
Y3QoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhQcm9kdWN0OjpD
U1NNYXRoUHJvZHVjdChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiAg
ICAgOiBDU1NNYXRoVmFsdWUoQ1NTTWF0aE9wZXJhdG9yOjpQcm9kdWN0KQogICAgICwgbV92YWx1
ZXMoQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFBy
b2R1Y3QuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMTMg
QEAgY2xhc3MgQ1NTTnVtZXJpY0FycmF5OwogY2xhc3MgQ1NTTWF0aFByb2R1Y3QgOiBwdWJsaWMg
Q1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU01hdGhQcm9kdWN0
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU01hdGhQcm9kdWN0PiBjcmVhdGUoVmVjdG9y
PENTU051bWJlcmlzaD4mJik7CisgICAgc3RhdGljIFJlZjxDU1NNYXRoUHJvZHVjdD4gY3JlYXRl
KEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7CiAgICAgY29uc3QgQ1NTTnVtZXJpY0FycmF5
JiB2YWx1ZXMoKSBjb25zdDsKICAgICAKICAgICBDU1NNYXRoT3BlcmF0b3IgZ2V0T3BlcmF0b3Io
KSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NNYXRoT3BlcmF0b3I6OlByb2R1Y3Q7IH0KIAogcHJp
dmF0ZToKLSAgICBDU1NNYXRoUHJvZHVjdChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBD
U1NNYXRoUHJvZHVjdChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIFJlZjxDU1NO
dW1lcmljQXJyYXk+IG1fdmFsdWVzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCShyZXZpc2lvbiAyODcyMDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NTTWF0aFN1bSk7CiAKLVJlZjxDU1NNYXRoU3VtPiBD
U1NNYXRoU3VtOjpjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK1Jl
ZjxDU1NNYXRoU3VtPiBDU1NNYXRoU3VtOjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmIG51bWJlcmlzaGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU01hdGhTdW0o
V1RGTW92ZShudW1iZXJpc2hlcykpKTsKIH0KIAotQ1NTTWF0aFN1bTo6Q1NTTWF0aFN1bShWZWN0
b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorQ1NTTWF0aFN1bTo6Q1NTTWF0aFN1bShG
aXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiAgICAgOiBDU1NNYXRoVmFs
dWUoQ1NTTWF0aE9wZXJhdG9yOjpTdW0pCiAgICAgLCBtX3ZhbHVlcyhDU1NOdW1lcmljQXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAkocmV2aXNpb24gMjg3MjA2KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDExICszOCwxMSBAQCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFz
cyBDU1NNYXRoU3VtIDogcHVibGljIENTU01hdGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChDU1NNYXRoU3VtKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU01hdGhTdW0+
IGNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01hdGhT
dW0+IGNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIGNvbnN0IENTU051
bWVyaWNBcnJheSYgdmFsdWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTTWF0aFN1bShW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBDU1NNYXRoU3VtKEZpeGVkVmVjdG9yPENTU051
bWJlcmlzaD4mJik7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NO
dW1lcmljQXJyYXkuY3BwCShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDIyICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChDU1NOdW1lcmljQXJyYXkpOwogCi1SZWY8Q1NTTnVtZXJpY0FycmF5PiBDU1NOdW1l
cmljQXJyYXk6OmNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorUmVm
PENTU051bWVyaWNBcnJheT4gQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoY29uc3QgRml4ZWRWZWN0
b3I8Q1NTTnVtYmVyaXNoPiYgbnVtYmVyaXNoZXMpCiB7Ci0gICAgVmVjdG9yPFJlZjxDU1NOdW1l
cmljVmFsdWU+PiB2YWx1ZXM7Ci0gICAgdmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVt
YmVyaXNoZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mJiBudW1iZXJpc2ggOiBudW1iZXJpc2hl
cykKLSAgICAgICAgdmFsdWVzLnVuY2hlY2tlZEFwcGVuZChDU1NOdW1lcmljVmFsdWU6OnJlY3Rp
ZnlOdW1iZXJpc2goV1RGTW92ZShudW1iZXJpc2gpKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTTnVtZXJpY0FycmF5KFdURk1vdmUodmFsdWVzKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU051bWVyaWNBcnJheShXVEY6Om1hcChudW1iZXJpc2hlcywgW10oYXV0
byYgbnVtYmVyaXNoKSAtPiBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiB7CisgICAgICAgIHJldHVybiBD
U1NOdW1lcmljVmFsdWU6OnJlY3RpZnlOdW1iZXJpc2goY29uc3RfY2FzdDxDU1NOdW1iZXJpc2gm
Jj4obnVtYmVyaXNoKSk7CisgICAgfSkpKTsKIH0KIAotUmVmPENTU051bWVyaWNBcnJheT4gQ1NT
TnVtZXJpY0FycmF5OjpjcmVhdGUoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVl
cykKK1JlZjxDU1NOdW1lcmljQXJyYXk+IENTU051bWVyaWNBcnJheTo6Y3JlYXRlKEZpeGVkVmVj
dG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NOdW1lcmljQXJyYXkoV1RGTW92ZSh2YWx1ZXMpKSk7CiB9CiAKLUNTU051bWVy
aWNBcnJheTo6Q1NTTnVtZXJpY0FycmF5KFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJiB2
YWx1ZXMpCitDU1NOdW1lcmljQXJyYXk6OkNTU051bWVyaWNBcnJheShGaXhlZFZlY3RvcjxSZWY8
Q1NTTnVtZXJpY1ZhbHVlPj4mJiB2YWx1ZXMpCiAgICAgOiBtX2FycmF5KFdURk1vdmUodmFsdWVz
KSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVt
ZXJpY0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NOdW1lcmljQXJyYXkuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTQgKzQwLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsK
IGNsYXNzIENTU051bWVyaWNBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU051bWVyaWNBcnJh
eT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTnVtZXJpY0FycmF5KTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENTU051bWVyaWNBcnJheT4gY3JlYXRlKFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYpOwotICAgIHN0YXRpYyBSZWY8Q1NTTnVtZXJpY0FycmF5PiBjcmVhdGUoVmVjdG9y
PFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU051bWVyaWNBcnJh
eT4gY3JlYXRlKGNvbnN0IEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mKTsKKyAgICBzdGF0aWMg
UmVmPENTU051bWVyaWNBcnJheT4gY3JlYXRlKEZpeGVkVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFs
dWU+PiYmKTsKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS5zaXpl
KCk7IH07CiAgICAgRXhjZXB0aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IGl0ZW0oc2l6ZV90
IGluZGV4KTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IG1f
YXJyYXk7Ci0gICAgQ1NTTnVtZXJpY0FycmF5KFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4m
Jik7CisgICAgRml4ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IG1fYXJyYXk7CisgICAg
Q1NTTnVtZXJpY0FycmF5KEZpeGVkVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgdW5zaWduZWQg
Q29udGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bgogICAgIHJldHVybiBzdGQ6OmRpc3RhbmNl
KGNoaWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKK0V4Y2VwdGlvbk9y
PHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYg
dmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05v
ZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAt
MTAxMyw3ICsxMDEzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5k
KAogICAgIHJldHVybiBhcHBlbmRDaGlsZCgqbm9kZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+
IENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCitF
eGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpwcmVwZW5kKEZpeGVkVmVjdG9yPE5vZGVP
clN0cmluZz4mJiB2ZWN0b3IpCiB7CiAgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0Tm9kZXNPclN0
cmluZ3NJbnRvTm9kZShXVEZNb3ZlKHZlY3RvcikpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJO
b2RlOjpwcmVwZW5kCiB9CiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLXBh
cmVudG5vZGUtcmVwbGFjZWNoaWxkcmVuCi1FeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2Rl
OjpyZXBsYWNlQ2hpbGRyZW4oVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCitFeGNlcHRp
b25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGRyZW4oRml4ZWRWZWN0b3I8Tm9k
ZU9yU3RyaW5nPiYmIHZlY3RvcikKIHsKICAgICAvLyBzdGVwIDEKICAgICBhdXRvIHJlc3VsdCA9
IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUodmVjdG9yKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwxMCArMTI5
LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBmaXJzdEVsZW1lbnRD
aGlsZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hp
bGQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZEVsZW1lbnRDb3Vu
dCgpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZChWZWN0b3I8Tm9kZU9yU3Ry
aW5nPiYmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZChGaXhlZFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHByZXBlbmQoRml4ZWRWZWN0b3I8Tm9k
ZU9yU3RyaW5nPiYmKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZHJlbihW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlQ2hp
bGRyZW4oRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGVuc3VyZVByZUluc2VydGlvblZhbGlkaXR5KE5vZGUmIG5ld0NoaWxkLCBOb2RlKiByZWZD
aGlsZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjg3MjA2KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMz
Niw3ICszMzM2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZQog
ICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZShE
b2N1bWVudCogZW50cnlEb2N1bWVudCwgVmVjdG9yPFN0cmluZz4mJiBzdHJpbmdzKQorRXhjZXB0
aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBGaXhl
ZFZlY3RvcjxTdHJpbmc+JiYgc3RyaW5ncykKIHsKICAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkg
fHwgbV90aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTMzNDgsNyArMzM0OCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZShEb2N1bWUKICAgICByZXR1cm4gd3JpdGUo
ZW50cnlEb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERv
Y3VtZW50Ojp3cml0ZWxuKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYm
IHN0cmluZ3MpCitFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGVsbihEb2N1bWVudCog
ZW50cnlEb2N1bWVudCwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCiB7CiAgICAgaWYg
KCFpc0hUTUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3Vu
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRl
ICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlTdGF0ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTY5Miw4ICs2OTMsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjYW5jZWxQYXJzaW5nKCk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZShEb2N1bWVu
dCogZW50cnlEb2N1bWVudCwgU2VnbWVudGVkU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPHZvaWQ+IHdyaXRlKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8
U3RyaW5nPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZWxu
KERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZShEb2N1bWVudCogZW50cnlEb2N1bWVudCwg
Rml4ZWRWZWN0b3I8U3RyaW5nPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2
b2lkPiB3cml0ZWxuKERvY3VtZW50KiBlbnRyeURvY3VtZW50LCBGaXhlZFZlY3RvcjxTdHJpbmc+
JiYpOwogCiAgICAgYm9vbCB3ZWxsRm9ybWVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWxsRm9ybWVk
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAJKHJldmlzaW9uIDI4
NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBSZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKERvCiAgICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmll
ciwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3Rh
dGlvbkFuZ2xlLCBmb3JjZSk7CiB9CiAKLVJlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6OmNy
ZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRv
dWNoPj4mJiB0b3VjaGVzKQorUmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91
Y2hMaXN0KERvY3VtZW50JiwgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3Vj
aD4+JiYgdG91Y2hlcykKIHsKICAgICByZXR1cm4gVG91Y2hMaXN0OjpjcmVhdGUoV1RGTW92ZSh0
b3VjaGVzKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgJKHJldmlzaW9u
IDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDcgKzQ0LDcg
QEAgY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgRXZlbnRUYXJnZXQqLCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFn
ZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBm
bG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSk7Ci0gICAgc3RhdGljIFJlZjxUb3VjaExp
c3Q+IGNyZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFRvdWNoPj4mJik7CisgICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRvdWNoTGlz
dChEb2N1bWVudCYsIEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYm
KTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDI4NzIwNikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEzLDcgKzUxMyw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmFwcGVuZENoaWxkKE5vZGUKICAgICByZXR1cm4g
ZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKnRoaXMpLmFwcGVuZENoaWxkKG5ld0NoaWxkKTsKIH0K
IAotc3RhdGljIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9t
Tm9kZU9yU3RyaW5nVmVjdG9yKGNvbnN0IFZlY3RvcjxOb2RlT3JTdHJpbmc+JiB2ZWN0b3IpCitz
dGF0aWMgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2Rl
T3JTdHJpbmdWZWN0b3IoY29uc3QgRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYgdmVjdG9yKQog
ewogICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0OwogICAgIGZvciAoY29uc3QgYXV0
byYgdmFyaWFudCA6IHZlY3RvcikgewpAQCAtNTQzLDcgKzU0Myw3IEBAIHN0YXRpYyBSZWZQdHI8
Tm9kZT4gZmlyc3RGb2xsb3dpbmdTaWJsaW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9k
ZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKK0V4Y2VwdGlvbk9y
PFJlZlB0cjxOb2RlPj4gTm9kZTo6Y29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoRml4ZWRW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBpZiAobm9k
ZU9yU3RyaW5nVmVjdG9yLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01
NjksNyArNTY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBOb2RlOjpjb252ZXJ0Tgog
ICAgIHJldHVybiBSZWZQdHI8Tm9kZT4geyBXVEZNb3ZlKG5vZGVUb1JldHVybikgfTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YmVmb3JlKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9k
ZU9yU3RyaW5nVmVjdG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YmVmb3JlKEZpeGVkVmVj
dG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKQEAg
LTU5Myw3ICs1OTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpiZWZvcmUoVmVjdG9yPE5v
CiAgICAgcmV0dXJuIHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2RlLCB2aWFibGVQcmV2aW91c1Np
YmxpbmcuZ2V0KCkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjphZnRlcihWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IE5v
ZGU6OmFmdGVyKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3Ip
CiB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAg
ICBpZiAoIXBhcmVudCkKQEAgLTYxMiw3ICs2MTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2Rl
OjphZnRlcihWZWN0b3I8Tm9kCiAgICAgcmV0dXJuIHBhcmVudC0+aW5zZXJ0QmVmb3JlKCpub2Rl
LCB2aWFibGVOZXh0U2libGluZy5nZXQoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6
OnJlcGxhY2VXaXRoKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQor
RXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6cmVwbGFjZVdpdGgoRml4ZWRWZWN0b3I8Tm9kZU9yU3Ry
aW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4g
cGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGFjdFVuaXF1
ZVB0clR1cGxlLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CkBAIC0xODQsOSArMTg1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIEVsZW1lbnQqIG5leHRFbGVtZW50U2libGluZygpIGNvbnN0OwogCiAgICAgLy8gRnJvbSB0
aGUgQ2hpbGROb2RlIC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjaGlsZG5vZGUKLSAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBiZWZvcmUoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7Ci0gICAg
RXhjZXB0aW9uT3I8dm9pZD4gYWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7Ci0gICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYmVmb3JlKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gYWZ0ZXIoRml4ZWRWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlV2l0aChGaXhlZFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZSgpOwog
CiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQpAQCAtNjkxLDcgKzY5Miw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZShTdHlsZTo6VmFsaWRpdHks
IFN0eWxlOjpJbnZhbGlkYXRpb25Nb2RlID0gU3R5bGU6OkludmFsaWRhdGlvbk1vZGU6Ok5vcm1h
bCk7CiAgICAgdm9pZCB1cGRhdGVBbmNlc3RvcnNGb3JTdHlsZVJlY2FsYygpOwogCi0gICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAK
IHByaXZhdGU6CiAgICAgdmlydHVhbCBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oCShyZXZpc2lvbiAyODcyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNl
bGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlICJUb3VjaC5oIgorI2luY2x1ZGUg
PHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQxLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hMaXN0KTsK
ICAgICB9Ci0gICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZShWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKKyAgICBzdGF0aWMgUmVmPFRvdWNoTGlz
dD4gY3JlYXRlKEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRv
dWNoZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUb3VjaExpc3QoV1RG
TW92ZSh0b3VjaGVzKSkpOwogICAgIH0KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBUb3VjaExpc3QoKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBUb3VjaExpc3Qo
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCisgICAgZXhw
bGljaXQgVG91Y2hMaXN0KEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+
PiYmIHRvdWNoZXMpCiAgICAgewogICAgICAgICBtX3ZhbHVlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHRvdWNoZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiB0b3VjaCA6IHRvdWNoZXMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCShyZXZpc2lvbiAyODcyMDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDcgKzk3LDcgQEAgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6
YQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6
YWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCitFeGNlcHRpb25Pcjx2b2lkPiBET01U
b2tlbkxpc3Q6OmFkZChjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCiB7CiAgICAg
cmV0dXJuIGFkZEludGVybmFsKHRva2Vucy5kYXRhKCksIHRva2Vucy5zaXplKCkpOwogfQpAQCAt
MTIyLDcgKzEyMiw3IEBAIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnIK
ICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OnJl
bW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorRXhjZXB0aW9uT3I8dm9pZD4gRE9N
VG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQogewog
ICAgIHJldHVybiByZW1vdmVJbnRlcm5hbCh0b2tlbnMuZGF0YSgpLCB0b2tlbnMuc2l6ZSgpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAkocmV2aXNpb24gMjg3MjA2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQs
OSArNDUsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgaXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zKGNvbnN0IEF0
b21TdHJpbmcmKSBjb25zdDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgRml4ZWRWZWN0b3I8
U3RyaW5nPiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBBdG9tU3RyaW5nJik7
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGJvb2w+IHRvZ2dsZShjb25zdCBBdG9tU3RyaW5nJiwg
c3RkOjpvcHRpb25hbDxib29sPiBmb3JjZSk7CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gcmVwbGFj
ZShjb25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgY29uc3QgQXRvbVN0cmluZyYgbmV3VG9rZW4pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6
c2V0TWF4Q2FudmFzQXJlYQogICAgIG1heENhbnZhc0FyZWFGb3JUZXN0aW5nID0gc2l6ZTsKIH0K
IAotRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZh
c0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIGNvbnN0IFN0
cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1
bWVudHMpCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29u
c3QgU3RyaW5nJiBjb250ZXh0SWQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93
bj4+JiYgYXJndW1lbnRzKQogewogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgaWYgKG1f
Y29udGV4dC0+aXNQbGFjZWhvbGRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAK
ICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5nJiBj
b250ZXh0SWQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1l
bnRzKTsKIAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHQoY29uc3QgU3Ry
aW5nJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFz
OjpjcmVhdGVDb250ZXh0V2ViR0wKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotRXhjZXB0
aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gT2Zmc2NyZWVu
Q2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBSZW5kZXJpbmdD
b250ZXh0VHlwZSBjb250ZXh0VHlwZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+
JiYgYXJndW1lbnRzKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBSZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgRml4ZWRWZWN0b3I8
SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fZGV0
YWNoZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCShyZXZpc2lvbiAyODcyMDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJQaXBlLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0
Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAg
LTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBy
ZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAKLSAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRl
eHQ+PiBnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlw
ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBnZXRD
b250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZW5kZXJpbmdDb250ZXh0VHlwZSwgRml4ZWRW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOwogICAg
IHZvaWQgY29udmVydFRvQmxvYihJbWFnZUVuY29kZU9wdGlvbnMmJiwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4
NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdp
ZHRoLCBmbAogICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVj
dCgqcGFnZSwgdXBkYXRlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRU
aW1lb3V0KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVv
dXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2Vw
dGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRUaW1lb3V0KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVs
ZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAgIFJlZlB0ciBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTE4MTksNyArMTgxOSw3
IEBAIHZvaWQgRE9NV2luZG93OjpjbGVhclRpbWVvdXQoaW50IHRpbWVvdXQKICAgICBET01UaW1l
cjo6cmVtb3ZlQnlJZCgqY29udGV4dCwgdGltZW91dElkKTsKIH0KIAotRXhjZXB0aW9uT3I8aW50
PiBET01XaW5kb3c6OnNldEludGVydmFsKHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+
IGFjdGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYm
IGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRJbnRlcnZhbChzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBGaXhlZFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICBSZWZQ
dHIgY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbmNsdWRlICJXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGFuZGxlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJv
bmcuaD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNU
aW1lLmg+CkBAIC0yOTMsOSArMjk0LDkgQEAgcHVibGljOgogICAgIFZpc3VhbFZpZXdwb3J0JiB2
aXN1YWxWaWV3cG9ydCgpOwogCiAgICAgLy8gVGltZXJzCi0gICAgRXhjZXB0aW9uT3I8aW50PiBz
ZXRUaW1lb3V0KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwg
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNl
cHRpb25PcjxpbnQ+IHNldFRpbWVvdXQoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4s
IGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFy
Z3VtZW50cyk7CiAgICAgdm9pZCBjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCk7Ci0gICAgRXhj
ZXB0aW9uT3I8aW50PiBzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9u
PiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3Vt
ZW50cyk7CisgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8
U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFySW50ZXJ2YWwoaW50IHRp
bWVvdXRJZCk7CiAKICAgICBpbnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJlZjxSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVDYWxsYmFjaz4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg3MjA2
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGVk
aWNhdGVkV29ya2VyR2xvYmFsUwogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1cmxzKQorRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdXJscykKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OmltcG9ydFNjcmlwdHModXJscyk7CiAgICAgdGhyZWFk
KCkud29ya2VyT2JqZWN0UHJveHkoKS5yZXBvcnRQZW5kaW5nQWN0aXZpdHkoaGFzUGVuZGluZ0Fj
dGl2aXR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBUeXBlOjpEZWRpY2F0ZWRXb3JrZXI7IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMpIGZpbmFsOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYg
dXJscykgZmluYWw7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcHJlcGFyZUZvckRlc3RydWN0aW9uKCkgZmlu
YWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAkocmV2aXNpb24gMjg3MjA2KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFdvcmtl
ckdsb2JhbFNjb3BlOjpzZXRJc09ubGluZShib29sCiAgICAgICAgIG1fbmF2aWdhdG9yLT5zZXRJ
c09ubGluZShpc09ubGluZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gV29ya2VyR2xvYmFsU2Nv
cGU6OnNldFRpbWVvdXQoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBp
bnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRz
KQorRXhjZXB0aW9uT3I8aW50PiBXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dChzdGQ6OnVu
aXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBGaXhlZFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBoZXJlPyBPciBzaG91bGQgaXQgaGFw
cGVuIHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAgIGlmIChhY3Rpb24tPnR5cGUoKSA9
PSBTY2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lk
IFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhclRpbWVvdXQoaW50CiAgICAgRE9NVGltZXI6OnJlbW92
ZUJ5SWQoKnRoaXMsIHRpbWVvdXRJZCk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gV29ya2VyR2xv
YmFsU2NvcGU6OnNldEludGVydmFsKHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFj
dGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFy
Z3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFs
KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIEZp
eGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyBjaGVjayByZWFsbHkgaGFwcGVuIGhlcmU/IE9yIHNob3Vs
ZCBpdCBoYXBwZW4gd2hlbiBjb2RlIGlzIGFib3V0IHRvIGV2YWw/CiAgICAgaWYgKGFjdGlvbi0+
dHlwZSgpID09IFNjaGVkdWxlZEFjdGlvbjo6VHlwZTo6Q29kZSkgewpAQCAtMzM4LDcgKzMzOCw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNsZWFySW50ZXJ2YWwoaW4KICAgICBET01UaW1l
cjo6cmVtb3ZlQnlJZCgqdGhpcywgdGltZW91dElkKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4g
V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVy
bHMpCitFeGNlcHRpb25Pcjx2b2lkPiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhj
b25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JiB1cmxzKQogewogICAgIEFTU0VSVChjb250ZW50U2Vj
dXJpdHlQb2xpY3koKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVz
c2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xMDcsMTQgKzEwOCwxNCBAQCBwdWJs
aWM6CiAgICAgV29ya2VyTG9jYXRpb24mIGxvY2F0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB1cmxzKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGlt
cG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdXJscyk7CiAgICAgV29ya2Vy
TmF2aWdhdG9yJiBuYXZpZ2F0b3IoKTsKIAogICAgIHZvaWQgc2V0SXNPbmxpbmUoYm9vbCk7CiAK
LSAgICBFeGNlcHRpb25PcjxpbnQ+IHNldFRpbWVvdXQoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxl
ZEFjdGlvbj4sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4m
JiBhcmd1bWVudHMpOworICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0VGltZW91dChzdGQ6OnVuaXF1
ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFyVGltZW91dChp
bnQgdGltZW91dElkKTsKLSAgICBFeGNlcHRpb25PcjxpbnQ+IHNldEludGVydmFsKHN0ZDo6dW5p
cXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25n
PEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25PcjxpbnQ+IHNldElu
dGVydmFsKHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgRml4
ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIHZv
aWQgY2xlYXJJbnRlcnZhbChpbnQgdGltZW91dElkKTsKIAogICAgIGJvb2wgaXNTZWN1cmVDb250
ZXh0KCkgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg3MjEyKQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAy
MS0xMi0xNyAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYklETF0gY29udmVydFZhcmlhZGljQXJndW1lbnRzKCkgc2hvdWxkIHJldHVybiBhIEZpeGVk
VmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI2MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIEFk
ZCAvIHJlbW92ZSB0b2tlbnMgb25lIGJ5IG9uZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBy
ZXRyaWV2ZQorICAgICAgICB0aGUgc2l6ZSBvZiB2YV9saXN0IGluIGFkdmFuY2Ugc28gd2UgY291
bGQgY29uc3RydWN0IGEgRml4ZWRWZWN0b3IuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVRva2VuTGlzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRfZG9tX2RvbV90b2tlbl9saXN0X2FkZCk6CisgICAgICAgICh3ZWJraXRfZG9tX2Rv
bV90b2tlbl9saXN0X3JlbW92ZSk6CisKIDIwMjEtMTItMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZVBhZ2VHcm91cApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVRva2VuTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTVRva2VuTGlzdC5jcHAJKHJldmlzaW9uIDI4NzIwNikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01U
b2tlbkxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTYgKzE4OSwxNiBAQCB2b2lkIHdl
YmtpdF9kb21fZG9tX3Rva2VuX2xpc3RfYWRkKFdlYktpCiAgICAgZ19yZXR1cm5faWZfZmFpbCgh
ZXJyb3IgfHwgISplcnJvcik7CiAgICAgV2ViQ29yZTo6RE9NVG9rZW5MaXN0KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIHZhX2xpc3QgdmFyaWFkaWNQYXJhbWV0ZXJMaXN0OwotICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gY29udmVydGVkVG9rZW5zOwogICAgIHZhX3N0YXJ0KHZhcmlh
ZGljUGFyYW1ldGVyTGlzdCwgZXJyb3IpOwotICAgIHdoaWxlIChnY2hhciogdmFyaWFkaWNQYXJh
bWV0ZXIgPSB2YV9hcmcodmFyaWFkaWNQYXJhbWV0ZXJMaXN0LCBnY2hhciopKQotICAgICAgICBj
b252ZXJ0ZWRUb2tlbnMuYXBwZW5kKFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YXJpYWRpY1BhcmFt
ZXRlcikpOwotICAgIHZhX2VuZCh2YXJpYWRpY1BhcmFtZXRlckxpc3QpOwotICAgIGF1dG8gcmVz
dWx0ID0gaXRlbS0+YWRkKFdURk1vdmUoY29udmVydGVkVG9rZW5zKSk7Ci0gICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0gV2ViQ29yZTo6
RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUo
KSk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFt
ZSk7CisgICAgd2hpbGUgKGdjaGFyKiB2YXJpYWRpY1BhcmFtZXRlciA9IHZhX2FyZyh2YXJpYWRp
Y1BhcmFtZXRlckxpc3QsIGdjaGFyKikpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBpdGVtLT5h
ZGQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhcmlhZGljUGFyYW1ldGVyKSk7CisgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZGVzY3JpcHRpb24g
PSBXZWJDb3JlOjpET01FeGNlcHRpb246OmRlc2NyaXB0aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkuY29kZSgpKTsKKyAgICAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwg
ZGVzY3JpcHRpb24ubmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0K
KyAgICB2YV9lbmQodmFyaWFkaWNQYXJhbWV0ZXJMaXN0KTsKIH0KIAogdm9pZCB3ZWJraXRfZG9t
X2RvbV90b2tlbl9saXN0X3JlbW92ZShXZWJLaXRET01ET01Ub2tlbkxpc3QqIHNlbGYsIEdFcnJv
cioqIGVycm9yLCAuLi4pCkBAIC0yMTAsMTQgKzIxMCwxNSBAQCB2b2lkIHdlYmtpdF9kb21fZG9t
X3Rva2VuX2xpc3RfcmVtb3ZlKFdlCiAgICAgdmFfbGlzdCB2YXJpYWRpY1BhcmFtZXRlckxpc3Q7
CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBjb252ZXJ0ZWRUb2tlbnM7CiAgICAgdmFfc3RhcnQo
dmFyaWFkaWNQYXJhbWV0ZXJMaXN0LCBlcnJvcik7Ci0gICAgd2hpbGUgKGdjaGFyKiB2YXJpYWRp
Y1BhcmFtZXRlciA9IHZhX2FyZyh2YXJpYWRpY1BhcmFtZXRlckxpc3QsIGdjaGFyKikpCi0gICAg
ICAgIGNvbnZlcnRlZFRva2Vucy5hcHBlbmQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhcmlhZGlj
UGFyYW1ldGVyKSk7Ci0gICAgdmFfZW5kKHZhcmlhZGljUGFyYW1ldGVyTGlzdCk7Ci0gICAgYXV0
byByZXN1bHQgPSBpdGVtLT5yZW1vdmUoV1RGTW92ZShjb252ZXJ0ZWRUb2tlbnMpKTsKLSAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBX
ZWJDb3JlOjpET01FeGNlcHRpb246OmRlc2NyaXB0aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkuY29kZSgpKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19m
cm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlw
dGlvbi5uYW1lKTsKKyAgICB3aGlsZSAoZ2NoYXIqIHZhcmlhZGljUGFyYW1ldGVyID0gdmFfYXJn
KHZhcmlhZGljUGFyYW1ldGVyTGlzdCwgZ2NoYXIqKSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9
IGl0ZW0tPnJlbW92ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFyaWFkaWNQYXJhbWV0ZXIpKTsK
KyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgYXV0byBk
ZXNjcmlwdGlvbiA9IFdlYkNvcmU6OkRPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24ocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOworICAgICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJh
bChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5s
ZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgfQorICAgIHZhX2VuZCh2YXJpYWRpY1BhcmFtZXRlckxpc3QpOwogfQogCiBnYm9v
bGVhbiB3ZWJraXRfZG9tX2RvbV90b2tlbl9saXN0X3RvZ2dsZShXZWJLaXRET01ET01Ub2tlbkxp
c3QqIHNlbGYsIGNvbnN0IGdjaGFyKiB0b2tlbiwgZ2Jvb2xlYW4gZm9yY2UsIEdFcnJvcioqIGVy
cm9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447522</attachid>
            <date>2021-12-18 09:39:59 -0800</date>
            <delta_ts>2021-12-20 18:27:06 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-232639-20211218173957.patch</filename>
            <type>text/plain</type>
            <size>61835</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTE4ICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW50cm9kdWNlIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dCBjb25zdHJ1Y3RvciBmb3IgRml4ZWRWZWN0b3IgYW5kIGEgV1RGOjptYXAoKSBvdmVybG9hZC4K
KworICAgICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6Rml4ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjptYXApOgorICAgICAgICAqIHd0Zi9WZWN0
b3JUcmFpdHMuaDoKKwogMjAyMS0xMi0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zp
eGVkVmVjdG9yLmgJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDE2IEBAIHB1YmxpYzoKICAgICB7IH0K
ICAgICBGaXhlZFZlY3RvcihGaXhlZFZlY3RvciYmIG90aGVyKSA9IGRlZmF1bHQ7CiAKKyAgICBG
aXhlZFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQorICAg
ICAgICA6IG1fc3RvcmFnZShpbml0aWFsaXplckxpc3Quc2l6ZSgpID8gU3RvcmFnZTo6Y3JlYXRl
KGluaXRpYWxpemVyTGlzdC5zaXplKCkpLm1vdmVUb1VuaXF1ZVB0cigpIDogbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGluaXRpYWxpemVyTGlzdCkgeworICAgICAgICAgICAgbV9zdG9yYWdlLT5hdChp
bmRleCkgPSBlbGVtZW50OworICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgRml4ZWRWZWN0b3ImIG90aGVyKQog
ICAgIHsKICAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90aGVyKTsKQEAgLTE2Nyw2ICsxNzcsMjAg
QEAgaW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxUPiYgYSwgRml4ZQogICAgIGEuc3dhcChi
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVu
YW1lIFJldHVyblR5cGUgPSB0eXBlbmFtZSBzdGQ6Omludm9rZV9yZXN1bHQ8TWFwRnVuY3Rpb24s
IGNvbnN0IFQmPjo6dHlwZT4KK0ZpeGVkVmVjdG9yPFJldHVyblR5cGU+IG1hcChjb25zdCBGaXhl
ZFZlY3RvcjxUPiYgc291cmNlLCBNYXBGdW5jdGlvbiYmIG1hcEZ1bmN0aW9uKQoreworICAgIEZp
eGVkVmVjdG9yPFJldHVyblR5cGU+IHJlc3VsdChzb3VyY2Uuc2l6ZSgpKTsKKworICAgIHNpemVf
dCByZXN1bHRJbmRleCA9IDA7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogc291cmNlKSB7
CisgICAgICAgIHJlc3VsdFtyZXN1bHRJbmRleF0gPSBtYXBGdW5jdGlvbihpdGVtKTsKKyAgICAg
ICAgcmVzdWx0SW5kZXgrKzsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGaXhlZFZlY3RvcjsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1ZlY3RvclRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rv
clRyYWl0cy5oCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFp
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWZWN0b3JUcmFpdHM8UmVmUHRyPFA+PiA6
IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6dW5pcXVlX3B0cjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3Rv
clRyYWl0cyB7IH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0
czxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFA+PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsg
fTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFJlZjxQPj4g
OiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVj
dG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkgQEAKKzIwMjEtMTItMTggIEFsZXhleSBT
aHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJJRExdIGNvbnZlcnRW
YXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4gYSBGaXhlZFZlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTaW5jZSBpdCdzIGhpZ2hseSB1
bmxpa2VseSAoQ1NTTnVtZXJpY0FycmF5IGlzIGltbXV0YWJsZSkgdGhhdCB3ZSB3b3VsZCBuZWVk
IHRvCisgICAgICAgIG11dGF0ZSB2YXJpYWRpYyBhcmd1bWVudHMgYmVmb3JlIHByb2Nlc3Npbmcg
dGhlbSBvciBzdG9yaW5nLCBhbmQgd2Uga25vdyB0aGVpciBzaXplCisgICAgICAgIHVwZnJvbnQs
IGl0IG1ha2VzIHRoZSBtb3N0IHNlbnNlIHRvIHNhdmUgc29tZSBtZW1vcnkgYnkgdXRpbGl6aW5n
IGEgRml4ZWRWZWN0b3IuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWR1Y2VzIHNpemVvZihTY2hl
ZHVsZWRBY3Rpb24pIGJ5IDgsIGVuYWJsaW5nIG1lbW9yeS1uZXV0cmFsIGFkZGl0aW9uCisgICAg
ICAgIG9mIGEgZmllbGQgbGlrZSBtX2luY3VtYmVudEdsb2JhbE9iamVjdC4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldFN0cmVhbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlkcyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFRyYWNrKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0TWVkaWFTdHJl
YW1JZHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRW
YXJpYWRpYy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFZhcmlhZGljQXJndW1lbnRzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NoZWR1bGVkQWN0aW9uOjphZGRBcmd1bWVudHMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL0NTU051bWVyaWNW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnN1Yik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NOdW1lcmljVmFsdWU6Om11bCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6
OmRpdik6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1pbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1heCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NO
dW1lcmljVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6
OnRvU3VtKToKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTWF0aE1heDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hdGhNYXg6OkNT
U01hdGhNYXgpOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oOgor
ICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aE1p
bjo6Q1NTTWF0aE1pbik6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWlu
Lmg6CisgICAgICAgICogY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NNYXRoUHJvZHVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU01hdGhQcm9kdWN0OjpDU1NNYXRoUHJvZHVjdCk6CisgICAgICAgICogY3NzL3R5cGVk
b20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aFN1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXRoU3VtOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWF0aFN1bTo6Q1NTTWF0aFN1bSk6CisgICAgICAgICog
Y3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmg6CisgICAgICAgICogY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTnVtZXJp
Y0FycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTnVtZXJpY0FycmF5OjpDU1NO
dW1lcmljQXJyYXkpOgorICAgICAgICAqIGNzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0Fy
cmF5Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNo
aWxkcmVuKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlbG4pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlzdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50VG91
Y2guaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlU2V0
UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphZnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKiBkb20vVG91Y2hMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExpc3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaExpc3Q6OlRvdWNoTGlzdCk6CisgICAgICAg
ICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmUpOgorICAgICAg
ICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Z2V0
Q29udGV4dCk6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuaDoKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldFRpbWVv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXRJbnRlcnZhbCk6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlOjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAyMS0xMi0xOCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCA6LWludGVybmFsLWRpcmVj
dC1mb2N1cyBwc2V1ZG8tY2xhc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAJKHJldmlz
aW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE0LDcgKzQxNCw3IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJrQXNOZWVkaW4KICAgICBtX3BlZXJDb25uZWN0
aW9uLnVwZGF0ZU5lZ290aWF0aW9uTmVlZGVkRmxhZyhldmVudElkKTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVk
aWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJpbmc+JiYpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRw
U2VuZGVyPj4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNr
JiwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmKQogewogICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiUlRDUnRwU2VuZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJS
VENTZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENTaWduYWxpbmdTdGF0ZS5oIgor
I2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0xMTQsNyArMTE1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBTZW5kZXImLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFJlY2VpdmVy
JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25P
cjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxT
dHJpbmc+JiYpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFk
ZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKSB7IH0KIAogICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAkocmV2aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEs
NyBAQCBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKICAgICBzdG9wKCk7
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6
YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
Uik7CiAKQEAgLTE0MywxMSArMTQzLDkgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+
IFJUQ1BlZXJDbwogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhU3RyZWFtSWRzOwotICAg
IGZvciAoYXV0byBzdHJlYW0gOiBzdHJlYW1zKQotICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBl
bmQoc3RyZWFtLmdldCgpLmlkKCkpOwotCi0gICAgcmV0dXJuIG1fYmFja2VuZC0+YWRkVHJhY2so
dHJhY2suZ2V0KCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKKyAgICByZXR1cm4gbV9iYWNr
ZW5kLT5hZGRUcmFjayh0cmFjay5nZXQoKSwgV1RGOjptYXAoc3RyZWFtcywgW10oYXV0byYgc3Ry
ZWFtKSAtPiBTdHJpbmcgeworICAgICAgICByZXR1cm4gc3RyZWFtLmdldCgpLmlkKCk7CisgICAg
fSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyODcy
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPj4mIGN1cnJlbnRUcmFuc2NlaXZl
cnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0Lmxpc3QoKTsgfQogCi0gICAgRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+Jik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmLCBjb25zdCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1l
ZGlhU3RyZWFtPj4mKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVUcmFjayhSVENSdHBT
ZW5kZXImKTsKIAogICAgIHVzaW5nIEFkZFRyYW5zY2VpdmVyVHJhY2tPcktpbmQgPSBzdGQ6OnZh
cmlhbnQ8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBTdHJpbmc+OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAkocmV2
aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsMTQgKzE2MiwxNCBAQCB2b2lkIFJU
Q1J0cFNlbmRlcjo6c2V0UGFyYW1ldGVycyhjb25zdCBSCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+
c2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRTdHJlYW1zKGNvbnN0IFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMpCitFeGNlcHRpb25Pcjx2b2lk
PiBSVENSdHBTZW5kZXI6OnNldFN0cmVhbXMoY29uc3QgRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zKQogewogICAgIHJldHVybiBzZXRNZWRp
YVN0cmVhbUlkcyhXVEY6Om1hcChzdHJlYW1zLCBbXShhdXRvJiBzdHJlYW0pIC0+IFN0cmluZyB7
CiAgICAgICAgIHJldHVybiBzdHJlYW0uZ2V0KCkuaWQoKTsKICAgICB9KSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHN0cmVhbUlkcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0
TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQogewog
ICAgIGlmICghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9zZWQoKSB8fCAhbV9i
YWNrZW5kKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJj
b25uZWN0aW9uIGlzIGNsb3NlZCJfcyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCShyZXZpc2lvbiAyODcyMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHRyYWNr
SWQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tLaW5kOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFN0cmVhbXMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8TWVkaWFTdHJlYW0+PiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlhU3RyZWFt
SWRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRTdHJlYW1zKGNvbnN0IEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFT
dHJlYW0+PiYpOwogCiAgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiAhbV9iYWNr
ZW5kOyB9CiAgICAgdm9pZCBzdG9wKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaAkocmV2aXNpb24g
Mjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKIAogI2lmIEVOQUJM
RShXRUJfUlRDKQogCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmFt
ZXRlcnMoY29uc3QgUlRDUnRwU2VuZFBhcmFtZXRlcnMmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNr
ZW5kPiBjcmVhdGVEVE1GQmFja2VuZCgpID0gMDsKICAgICB2aXJ0dWFsIFJlZjxSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kPiBydGNSdHBUcmFuc2Zvcm1CYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYp
ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSVENEdGxzVHJhbnNwb3J0QmFja2Vu
ZD4gZHRsc1RyYW5zcG9ydEJhY2tlbmQoKSA9IDA7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAkocmV2aXNpb24gMjg3MjIzKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmRvU2V0UmVtb3RlCiAgICAgc3RhcnRMb2dnaW5nU3RhdHMoKTsK
IH0KIAotYm9vbCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRUcmFjayhMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kJiBzZW5kZXIsIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbWVkaWFTdHJlYW1JZHMpCitib29sIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmIHNlbmRlciwgTWVkaWFTdHJlYW1U
cmFjayYgdHJhY2ssIGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIG1lZGlhU3RyZWFtSWRzKQog
ewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcCgpOwog
ICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gIW1fYmFja2VuZDsgfQogCi0gICAg
Ym9vbCBhZGRUcmFjayhMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJiwgTWVkaWFTdHJlYW1UcmFj
ayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgYm9vbCBhZGRUcmFjayhMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kJiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IEZpeGVkVmVjdG9yPFN0
cmluZz4mKTsKICAgICB2b2lkIHJlbW92ZVRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQm
KTsKIAogICAgIHN0cnVjdCBCYWNrZW5kcyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NzIyMykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIs
NyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBW
ZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQorRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2ssIEZpeGVkVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcykKIHsK
ICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpz
ZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgJKHJldmlzaW9uIDI4
NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVkKGNvbnN0IERlZmVy
cmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9ydD4mJik7CiAKLSAgICBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJp
bmc+JiYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrJiwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmKSBmaW5hbDsKICAgICB2
b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOwogCiAgICAgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjg3MjIzKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQ+CiAgICAgcmV0dXJuIGJhY2tlbmQg
PyBtYWtlVW5pcXVlPExpYldlYlJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kPihXVEZNb3ZlKGJhY2tl
bmQpKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0
TWVkaWFTdHJlYW1JZHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmVhbUlkcykKK3ZvaWQgTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0TWVkaWFTdHJlYW1JZHMoY29uc3QgRml4ZWRWZWN0
b3I8U3RyaW5nPiYgc3RyZWFtSWRzKQogewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBp
ZHM7CiAgICAgZm9yIChhdXRvJiBpZCA6IHN0cmVhbUlkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgJKHJldmlzaW9uIDI4NzIyMykKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gY3JlYXRlRFRNRkJhY2tl
bmQoKSBmaW5hbDsKICAgICBSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4gcnRjUnRwVHJhbnNm
b3JtQmFja2VuZCgpIGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEdGxzVHJhbnNwb3J0
QmFja2VuZD4gZHRsc1RyYW5zcG9ydEJhY2tlbmQoKSBmaW5hbDsKLSAgICB2b2lkIHNldE1lZGlh
U3RyZWFtSWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgZmluYWw7CisgICAgdm9pZCBzZXRNZWRp
YVN0cmVhbUlkcyhjb25zdCBGaXhlZFZlY3RvcjxTdHJpbmc+JikgZmluYWw7CiAKICAgICB2b2lk
IHN0YXJ0U291cmNlKCk7CiAgICAgdm9pZCBzdG9wU291cmNlKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgJKHJldmlzaW9u
IDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlh
ZGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIklETFR5
cGVzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9GaXhl
ZFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ3LDcgQEAgc3Ry
dWN0IFZhcmlhZGljQ29udmVydGVyIHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBJ
RExUeXBlPiBWZWN0b3I8dHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46Okl0ZW0+
IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBzaXplX3Qgc3RhcnRJbmRleCkK
K3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IEZpeGVkVmVjdG9yPHR5cGVuYW1lIFZhcmlhZGlj
Q29udmVydGVyPElETFR5cGU+OjpJdGVtPiBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHMoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxG
cmFtZSwgc2l6ZV90IHN0YXJ0SW5kZXgpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC01NSwxNSArNTYsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gVmVj
dG9yPHR5cGVuYQogICAgIGlmIChzdGFydEluZGV4ID49IGxlbmd0aCkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIFZlY3Rvcjx0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6
SXRlbT4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAt
IHN0YXJ0SW5kZXgpOworICAgIEZpeGVkVmVjdG9yPHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVy
PElETFR5cGU+OjpJdGVtPiByZXN1bHQobGVuZ3RoIC0gc3RhcnRJbmRleCk7CiAKKyAgICBzaXpl
X3QgcmVzdWx0SW5kZXggPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwg
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IFZhcmlhZGljQ29udmVydGVyPElE
TFR5cGU+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS51bmNoZWNrZWRB
cmd1bWVudChpKSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHNjb3BlLCAhIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF2YWx1ZSk7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwotICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
KnZhbHVlKSk7CisgICAgICAgIHJlc3VsdFtyZXN1bHRJbmRleF0gPSBXVEZNb3ZlKCp2YWx1ZSk7
CisgICAgICAgIHJlc3VsdEluZGV4Kys7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAko
cmV2aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBTY2hlZHVsZWRBY3Rp
b246OlNjaGVkdWxlZEFjdGlvbihET01XcmFwCiAKIFNjaGVkdWxlZEFjdGlvbjo6flNjaGVkdWxl
ZEFjdGlvbigpID0gZGVmYXVsdDsKIAotdm9pZCBTY2hlZHVsZWRBY3Rpb246OmFkZEFyZ3VtZW50
cyhWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCit2b2lkIFNj
aGVkdWxlZEFjdGlvbjo6YWRkQXJndW1lbnRzKEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAgIG1fYXJndW1lbnRzID0gV1RGTW92ZShhcmd1
bWVudHMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmgJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDMsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWRBY3Rpb24+IGNyZWF0ZShET01XcmFwcGVyV29ybGQmLCBTdHJpbmcmJik7CiAgICAgflNj
aGVkdWxlZEFjdGlvbigpOwogCi0gICAgdm9pZCBhZGRBcmd1bWVudHMoVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj4+JiYpOworICAgIHZvaWQgYWRkQXJndW1lbnRzKEZpeGVkVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsg
Q29kZSwgRnVuY3Rpb24gfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKQEAgLTYwLDcgKzU5LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsK
ICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZnVuY3Rpb247Ci0gICAgVmVjdG9yPEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+IG1fYXJndW1lbnRzOworICAgIEZpeGVkVmVjdG9yPEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+IG1fYXJndW1lbnRzOwogICAgIFN0cmluZyBtX2NvZGU7
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNW
YWx1ZS5jcHAJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L0NTU051bWVyaWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NTTnVtZXJp
Y1ZhbHVlKTsKIAotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjphZGQoVmVj
dG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1l
cmljVmFsdWU6OmFkZChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQogewogICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1wbC4KQEAgLTUyLDcg
KzUyLDcgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjphZAogICAgIHJl
dHVybiAqdGhpczsKIH0KIAotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjpz
dWIoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBD
U1NOdW1lcmljVmFsdWU6OnN1YihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQog
ewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1wbC4KQEAg
LTYwLDcgKzYwLDcgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjpzdQog
ICAgIHJldHVybiAqdGhpczsKIH0KIAotUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1Zh
bHVlOjptdWwoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY1Zh
bHVlPiBDU1NOdW1lcmljVmFsdWU6Om11bChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFs
dWVzKQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1w
bC4KQEAgLTY4LDIxICs2OCwyMSBAQCBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFs
dWU6Om11CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1SZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NO
dW1lcmljVmFsdWU6OmRpdihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKK1JlZjxDU1NO
dW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6ZGl2KEZpeGVkVmVjdG9yPENTU051bWJlcmlz
aD4mJiB2YWx1ZXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAgICAgLy8gRklYTUU6
IGFkZCBpbXBsLgogCiAgICAgcmV0dXJuICp0aGlzOwogfQotUmVmPENTU051bWVyaWNWYWx1ZT4g
Q1NTTnVtZXJpY1ZhbHVlOjptaW4oVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCitSZWY8
Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om1pbihGaXhlZFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYgdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJ
WE1FOiBhZGQgaW1wbC4KIAogICAgIHJldHVybiAqdGhpczsKIH0KLVJlZjxDU1NOdW1lcmljVmFs
dWU+IENTU051bWVyaWNWYWx1ZTo6bWF4KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQor
UmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjptYXgoRml4ZWRWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAv
LyBGSVhNRTogYWRkIGltcGwuCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVmPENTU051bWVyaWNWYWx1
ZT4gQ1NTTnVtZXJpY1ZhbHVlOjpyZQogICAgIH0pOwogfQogCi1ib29sIENTU051bWVyaWNWYWx1
ZTo6ZXF1YWxzKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWUpCitib29sIENTU051bWVyaWNW
YWx1ZTo6ZXF1YWxzKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZSkKIHsKICAgICBV
TlVTRURfUEFSQU0odmFsdWUpOwogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9y
Zy9jc3MtdHlwZWQtb20vI2RvbS1jc3NudW1lcmljdmFsdWUtZXF1YWxzCkBAIC0xMTYsNyArMTE2
LDcgQEAgUmVmPENTU1VuaXRWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjp0byhTdAogICAgIHJldHVy
biBDU1NVbml0VmFsdWU6OmNyZWF0ZSgxLjAsICJudW1iZXIiKTsKIH0KIAotUmVmPENTU01hdGhT
dW0+IENTU051bWVyaWNWYWx1ZTo6dG9TdW0oVmVjdG9yPFN0cmluZz4mJiB1bml0cykKK1JlZjxD
U1NNYXRoU3VtPiBDU1NOdW1lcmljVmFsdWU6OnRvU3VtKEZpeGVkVmVjdG9yPFN0cmluZz4mJiB1
bml0cykKIHsKICAgICBVTlVTRURfUEFSQU0odW5pdHMpOwogICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20vI2RvbS1jc3NudW1lcmljdmFsdWUtdG9zdW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oCShy
ZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmlj
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NT
U3R5bGVWYWx1ZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsMTcgKzQ1LDE3IEBAIGNsYXNz
IENTU051bWVyaWNWYWx1ZSA6IHB1YmxpYyBDU1NTdHlsZVYKIHB1YmxpYzoKICAgICB1c2luZyBD
U1NOdW1iZXJpc2ggPSBzdGQ6OnZhcmlhbnQ8ZG91YmxlLCBSZWZQdHI8Q1NTTnVtZXJpY1ZhbHVl
Pj47CiAKLSAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBhZGQoVmVjdG9yPENTU051bWJlcmlzaD4m
Jik7Ci0gICAgUmVmPENTU051bWVyaWNWYWx1ZT4gc3ViKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYp
OwotICAgIFJlZjxDU1NOdW1lcmljVmFsdWU+IG11bChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsK
LSAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBkaXYoVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0g
ICAgUmVmPENTU051bWVyaWNWYWx1ZT4gbWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAg
IFJlZjxDU1NOdW1lcmljVmFsdWU+IG1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBS
ZWY8Q1NTTnVtZXJpY1ZhbHVlPiBhZGQoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAg
ICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBzdWIoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsK
KyAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBtdWwoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
KTsKKyAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBkaXYoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmKTsKKyAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBtaW4oRml4ZWRWZWN0b3I8Q1NTTnVtYmVy
aXNoPiYmKTsKKyAgICBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBtYXgoRml4ZWRWZWN0b3I8Q1NTTnVt
YmVyaXNoPiYmKTsKICAgICAKLSAgICBib29sIGVxdWFscyhWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
KTsKKyAgICBib29sIGVxdWFscyhGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIAog
ICAgIFJlZjxDU1NVbml0VmFsdWU+IHRvKFN0cmluZyYmKTsKLSAgICBSZWY8Q1NTTWF0aFN1bT4g
dG9TdW0oVmVjdG9yPFN0cmluZz4mJik7CisgICAgUmVmPENTU01hdGhTdW0+IHRvU3VtKEZpeGVk
VmVjdG9yPFN0cmluZz4mJik7CiAgICAgQ1NTTnVtZXJpY1R5cGUgdHlwZSgpOwogICAgIAogICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gcGFyc2UoU3RyaW5nJiYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01h
dGhNYXguY3BwCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRv
bS9udW1lcmljL0NTU01hdGhNYXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NT
TWF0aE1heCk7CiAKLVJlZjxDU1NNYXRoTWF4PiBDU1NNYXRoTWF4OjpjcmVhdGUoVmVjdG9yPENT
U051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK1JlZjxDU1NNYXRoTWF4PiBDU1NNYXRoTWF4Ojpj
cmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU01hdGhNYXgoV1RGTW92ZShudW1iZXJpc2hlcykpKTsKIH0K
IAotQ1NTTWF0aE1heDo6Q1NTTWF0aE1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlz
aGVzKQorQ1NTTWF0aE1heDo6Q1NTTWF0aE1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYg
bnVtYmVyaXNoZXMpCiAgICAgOiBDU1NNYXRoVmFsdWUoQ1NTTWF0aE9wZXJhdG9yOjpNYXgpCiAg
ICAgLCBtX3ZhbHVlcyhDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKG51bWJlcmlzaGVz
KSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhN
YXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NT
U01hdGhNYXguaAkocmV2aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVk
b20vbnVtZXJpYy9DU1NNYXRoTWF4LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMSBA
QCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFzcyBDU1NNYXRoTWF4IDogcHVibGljIENTU01h
dGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NNYXRoTWF4KTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENTU01hdGhNYXg+IGNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNo
PiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01hdGhNYXg+IGNyZWF0ZShGaXhlZFZlY3RvcjxDU1NO
dW1iZXJpc2g+JiYpOwogICAgIGNvbnN0IENTU051bWVyaWNBcnJheSYgdmFsdWVzKCkgY29uc3Q7
CiAgICAgCiBwcml2YXRlOgotICAgIENTU01hdGhNYXgoVmVjdG9yPENTU051bWJlcmlzaD4mJik7
CisgICAgQ1NTTWF0aE1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIFJlZjxD
U1NOdW1lcmljQXJyYXk+IG1fdmFsdWVzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uY3BwCShyZXZpc2lvbiAyODcyMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NTTWF0aE1pbik7CiAKLVJlZjxDU1NNYXRoTWlu
PiBDU1NNYXRoTWluOjpjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykK
K1JlZjxDU1NNYXRoTWluPiBDU1NNYXRoTWluOjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVy
aXNoPiYmIG51bWJlcmlzaGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU01hdGhN
aW4oV1RGTW92ZShudW1iZXJpc2hlcykpKTsKIH0KIAotQ1NTTWF0aE1pbjo6Q1NTTWF0aE1pbihW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQorQ1NTTWF0aE1pbjo6Q1NTTWF0aE1p
bihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiAgICAgOiBDU1NNYXRo
VmFsdWUoQ1NTTWF0aE9wZXJhdG9yOjpNaW4pCiAgICAgLCBtX3ZhbHVlcyhDU1NOdW1lcmljQXJy
YXk6OmNyZWF0ZShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaAkocmV2aXNpb24gMjg3MjIz
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMSBAQCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBj
bGFzcyBDU1NNYXRoTWluIDogcHVibGljIENTU01hdGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChDU1NNYXRoTWluKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU01hdGhN
aW4+IGNyZWF0ZShWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgUmVmPENTU01h
dGhNaW4+IGNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIGNvbnN0IENT
U051bWVyaWNBcnJheSYgdmFsdWVzKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIENTU01h
dGhNaW4oVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgQ1NTTWF0aE1pbihGaXhlZFZlY3Rv
cjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIFJlZjxDU1NOdW1lcmljQXJyYXk+IG1fdmFsdWVzOwog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJv
ZHVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoUHJvZHVjdC5jcHAJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoQ1NTTWF0aFByb2R1Y3QpOwogCi1SZWY8Q1NTTWF0aFByb2R1Y3Q+IENTU01h
dGhQcm9kdWN0OjpjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK1Jl
ZjxDU1NNYXRoUHJvZHVjdD4gQ1NTTWF0aFByb2R1Y3Q6OmNyZWF0ZShGaXhlZFZlY3RvcjxDU1NO
dW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
TWF0aFByb2R1Y3QoV1RGTW92ZShudW1iZXJpc2hlcykpKTsKIH0KIAotQ1NTTWF0aFByb2R1Y3Q6
OkNTU01hdGhQcm9kdWN0KFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCitDU1NN
YXRoUHJvZHVjdDo6Q1NTTWF0aFByb2R1Y3QoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51
bWJlcmlzaGVzKQogICAgIDogQ1NTTWF0aFZhbHVlKENTU01hdGhPcGVyYXRvcjo6UHJvZHVjdCkK
ICAgICAsIG1fdmFsdWVzKENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUobnVtYmVyaXNo
ZXMpKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aFByb2R1Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1l
cmljL0NTU01hdGhQcm9kdWN0LmgJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1Y3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTMgKzM3LDEzIEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNzIENTU01hdGhQcm9k
dWN0IDogcHVibGljIENTU01hdGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChD
U1NNYXRoUHJvZHVjdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NNYXRoUHJvZHVjdD4g
Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOworICAgIHN0YXRpYyBSZWY8Q1NTTWF0aFBy
b2R1Y3Q+IGNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIGNvbnN0IENT
U051bWVyaWNBcnJheSYgdmFsdWVzKCkgY29uc3Q7CiAgICAgCiAgICAgQ1NTTWF0aE9wZXJhdG9y
IGdldE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTTWF0aE9wZXJhdG9yOjpQcm9k
dWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTTWF0aFByb2R1Y3QoVmVjdG9yPENTU051bWJlcmlz
aD4mJik7CisgICAgQ1NTTWF0aFByb2R1Y3QoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsK
ICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmNwcAkocmV2aXNp
b24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRo
U3VtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU01hdGhTdW0pOwogCi1SZWY8
Q1NTTWF0aFN1bT4gQ1NTTWF0aFN1bTo6Y3JlYXRlKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVt
YmVyaXNoZXMpCitSZWY8Q1NTTWF0aFN1bT4gQ1NTTWF0aFN1bTo6Y3JlYXRlKEZpeGVkVmVjdG9y
PENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NNYXRoU3VtKFdURk1vdmUobnVtYmVyaXNoZXMpKSk7CiB9CiAKLUNTU01hdGhTdW06OkNT
U01hdGhTdW0oVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1iZXJpc2hlcykKK0NTU01hdGhTdW06
OkNTU01hdGhTdW0oRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogICAg
IDogQ1NTTWF0aFZhbHVlKENTU01hdGhPcGVyYXRvcjo6U3VtKQogICAgICwgbV92YWx1ZXMoQ1NT
TnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmgJKHJldmlz
aW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aFN1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTEgQEAgY2xhc3MgQ1NTTnVtZXJp
Y0FycmF5OwogY2xhc3MgQ1NTTWF0aFN1bSA6IHB1YmxpYyBDU1NNYXRoVmFsdWUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTTWF0aFN1bSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxDU1NNYXRoU3VtPiBjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgc3RhdGlj
IFJlZjxDU1NNYXRoU3VtPiBjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKICAg
ICBjb25zdCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IENTU01hdGhTdW0oVmVjdG9yPENTU051bWJlcmlzaD4mJik7CisgICAgQ1NTTWF0aFN1bShGaXhl
ZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIFJlZjxDU1NOdW1lcmljQXJyYXk+IG1fdmFs
dWVzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NO
dW1lcmljQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmNwcAkocmV2aXNpb24gMjg3MjIzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljQXJyYXkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwyMiArMzgsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NTTnVtZXJpY0FycmF5KTsKIAotUmVmPENTU051bWVyaWNB
cnJheT4gQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoVmVjdG9yPENTU051bWJlcmlzaD4mJiBudW1i
ZXJpc2hlcykKK1JlZjxDU1NOdW1lcmljQXJyYXk+IENTU051bWVyaWNBcnJheTo6Y3JlYXRlKGNv
bnN0IEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mIG51bWJlcmlzaGVzKQogewotICAgIFZlY3Rv
cjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gdmFsdWVzOwotICAgIHZhbHVlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG51bWJlcmlzaGVzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiYgbnVtYmVyaXNo
IDogbnVtYmVyaXNoZXMpCi0gICAgICAgIHZhbHVlcy51bmNoZWNrZWRBcHBlbmQoQ1NTTnVtZXJp
Y1ZhbHVlOjpyZWN0aWZ5TnVtYmVyaXNoKFdURk1vdmUobnVtYmVyaXNoKSkpOwotICAgIAotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU051bWVyaWNBcnJheShXVEZNb3ZlKHZhbHVlcykpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NOdW1lcmljQXJyYXkoV1RGOjptYXAobnVtYmVy
aXNoZXMsIFtdKGF1dG8mIG51bWJlcmlzaCkgLT4gUmVmPENTU051bWVyaWNWYWx1ZT4geworICAg
ICAgICByZXR1cm4gQ1NTTnVtZXJpY1ZhbHVlOjpyZWN0aWZ5TnVtYmVyaXNoKGNvbnN0X2Nhc3Q8
Q1NTTnVtYmVyaXNoJiY+KG51bWJlcmlzaCkpOworICAgIH0pKSk7CiB9CiAKLVJlZjxDU1NOdW1l
cmljQXJyYXk+IENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1Zh
bHVlPj4mJiB2YWx1ZXMpCitSZWY8Q1NTTnVtZXJpY0FycmF5PiBDU1NOdW1lcmljQXJyYXk6OmNy
ZWF0ZShGaXhlZFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJiB2YWx1ZXMpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTnVtZXJpY0FycmF5KFdURk1vdmUodmFsdWVzKSkpOwog
fQogCi1DU1NOdW1lcmljQXJyYXk6OkNTU051bWVyaWNBcnJheShWZWN0b3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+JiYgdmFsdWVzKQorQ1NTTnVtZXJpY0FycmF5OjpDU1NOdW1lcmljQXJyYXkoRml4
ZWRWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQogICAgIDogbV9hcnJheShX
VEZNb3ZlKHZhbHVlcykpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9u
dW1lcmljL0NTU051bWVyaWNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmgJKHJldmlzaW9uIDI4NzIyMykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDE0ICs0MCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
RXhjZXB0aW9uT3I7CiBjbGFzcyBDU1NOdW1lcmljQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxD
U1NOdW1lcmljQXJyYXk+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU051bWVyaWNB
cnJheSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NOdW1lcmljQXJyYXk+IGNyZWF0ZShW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKLSAgICBzdGF0aWMgUmVmPENTU051bWVyaWNBcnJheT4g
Y3JlYXRlKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJik7CisgICAgc3RhdGljIFJlZjxD
U1NOdW1lcmljQXJyYXk+IGNyZWF0ZShjb25zdCBGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+Jik7
CisgICAgc3RhdGljIFJlZjxDU1NOdW1lcmljQXJyYXk+IGNyZWF0ZShGaXhlZFZlY3RvcjxSZWY8
Q1NTTnVtZXJpY1ZhbHVlPj4mJik7CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXJyYXkuc2l6ZSgpOyB9OwogICAgIEV4Y2VwdGlvbk9yPFJlZjxDU1NOdW1lcmljVmFsdWU+
PiBpdGVtKHNpemVfdCBpbmRleCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFJlZjxDU1NOdW1l
cmljVmFsdWU+PiBtX2FycmF5OwotICAgIENTU051bWVyaWNBcnJheShWZWN0b3I8UmVmPENTU051
bWVyaWNWYWx1ZT4+JiYpOworICAgIEZpeGVkVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiBt
X2FycmF5OworICAgIENTU051bWVyaWNBcnJheShGaXhlZFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1Zh
bHVlPj4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDAsNyArMTAwMCw3
IEBAIHVuc2lnbmVkIENvbnRhaW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW4KICAgICByZXR1cm4g
c3RkOjpkaXN0YW5jZShjaGlsZHJlbi5iZWdpbigpLCB7IH0pOwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBDb250YWluZXJOb2RlOjphcHBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3Ip
CitFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjphcHBlbmQoRml4ZWRWZWN0b3I8Tm9k
ZU9yU3RyaW5nPiYmIHZlY3RvcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnROb2Rlc09y
U3RyaW5nc0ludG9Ob2RlKFdURk1vdmUodmVjdG9yKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKQEAgLTEwMTMsNyArMTAxMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OmFwcGVuZCgKICAgICByZXR1cm4gYXBwZW5kQ2hpbGQoKm5vZGUpOwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYgdmVjdG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZChGaXhl
ZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9yKQogewogICAgIGF1dG8gcmVzdWx0ID0gY29u
dmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQ29udGFpbmVyTm9kZTo6cHJlcGVuZAogfQogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2RvbS1wYXJlbnRub2RlLXJlcGxhY2VjaGlsZHJlbgotRXhjZXB0aW9uT3I8dm9pZD4g
Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkcmVuKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVj
dG9yKQorRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkcmVuKEZp
eGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCiB7CiAgICAgLy8gc3RlcCAxCiAgICAg
YXV0byByZXN1bHQgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShXVEZNb3ZlKHZlY3Rv
cikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAyODcyMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksMTAgKzEyOSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCog
Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBs
YXN0RWxlbWVudENoaWxkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY2hp
bGRFbGVtZW50Q291bnQoKSBjb25zdDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmQoVmVj
dG9yPE5vZGVPclN0cmluZz4mJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJlcGVuZChWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmQoRml4ZWRW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwcmVwZW5kKEZp
eGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBs
YWNlQ2hpbGRyZW4oVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcmVwbGFjZUNoaWxkcmVuKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CiAKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBlbnN1cmVQcmVJbnNlcnRpb25WYWxpZGl0eShOb2RlJiBuZXdDaGls
ZCwgTm9kZSogcmVmQ2hpbGQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMzcsNyArMzMzNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3
cml0ZShEb2N1bWUKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBEb2N1
bWVudDo6d3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYgc3Ry
aW5ncykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZShEb2N1bWVudCogZW50cnlE
b2N1bWVudCwgRml4ZWRWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCiB7CiAgICAgaWYgKCFpc0hU
TUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkBAIC0zMzQ5LDcg
KzMzNDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9jdW1lCiAgICAg
cmV0dXJuIHdyaXRlKGVudHJ5RG9jdW1lbnQsIFdURk1vdmUodGV4dCkpOwogfQogCi1FeGNlcHRp
b25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGVsbihEb2N1bWVudCogZW50cnlEb2N1bWVudCwgVmVj
dG9yPFN0cmluZz4mJiBzdHJpbmdzKQorRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRl
bG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIEZpeGVkVmVjdG9yPFN0cmluZz4mJiBzdHJpbmdz
KQogewogICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5hbWljTWFya3Vw
SW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI4NzIyMykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3
IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJWaXNpYmlsaXR5
U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC02OTMsOCArNjk0LDggQEAgcHVi
bGljOgogICAgIHZvaWQgY2FuY2VsUGFyc2luZygpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
d3JpdGUoRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQsIFNlZ21lbnRlZFN0cmluZyYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiB3cml0ZShEb2N1bWVudCogZW50cnlEb2N1
bWVudCwgVmVjdG9yPFN0cmluZz4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
dm9pZD4gd3JpdGVsbihEb2N1bWVudCogZW50cnlEb2N1bWVudCwgVmVjdG9yPFN0cmluZz4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gd3JpdGUoRG9jdW1lbnQqIGVu
dHJ5RG9jdW1lbnQsIEZpeGVkVmVjdG9yPFN0cmluZz4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8dm9pZD4gd3JpdGVsbihEb2N1bWVudCogZW50cnlEb2N1bWVudCwgRml4ZWRW
ZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIGJvb2wgd2VsbEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2VsbEZvcm1lZDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3Vj
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3Bw
CShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgUmVmPFRvdWNoPiBEb2N1bWVudFRv
dWNoOjpjcmVhdGVUb3VjaChEbwogICAgIHJldHVybiBUb3VjaDo6Y3JlYXRlKGZyYW1lLCB0YXJn
ZXQsIGlkZW50aWZpZXIsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwgcmFkaXVzWCwg
cmFkaXVzWSwgcm90YXRpb25BbmdsZSwgZm9yY2UpOwogfQogCi1SZWY8VG91Y2hMaXN0PiBEb2N1
bWVudFRvdWNoOjpjcmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKK1JlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91
Y2g6OmNyZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYsIEZpeGVkVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCiB7CiAgICAgcmV0dXJuIFRvdWNoTGlzdDo6Y3Jl
YXRlKFdURk1vdmUodG91Y2hlcykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50VG91Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3Vj
aC5oCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3Vj
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZWxpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Myw3ICs0NCw3IEBAIGNsYXNzIFdpbmRvd1Byb3h5OwogY2xhc3MgRG9jdW1lbnRUb3VjaCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUb3VjaD4gY3JlYXRlVG91Y2goRG9jdW1lbnQmLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYsIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBw
YWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBp
bnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpOwotICAgIHN0YXRp
YyBSZWY8VG91Y2hMaXN0PiBjcmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYpOworICAgIHN0YXRpYyBSZWY8VG91Y2hMaXN0PiBj
cmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFRvdWNoPj4mJik7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAy
ODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxMyw3ICs1MTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjphcHBlbmRDaGlsZChOb2Rl
CiAgICAgcmV0dXJuIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5hcHBlbmRDaGlsZChu
ZXdDaGlsZCk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldFByZVRy
YW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihjb25zdCBWZWN0b3I8Tm9kZU9yU3RyaW5n
PiYgdmVjdG9yKQorc3RhdGljIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNm
b3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKGNvbnN0IEZpeGVkVmVjdG9yPE5vZGVPclN0cmlu
Zz4mIHZlY3RvcikKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldDsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHZhcmlhbnQgOiB2ZWN0b3IpIHsKQEAgLTU0Myw3ICs1NDMsNyBAQCBz
dGF0aWMgUmVmUHRyPE5vZGU+IGZpcnN0Rm9sbG93aW5nU2libGluCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gTm9kZTo6Y29udmVydE5vZGVzT3JT
dHJpbmdzSW50b05vZGUoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3Ip
CitFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0lu
dG9Ob2RlKEZpeGVkVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7
CiAgICAgaWYgKG5vZGVPclN0cmluZ1ZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNTY5LDcgKzU2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gTm9k
ZTo6Y29udmVydE4KICAgICByZXR1cm4gUmVmUHRyPE5vZGU+IHsgV1RGTW92ZShub2RlVG9SZXR1
cm4pIH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmJlZm9yZShWZWN0b3I8Tm9kZU9y
U3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OmJl
Zm9yZShGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yKQogewog
ICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYg
KCFwYXJlbnQpCkBAIC01OTMsNyArNTkzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6YmVm
b3JlKFZlY3RvcjxObwogICAgIHJldHVybiBwYXJlbnQtPmluc2VydEJlZm9yZSgqbm9kZSwgdmlh
YmxlUHJldmlvdXNTaWJsaW5nLmdldCgpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6
YWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCitFeGNlcHRp
b25Pcjx2b2lkPiBOb2RlOjphZnRlcihGaXhlZFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9y
U3RyaW5nVmVjdG9yKQogewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJl
bnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCkBAIC02MTIsNyArNjEyLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTm9kZTo6YWZ0ZXIoVmVjdG9yPE5vZAogICAgIHJldHVybiBwYXJlbnQtPmluc2Vy
dEJlZm9yZSgqbm9kZSwgdmlhYmxlTmV4dFNpYmxpbmcuZ2V0KCkpOwogfQogCi1FeGNlcHRpb25P
cjx2b2lkPiBOb2RlOjpyZXBsYWNlV2l0aChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0
cmluZ1ZlY3RvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnJlcGxhY2VXaXRoKEZpeGVkVmVj
dG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IpCiB7CiAgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAkocmV2aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlRyZWVTY29w
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmg+CiAjaW5jbHVkZSA8d3Rm
L0NvbXBhY3RVbmlxdWVQdHJUdXBsZS5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTg0LDkgKzE4NSw5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0RWxlbWVudFNpYmxpbmcoKSBjb25zdDsKIAog
ICAgIC8vIEZyb20gdGhlIENoaWxkTm9kZSAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8j
Y2hpbGRub2RlCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYmVmb3JlKFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFmdGVyKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VXaXRoKFZlY3RvcjxOb2RlT3JTdHJp
bmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJlZm9yZShGaXhlZFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFmdGVyKEZpeGVkVmVjdG9yPE5vZGVP
clN0cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZVdpdGgoRml4ZWRWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiByZW1vdmUoKTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKQEAg
LTY5MSw3ICs2OTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGUoU3R5
bGU6OlZhbGlkaXR5LCBTdHlsZTo6SW52YWxpZGF0aW9uTW9kZSA9IFN0eWxlOjpJbnZhbGlkYXRp
b25Nb2RlOjpOb3JtYWwpOwogICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JzRm9yU3R5bGVSZWNhbGMo
KTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gY29udmVydE5vZGVzT3JTdHJpbmdz
SW50b05vZGUoVmVjdG9yPE5vZGVPclN0cmluZz4mJik7CisgICAgRXhjZXB0aW9uT3I8UmVmUHRy
PE5vZGU+PiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShGaXhlZFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUHNldWRvSWQgY3VzdG9tUHNldWRv
SWQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaAkocmV2aXNpb24gMjg3MjIzKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjZWxpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5jbHVkZSAiVG91Y2gu
aCIKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00
MSw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRvdWNoTGlzdCk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8VG91Y2hMaXN0PiBjcmVhdGUoVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCisgICAgc3RhdGlj
IFJlZjxUb3VjaExpc3Q+IGNyZWF0ZShGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFRvdWNoPj4mJiB0b3VjaGVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VG91Y2hMaXN0KFdURk1vdmUodG91Y2hlcykpKTsKICAgICB9CkBAIC01Niw3ICs1Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgVG91Y2hMaXN0KCkgPSBkZWZhdWx0OwogCi0gICAgZXhwbGlj
aXQgVG91Y2hMaXN0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJiB0b3Vj
aGVzKQorICAgIGV4cGxpY2l0IFRvdWNoTGlzdChGaXhlZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFRvdWNoPj4mJiB0b3VjaGVzKQogICAgIHsKICAgICAgICAgbV92YWx1ZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSh0b3VjaGVzLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgdG91
Y2ggOiB0b3VjaGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkocmV2
aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBE
T01Ub2tlbkxpc3Q6OmEKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBE
T01Ub2tlbkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorRXhjZXB0aW9u
T3I8dm9pZD4gRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdG9r
ZW5zKQogewogICAgIHJldHVybiBhZGRJbnRlcm5hbCh0b2tlbnMuZGF0YSgpLCB0b2tlbnMuc2l6
ZSgpKTsKIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gRE9N
VG9rZW5MaXN0OjpyCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRE9N
VG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucykKK0V4Y2VwdGlv
bk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4m
IHRva2VucykKIHsKICAgICByZXR1cm4gcmVtb3ZlSW50ZXJuYWwodG9rZW5zLmRhdGEoKSwgdG9r
ZW5zLnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgJKHJldmlz
aW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ0LDkgKzQ1LDkgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21TdHJpbmcmIGl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
YWlucyhjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRk
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0
IEZpeGVkVmVjdG9yPFN0cmluZz4mKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3Qg
QXRvbVN0cmluZyYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShjb25zdCBWZWN0b3I8
U3RyaW5nPiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShjb25zdCBGaXhlZFZlY3Rv
cjxTdHJpbmc+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IEF0b21TdHJp
bmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxib29sPiB0b2dnbGUoY29uc3Qg
QXRvbVN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2UpOwogICAgIEV4Y2VwdGlvbk9y
PGJvb2w+IHJlcGxhY2UoY29uc3QgQXRvbVN0cmluZyYgdG9rZW4sIGNvbnN0IEF0b21TdHJpbmcm
IG5ld1Rva2VuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OnNldE1heENhbnZhc0FyZWEKICAgICBtYXhDYW52YXNBcmVhRm9yVGVzdGlu
ZyA9IHNpemU7CiB9CiAKLUV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5r
bm93bj4+JiYgYXJndW1lbnRzKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgc3RhdGUsIGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICBpZiAobV9jb250ZXh0KSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQtPmlzUGxhY2Vob2xkZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUp
IG92ZXJyaWRlOwogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQotICAgIEV4Y2VwdGlv
bk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IGdldENvbnRleHQoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOworICAgIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nQ29udGV4dD4+IGdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNv
bnN0IFN0cmluZyYgY29udGV4dElkLCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+PiYmIGFyZ3VtZW50cyk7CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250
ZXh0KGNvbnN0IFN0cmluZyYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVl
bkNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5D
YW52YXMuY3BwCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIE9m
ZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29udGV4dFdlYkdMCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAKLUV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4
dD4+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0
ZSwgUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8T2Zm
c2NyZWVuUmVuZGVyaW5nQ29udGV4dD4+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUs
IEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewog
ICAgIGlmIChtX2RldGFjaGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAkocmV2
aXNpb24gMjg3MjIzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyUGlw
ZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIK
KyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQogCi0gICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5S
ZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVuZGVy
aW5nQ29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3Vt
ZW50cyk7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdD
b250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVuZGVyaW5nQ29udGV4
dFR5cGUsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRz
KTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiB0cmFuc2ZlclRvSW1hZ2VC
aXRtYXAoKTsKICAgICB2b2lkIGNvbnZlcnRUb0Jsb2IoSW1hZ2VFbmNvZGVPcHRpb25zJiYsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNp
emVUbyhmbG9hdCB3aWR0aCwgZmwKICAgICBwYWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGFk
anVzdFdpbmRvd1JlY3QoKnBhZ2UsIHVwZGF0ZSkpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IERP
TVdpbmRvdzo6c2V0VGltZW91dChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1
bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0VGltZW91dChzdGQ6OnVuaXF1
ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsKICAgICBSZWZQdHIgY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0x
ODE5LDcgKzE4MTksNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXJUaW1lb3V0KGludCB0aW1lb3V0
CiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoKmNvbnRleHQsIHRpbWVvdXRJZCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlND
OjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IERPTVdpbmRvdzo6c2V0
SW50ZXJ2YWwoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGlt
ZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMp
CiB7CiAgICAgUmVmUHRyIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODcy
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhbmRsZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMjkzLDkgKzI5NCw5IEBAIHB1YmxpYzoKICAgICBWaXN1
YWxWaWV3cG9ydCYgdmlzdWFsVmlld3BvcnQoKTsKIAogICAgIC8vIFRpbWVycwotICAgIEV4Y2Vw
dGlvbk9yPGludD4gc2V0VGltZW91dChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwg
aW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50
cyk7CisgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRUaW1lb3V0KHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPj4mJiBhcmd1bWVudHMpOwogICAgIHZvaWQgY2xlYXJUaW1lb3V0KGludCB0aW1lb3V0
SWQpOwotICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpOworICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVhcklu
dGVydmFsKGludCB0aW1lb3V0SWQpOwogCiAgICAgaW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShS
ZWY8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+JiYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFMKICAgICByZXR1cm4geyB9OwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscykKK0V4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmlu
Zz4mIHVybHMpCiB7CiAgICAgYXV0byByZXN1bHQgPSBCYXNlOjppbXBvcnRTY3JpcHRzKHVybHMp
OwogICAgIHRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkucmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NzIyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29y
a2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6RGVkaWNhdGVkV29ya2VyOyB9CiAKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKSBm
aW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVj
dG9yPFN0cmluZz4mIHVybHMpIGZpbmFsOwogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0
cnVjdGlvbigpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNyArMzAyLDcg
QEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6c2V0SXNPbmxpbmUoYm9vbAogICAgICAgICBtX25h
dmlnYXRvci0+c2V0SXNPbmxpbmUoaXNPbmxpbmUpOwogfQogCi1FeGNlcHRpb25PcjxpbnQ+IFdv
cmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rp
b24+IGFjdGlvbiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPGludD4gV29ya2VyR2xvYmFsU2NvcGU6OnNldFRp
bWVvdXQoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91
dCwgRml4ZWRWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7
CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Ig
c2hvdWxkIGl0IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KICAgICBpZiAoYWN0
aW9uLT50eXBlKCkgPT0gU2NoZWR1bGVkQWN0aW9uOjpUeXBlOjpDb2RlKSB7CkBAIC0zMjAsNyAr
MzIwLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJUaW1lb3V0KGludAogICAgIERP
TVRpbWVyOjpyZW1vdmVCeUlkKCp0aGlzLCB0aW1lb3V0SWQpOwogfQogCi1FeGNlcHRpb25Pcjxp
bnQ+IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1
bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2JhbFNjb3Bl
OjpzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGlu
dCB0aW1lb3V0LCBGaXhlZFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3Vt
ZW50cykKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBo
ZXJlPyBPciBzaG91bGQgaXQgaGFwcGVuIHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAg
IGlmIChhY3Rpb24tPnR5cGUoKSA9PSBTY2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKQEAg
LTMzOCw3ICszMzgsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhckludGVydmFsKGlu
CiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoKnRoaXMsIHRpbWVvdXRJZCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1cmxzKQorRXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyR2xvYmFsU2NvcGU6Omlt
cG9ydFNjcmlwdHMoY29uc3QgRml4ZWRWZWN0b3I8U3RyaW5nPiYgdXJscykKIHsKICAgICBBU1NF
UlQoY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODcyMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0Zp
eGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTA3LDE0ICsx
MDgsMTQgQEAgcHVibGljOgogICAgIFdvcmtlckxvY2F0aW9uJiBsb2NhdGlvbigpIGNvbnN0Owog
ICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0
U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscyk7CisgICAgdmlydHVhbCBFeGNlcHRp
b25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IEZpeGVkVmVjdG9yPFN0cmluZz4mIHVybHMp
OwogICAgIFdvcmtlck5hdmlnYXRvciYgbmF2aWdhdG9yKCk7CiAKICAgICB2b2lkIHNldElzT25s
aW5lKGJvb2wpOwogCi0gICAgRXhjZXB0aW9uT3I8aW50PiBzZXRUaW1lb3V0KHN0ZDo6dW5pcXVl
X3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKKyAgICBFeGNlcHRpb25PcjxpbnQ+IHNldFRpbWVv
dXQoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBGaXhlZFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBj
bGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCk7Ci0gICAgRXhjZXB0aW9uT3I8aW50PiBzZXRJbnRl
cnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9u
T3I8aW50PiBzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50
IHRpbWVvdXQsIEZpeGVkVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1l
bnRzKTsKICAgICB2b2lkIGNsZWFySW50ZXJ2YWwoaW50IHRpbWVvdXRJZCk7CiAKICAgICBib29s
IGlzU2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
NzIyMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMTItMTggIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJJRExdIGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCBy
ZXR1cm4gYSBGaXhlZFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBBZGQgLyByZW1vdmUgdG9rZW5zIG9uZSBieSBvbmUgYmVjYXVzZSB0aGVyZSBp
cyBubyB3YXkgdG8gcmV0cmlldmUKKyAgICAgICAgdGhlIHNpemUgb2YgdmFfbGlzdCBpbiBhZHZh
bmNlIHNvIHdlIGNvdWxkIGNvbnN0cnVjdCBhIEZpeGVkVmVjdG9yLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01Ub2tlbkxpc3Qu
Y3BwOgorICAgICAgICAod2Via2l0X2RvbV9kb21fdG9rZW5fbGlzdF9hZGQpOgorICAgICAgICAo
d2Via2l0X2RvbV9kb21fdG9rZW5fbGlzdF9yZW1vdmUpOgorCiAyMDIxLTEyLTE3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkZXRlY3RpbmcgbW9kYWwgY29udGFpbmVycyB0aGF0IGNvbnRhaW4gYSBnaXZlbiBzZWFyY2gg
dGVybQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURPTVRva2VuTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVRv
a2VuTGlzdC5jcHAJKHJldmlzaW9uIDI4NzIyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01Ub2tlbkxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODksMTYgKzE4OSwxNiBAQCB2b2lkIHdlYmtpdF9kb21fZG9tX3Rv
a2VuX2xpc3RfYWRkKFdlYktpCiAgICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJv
cik7CiAgICAgV2ViQ29yZTo6RE9NVG9rZW5MaXN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIHZhX2xpc3QgdmFyaWFkaWNQYXJhbWV0ZXJMaXN0OwotICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gY29udmVydGVkVG9rZW5zOwogICAgIHZhX3N0YXJ0KHZhcmlhZGljUGFyYW1ldGVyTGlz
dCwgZXJyb3IpOwotICAgIHdoaWxlIChnY2hhciogdmFyaWFkaWNQYXJhbWV0ZXIgPSB2YV9hcmco
dmFyaWFkaWNQYXJhbWV0ZXJMaXN0LCBnY2hhciopKQotICAgICAgICBjb252ZXJ0ZWRUb2tlbnMu
YXBwZW5kKFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YXJpYWRpY1BhcmFtZXRlcikpOwotICAgIHZh
X2VuZCh2YXJpYWRpY1BhcmFtZXRlckxpc3QpOwotICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+YWRk
KFdURk1vdmUoY29udmVydGVkVG9rZW5zKSk7Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewotICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0gV2ViQ29yZTo6RE9NRXhjZXB0aW9uOjpk
ZXNjcmlwdGlvbihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7Ci0gICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00i
KSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFtZSk7CisgICAgd2hpbGUg
KGdjaGFyKiB2YXJpYWRpY1BhcmFtZXRlciA9IHZhX2FyZyh2YXJpYWRpY1BhcmFtZXRlckxpc3Qs
IGdjaGFyKikpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBpdGVtLT5hZGQoV1RGOjpTdHJpbmc6
OmZyb21VVEY4KHZhcmlhZGljUGFyYW1ldGVyKSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBXZWJDb3JlOjpET01F
eGNlcHRpb246OmRlc2NyaXB0aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsK
KyAgICAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFt
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAgICB2YV9lbmQodmFy
aWFkaWNQYXJhbWV0ZXJMaXN0KTsKIH0KIAogdm9pZCB3ZWJraXRfZG9tX2RvbV90b2tlbl9saXN0
X3JlbW92ZShXZWJLaXRET01ET01Ub2tlbkxpc3QqIHNlbGYsIEdFcnJvcioqIGVycm9yLCAuLi4p
CkBAIC0yMTAsMTQgKzIxMCwxNSBAQCB2b2lkIHdlYmtpdF9kb21fZG9tX3Rva2VuX2xpc3RfcmVt
b3ZlKFdlCiAgICAgdmFfbGlzdCB2YXJpYWRpY1BhcmFtZXRlckxpc3Q7CiAgICAgVmVjdG9yPFdU
Rjo6U3RyaW5nPiBjb252ZXJ0ZWRUb2tlbnM7CiAgICAgdmFfc3RhcnQodmFyaWFkaWNQYXJhbWV0
ZXJMaXN0LCBlcnJvcik7Ci0gICAgd2hpbGUgKGdjaGFyKiB2YXJpYWRpY1BhcmFtZXRlciA9IHZh
X2FyZyh2YXJpYWRpY1BhcmFtZXRlckxpc3QsIGdjaGFyKikpCi0gICAgICAgIGNvbnZlcnRlZFRv
a2Vucy5hcHBlbmQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhcmlhZGljUGFyYW1ldGVyKSk7Ci0g
ICAgdmFfZW5kKHZhcmlhZGljUGFyYW1ldGVyTGlzdCk7Ci0gICAgYXV0byByZXN1bHQgPSBpdGVt
LT5yZW1vdmUoV1RGTW92ZShjb252ZXJ0ZWRUb2tlbnMpKTsKLSAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7Ci0gICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBXZWJDb3JlOjpET01FeGNl
cHRpb246OmRlc2NyaXB0aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKLSAg
ICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VC
S0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKKyAg
ICB3aGlsZSAoZ2NoYXIqIHZhcmlhZGljUGFyYW1ldGVyID0gdmFfYXJnKHZhcmlhZGljUGFyYW1l
dGVyTGlzdCwgZ2NoYXIqKSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPnJlbW92ZShX
VEY6OlN0cmluZzo6ZnJvbVVURjgodmFyaWFkaWNQYXJhbWV0ZXIpKTsKKyAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFdl
YkNvcmU6OkRPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5jb2RlKCkpOworICAgICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFy
a19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNj
cmlwdGlvbi5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQorICAg
IHZhX2VuZCh2YXJpYWRpY1BhcmFtZXRlckxpc3QpOwogfQogCiBnYm9vbGVhbiB3ZWJraXRfZG9t
X2RvbV90b2tlbl9saXN0X3RvZ2dsZShXZWJLaXRET01ET01Ub2tlbkxpc3QqIHNlbGYsIGNvbnN0
IGdjaGFyKiB0b2tlbiwgZ2Jvb2xlYW4gZm9yY2UsIEdFcnJvcioqIGVycm9yKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>