<?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>233416</bug_id>
          
          <creation_ts>2021-11-22 02:18:39 -0800</creation_ts>
          <short_desc>[WASM-GC] Add support for GC structs types encoding</short_desc>
          <delta_ts>2024-07-24 15:16:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebAssembly</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>263026</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>247394</blocked>
    
    <blocked>246981</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Dmitry">dbezhetskov</assigned_to>
          <cc>asumu</cc>
    
    <cc>bashorov</cc>
    
    <cc>d_degazio</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817254</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-11-22 02:18:39 -0800</bug_when>
    <thetext>Wasm GC proposal introduces struct types in the MVP: https://github.com/WebAssembly/gc/blob/master/proposals/gc/MVP.md.
So, this is a first step to support them - support encoding scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817255</commentid>
    <comment_count>1</comment_count>
      <attachid>444952</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-11-22 02:21:15 -0800</bug_when>
    <thetext>Created attachment 444952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817256</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-11-22 02:22:07 -0800</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817257</commentid>
    <comment_count>3</comment_count>
      <attachid>444953</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-11-22 02:26:12 -0800</bug_when>
    <thetext>Created attachment 444953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818162</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 02:19:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/85804675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820943</commentid>
    <comment_count>5</comment_count>
      <attachid>446138</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-12-07 02:05:12 -0800</bug_when>
    <thetext>Created attachment 446138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820957</commentid>
    <comment_count>6</comment_count>
      <attachid>446145</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-12-07 02:36:15 -0800</bug_when>
    <thetext>Created attachment 446145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820958</commentid>
    <comment_count>7</comment_count>
      <attachid>446146</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-12-07 02:38:11 -0800</bug_when>
    <thetext>Created attachment 446146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2011120</commentid>
    <comment_count>8</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2024-02-06 12:10:19 -0800</bug_when>
    <thetext>I think we can likely close this bug now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2048179</commentid>
    <comment_count>9</comment_count>
    <who name="David Degazio">d_degazio</who>
    <bug_when>2024-07-24 15:16:10 -0700</bug_when>
    <thetext>Yeah this looks pretty closable, we have had handling for WASM GC types and opcodes for months. Resolving as a dupe of https://bugs.webkit.org/show_bug.cgi?id=263026.

*** This bug has been marked as a duplicate of bug 263026 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444952</attachid>
            <date>2021-11-22 02:21:15 -0800</date>
            <delta_ts>2021-11-22 02:26:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233416-20211122172113.patch</filename>
            <type>text/plain</type>
            <size>48891</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NjZjM2JhMzBlNTNjOTNkMzgwNzcwOGE0ZTk3YTdkMjMwODZiZDUxLi5iYTlmMTI2NzU5NTk4MGQx
MzA1NGIyNDEzYzRjZDNmYTQ1YzdjMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMS0xMS0yMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUdDXSBBZGQgc3VwcG9ydCBmb3IgR0Mgc3RydWN0
cyB0eXBlcyBlbmNvZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KwlBZGQgc3VwcG9ydCBvZiBXYXNtIEdDIHN0cnVjdCB0eXBlcyBhY2NvcmRpbmcgdG8gdGhlIE1W
UCBzcGVjOgorCWh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9nYy9ibG9iL21hc3Rlci9w
cm9wb3NhbHMvZ2MvTVZQLm1kLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmdldEdsb2JhbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpnZXRHbG9iYWwpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdh
c20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Np
b24pOgorICAgICAgICAqIHdhc20vV2FzbUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Okdsb2JhbDo6c2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21HbG9iYWwuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2Vu
ZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpM
TEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyk6CisgICAgICAgICogd2FzbS9XYXNt
TW9kdWxlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbjo6Z2V0U2lnbmF0dXJlIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZv
cm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6dHlwZXND
b3VudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjppc1N0
cnVjdFR5cGUgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVBhcnNlci5oOgorICAgICAgICAo
SlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUJsb2NrU2lnbmF0dXJlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VIZWFwVHlwZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFy
c2VFeHBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRF
eHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvblR5
cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUdsb2JhbFR5cGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUV4Y2VwdGlvbik6CisgICAg
ICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJB
c3NlbWJseUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5
cGUpOgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
Ojp3YXNtVG9KUyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6CisgICAgICAgICogd2FzbS93YXNtLmpz
b246CisKIDIwMjEtMTEtMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBNb3ZlIFJlcGF0Y2hYWFggZnJvbSBqaXQgdG8gYnl0ZWNvZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGE5YjdlMzIxM2Uz
NzYyMDcyY2ZlYmNjZjJjZTNlYzZlNzAzMzcyZDMuLmM2Y2JiZGE4NWJiMDA3ODA4ZjM4ZDk1Y2M0
NzU2NzZhMmI4YjUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtNTQ2LDYgKzU0Niw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVt
b3J5KCk7CiAgICAgdihCb29sLCB1c2VUZW1wb3JhbCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0
aGUgVGVtcG9yYWwgb2JqZWN0LiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VGhyZWFk
aW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSB0aHJl
YWRpbmcgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25S
ZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlwZXMgZnJvbSB0aGUg
d2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlHQywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGdjIHR5cGVzIGZyb20gdGhlIHdh
c20gZ2MgcHJvcG9zYWwuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlFeGNlcHRpb25z
LCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3IHNlY3Rpb24gYW5kIGluc3RydWN0aW9ucyBm
cm9tIHRoZSB3YXNtIGV4Y2VwdGlvbiBoYW5kbGluZyBzcGVjLiIpIFwKIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBlNDI4
YjBkNWYzMmJlZjA4NDk5MzQxMDVkOTFlZmMwMWMxMjI3YTk3Li5kYTVhZTVlOTE4ZDI1MDc3ZWQ3
ZDI2ZTE3YzkzNzJkOGE4MWIzYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTE0MzgsNyArMTQzOCw3IEBAIGF1dG8gQWly
SVJHZW5lcmF0b3I6OmdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNt
OjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOgotICAgICAgICBBU1NF
UlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxp
dHk6Ok11dGFibGUpOworICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6
TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRBZGRyRm9ybShv
ZmZzZXQsIEIzOjpXaWR0aDY0KSkKICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIo
dGVtcCwgb2Zmc2V0KSwgdGVtcCk7CiAgICAgICAgIGVsc2UgewpAQCAtMTQ3OCw3ICsxNDc4LDcg
QEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNz
aW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFIKICAgICAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXJG
b3JKU1dyYXBwZXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZv
cm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOgotICAgICAgICBBU1NFUlQoZ2xvYmFsLm11
dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUp
OworICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6
TXV0YWJsZSk7CiAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIEIzOjpX
aWR0aDY0KSkKICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGVtcCwgb2Zmc2V0
KSwgdGVtcCk7CiAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBiNTljYTBkODk5NGFiZjgxN2M1YjhkZjEy
MTA1MmZmYTU3NDYxODYuLjFjOWI4MzNjMjAxNjI3YjBmMWQ2Zjk1YzdiNDIxNmQyMjhlY2E2MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6Z2V0R2xvYmFsKHVp
bnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsCiAgICAgICAg
IHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCB0b0IzVHlwZShnbG9iYWwudHlwZSksIG9yaWdpbigpLCBnbG9iYWxzQXJyYXks
IHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBv
cnRhYmxlOiB7Ci0gICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9i
YWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CisgICAgICAgIEFTU0VSVChnbG9i
YWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKICAgICAgICAgVmFs
dWUqIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEIzOjpJbnQ2NCwgb3JpZ2luKCksIGdsb2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50
MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgICAgIHJlc3VsdCA9IHB1c2go
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCB0b0Iz
VHlwZShnbG9iYWwudHlwZSksIG9yaWdpbigpLCBwb2ludGVyKSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTM4Nyw3ICsxMzg3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmUKICAgICAgICAgICAg
IGVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOiB7Ci0gICAg
ICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6
TXV0YWJpbGl0eTo6TXV0YWJsZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9
PSBXYXNtOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKICAgICAgICAgVmFsdWUqIHBvaW50ZXIgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEIzOjpJ
bnQ2NCwgb3JpZ2luKCksIGdsb2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBz
aXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgU3RvcmUsIG9yaWdpbigpLCBnZXQodmFsdWUpLCBwb2ludGVyKTsK
ICAgICAgICAgLy8gV2UgZW1pdCBhIHdyaXRlLWJhcnJpZXIgb250byBKU1dlYkFzc2VtYmx5R2xv
YmFsLCBub3QgSlNXZWJBc3NlbWJseUluc3RhbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5oCmluZGV4IDgyNGZhOGI3MzQ3YzVmNDg2YzdlMDljMWQ1YTlkMWUwNzRlYjJj
MzcuLjgzM2FiNWIwYzQ2NTViYTZhNjBkNGU2ZDczNWMwYzE1NzkyNmM1YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTIzNiwxMyArMjM2LDE0IEBAIHN0cnVj
dCBFeHBvcnQgewogCiBTdHJpbmcgbWFrZVN0cmluZyhjb25zdCBOYW1lJiBjaGFyYWN0ZXJzKTsK
IAorZW51bSBNdXRhYmlsaXR5IDogdWludDhfdCB7CisgICAgLy8gRklYTUUgYXV0by1nZW5lcmF0
ZSB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMxCisg
ICAgTXV0YWJsZSA9IDEsCisgICAgSW1tdXRhYmxlID0gMAorfTsKKwogc3RydWN0IEdsb2JhbElu
Zm9ybWF0aW9uIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgZW51
bSBNdXRhYmlsaXR5IDogdWludDhfdCB7Ci0gICAgICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUg
dGhpcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQotICAg
ICAgICBNdXRhYmxlID0gMSwKLSAgICAgICAgSW1tdXRhYmxlID0gMAotICAgIH07CiAKICAgICBl
bnVtIEluaXRpYWxpemF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBJc0ltcG9ydCwKQEAg
LTI2Myw2ICsyNjQsMjEgQEAgc3RydWN0IEdsb2JhbEluZm9ybWF0aW9uIHsKICAgICB1aW50NjRf
dCBpbml0aWFsQml0c09ySW1wb3J0TnVtYmVyIHsgMCB9OwogfTsKIAorc3RydWN0IEZ1bmNUeXBl
IHsKKyAgICBSZWZQdHI8U2lnbmF0dXJlPiBzaWduYXR1cmU7Cit9OworCitzdHJ1Y3QgU3RydWN0
RmllbGQgeworICAgIFR5cGUgdHlwZTsKKyAgICBNdXRhYmlsaXR5IG11dGFiaWxpdHk7Cit9Owor
CitzdHJ1Y3QgU3RydWN0VHlwZSB7CisgICAgVmVjdG9yPFN0cnVjdEZpZWxkPiBmaWVsZHM7Cit9
OworCit1c2luZyBUeXBlUmVjb3JkID0gc3RkOjp2YXJpYW50PEZ1bmNUeXBlLCBTdHJ1Y3RUeXBl
PjsKKwogc3RydWN0IEZ1bmN0aW9uRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHNpemVfdCBzdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZDk3ZTdlNzU5YTRmMjQ3NWEzNzc3NzM4NzE3
ODMxYmM0OWUwOTNkMi4uZWUwZmU2MGZkMjNlMzM3OTRlNTdiY2U0N2FmMjU2YTZkOGE3NTdhZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgK
QEAgLTEwODIsNyArMTA4Miw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFU
RV9DQVNFKQogICAgICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlSGVhcFR5cGUobV9pbmZvLCBoZWFwVHlwZSksICJyZWYubnVs
bCBoZWFwdHlwZSBtdXN0IGJlIGZ1bmNyZWYsIGV4dGVybnJlZiBvciB0eXBlX2lkeCIpOwogICAg
ICAgICAgICAgaWYgKGlzVHlwZUluZGV4SGVhcFR5cGUoaGVhcFR5cGUpKSB7Ci0gICAgICAgICAg
ICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KG1faW5mby51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICAg
ICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChtX2luZm8uZ2V0U2lnbmF0dXJlKGhlYXBUeXBlKSk7CiAgICAgICAgICAgICAgICAg
dHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2ln
bmF0dXJlSW5kZXggfTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHR5cGVP
Zk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSkgfTsKQEAgLTExNzUsNyArMTE3NSw3IEBAIEZP
Ul9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBUeXBlZEV4
cHJlc3Npb24gdmFsdWU7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lO
VE8odmFsdWUsICJzZXRfZ2xvYmFsIHZhbHVlIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoaW5kZXggPj0gbV9pbmZvLmdsb2JhbHMuc2l6ZSgpLCAic2V0X2dsb2JhbCAiLCBpbmRl
eCwgIiBvZiB1bmtub3duIGdsb2JhbCwgbGltaXQgaXMgIiwgbV9pbmZvLmdsb2JhbHMuc2l6ZSgp
KTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8uZ2xvYmFsc1tpbmRleF0u
bXV0YWJpbGl0eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlLCAic2V0X2dsb2JhbCAi
LCBpbmRleCwgIiBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
RihtX2luZm8uZ2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpJbW11dGFi
bGUsICJzZXRfZ2xvYmFsICIsIGluZGV4LCAiIGlzIGltbXV0YWJsZSIpOwogCiAgICAgICAgIFR5
cGUgZ2xvYmFsVHlwZSA9IG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlOwogICAgICAgICBBU1NF
UlQoaXNWYWx1ZVR5cGUoZ2xvYmFsVHlwZSkpOwpAQCAtMTIyNCwxMCArMTIyNCwxMCBAQCBGT1Jf
RUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoc2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNh
bGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXgiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVj
dCdzIHRhYmxlIGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRl
eCA+PSBtX2luZm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4ICIs
IHRhYmxlSW5kZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291bnQoKSk7
Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUo
KSA8PSBzaWduYXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwg
c2lnbmF0dXJlSW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5mby51c2Vk
U2lnbmF0dXJlcy5zaXplKCkpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50
eXBlc0NvdW50KCkgPD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJl
IGluZGV4ICIsIHNpZ25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBt
X2luZm8udHlwZXNDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8u
dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAi
Y2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBmdW5jcmVm
Iik7CiAKLSAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8u
dXNlZFNpZ25hdHVyZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOworICAgICAgICBjb25zdCBTaWdu
YXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWduYXR1cmUoc2lnbmF0dXJlSW5k
ZXgpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGluZGV4LgogICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCks
ICJjYWxsX2luZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwgIiBhcmd1bWVudHMsIGJ1
dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtR2xvYmFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21H
bG9iYWwuY3BwCmluZGV4IGNiM2QxNjNiYmUwOGI2YTU3NThjZDlkYzI4ZGUwNjhhMWRlNTZmMTcu
LmEyYTBhY2I1ZjEwZDczNThjNTBjMGEwOWRmOTZlNGYxZWY4NWJhZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgR2xv
YmFsOjpzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQVNTRVJUKG1fbXV0YWJpbGl0eSAhPSBX
YXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlKTsKKyAgICBBU1NFUlQobV9tdXRhYmls
aXR5ICE9IFdhc206OkltbXV0YWJsZSk7CiAgICAgc3dpdGNoIChtX3R5cGUua2luZCkgewogICAg
IGNhc2UgVHlwZUtpbmQ6OkkzMjogewogICAgICAgICBpbnQzMl90IHZhbHVlID0gYXJndW1lbnQu
dG9JbnQzMihnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUdsb2JhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2Jh
bC5oCmluZGV4IDE3Zjg4NjgxZTA2ZTQwMjI4MGQxOWFmYTJlZWJiY2FlOGQ5YmQxNWUuLjQzOGE3
Zjc0MGZmOTkzMTZjNzY1ODEzZWFlODcyZjdkNjc5NDBmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtR2xvYmFsLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IFZhbHVlKiBtX3BvaW50ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8R2xvYmFsPiBjcmVh
dGUoV2FzbTo6VHlwZSB0eXBlLCBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBt
dXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUgPSAwKQorICAgIHN0YXRpYyBSZWY8R2xv
YmFsPiBjcmVhdGUoV2FzbTo6VHlwZSB0eXBlLCBXYXNtOjpNdXRhYmlsaXR5IG11dGFiaWxpdHks
IHVpbnQ2NF90IGluaXRpYWxWYWx1ZSA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHbG9iYWwodHlwZSwgbXV0YWJpbGl0eSwgaW5pdGlhbFZhbHVlKSk7CiAgICAgfQog
CiAgICAgV2FzbTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgV2Fz
bTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fbXV0YWJpbGl0eTsgfQorICAgIFdhc206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fbXV0YWJpbGl0eTsgfQogICAgIEpTVmFsdWUgZ2V0KEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CiAgICAgdWludDY0X3QgZ2V0UHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZS5tX3ByaW1pdGl2ZTsgfQogICAgIHZvaWQgc2V0KEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogdmFsdWVQb2ludGVy
KCkgeyByZXR1cm4gJm1fdmFsdWU7IH0KIAogcHJpdmF0ZToKLSAgICBHbG9iYWwoV2FzbTo6VHlw
ZSB0eXBlLCBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1
aW50NjRfdCBpbml0aWFsVmFsdWUpCisgICAgR2xvYmFsKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6
TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUpCiAgICAgICAgIDog
bV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9tdXRhYmlsaXR5KG11dGFiaWxpdHkpCiAgICAgICAg
ICwgbV92YWx1ZSgpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgV2Fz
bTo6VHlwZSBtX3R5cGU7Ci0gICAgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkg
bV9tdXRhYmlsaXR5OworICAgIFdhc206Ok11dGFiaWxpdHkgbV9tdXRhYmlsaXR5OwogICAgIEpT
T2JqZWN0KiBtX293bmVyIHsgbnVsbHB0ciB9OwogICAgIFZhbHVlIG1fdmFsdWU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5k
ZXggOGVkMjMwOTNmNzEzZTFmNDIyOWViM2YxZmM3NDVkNTQxYmZmYjI3Ny4uZDEwYmJjODBkYTgz
ZDg1Y2I5OWVjZWZjOTVkOGY2NDU0MDJkYTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC02MjUsNiArNjI1LDcgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNl
IFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTY4Miw2ICs2ODMsNyBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUpIC0+IExMSQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZv
aWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlN0cnVjdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC03MTEsNiArNzEzLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2Fs
bEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNzY4LDYgKzc3MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlv
bkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVjCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTgxOCw2
ICs4MjIsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgor
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAKaW5kZXggYzZlOGI4Yzdm
ZWI5Y2MyMDhlYjI3OTZlYTdmMmE0MjA0ZDQwNzY3Mi4uZTMyNDk3NGQzYjcwZWUwM2NiZTEwYjg1
ZGY5YTAzYWM5MmQzZmYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1vZHVsZUluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwCkBAIC0zOSw2ICszOSwxNCBAQCBNb2R1bGVJbmZv
cm1hdGlvbjo6TW9kdWxlSW5mb3JtYXRpb24oKQogCiBNb2R1bGVJbmZvcm1hdGlvbjo6fk1vZHVs
ZUluZm9ybWF0aW9uKCkgeyB9CiAKK2NvbnN0IFNpZ25hdHVyZSYgTW9kdWxlSW5mb3JtYXRpb246
OmdldFNpZ25hdHVyZSh1aW50MzJfdCBpbmRleCkgY29uc3QKK3sKKyAgICBjb25zdCBhdXRvKiBm
dW5jVHlwZSA9IHN0ZDo6Z2V0X2lmPEZ1bmNUeXBlPigmdHlwZXNbaW5kZXhdKTsKKyAgICBBU1NF
UlQoZnVuY1R5cGUpOworICAgIEFTU0VSVChmdW5jVHlwZS0+c2lnbmF0dXJlLmdldCgpKTsKKyAg
ICByZXR1cm4gKmZ1bmNUeXBlLT5zaWduYXR1cmUuZ2V0KCk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCmluZGV4IDMy
OGM2YmNhNmJmYTY2MmI1M2U5YzhjOGRhOWFjYjE4ZjUwNDRhYzUuLjY0ZmIxNjNiNmE1OTQxODcz
ZGJlZGRkOGNlMDVhZjY0ZDkwMDRmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJXYXNtRm9ybWF0LmgiCiAKKyNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9C
aXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKQEAgLTgxLDYg
KzgyLDcgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgdWludDMyX3QgdGFibGVDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIHRhYmxlcy5zaXplKCk7IH0KICAgICB1aW50MzJfdCBlbGVtZW50Q291bnQo
KSBjb25zdCB7IHJldHVybiBlbGVtZW50cy5zaXplKCk7IH0KICAgICB1aW50MzJfdCBkYXRhU2Vn
bWVudHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG51bWJlck9mRGF0YVNlZ21lbnRzOyB9CisgICAg
dWludDMyX3QgdHlwZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVzLnNpemUoKTsgfQogCiAg
ICAgY29uc3QgVGFibGVJbmZvcm1hdGlvbiYgdGFibGUodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIHRhYmxlc1tpbmRleF07IH0KIApAQCAtOTMsMTIgKzk1LDE1IEBAIHN0cnVjdCBNb2R1
bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1h
dGlvbj4gewogICAgIGJvb2wgaXNEZWNsYXJlZEV4Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV9kZWNsYXJlZEV4Y2VwdGlvbnMuY29udGFpbnMoaW5kZXgpOyB9CiAgICAg
dm9pZCBhZGREZWNsYXJlZEV4Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgeyBtX2RlY2xhcmVkRXhj
ZXB0aW9ucy5zZXQoaW5kZXgpOyB9CiAKKyAgICBjb25zdCBTaWduYXR1cmUmIGdldFNpZ25hdHVy
ZSh1aW50MzJfdCBpbmRleCkgY29uc3Q7CisgICAgYm9vbCBpc1N0cnVjdFR5cGUodWludDMyX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RydWN0VHlwZT4o
dHlwZXNbaW5kZXhdKTsgfQorCiAgICAgVmVjdG9yPEltcG9ydD4gaW1wb3J0czsKICAgICBWZWN0
b3I8U2lnbmF0dXJlSW5kZXg+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKICAgICBW
ZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOwog
ICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNl
czsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVybmFsRXhjZXB0aW9uU2lnbmF0dXJl
SW5kaWNlczsKLSAgICBWZWN0b3I8UmVmPFNpZ25hdHVyZT4+IHVzZWRTaWduYXR1cmVzOworICAg
IFZlY3RvcjxUeXBlUmVjb3JkPiB0eXBlczsKIAogICAgIE1lbW9yeUluZm9ybWF0aW9uIG1lbW9y
eTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEw
YTQyYjc5YWRjMWYzYzhhYjBmMzQ2ZmM0ZjZkYTg5YWUuLjE1OTZlNzY1M2YzYWQ4NWFmMzUyZjhk
MWQ5N2U4OGZhNGFkNzM1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2Vy
LmgKQEAgLTI4OCw5ICsyODgsOSBAQCBBTFdBWVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxTdWNj
ZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cAogICAgIGludDY0
X3QgaW5kZXg7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJJbnQ2NChpbmRleCks
ICJCbG9jay1saWtlIGluc3RydWN0aW9uIGRvZXNuJ3QgcmV0dXJuIHZhbHVlIHR5cGUgYnV0IGNh
bid0IGRlY29kZSB0eXBlIHNlY3Rpb24gaW5kZXgiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KGluZGV4IDwgMCwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG5l
Z2F0aXZlIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+KGlu
ZGV4KSA+PSBpbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rp
b24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwgIiB0
eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSk7CisgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnR5cGVz
Q291bnQoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBv
ZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwgIiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnR5
cGVzQ291bnQoKSk7CiAKLSAgICByZXN1bHQgPSAmaW5mby51c2VkU2lnbmF0dXJlc1tpbmRleF0u
Z2V0KCk7CisgICAgcmVzdWx0ID0gJmluZm8uZ2V0U2lnbmF0dXJlKGluZGV4KTsKICAgICByZXR1
cm4geyB9OwogfQogCkBAIC0zMTIsNyArMzEyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNl
cjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSkKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkgPj0gaW5mby50eXBlc0NvdW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdCA9IGhlYXBUeXBlOwpAQCAtMzQwLDcgKzM0MCwx
OSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5
cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mCiAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7CiAg
ICAgICAgIGlmICghcGFyc2VIZWFwVHlwZShpbmZvLCBoZWFwVHlwZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpZ0luZGV4ID0gaGVhcFR5cGUgPCAwID8gc3RhdGljX2Nh
c3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBlKSA6IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQo
aW5mby51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICBpZiAoaGVhcFR5
cGUgPCAwKSB7CisgICAgICAgICAgICBUeXBlS2luZCBoZWFwS2luZCA9IHN0YXRpY19jYXN0PFR5
cGVLaW5kPihoZWFwVHlwZSk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRIZWFwVHlwZUtpbmQo
aGVhcEtpbmQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNp
Z0luZGV4ID0gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBLaW5kKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+
PSBpbmZvLnR5cGVzQ291bnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlHQygpICYmIGluZm8uaXNTdHJ1Y3RU
eXBlKGhlYXBUeXBlKSkKKyAgICAgICAgICAgICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNp
Z25hdHVyZUluZGV4PihoZWFwVHlwZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc2lnSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGluZm8uZ2V0U2lnbmF0dXJl
KGhlYXBUeXBlKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBUeXBlIHR5cGUgPSB7IHR5cGVL
aW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHNpZ0luZGV4IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXgg
YTg4OTVjOTUxMjlkMzNjN2MwY2RiZjg2NjRlODkwZDRhZjM1MTNiYS4uMDA0NzQ3YmMwYjk5OTI4
NTFiNzMxNjZlZWQ0MDczMDJjYjVlYjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtNDQsNDEgKzQ0LDMzIEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2FuJ3QgZ2V0IFR5cGUgc2VjdGlv
bidzIGNvdW50Iik7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA+IG1heFR5cGVzLCAi
VHlwZSBzZWN0aW9uJ3MgY291bnQgaXMgdG9vIGJpZyAiLCBjb3VudCwgIiBtYXhpbXVtICIsIG1h
eFR5cGVzKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2luZm8tPnVzZWRTaWduYXR1cmVz
LnRyeVJlc2VydmVDYXBhY2l0eShjb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5
IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBjb3VudCwgIiBlbnRyaWVzIik7CisgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighbV9pbmZvLT50eXBlcy50cnlSZXNlcnZlQ2FwYWNpdHkoY291bnQpLCAiY2Fu
J3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgY291bnQsICIg
ZW50cmllcyIpOwogCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgaW50OF90IHR5cGU7Ci0gICAgICAgIHVpbnQzMl90IGFyZ3VtZW50Q291bnQ7Ci0g
ICAgICAgIFZlY3RvcjxUeXBlPiBhcmd1bWVudFR5cGVzOwotCiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlKSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHR5
cGUiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0eXBlICE9IHN0YXRpY19jYXN0PGlu
dDhfdD4oVHlwZUtpbmQ6OkZ1bmMpLCBpLCAidGggVHlwZSBpcyBub24tRnVuYyAiLCB0eXBlKTsK
LSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoYXJndW1lbnRDb3Vu
dCksICJjYW4ndCBnZXQgIiwgaSwgInRoIFR5cGUncyBhcmd1bWVudCBjb3VudCIpOwotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtYXhGdW5jdGlvblBhcmFtcywg
aSwgInRoIGFyZ3VtZW50IGNvdW50IGlzIHRvbyBiaWcgIiwgYXJndW1lbnRDb3VudCwgIiBtYXhp
bXVtICIsIG1heEZ1bmN0aW9uUGFyYW1zKTsKLSAgICAgICAgVmVjdG9yPFR5cGU+IGFyZ3VtZW50
czsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighYXJndW1lbnRzLnRyeVJlc2VydmVDYXBh
Y2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5
cGUgc2VjdGlvbidzICIsIGksICJ0aCBzaWduYXR1cmUiKTsKLQotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBUeXBlIGFy
Z3VtZW50VHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVU
eXBlKG1faW5mbywgYXJndW1lbnRUeXBlKSwgImNhbid0IGdldCAiLCBpLCAidGggYXJndW1lbnQg
VHlwZSIpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudFR5cGUpOworICAg
ICAgICBUeXBlUmVjb3JkIHR5cGVSZWNvcmQ7CisgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8
VHlwZUtpbmQ+KHR5cGUpKSB7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6IHsKKyAgICAg
ICAgICAgIEZ1bmNUeXBlIGZ1bmNUeXBlOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUZ1bmN0aW9uVHlwZShpLCBmdW5jVHlwZSkpOworICAgICAgICAgICAgdHlw
ZVJlY29yZCA9IFR5cGVSZWNvcmQgeyBGdW5jVHlwZSB7IFdURk1vdmUoZnVuY1R5cGUpIH0gfTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0
cnVjdDogeworICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMgIiwgdHlw
ZSk7CiAKLSAgICAgICAgdWludDMyX3QgcmV0dXJuQ291bnQ7Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHJldHVybkNvdW50KSwgImNhbid0IGdldCAiLCBpLCAi
dGggVHlwZSdzIHJldHVybiBjb3VudCIpOwotCi0gICAgICAgIFZlY3RvcjxUeXBlLCAxPiByZXR1
cm5UeXBlczsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmV0dXJuVHlwZXMudHJ5UmVz
ZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9y
eSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgewotICAgICAgICAgICAgVHlw
ZSB2YWx1ZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBl
KG1faW5mbywgdmFsdWUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVl
Iik7Ci0gICAgICAgICAgICByZXR1cm5UeXBlcy5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAg
U3RydWN0VHlwZSBzdHJ1Y3RUeXBlOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9G
QUlMUyhwYXJzZVN0cnVjdFR5cGUoaSwgc3RydWN0VHlwZSkpOworICAgICAgICAgICAgdHlwZVJl
Y29yZCA9IFR5cGVSZWNvcmQgeyBXVEZNb3ZlKHN0cnVjdFR5cGUpIH07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
aWwoaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMgIiwgdHlwZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8U2lnbmF0dXJlPiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2ln
bmF0dXJlRm9yKHJldHVyblR5cGVzLCBhcmd1bWVudHMpOwotICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBl
IHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0KLSAgICAgICAgbV9pbmZvLT51c2Vk
U2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICBtX2luZm8tPnR5cGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHR5cGVSZWNvcmQp
KTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTExMyw5ICsxMDUsOSBAQCBhdXRvIFNl
Y3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNl
IEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9u
U2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMihmdW5jdGlvblNpZ25hdHVyZUluZGV4KSwgImNhbid0IGdldCAiLCBpbXBvcnROdW1i
ZXIsICJ0aCBJbXBvcnQncyBmdW5jdGlvbiBzaWduYXR1cmUgaW4gbW9kdWxlICciLCBtb2R1bGVT
dHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKLSAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaWduYXR1cmVJbmRleCA+PSBtX2luZm8tPnVzZWRTaWdu
YXR1cmVzLnNpemUoKSwgImludmFsaWQgZnVuY3Rpb24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnRO
dW1iZXIsICJ0aCBJbXBvcnQsICIsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgsICIgaXMgb3V0IG9m
IHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAiIGluIG1vZHVsZSAn
IiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICInIik7CisgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZv
LT50eXBlc0NvdW50KCksICJpbnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0
TnVtYmVyLCAidGggSW1wb3J0LCAiLCBmdW5jdGlvblNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBv
ZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291bnQoKSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVs
ZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwogICAgICAgICAgICAga2lu
ZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOwot
ICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbZnVuY3Rpb25TaWduYXR1cmVJbmRl
eF0pOworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+Z2V0U2lnbmF0dXJlKGZ1bmN0aW9uU2lnbmF0dXJl
SW5kZXgpKTsKICAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTM4LDcgKzEzMCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
bXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBHbG9iYWxJbmZvcm1hdGlvbiBn
bG9iYWw7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlR2xvYmFs
VHlwZShnbG9iYWwpKTsKICAgICAgICAgICAgIC8vIE9ubHkgbXV0YWJsZSBnbG9iYWxzIG5lZWQg
ZmxvYXRpbmcgYmluZGluZ3MuCi0gICAgICAgICAgICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0g
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpCisgICAgICAgICAgICBpZiAo
Z2xvYmFsLm11dGFiaWxpdHkgPT0gTXV0YWJpbGl0eTo6TXV0YWJsZSkKICAgICAgICAgICAgICAg
ICBnbG9iYWwuYmluZGluZ01vZGUgPSBHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBv
cnRhYmxlOwogICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5nbG9iYWxzLnNpemUoKTsK
ICAgICAgICAgICAgIG1faW5mby0+Z2xvYmFscy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShnbG9i
YWwpKTsKQEAgLTE1Myw5ICsxNDUsOSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0
KCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgICAgICAgICB1aW50MzJfdCBleGNlcHRpb25TaWdu
YXR1cmVJbmRleDsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUlu
dDMyKGV4Y2VwdGlvblNpZ25hdHVyZUluZGV4KSwgImNhbid0IGdldCAiLCBpbXBvcnROdW1iZXIs
ICJ0aCBJbXBvcnQncyBleGNlcHRpb24gc2lnbmF0dXJlIGluIG1vZHVsZSAnIiwgbW9kdWxlU3Ry
aW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICInIik7Ci0gICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGV4Y2VwdGlvblNpZ25hdHVyZUluZGV4ID49IG1faW5mby0+dXNlZFNpZ25h
dHVyZXMuc2l6ZSgpLCAiaW52YWxpZCBleGNlcHRpb24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnRO
dW1iZXIsICJ0aCBJbXBvcnQsICIsIGV4Y2VwdGlvblNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBv
ZiByYW5nZSBvZiAiLCBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgIiBpbiBtb2R1bGUg
JyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOworICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihleGNlcHRpb25TaWduYXR1cmVJbmRleCA+PSBtX2lu
Zm8tPnR5cGVzQ291bnQoKSwgImludmFsaWQgZXhjZXB0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1w
b3J0TnVtYmVyLCAidGggSW1wb3J0LCAiLCBleGNlcHRpb25TaWduYXR1cmVJbmRleCwgIiBpcyBv
dXQgb2YgcmFuZ2Ugb2YgIiwgbV9pbmZvLT50eXBlc0NvdW50KCksICIgaW4gbW9kdWxlICciLCBt
b2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKICAgICAgICAgICAg
IGtpbmRJbmRleCA9IG1faW5mby0+aW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXpl
KCk7Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1tleGNlcHRpb25TaWduYXR1
cmVJbmRleF0pOworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+Z2V0U2lnbmF0dXJlKGV4Y2VwdGlvblNp
Z25hdHVyZUluZGV4KSk7CiAgICAgICAgICAgICBtX2luZm8tPmltcG9ydEV4Y2VwdGlvblNpZ25h
dHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0xNzksOSArMTcxLDkgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZUZ1bmN0aW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGVOdW1iZXI7CiAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHR5cGVOdW1iZXIpLCAiY2Fu
J3QgZ2V0ICIsIGksICJ0aCBGdW5jdGlvbidzIHR5cGUgbnVtYmVyIik7Ci0gICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUo
KSwgaSwgInRoIEZ1bmN0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVz
Q291bnQoKSwgaSwgInRoIEZ1bmN0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51
bWJlcik7CiAKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbdHlwZU51bWJlcl0pOwor
ICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQobV9pbmZvLT5nZXRTaWduYXR1cmUodHlwZU51bWJlcikpOwogICAgICAgICAvLyBU
aGUgQ29kZSBzZWN0aW9uIGZpeGVzIHVwIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgIHNpemVfdCBz
dGFydCA9IDA7CiAgICAgICAgIHNpemVfdCBlbmQgPSAwOwpAQCAtMzcxLDcgKzM2Myw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGtpbmRJbmRleCA+PSBtX2luZm8tPmdsb2JhbHMuc2l6
ZSgpLCBleHBvcnROdW1iZXIsICJ0aCBFeHBvcnQgaGFzIGludmFsaWQgZ2xvYmFsIG51bWJlciAi
LCBraW5kSW5kZXgsICIgaXQgZXhjZWVkcyB0aGUgZ2xvYmFscyBjb3VudCAiLCBtX2luZm8tPmds
b2JhbHMuc2l6ZSgpLCAiLCBuYW1lZCAnIiwgZmllbGRTdHJpbmcsICInIik7CiAgICAgICAgICAg
ICAvLyBPbmx5IG11dGFibGUgZ2xvYmFscyBuZWVkIGZsb2F0aW5nIGJpbmRpbmdzLgogICAgICAg
ICAgICAgR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9IG1faW5mby0+Z2xvYmFsc1traW5kSW5k
ZXhdOwotICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IEdsb2JhbEluZm9ybWF0
aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKQorICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmls
aXR5ID09IE11dGFiaWxpdHk6Ok11dGFibGUpCiAgICAgICAgICAgICAgICAgZ2xvYmFsLmJpbmRp
bmdNb2RlID0gR2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02MDksNyArNjAxLDcgQEAgYXV0byBTZWN0aW9u
UGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPcklt
cG9ydE51bWJlciwKIAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5m
by0+Z2xvYmFscy5zaXplKCksICJnZXRfZ2xvYmFsJ3MgaW5kZXggIiwgaW5kZXgsICIgZXhjZWVk
cyB0aGUgbnVtYmVyIG9mIGdsb2JhbHMgIiwgbV9pbmZvLT5nbG9iYWxzLnNpemUoKSk7CiAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5maXJzdEludGVybmFsR2xv
YmFsLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBpbmRleCwgIiBleGNlZWRzIHRo
ZSBmaXJzdCBpbnRlcm5hbCBnbG9iYWwgIiwgbV9pbmZvLT5maXJzdEludGVybmFsR2xvYmFsKTsK
LSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNbaW5kZXhdLm11dGFi
aWxpdHkgIT0gR2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSwgImdldF9nbG9iYWwgaW1wb3J0
IGtpbmQgaW5kZXggIiwgaW5kZXgsICIgaXMgbXV0YWJsZSAiKTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNbaW5kZXhdLm11dGFiaWxpdHkgIT0gTXV0YWJpbGl0
eTo6SW1tdXRhYmxlLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBpbmRleCwgIiBp
cyBtdXRhYmxlICIpOwogCiAgICAgICAgIHJlc3VsdFR5cGUgPSBtX2luZm8tPmdsb2JhbHNbaW5k
ZXhdLnR5cGU7CiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGluZGV4OwpAQCAtNjIyLDcg
KzYxNCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNv
ZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgICAgICAgICBpbnQzMl90IGhl
YXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZSht
X2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0
ZXJucmVmIG9yIHR5cGVfaWR4Iik7CiAgICAgICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlw
ZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1to
ZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVy
ZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZSho
ZWFwVHlwZSkpOwogICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6
OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHNpZ25hdHVyZUluZGV4IH07CiAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZO
dWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUp
IH07CkBAIC02ODAsNiArNjcyLDU5IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0
RXhwcihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAorYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZSh1aW50
MzJfdCBwb3NpdGlvbiwgRnVuY1R5cGUmIGZ1bmNUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7Cisg
ICAgdWludDMyX3QgYXJndW1lbnRDb3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMihhcmd1bWVudENvdW50KSwgImNhbid0IGdldCAiLCBwb3NpdGlvbiwgInRoIFR5
cGUncyBhcmd1bWVudCBjb3VudCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRD
b3VudCA+IG1heEZ1bmN0aW9uUGFyYW1zLCBwb3NpdGlvbiwgInRoIGFyZ3VtZW50IGNvdW50IGlz
IHRvbyBiaWcgIiwgYXJndW1lbnRDb3VudCwgIiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uUGFyYW1z
KTsKKyAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRUeXBlczsKKyAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFhcmd1bWVudFR5cGVzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNh
bid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0aW9u
LCAidGggc2lnbmF0dXJlIik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1l
bnRDb3VudDsgKytpKSB7CisgICAgICAgIFR5cGUgYXJndW1lbnRUeXBlOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShtX2luZm8sIGFyZ3VtZW50VHlwZSksICJj
YW4ndCBnZXQgIiwgaSwgInRoIGFyZ3VtZW50IFR5cGUiKTsKKyAgICAgICAgYXJndW1lbnRUeXBl
cy5hcHBlbmQoYXJndW1lbnRUeXBlKTsKKyAgICB9CisKKyAgICB1aW50MzJfdCByZXR1cm5Db3Vu
dDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihyZXR1cm5Db3VudCks
ICJjYW4ndCBnZXQgIiwgcG9zaXRpb24sICJ0aCBUeXBlJ3MgcmV0dXJuIGNvdW50Iik7CisKKyAg
ICBWZWN0b3I8VHlwZSwgMT4gcmV0dXJuVHlwZXM7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQpLCAiY2FuJ3QgYWxs
b2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgcG9zaXRpb24sICJ0aCBz
aWduYXR1cmUiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmV0dXJuQ291bnQ7ICsr
aSkgeworICAgICAgICBUeXBlIHZhbHVlOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhbHVlVHlwZShtX2luZm8sIHZhbHVlKSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdz
IHJldHVybiB2YWx1ZSIpOworICAgICAgICByZXR1cm5UeXBlcy5hcHBlbmQodmFsdWUpOworICAg
IH0KKworICAgIGZ1bmNUeXBlLnNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaWdu
YXR1cmVGb3IocmV0dXJuVHlwZXMsIGFyZ3VtZW50VHlwZXMpOworICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIWZ1bmNUeXBlLnNpZ25hdHVyZSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkg
Zm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0aW9uLCAidGggc2lnbmF0dXJlIik7CisKKyAgICBy
ZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlU3RydWN0VHlwZSh1aW50
MzJfdCBwb3NpdGlvbiwgU3RydWN0VHlwZSYgc3RydWN0VHlwZSkgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIEFTU0VSVChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpOworCisgICAgdWludDMy
X3QgZmllbGRDb3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihm
aWVsZENvdW50KSwgImNhbid0IGdldCAiLCBwb3NpdGlvbiwgInRoIHN0cnVjdCB0eXBlJ3MgZmll
bGQgY291bnQiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFzdHJ1Y3RUeXBlLmZpZWxkcy50
cnlSZXNlcnZlQ2FwYWNpdHkoZmllbGRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciBzdHJ1Y3QgZmllbGRzICIsIGZpZWxkQ291bnQsICIgZW50cmllcyIpOworCisgICAg
Zm9yICh1aW50MzJfdCBmaWVsZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkQ291bnQ7ICsr
ZmllbGRJbmRleCkgeworICAgICAgICBUeXBlIGZpZWxkVHlwZTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBmaWVsZFR5cGUpLCAiY2FuJ3QgZ2V0
ICIsIGZpZWxkSW5kZXgsICJ0aCBmaWVsZCBUeXBlIik7CisKKyAgICAgICAgdWludDhfdCBtdXRh
YmlsaXR5OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxp
dHkpLCBwb3NpdGlvbiwgImNhbid0IGdldCAiLCBmaWVsZEluZGV4LCAidGggZmllbGQgbXV0YWJp
bGl0eSIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG11dGFiaWxpdHkgIT0gMHgwICYm
IG11dGFiaWxpdHkgIT0gMHgxLCAiaW52YWxpZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4IiwgaGV4
KG11dGFiaWxpdHksIDIsIExvd2VyY2FzZSkpOworCisgICAgICAgIHN0cnVjdFR5cGUuZmllbGRz
LnVuY2hlY2tlZEFwcGVuZChTdHJ1Y3RGaWVsZCB7IGZpZWxkVHlwZSwgc3RhdGljX2Nhc3Q8TXV0
YWJpbGl0eT4obXV0YWJpbGl0eSkgfSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwog
YXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3Rk
OjpvcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAg
ICAgcmV0dXJuIHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIsICJFbGVtZW50IGluaXRfZXhwciBt
dXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsKQEAgLTc1OCw3ICs4MDMsNyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlR2xvYmFsVHlwZShHbG9iYWxJbmZvcm1hdGlvbiYgZ2xvYmFsKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZv
LCBnbG9iYWwudHlwZSksICJjYW4ndCBnZXQgR2xvYmFsJ3MgdmFsdWUgdHlwZSIpOwogICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgobXV0YWJpbGl0eSksICJjYW4ndCBnZXQgR2xv
YmFsIHR5cGUncyBtdXRhYmlsaXR5Iik7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtdXRhYmls
aXR5ICE9IDB4MCAmJiBtdXRhYmlsaXR5ICE9IDB4MSwgImludmFsaWQgR2xvYmFsJ3MgbXV0YWJp
bGl0eTogMHgiLCBoZXgobXV0YWJpbGl0eSwgMiwgTG93ZXJjYXNlKSk7Ci0gICAgZ2xvYmFsLm11
dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eT4obXV0
YWJpbGl0eSk7CisgICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxNdXRhYmlsaXR5
PihtdXRhYmlsaXR5KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC04NjcsOCArOTEyLDggQEAg
YXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUV4Y2VwdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAog
ICAgICAgICB1aW50MzJfdCB0eXBlTnVtYmVyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVZhclVJbnQzMih0eXBlTnVtYmVyKSwgImNhbid0IGdldCAiLCBleGNlcHRpb25OdW1i
ZXIsICJ0aCBFeGNlcHRpb24ncyB0eXBlIG51bWJlciIpOwotICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksIGV4Y2Vw
dGlvbk51bWJlciwgInRoIEV4Y2VwdGlvbiB0eXBlIG51bWJlciBpcyBpbnZhbGlkICIsIHR5cGVO
dW1iZXIpOwotICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1t0eXBlTnVtYmVyXSk7Cisg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVzQ291
bnQoKSwgZXhjZXB0aW9uTnVtYmVyLCAidGggRXhjZXB0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFs
aWQgIiwgdHlwZU51bWJlcik7CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZSh0eXBlTnVt
YmVyKSk7CiAgICAgICAgIG1faW5mby0+aW50ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2Vz
LnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA5MWZkM2VkODM0MjI1
YzgxM2UyZDAxMzkyYjQ5ZThkOWMzYmUyYjg3Li40YjBjMzIyZGJlMWJhNjRlMmU0ZDlmNzI2MGFi
MmE4OTc2MzgxYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2VjdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0
aW9uUGFyc2VyLmgKQEAgLTY5LDYgKzY5LDkgQEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUluaXRFeHByKHVpbnQ4X3QmLCB1aW50NjRfdCYsIFR5
cGUmIGluaXRFeHByVHlwZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VJMzJJbml0RXhwcihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYsIEFTQ0lJTGl0ZXJh
bCBmYWlsTWVzc2FnZSk7CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgRnVuY1R5cGUmKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVN0cnVjdFR5cGUodWludDMyX3QgcG9z
aXRpb24sIFN0cnVjdFR5cGUmKTsKKwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3Rk
OjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZUVsZW1lbnRLaW5kKHVpbnQ4X3QmIGVsZW1lbnRLaW5kKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAK
aW5kZXggNzY5NWQ3NzBjMWQ1ODQzOGEwYTMwNjIzNDA5OTlmYjkwMGViYzYyMi4uMmMyM2NkNTQ0
NjcxOTM2NTEyMGM4OWY4MjA3MDI3MDYzYjE4YTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKQEAgLTg4LDcgKzg4
LDcgQEAgSlNPYmplY3QqIEpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIDIpOwog
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
dXRhYmxlIiksIGpzQm9vbGVhbihtX2dsb2JhbC0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2Jh
bEluZm9ybWF0aW9uOjpNdXRhYmxlKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIiksIGpzQm9vbGVhbihtX2dsb2JhbC0+bXV0
YWJpbGl0eSgpID09IFdhc206Ok11dGFibGUpKTsKIAogICAgIFdhc206OlR5cGUgdmFsdWVUeXBl
ID0gbV9nbG9iYWwtPnR5cGUoKTsKICAgICBKU1N0cmluZyogdmFsdWVTdHJpbmcgPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCmluZGV4IDU4MTA0
MWIzY2EzNDMzYzdhZmFiZjFiZTM0Njc1ZGFiN2Q0YTRmZDYuLjY2YTkyMTNlOWE0YTEzYTk4ZWQ2
ZTczOTA1MGNmYzMxMjQ1NTE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
YXNtVG9KUy5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQog
ICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlLmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVm
TnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgpAQCAtMTc4LDYg
KzE3OSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+
LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFy
Z1R5cGUua2luZCkgewogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1
Y3Q6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCmluZGV4
IDBiOTYzMWVhNTQ2NTQ1Zjc2YTMyZTg3MmQzOTc4ZTBmNThjODA4ZWMuLmE4ZTIwYzc5MDM3YTY0
MzdjMWY2ZmJkN2FhMTI2OTAzMjJlZTQwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5R2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGdsb2Jh
bERlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCi0gICAg
V2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eTsKKyAgICBXYXNt
OjpNdXRhYmlsaXR5IG11dGFiaWxpdHk7CiAgICAgewogICAgICAgICBJZGVudGlmaWVyIG11dGFi
bGVJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIik7CiAgICAgICAg
IEpTVmFsdWUgbXV0YWJsZVZhbHVlID0gZ2xvYmFsRGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVj
dCwgbXV0YWJsZUlkZW50KTsKQEAgLTc0LDkgKzc0LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKICAgICAgICAgYm9vbCBtdXRhYmxlQm9vbGVhbiA9IG11dGFibGVWYWx1ZS50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKG11dGFibGVCb29sZWFuKQotICAgICAgICAg
ICAgbXV0YWJpbGl0eSA9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmxlOworICAgICAg
ICAgICAgbXV0YWJpbGl0eSA9IFdhc206Ok11dGFibGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG11dGFiaWxpdHkgPSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlOworICAg
ICAgICAgICAgbXV0YWJpbGl0eSA9IFdhc206OkltbXV0YWJsZTsKICAgICB9CiAKICAgICBXYXNt
OjpUeXBlIHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKaW5kZXggYzdiM2Q2ZjdlOTQ1MTFj
MThhZGZkN2E3NmM4OTIxOTY5MDY0ZTk1Yy4uZGI4ZDkwNGFkZDc0MjZlZTg3YTJkZWQ4YmMyMGI0
NjhhYWYxNDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUdsb2JhbFByb3RvU2V0dGVyRnVu
Y1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSlNXZWJBc3NlbWJseUdsb2JhbCogZ2xvYmFs
ID0gZ2V0R2xvYmFsKGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
LSAgICBpZiAoZ2xvYmFsLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbElu
Zm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpCisgICAgaWYgKGdsb2JhbC0+Z2xvYmFs
KCktPm11dGFiaWxpdHkoKSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuR2xvYmFs
LnByb3RvdHlwZS52YWx1ZSBhdHRlbXB0cyB0byBtb2RpZnkgaW1tdXRhYmxlIGdsb2JhbCB2YWx1
ZSJfcykpKTsKIAogICAgIGdsb2JhbC0+Z2xvYmFsKCktPnNldChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDA2NGFjNjk5MTNjOGQ2
YTFiMTg4YWRkYmNlNDRjZDhjY2Q0OGY2ZTkuLjE5ODE3OWE0ZTA2Y2UxMTYzOWIxZDllYjYzZWU0
ZmMzNjI0ZjU5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZv
aWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpH
bG9iYWw6IHsKICAgICAgICAgICAgIC8vIDUuIElmIGkgaXMgYSBnbG9iYWwgaW1wb3J0OgogICAg
ICAgICAgICAgY29uc3QgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9IG1vZHVsZUlu
Zm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF07Ci0gICAgICAgICAgICBpZiAoZ2xv
YmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSkgewor
ICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206OkltbXV0YWJsZSkgewog
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmhlcml0czxKU1dlYkFzc2VtYmx5R2xvYmFsPih2
bSkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUdsb2JhbCogZ2xvYmFsVmFs
dWUgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUdsb2JhbCo+KHZhbHVlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+dHlwZSgpICE9IGdsb2JhbC50eXBlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwg
ImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgc2FtZSB0eXBlIikpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgpICE9IFdhc206
Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpCisgICAgICAgICAgICAgICAgICAgIGlmIChn
bG9iYWxWYWx1ZS0+Z2xvYmFsKCktPm11dGFiaWxpdHkoKSAhPSBXYXNtOjpJbW11dGFibGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAi
aW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBzYW1lIG11dGFiaWxpdHkiKSkpOwogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvJiBkZWNsYXJlZEdsb2JhbFR5cGUgPSBtb2R1bGVJbmZv
cm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGU7CiAgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoZGVjbGFyZWRHbG9iYWxUeXBlLmtpbmQpIHsKQEAgLTUwMSw4ICs1MDEsOCBA
QCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9y
dHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGlu
Z01vZGU6OlBvcnRhYmxlOiB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmls
aXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKLSAg
ICAgICAgICAgICAgICBSZWY8V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBXYXNtOjpHbG9iYWw6
OmNyZWF0ZShnbG9iYWwudHlwZSwgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6
Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsLm11
dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJsZSk7CisgICAgICAgICAgICAgICAgUmVmPFdhc206Okds
b2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xvYmFsOjpjcmVhdGUoZ2xvYmFsLnR5cGUsIFdhc206
Ok11dGFiaWxpdHk6Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKICAgICAgICAgICAgICAgICBKU1dl
YkFzc2VtYmx5R2xvYmFsKiBnbG9iYWxWYWx1ZSA9IEpTV2ViQXNzZW1ibHlHbG9iYWw6OnRyeUNy
ZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5R2xvYmFsU3Ry
dWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7CiAgICAgICAgICAgICAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5saW5rR2xvYmFs
KHZtLCBnbG9iYWxJbmRleCwgZ2xvYmFsVmFsdWUpOwpAQCAtNTU3LDEyICs1NTcsMTIgQEAgdm9p
ZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9
IEpTV2ViQXNzZW1ibHlHbG9iYWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxP
YmplY3QtPndlYkFzc2VtYmx5R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7
CiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRh
YmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Ok11
dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8V2FzbTo6R2xv
YmFsPiBnbG9iYWxSZWYgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmdldEdsb2JhbEJpbmRpbmco
ZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxSZWYpOwog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT50eXBlKCkgPT0gZ2xvYmFsLnR5
cGUpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT5tdXRhYmlsaXR5KCkg
PT0gZ2xvYmFsLm11dGFiaWxpdHkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFs
UmVmLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6
Ok11dGFibGUpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT5tdXRhYmls
aXR5KCkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChnbG9iYWxSZWYtPm93bmVyPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpOwogICAgICAg
ICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gZ2xvYmFsUmVmLT5vd25lcjxKU1dlYkFzc2Vt
Ymx5R2xvYmFsPigpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgppbmRleCAzMmM4YWY4YmJmNTdlYTYwNWIzMzU1YTU2ZDg4MmU4ZGRlMWUwZWVkLi43
NDI4MTJjZGViMDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vd2FzbS5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICJyZWZfbnVsbCI6
ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2
NCIgfSwKICAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6
ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwK
KyAgICAgICAgInN0cnVjdCI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMs
ICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwK
ICAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJl
ZiIsICJmdW5jcmVmIl0sCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGU5MjZlNDRmYTgxNGMxMzFmNjNmOWUwOTgwNzA1MmExNjA2NTRhYzAu
LjM2ZjBhYTM5ZDNhYzMwYTY2MGJlZTM2MmUyMjYyNzU3NDVkMzNlMmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVjdHMgdHlwZXMgZW5j
b2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJQWRkIHNpbXBs
ZSB0ZXN0cyBmb3IgcGFyc2luZyBXYXNtIHN0cnVjdHMuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6
CisgICAgICAgICogd2FzbS9nYy9zdHJ1Y3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6
CisgICAgICAgICh0ZXN0U3RydWN0RGVjbGFyYXRpb24pOgorICAgICAgICAqIHdhc20vd2FzbS5q
c29uOgorCiAyMDIxLTExLTE5ICBBc3VtdSBUYWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgRml4IFdlYkFzc2VtYmx5IG1lbW9yeS5maWxsIG91dCBvZiBib3VuZHMgZXJyb3Ig
bWVzc2FnZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFt
bAppbmRleCAwMDZjMzNiZTc4Mzc5MzdmNTU0MDhjYmU4NmY2NjgyNmUyOTRhOTI4Li45NGQ2ZDRm
MjdlZjk2YWMwZDc4YTI3Nzc5NzZlZTI0ZjYxMWFjM2E3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dh
c20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApAQCAtMzUsNiArMzUsOCBAQAogICBjbWQ6
IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDogd2Fz
bS9mdW5jdGlvbi1yZWZlcmVuY2VzCiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3Mg
cGFyc2VSdW5Db21tYW5kcworLSBwYXRoOiB3YXNtL2djCisgIGNtZDogcnVuV2ViQXNzZW1ibHlT
dWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL2Z1enoKICAgY21kOiBy
dW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20v
bG93RXhlY3V0YWJsZU1lbW9yeQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2djL3N0cnVjdHMu
anMgYi9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjcwNGVjOTc1MjYz
OGNkMDhlMzc3NjdhMTY3MTIyNGQwNGNmNmFiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL2djL3N0cnVjdHMuanMKQEAgLTAsMCArMSw4MyBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3Vp
dGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcz10cnVlIiwgIi0tdXNl
V2ViQXNzZW1ibHlHQz10cnVlIikKKworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2Vy
dC5qcyI7CitpbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gIi4uL3dhYnQtd3JhcHBlci5qcyI7
CisKK2Z1bmN0aW9uIG1vZHVsZShieXRlcywgdmFsaWQgPSB0cnVlKSB7CisgIGxldCBidWZmZXIg
PSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgbGV0IHZpZXcgPSBuZXcgVWludDhB
cnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7
CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7CisgIH0KKyAgcmV0dXJuIG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKK30KKworZnVuY3Rpb24gdGVzdFN0cnVjdERlY2xh
cmF0aW9uKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0cnVjdCkpCisg
ICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDNceDAxXHg1Zlx4MDAiKSk7CisKKyAgLyoK
KyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIGkzMikpKQorICAgKiAp
CisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA1XHgwMVx4NWZceDAxXHg3Zlx4MDAiKSk7CisKKyAg
LyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIGkzMikgKGZpZWxk
IGkzMikpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4NWZceDAyXHg3
Zlx4MDBceDdmXHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0
cnVjdCAoZmllbGQgKG11dCBpMzIpKSkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
MDVceDAxXHg1Zlx4MDFceDdmXHgwMSIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkIChtdXQgaTMyKSAobXV0IGkzMikpKSkKKyAgICog
ICAodHlwZSAkTGluZSAoc3RydWN0IChmaWVsZCAobXV0IChyZWYgJFBvaW50KSkgKG11dCAocmVm
ICRQb2ludCkpKSkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGZceDAyXHg1Zlx4
MDJceDdmXHgwMVx4N2ZceDAxXHg1Zlx4MDJceDZiXHgwMFx4MDFceDZiXHgwMFx4MDEiKSk7CisK
KyAgLyoKKyAgICogdG9vIG1hbnkgZmllbGRzCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAo
c3RydWN0IChmaWVsZCBpMzIpKSkKKyAgICogKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAg
ICAoKSA9PgorICAgICAgbW9kdWxlKAorICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHgwN1x4MDFceDVmXHhmZlx4ZmZceGZmXHg3Zlx4MDAiCisgICAgICApLAor
ICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRv
ZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNjogY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3Ig
c3RydWN0IGZpZWxkcyAyNjg0MzU0NTUgZW50cmllcyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShidWZmZXIpJykiCisgICk7CisKKyAgLyoKKyAgICogaW52YWxpZCBtdXRhYmls
aXR5CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCAobXV0IGkzMikp
KSkKKyAgICogKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9k
dWxlKAorICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNVx4
MDFceDVmXHgwMVx4N2ZceDAyIgorICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJy
b3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTU6IGlu
dmFsaWQgRmllbGQncyBtdXRhYmlsaXR5OiAweDAyIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgKTsKK30KKwordGVzdFN0cnVjdERlY2xhcmF0aW9uKCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20u
anNvbgppbmRleCAzMmM4YWY4YmJmNTdlYTYwNWIzMzU1YTU2ZDg4MmU4ZGRlMWUwZWVkLi43NDI4
MTJjZGViMDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTE2LDYgKzE2
LDcgQEAKICAgICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6
ICAtMjAsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAicmVmIjogICAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMSwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0s
CiAgICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMy
LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAic3RydWN0IjogICAgeyAidHlwZSI6
ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMywgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAg
ICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5
cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAogICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0
IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444953</attachid>
            <date>2021-11-22 02:26:12 -0800</date>
            <delta_ts>2021-12-07 02:05:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233416-20211122172610.patch</filename>
            <type>text/plain</type>
            <size>48944</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NjZjM2JhMzBlNTNjOTNkMzgwNzcwOGE0ZTk3YTdkMjMwODZiZDUxLi5jYzg5YzM3YjIxMWRlZDE1
ZjBhZWYwYzNhYjVmZDZiMmMyZTY1ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMS0xMS0yMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUdDXSBBZGQgc3VwcG9ydCBmb3IgR0Mgc3RydWN0
cyB0eXBlcyBlbmNvZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBvZiBXYXNtIEdDIHN0cnVjdCB0eXBlcyBhY2Nv
cmRpbmcgdG8gdGhlIE1WUCBzcGVjOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNz
ZW1ibHkvZ2MvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2djL01WUC5tZC4KKyAgICAgICAgCisgICAg
ICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmdldEdsb2Jh
bCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAg
ICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjpnZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAq
IHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUds
b2JhbC5jcHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6c2V0KToKKyAgICAgICAgKiB3
YXNtL1dhc21HbG9iYWwuaDoKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JD
YWxsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0
aW9uRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFy
Z3VtZW50cyk6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6Z2V0U2lnbmF0dXJlIGNvbnN0KToK
KyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6dHlwZXNDb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6
Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjppc1N0cnVjdFR5cGUgY29uc3QpOgorICAgICAgICAq
IHdhc20vV2FzbVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5
cGU+OjpwYXJzZUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1
Y2Nlc3NUeXBlPjo6cGFyc2VIZWFwVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxT
dWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0
aW9uUGFyc2VyOjpwYXJzZUdsb2JhbFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9u
UGFyc2VyOjpwYXJzZUV4Y2VwdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHA6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUpOgorICAgICAgICAqIHdhc20vanMvV2Fz
bVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xv
YmFsUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhw
b3J0cyk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMTEtMjAgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBNb3ZlIFJlcGF0Y2hY
WFggZnJvbSBqaXQgdG8gYnl0ZWNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCmluZGV4IGE5YjdlMzIxM2UzNzYyMDcyY2ZlYmNjZjJjZTNlYzZlNzAzMzcy
ZDMuLmM2Y2JiZGE4NWJiMDA3ODA4ZjM4ZDk1Y2M0NzU2NzZhMmI4YjUzNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTQ2LDYgKzU0Niw3IEBA
IGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgdihCb29sLCB1c2VUZW1w
b3JhbCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgVGVtcG9yYWwgb2JqZWN0LiIpIFwKICAg
ICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBp
bnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSB0aHJlYWRpbmcgc3BlYy4iKSBcCiAgICAgdihCb29s
LCB1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAi
QWxsb3cgZnVuY3Rpb24gdHlwZXMgZnJvbSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVu
Y2VzIHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlHQywgZmFsc2UsIE5vcm1h
bCwgIkFsbG93IGdjIHR5cGVzIGZyb20gdGhlIHdhc20gZ2MgcHJvcG9zYWwuIikgXAogICAgIHYo
Qm9vbCwgdXNlV2ViQXNzZW1ibHlFeGNlcHRpb25zLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUg
bmV3IHNlY3Rpb24gYW5kIGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIGV4Y2VwdGlvbiBoYW5k
bGluZyBzcGVjLiIpIFwKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBlNDI4YjBkNWYzMmJlZjA4NDk5MzQxMDVkOTFlZmMw
MWMxMjI3YTk3Li5kYTVhZTVlOTE4ZDI1MDc3ZWQ3ZDI2ZTE3YzkzNzJkOGE4MWIzYWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAK
QEAgLTE0MzgsNyArMTQzOCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmdldEdsb2JhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhCiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGlu
Z01vZGU6OlBvcnRhYmxlOgotICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2Fz
bTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpOworICAgICAgICBBU1NF
UlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAg
ICAgIGlmIChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIEIzOjpXaWR0aDY0KSkKICAgICAg
ICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGVtcCwgb2Zmc2V0KSwgdGVtcCk7CiAgICAg
ICAgIGVsc2UgewpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0
R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFIK
ICAgICAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRh
YmxlOgotICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5m
b3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpOworICAgICAgICBBU1NFUlQoZ2xvYmFsLm11
dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAgICAgIGlmIChBcmc6
OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIEIzOjpXaWR0aDY0KSkKICAgICAgICAgICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmFkZHIodGVtcCwgb2Zmc2V0KSwgdGVtcCk7CiAgICAgICAgIGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmlu
ZGV4IDBiNTljYTBkODk5NGFiZjgxN2M1YjhkZjEyMTA1MmZmYTU3NDYxODYuLjFjOWI4MzNjMjAx
NjI3YjBmMWQ2Zjk1YzdiNDIxNmQyMjhlY2E2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6Z2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsCiAgICAgICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCB0b0IzVHlwZShnbG9iYWwu
dHlwZSksIG9yaWdpbigpLCBnbG9iYWxzQXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICog
c2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtOjpHbG9i
YWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOiB7Ci0gICAgICAgIEFTU0VSVChn
bG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6
TXV0YWJsZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRh
YmlsaXR5OjpNdXRhYmxlKTsKICAgICAgICAgVmFsdWUqIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEIzOjpJbnQ2NCwgb3JpZ2lu
KCksIGdsb2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0
ZXIpKSk7CiAgICAgICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCB0b0IzVHlwZShnbG9iYWwudHlwZSksIG9yaWdpbigp
LCBwb2ludGVyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZh
bHVlKSAtPiBQYXJ0aWFsUmUKICAgICAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBw
ZXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6
QmluZGluZ01vZGU6OlBvcnRhYmxlOiB7Ci0gICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0
eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CisgICAg
ICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpNdXRhYmxl
KTsKICAgICAgICAgVmFsdWUqIHBvaW50ZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEIzOjpJbnQ2NCwgb3JpZ2luKCksIGdsb2JhbHNBcnJh
eSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUsIG9y
aWdpbigpLCBnZXQodmFsdWUpLCBwb2ludGVyKTsKICAgICAgICAgLy8gV2UgZW1pdCBhIHdyaXRl
LWJhcnJpZXIgb250byBKU1dlYkFzc2VtYmx5R2xvYmFsLCBub3QgSlNXZWJBc3NlbWJseUluc3Rh
bmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDgyNGZhOGI3
MzQ3YzVmNDg2YzdlMDljMWQ1YTlkMWUwNzRlYjJjMzcuLjgzM2FiNWIwYzQ2NTViYTZhNjBkNGU2
ZDczNWMwYzE1NzkyNmM1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0
LmgKQEAgLTIzNiwxMyArMjM2LDE0IEBAIHN0cnVjdCBFeHBvcnQgewogCiBTdHJpbmcgbWFrZVN0
cmluZyhjb25zdCBOYW1lJiBjaGFyYWN0ZXJzKTsKIAorZW51bSBNdXRhYmlsaXR5IDogdWludDhf
dCB7CisgICAgLy8gRklYTUUgYXV0by1nZW5lcmF0ZSB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMxCisgICAgTXV0YWJsZSA9IDEsCisgICAgSW1tdXRh
YmxlID0gMAorfTsKKwogc3RydWN0IEdsb2JhbEluZm9ybWF0aW9uIHsKICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgZW51bSBNdXRhYmlsaXR5IDogdWludDhfdCB7Ci0g
ICAgICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUgdGhpcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQotICAgICAgICBNdXRhYmxlID0gMSwKLSAgICAgICAg
SW1tdXRhYmxlID0gMAotICAgIH07CiAKICAgICBlbnVtIEluaXRpYWxpemF0aW9uVHlwZSA6IHVp
bnQ4X3QgewogICAgICAgICBJc0ltcG9ydCwKQEAgLTI2Myw2ICsyNjQsMjEgQEAgc3RydWN0IEds
b2JhbEluZm9ybWF0aW9uIHsKICAgICB1aW50NjRfdCBpbml0aWFsQml0c09ySW1wb3J0TnVtYmVy
IHsgMCB9OwogfTsKIAorc3RydWN0IEZ1bmNUeXBlIHsKKyAgICBSZWZQdHI8U2lnbmF0dXJlPiBz
aWduYXR1cmU7Cit9OworCitzdHJ1Y3QgU3RydWN0RmllbGQgeworICAgIFR5cGUgdHlwZTsKKyAg
ICBNdXRhYmlsaXR5IG11dGFiaWxpdHk7Cit9OworCitzdHJ1Y3QgU3RydWN0VHlwZSB7CisgICAg
VmVjdG9yPFN0cnVjdEZpZWxkPiBmaWVsZHM7Cit9OworCit1c2luZyBUeXBlUmVjb3JkID0gc3Rk
Ojp2YXJpYW50PEZ1bmNUeXBlLCBTdHJ1Y3RUeXBlPjsKKwogc3RydWN0IEZ1bmN0aW9uRGF0YSB7
CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHNpemVfdCBzdGFydDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggZDk3ZTdlNzU5YTRmMjQ3NWEzNzc3NzM4NzE3ODMxYmM0OWUwOTNkMi4uZWUwZmU2MGZkMjNl
MzM3OTRlNTdiY2U0N2FmMjU2YTZkOGE3NTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEwODIsNyArMTA4Miw3IEBAIEZPUl9F
QUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgaW50MzJf
dCBoZWFwVHlwZTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSGVhcFR5
cGUobV9pbmZvLCBoZWFwVHlwZSksICJyZWYubnVsbCBoZWFwdHlwZSBtdXN0IGJlIGZ1bmNyZWYs
IGV4dGVybnJlZiBvciB0eXBlX2lkeCIpOwogICAgICAgICAgICAgaWYgKGlzVHlwZUluZGV4SGVh
cFR5cGUoaGVhcFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0
dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby51c2VkU2lnbmF0dXJl
c1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8uZ2V0U2lnbmF0dXJl
KGhlYXBUeXBlKSk7CiAgICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2lu
ZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5kZXggfTsKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJl
Zk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlw
ZSkgfTsKQEAgLTExNzUsNyArMTE3NSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09Q
KENSRUFURV9DQVNFKQogICAgICAgICBUeXBlZEV4cHJlc3Npb24gdmFsdWU7CiAgICAgICAgIFdB
U01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsdWUsICJzZXRfZ2xvYmFsIHZhbHVl
Iik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLmdsb2Jh
bHMuc2l6ZSgpLCAic2V0X2dsb2JhbCAiLCBpbmRleCwgIiBvZiB1bmtub3duIGdsb2JhbCwgbGlt
aXQgaXMgIiwgbV9pbmZvLmdsb2JhbHMuc2l6ZSgpKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRihtX2luZm8uZ2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0eSA9PSBHbG9iYWxJbmZvcm1h
dGlvbjo6SW1tdXRhYmxlLCAic2V0X2dsb2JhbCAiLCBpbmRleCwgIiBpcyBpbW11dGFibGUiKTsK
KyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8uZ2xvYmFsc1tpbmRleF0ubXV0
YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpJbW11dGFibGUsICJzZXRfZ2xvYmFsICIsIGluZGV4LCAi
IGlzIGltbXV0YWJsZSIpOwogCiAgICAgICAgIFR5cGUgZ2xvYmFsVHlwZSA9IG1faW5mby5nbG9i
YWxzW2luZGV4XS50eXBlOwogICAgICAgICBBU1NFUlQoaXNWYWx1ZVR5cGUoZ2xvYmFsVHlwZSkp
OwpAQCAtMTIyNCwxMCArMTIyNCwxMCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
c2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5k
ZXgiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJ
bmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4Iik7CiAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8udGFibGVDb3VudCgpLCAi
Y2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIgaW52YWxpZCwgbGlt
aXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291bnQoKSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYobV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCwgImNhbGxf
aW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwgc2lnbmF0dXJlSW5kZXgsICIgZXhjZWVkcyBr
bm93biBzaWduYXR1cmVzICIsIG1faW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkpOworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50eXBlc0NvdW50KCkgPD0gc2lnbmF0dXJlSW5k
ZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIsIHNpZ25hdHVyZUluZGV4LCAi
IGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udHlwZXNDb3VudCgpKTsKICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSAh
PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlk
IHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBmdW5jcmVmIik7CiAKLSAgICAgICAgY29uc3QgU2lnbmF0
dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8udXNlZFNpZ25hdHVyZXNbc2lnbmF0dXJlSW5k
ZXhdLmdldCgpOworICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1f
aW5mby5nZXRTaWduYXR1cmUoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBzaXplX3QgYXJndW1l
bnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhl
IGNhbGxlZSdzIGluZGV4LgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291
bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX2luZGlyZWN0IGV4cGVjdHMgIiwg
YXJndW1lbnRDb3VudCwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJy
ZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwCmluZGV4IGNiM2QxNjNiYmUw
OGI2YTU3NThjZDlkYzI4ZGUwNjhhMWRlNTZmMTcuLmEyYTBhY2I1ZjEwZDczNThjNTBjMGEwOWRm
OTZlNGYxZWY4NWJhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21HbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgR2xvYmFsOjpzZXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgQVNTRVJUKG1fbXV0YWJpbGl0eSAhPSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6SW1t
dXRhYmxlKTsKKyAgICBBU1NFUlQobV9tdXRhYmlsaXR5ICE9IFdhc206OkltbXV0YWJsZSk7CiAg
ICAgc3dpdGNoIChtX3R5cGUua2luZCkgewogICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjogewogICAg
ICAgICBpbnQzMl90IHZhbHVlID0gYXJndW1lbnQudG9JbnQzMihnbG9iYWxPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oCmluZGV4IDE3Zjg4NjgxZTA2ZTQwMjI4
MGQxOWFmYTJlZWJiY2FlOGQ5YmQxNWUuLjQzOGE3Zjc0MGZmOTkzMTZjNzY1ODEzZWFlODcyZjdk
Njc5NDBmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9i
YWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmgKQEAgLTQ4
LDEzICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFZhbHVlKiBtX3BvaW50ZXI7CiAgICAgfTsK
IAotICAgIHN0YXRpYyBSZWY8R2xvYmFsPiBjcmVhdGUoV2FzbTo6VHlwZSB0eXBlLCBXYXNtOjpH
bG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFs
VmFsdWUgPSAwKQorICAgIHN0YXRpYyBSZWY8R2xvYmFsPiBjcmVhdGUoV2FzbTo6VHlwZSB0eXBl
LCBXYXNtOjpNdXRhYmlsaXR5IG11dGFiaWxpdHksIHVpbnQ2NF90IGluaXRpYWxWYWx1ZSA9IDAp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHbG9iYWwodHlwZSwgbXV0YWJp
bGl0eSwgaW5pdGlhbFZhbHVlKSk7CiAgICAgfQogCiAgICAgV2FzbTo6VHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFi
aWxpdHkgbXV0YWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YWJpbGl0eTsgfQorICAgIFdh
c206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YWJpbGl0eTsg
fQogICAgIEpTVmFsdWUgZ2V0KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDY0X3Qg
Z2V0UHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5tX3ByaW1pdGl2ZTsgfQogICAg
IHZvaWQgc2V0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICBWYWx1ZSogdmFsdWVQb2ludGVyKCkgeyByZXR1cm4gJm1fdmFsdWU7IH0KIAog
cHJpdmF0ZToKLSAgICBHbG9iYWwoV2FzbTo6VHlwZSB0eXBlLCBXYXNtOjpHbG9iYWxJbmZvcm1h
dGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUpCisgICAg
R2xvYmFsKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50
NjRfdCBpbml0aWFsVmFsdWUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9t
dXRhYmlsaXR5KG11dGFiaWxpdHkpCiAgICAgICAgICwgbV92YWx1ZSgpCkBAIC04OCw3ICs4OCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgV2FzbTo6VHlwZSBtX3R5cGU7Ci0gICAgV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkgbV9tdXRhYmlsaXR5OworICAgIFdhc206Ok11
dGFiaWxpdHkgbV9tdXRhYmlsaXR5OwogICAgIEpTT2JqZWN0KiBtX293bmVyIHsgbnVsbHB0ciB9
OwogICAgIFZhbHVlIG1fdmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggOGVkMjMwOTNmNzEzZTFmNDIyOWViM2Yx
ZmM3NDVkNTQxYmZmYjI3Ny4uZDEwYmJjODBkYTgzZDg1Y2I5OWVjZWZjOTVkOGY2NDU0MDJkYTY1
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0
b3IuY3BwCkBAIC02MjUsNiArNjI1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9y
bWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfTsKQEAg
LTY4Miw2ICs2ODMsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JD
YWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03MTEsNiArNzEz
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzY4LDYgKzc3MSw3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gVmVjCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTgxOCw2ICs4MjIsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1
Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJ
bmZvcm1hdGlvbi5jcHAKaW5kZXggYzZlOGI4YzdmZWI5Y2MyMDhlYjI3OTZlYTdmMmE0MjA0ZDQw
NzY3Mi4uZTMyNDk3NGQzYjcwZWUwM2NiZTEwYjg1ZGY5YTAzYWM5MmQzZmYwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3Bw
CkBAIC0zOSw2ICszOSwxNCBAQCBNb2R1bGVJbmZvcm1hdGlvbjo6TW9kdWxlSW5mb3JtYXRpb24o
KQogCiBNb2R1bGVJbmZvcm1hdGlvbjo6fk1vZHVsZUluZm9ybWF0aW9uKCkgeyB9CiAKK2NvbnN0
IFNpZ25hdHVyZSYgTW9kdWxlSW5mb3JtYXRpb246OmdldFNpZ25hdHVyZSh1aW50MzJfdCBpbmRl
eCkgY29uc3QKK3sKKyAgICBjb25zdCBhdXRvKiBmdW5jVHlwZSA9IHN0ZDo6Z2V0X2lmPEZ1bmNU
eXBlPigmdHlwZXNbaW5kZXhdKTsKKyAgICBBU1NFUlQoZnVuY1R5cGUpOworICAgIEFTU0VSVChm
dW5jVHlwZS0+c2lnbmF0dXJlLmdldCgpKTsKKyAgICByZXR1cm4gKmZ1bmNUeXBlLT5zaWduYXR1
cmUuZ2V0KCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVJbmZvcm1hdGlvbi5oCmluZGV4IDMyOGM2YmNhNmJmYTY2MmI1M2U5YzhjOGRhOWFj
YjE4ZjUwNDRhYzUuLjY0ZmIxNjNiNmE1OTQxODczZGJlZGRkOGNlMDVhZjY0ZDkwMDRmM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlv
bi5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAKKyNpbmNs
dWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBXYXNtIHsKQEAgLTgxLDYgKzgyLDcgQEAgc3RydWN0IE1vZHVsZUluZm9y
bWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7
CiAgICAgdWludDMyX3QgdGFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlcy5zaXplKCk7
IH0KICAgICB1aW50MzJfdCBlbGVtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBlbGVtZW50cy5z
aXplKCk7IH0KICAgICB1aW50MzJfdCBkYXRhU2VnbWVudHNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG51bWJlck9mRGF0YVNlZ21lbnRzOyB9CisgICAgdWludDMyX3QgdHlwZXNDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIHR5cGVzLnNpemUoKTsgfQogCiAgICAgY29uc3QgVGFibGVJbmZvcm1hdGlvbiYg
dGFibGUodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlc1tpbmRleF07IH0KIApA
QCAtOTMsMTIgKzk1LDE1IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIGJvb2wgaXNEZWNsYXJl
ZEV4Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9kZWNsYXJlZEV4Y2Vw
dGlvbnMuY29udGFpbnMoaW5kZXgpOyB9CiAgICAgdm9pZCBhZGREZWNsYXJlZEV4Y2VwdGlvbih1
aW50MzJfdCBpbmRleCkgeyBtX2RlY2xhcmVkRXhjZXB0aW9ucy5zZXQoaW5kZXgpOyB9CiAKKyAg
ICBjb25zdCBTaWduYXR1cmUmIGdldFNpZ25hdHVyZSh1aW50MzJfdCBpbmRleCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1N0cnVjdFR5cGUodWludDMyX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RydWN0VHlwZT4odHlwZXNbaW5kZXhdKTsgfQorCiAgICAgVmVj
dG9yPEltcG9ydD4gaW1wb3J0czsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGltcG9ydEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4g
aW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlczsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5k
ZXg+IGludGVybmFsRXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlczsKLSAgICBWZWN0b3I8UmVmPFNp
Z25hdHVyZT4+IHVzZWRTaWduYXR1cmVzOworICAgIFZlY3RvcjxUeXBlUmVjb3JkPiB0eXBlczsK
IAogICAgIE1lbW9yeUluZm9ybWF0aW9uIG1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYjc5YWRjMWYzYzhhYjBmMzQ2ZmM0ZjZk
YTg5YWUuLjE1OTZlNzY1M2YzYWQ4NWFmMzUyZjhkMWQ5N2U4OGZhNGFkNzM1YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTI4OCw5ICsyODgsOSBAQCBBTFdB
WVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxTdWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFy
c2VyPFN1Y2Nlc3NUeXBlPjo6cAogICAgIGludDY0X3QgaW5kZXg7CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJJbnQ2NChpbmRleCksICJCbG9jay1saWtlIGluc3RydWN0aW9uIGRv
ZXNuJ3QgcmV0dXJuIHZhbHVlIHR5cGUgYnV0IGNhbid0IGRlY29kZSB0eXBlIHNlY3Rpb24gaW5k
ZXgiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4IDwgMCwgIkJsb2NrLWxpa2UgaW5z
dHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG5lZ2F0aXZlIik7Ci0gICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnVzZWRTaWduYXR1cmVz
LnNpemUoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBv
ZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwgIiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnVz
ZWRTaWduYXR1cmVzLnNpemUoKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2Fz
dDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnR5cGVzQ291bnQoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1
Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwg
IiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnR5cGVzQ291bnQoKSk7CiAKLSAgICByZXN1bHQg
PSAmaW5mby51c2VkU2lnbmF0dXJlc1tpbmRleF0uZ2V0KCk7CisgICAgcmVzdWx0ID0gJmluZm8u
Z2V0U2lnbmF0dXJlKGluZGV4KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0zMTIsNyArMzEy
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5
cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnVzZWRT
aWduYXR1cmVzLnNpemUoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkg
Pj0gaW5mby50eXBlc0NvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3Vs
dCA9IGhlYXBUeXBlOwpAQCAtMzQwLDcgKzM0MCwxOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFy
c2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
CiAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7CiAgICAgICAgIGlmICghcGFyc2VIZWFwVHlwZShp
bmZvLCBoZWFwVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpZ0lu
ZGV4ID0gaGVhcFR5cGUgPCAwID8gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBl
KSA6IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoaW5mby51c2VkU2lnbmF0dXJlc1toZWFwVHlw
ZV0uZ2V0KCkpOworICAgICAgICBpZiAoaGVhcFR5cGUgPCAwKSB7CisgICAgICAgICAgICBUeXBl
S2luZCBoZWFwS2luZCA9IHN0YXRpY19jYXN0PFR5cGVLaW5kPihoZWFwVHlwZSk7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRIZWFwVHlwZUtpbmQoaGVhcEtpbmQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNpZ0luZGV4ID0gc3RhdGljX2Nhc3Q8U2lnbmF0
dXJlSW5kZXg+KGhlYXBLaW5kKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnR5cGVzQ291bnQoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlHQygpICYmIGluZm8uaXNTdHJ1Y3RUeXBlKGhlYXBUeXBlKSkKKyAgICAgICAgICAg
ICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2lnSW5kZXggPSBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KGluZm8uZ2V0U2lnbmF0dXJlKGhlYXBUeXBlKSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBUeXBlIHR5cGUgPSB7IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4o
aXNOdWxsYWJsZSksIHNpZ0luZGV4IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYTg4OTVjOTUxMjlkMzNjN2MwY2RiZjg2NjRl
ODkwZDRhZjM1MTNiYS4uMDA0NzQ3YmMwYjk5OTI4NTFiNzMxNjZlZWQ0MDczMDJjYjVlYjZiNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cApAQCAtNDQsNDEgKzQ0LDMzIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKCkgLT4g
UGFydGlhbFJlc3VsdAogCiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
Y291bnQpLCAiY2FuJ3QgZ2V0IFR5cGUgc2VjdGlvbidzIGNvdW50Iik7CiAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihjb3VudCA+IG1heFR5cGVzLCAiVHlwZSBzZWN0aW9uJ3MgY291bnQgaXMgdG9v
IGJpZyAiLCBjb3VudCwgIiBtYXhpbXVtICIsIG1heFR5cGVzKTsKLSAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFtX2luZm8tPnVzZWRTaWduYXR1cmVzLnRyeVJlc2VydmVDYXBhY2l0eShjb3VudCks
ICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBjb3Vu
dCwgIiBlbnRyaWVzIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT50eXBlcy50
cnlSZXNlcnZlQ2FwYWNpdHkoY291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBm
b3IgVHlwZSBzZWN0aW9uJ3MgIiwgY291bnQsICIgZW50cmllcyIpOwogCiAgICAgZm9yICh1aW50
MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaW50OF90IHR5cGU7Ci0gICAg
ICAgIHVpbnQzMl90IGFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIFZlY3RvcjxUeXBlPiBhcmd1bWVu
dFR5cGVzOwotCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlKSwg
ImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHR5cGUiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRih0eXBlICE9IHN0YXRpY19jYXN0PGludDhfdD4oVHlwZUtpbmQ6OkZ1bmMpLCBpLCAi
dGggVHlwZSBpcyBub24tRnVuYyAiLCB0eXBlKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIoYXJndW1lbnRDb3VudCksICJjYW4ndCBnZXQgIiwgaSwgInRoIFR5
cGUncyBhcmd1bWVudCBjb3VudCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3Vt
ZW50Q291bnQgPiBtYXhGdW5jdGlvblBhcmFtcywgaSwgInRoIGFyZ3VtZW50IGNvdW50IGlzIHRv
byBiaWcgIiwgYXJndW1lbnRDb3VudCwgIiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uUGFyYW1zKTsK
LSAgICAgICAgVmVjdG9yPFR5cGU+IGFyZ3VtZW50czsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighYXJndW1lbnRzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0
IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGksICJ0aCBzaWdu
YXR1cmUiKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICBUeXBlIGFyZ3VtZW50VHlwZTsKLSAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgYXJndW1lbnRUeXBlKSwg
ImNhbid0IGdldCAiLCBpLCAidGggYXJndW1lbnQgVHlwZSIpOwotICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChhcmd1bWVudFR5cGUpOworICAgICAgICBUeXBlUmVjb3JkIHR5cGVSZWNvcmQ7
CisgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KHR5cGUpKSB7CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkZ1bmM6IHsKKyAgICAgICAgICAgIEZ1bmNUeXBlIGZ1bmNUeXBlOwor
ICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9uVHlwZShp
LCBmdW5jVHlwZSkpOworICAgICAgICAgICAgdHlwZVJlY29yZCA9IFR5cGVSZWNvcmQgeyBGdW5j
VHlwZSB7IFdURk1vdmUoZnVuY1R5cGUpIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDogeworICAgICAgICAgICAgaWYgKCFP
cHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwo
aSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMgIiwgdHlwZSk7CiAKLSAgICAgICAgdWludDMyX3QgcmV0
dXJuQ291bnQ7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHJl
dHVybkNvdW50KSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJldHVybiBjb3VudCIpOwot
Ci0gICAgICAgIFZlY3RvcjxUeXBlLCAxPiByZXR1cm5UeXBlczsKLSAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQp
LCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgaSwg
InRoIHNpZ25hdHVyZSIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmV0dXJu
Q291bnQ7ICsraSkgewotICAgICAgICAgICAgVHlwZSB2YWx1ZTsKLSAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgdmFsdWUpLCAiY2FuJ3QgZ2V0
ICIsIGksICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVlIik7Ci0gICAgICAgICAgICByZXR1cm5UeXBl
cy5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgU3RydWN0VHlwZSBzdHJ1Y3RUeXBlOworICAg
ICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZVN0cnVjdFR5cGUoaSwgc3Ry
dWN0VHlwZSkpOworICAgICAgICAgICAgdHlwZVJlY29yZCA9IFR5cGVSZWNvcmQgeyBXVEZNb3Zl
KHN0cnVjdFR5cGUpIH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhaWwoaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMg
IiwgdHlwZSk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8U2lnbmF0dXJlPiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlRm9yKHJldHVyblR5cGVzLCBhcmd1
bWVudHMpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBh
bGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0
dXJlIik7Ci0KLSAgICAgICAgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQo
c2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtX2luZm8tPnR5cGVzLnVuY2hl
Y2tlZEFwcGVuZChXVEZNb3ZlKHR5cGVSZWNvcmQpKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsK
IH0KQEAgLTExMyw5ICsxMDUsOSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkg
LT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsK
ICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvblNpZ25hdHVyZUlu
ZGV4KSwgImNhbid0IGdldCAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQncyBmdW5jdGlvbiBz
aWduYXR1cmUgaW4gbW9kdWxlICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0
cmluZywgIiciKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaWdu
YXR1cmVJbmRleCA+PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgImludmFsaWQgZnVu
Y3Rpb24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGZ1bmN0
aW9uU2lnbmF0dXJlSW5kZXgsICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNp
Z25hdHVyZXMuc2l6ZSgpLCAiIGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAn
IiwgZmllbGRTdHJpbmcsICInIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1
bmN0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZvLT50eXBlc0NvdW50KCksICJpbnZhbGlkIGZ1
bmN0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0LCAiLCBmdW5j
dGlvblNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVz
Q291bnQoKSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxk
U3RyaW5nLCAiJyIpOwogICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRGdW5j
dGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOwotICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNp
Z25hdHVyZXNbZnVuY3Rpb25TaWduYXR1cmVJbmRleF0pOworICAgICAgICAgICAgU2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+
Z2V0U2lnbmF0dXJlKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgpKTsKICAgICAgICAgICAgIG1faW5m
by0+aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1
cmVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTM4LDcgKzEzMCw3
IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAg
ICAgICAgICAgICBHbG9iYWxJbmZvcm1hdGlvbiBnbG9iYWw7CiAgICAgICAgICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlR2xvYmFsVHlwZShnbG9iYWwpKTsKICAgICAgICAgICAg
IC8vIE9ubHkgbXV0YWJsZSBnbG9iYWxzIG5lZWQgZmxvYXRpbmcgYmluZGluZ3MuCi0gICAgICAg
ICAgICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gR2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxp
dHk6Ok11dGFibGUpCisgICAgICAgICAgICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gTXV0YWJp
bGl0eTo6TXV0YWJsZSkKICAgICAgICAgICAgICAgICBnbG9iYWwuYmluZGluZ01vZGUgPSBHbG9i
YWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOwogICAgICAgICAgICAga2luZElu
ZGV4ID0gbV9pbmZvLT5nbG9iYWxzLnNpemUoKTsKICAgICAgICAgICAgIG1faW5mby0+Z2xvYmFs
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShnbG9iYWwpKTsKQEAgLTE1Myw5ICsxNDUsOSBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAg
ICAgICAgICB1aW50MzJfdCBleGNlcHRpb25TaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGV4Y2VwdGlvblNpZ25hdHVyZUluZGV4
KSwgImNhbid0IGdldCAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQncyBleGNlcHRpb24gc2ln
bmF0dXJlIGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJp
bmcsICInIik7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGV4Y2VwdGlvblNpZ25h
dHVyZUluZGV4ID49IG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAiaW52YWxpZCBleGNl
cHRpb24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGV4Y2Vw
dGlvblNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnVzZWRT
aWduYXR1cmVzLnNpemUoKSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQg
JyIsIGZpZWxkU3RyaW5nLCAiJyIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihl
eGNlcHRpb25TaWduYXR1cmVJbmRleCA+PSBtX2luZm8tPnR5cGVzQ291bnQoKSwgImludmFsaWQg
ZXhjZXB0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0LCAiLCBl
eGNlcHRpb25TaWduYXR1cmVJbmRleCwgIiBpcyBvdXQgb2YgcmFuZ2Ugb2YgIiwgbV9pbmZvLT50
eXBlc0NvdW50KCksICIgaW4gbW9kdWxlICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBm
aWVsZFN0cmluZywgIiciKTsKICAgICAgICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+aW1wb3J0
RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCk7Ci0gICAgICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51
c2VkU2lnbmF0dXJlc1tleGNlcHRpb25TaWduYXR1cmVJbmRleF0pOworICAgICAgICAgICAgU2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1f
aW5mby0+Z2V0U2lnbmF0dXJlKGV4Y2VwdGlvblNpZ25hdHVyZUluZGV4KSk7CiAgICAgICAgICAg
ICBtX2luZm8tPmltcG9ydEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5k
KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNzks
OSArMTcxLDkgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKCkgLT4gUGFydGlh
bFJlc3VsdAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIHVpbnQzMl90IHR5cGVOdW1iZXI7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFyVUludDMyKHR5cGVOdW1iZXIpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBGdW5jdGlvbidz
IHR5cGUgbnVtYmVyIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU51bWJlciA+
PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgaSwgInRoIEZ1bmN0aW9uIHR5cGUgbnVt
YmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYodHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVzQ291bnQoKSwgaSwgInRoIEZ1bmN0aW9uIHR5
cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7CiAKLSAgICAgICAgU2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+
dXNlZFNpZ25hdHVyZXNbdHlwZU51bWJlcl0pOworICAgICAgICBTaWduYXR1cmVJbmRleCBzaWdu
YXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT5nZXRTaWduYXR1
cmUodHlwZU51bWJlcikpOwogICAgICAgICAvLyBUaGUgQ29kZSBzZWN0aW9uIGZpeGVzIHVwIHN0
YXJ0IGFuZCBlbmQuCiAgICAgICAgIHNpemVfdCBzdGFydCA9IDA7CiAgICAgICAgIHNpemVfdCBl
bmQgPSAwOwpAQCAtMzcxLDcgKzM2Myw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFeHBv
cnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGtp
bmRJbmRleCA+PSBtX2luZm8tPmdsb2JhbHMuc2l6ZSgpLCBleHBvcnROdW1iZXIsICJ0aCBFeHBv
cnQgaGFzIGludmFsaWQgZ2xvYmFsIG51bWJlciAiLCBraW5kSW5kZXgsICIgaXQgZXhjZWVkcyB0
aGUgZ2xvYmFscyBjb3VudCAiLCBtX2luZm8tPmdsb2JhbHMuc2l6ZSgpLCAiLCBuYW1lZCAnIiwg
ZmllbGRTdHJpbmcsICInIik7CiAgICAgICAgICAgICAvLyBPbmx5IG11dGFibGUgZ2xvYmFscyBu
ZWVkIGZsb2F0aW5nIGJpbmRpbmdzLgogICAgICAgICAgICAgR2xvYmFsSW5mb3JtYXRpb24mIGds
b2JhbCA9IG1faW5mby0+Z2xvYmFsc1traW5kSW5kZXhdOwotICAgICAgICAgICAgaWYgKGdsb2Jh
bC5tdXRhYmlsaXR5ID09IEdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKQor
ICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IE11dGFiaWxpdHk6Ok11dGFibGUp
CiAgICAgICAgICAgICAgICAgZ2xvYmFsLmJpbmRpbmdNb2RlID0gR2xvYmFsSW5mb3JtYXRpb246
OkJpbmRpbmdNb2RlOjpQb3J0YWJsZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC02MDksNyArNjAxLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4
X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKIAogICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5mby0+Z2xvYmFscy5zaXplKCksICJnZXRfZ2xv
YmFsJ3MgaW5kZXggIiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGdsb2JhbHMgIiwg
bV9pbmZvLT5nbG9iYWxzLnNpemUoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5k
ZXggPj0gbV9pbmZvLT5maXJzdEludGVybmFsR2xvYmFsLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2lu
ZCBpbmRleCAiLCBpbmRleCwgIiBleGNlZWRzIHRoZSBmaXJzdCBpbnRlcm5hbCBnbG9iYWwgIiwg
bV9pbmZvLT5maXJzdEludGVybmFsR2xvYmFsKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RihtX2luZm8tPmdsb2JhbHNbaW5kZXhdLm11dGFiaWxpdHkgIT0gR2xvYmFsSW5mb3JtYXRpb246
OkltbXV0YWJsZSwgImdldF9nbG9iYWwgaW1wb3J0IGtpbmQgaW5kZXggIiwgaW5kZXgsICIgaXMg
bXV0YWJsZSAiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNb
aW5kZXhdLm11dGFiaWxpdHkgIT0gTXV0YWJpbGl0eTo6SW1tdXRhYmxlLCAiZ2V0X2dsb2JhbCBp
bXBvcnQga2luZCBpbmRleCAiLCBpbmRleCwgIiBpcyBtdXRhYmxlICIpOwogCiAgICAgICAgIHJl
c3VsdFR5cGUgPSBtX2luZm8tPmdsb2JhbHNbaW5kZXhdLnR5cGU7CiAgICAgICAgIGJpdHNPcklt
cG9ydE51bWJlciA9IGluZGV4OwpAQCAtNjIyLDcgKzYxNCw3IEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnRO
dW1iZXIsCiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxs
IGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7CiAgICAg
ICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAg
ICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICAg
ICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZShoZWFwVHlwZSkpOwogICAgICAgICAgICAgICAg
IHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHNp
Z25hdHVyZUluZGV4IH07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0eXBl
T2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0aWNf
Y2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIH07CkBAIC02ODAsNiArNjcyLDU5IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihzdGQ6Om9wdGlvbmFsPEkzMkluaXRF
eHByPiYgaW5pdEV4cHIsIEFTQ0lJCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBTZWN0aW9u
UGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgRnVuY1R5cGUmIGZ1
bmNUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgYXJndW1lbnRDb3VudDsK
KyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihhcmd1bWVudENvdW50KSwg
ImNhbid0IGdldCAiLCBwb3NpdGlvbiwgInRoIFR5cGUncyBhcmd1bWVudCBjb3VudCIpOworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1heEZ1bmN0aW9uUGFyYW1zLCBw
b3NpdGlvbiwgInRoIGFyZ3VtZW50IGNvdW50IGlzIHRvbyBiaWcgIiwgYXJndW1lbnRDb3VudCwg
IiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uUGFyYW1zKTsKKyAgICBWZWN0b3I8VHlwZT4gYXJndW1l
bnRUeXBlczsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFhcmd1bWVudFR5cGVzLnRyeVJlc2Vy
dmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkg
Zm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0aW9uLCAidGggc2lnbmF0dXJlIik7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7CisgICAgICAgIFR5
cGUgYXJndW1lbnRUeXBlOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVl
VHlwZShtX2luZm8sIGFyZ3VtZW50VHlwZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIGFyZ3VtZW50
IFR5cGUiKTsKKyAgICAgICAgYXJndW1lbnRUeXBlcy5hcHBlbmQoYXJndW1lbnRUeXBlKTsKKyAg
ICB9CisKKyAgICB1aW50MzJfdCByZXR1cm5Db3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVZhclVJbnQzMihyZXR1cm5Db3VudCksICJjYW4ndCBnZXQgIiwgcG9zaXRpb24sICJ0
aCBUeXBlJ3MgcmV0dXJuIGNvdW50Iik7CisKKyAgICBWZWN0b3I8VHlwZSwgMT4gcmV0dXJuVHlw
ZXM7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGFyZ3VtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlw
ZSBzZWN0aW9uJ3MgIiwgcG9zaXRpb24sICJ0aCBzaWduYXR1cmUiKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgeworICAgICAgICBUeXBlIHZhbHVlOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShtX2luZm8sIHZhbHVl
KSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJldHVybiB2YWx1ZSIpOworICAgICAgICBy
ZXR1cm5UeXBlcy5hcHBlbmQodmFsdWUpOworICAgIH0KKworICAgIGZ1bmNUeXBlLnNpZ25hdHVy
ZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaWduYXR1cmVGb3IocmV0dXJuVHlwZXMsIGFyZ3Vt
ZW50VHlwZXMpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWZ1bmNUeXBlLnNpZ25hdHVyZSwg
ImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0
aW9uLCAidGggc2lnbmF0dXJlIik7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlU3RydWN0VHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgU3RydWN0VHlwZSYg
c3RydWN0VHlwZSkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEFTU0VSVChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseUdDKCkpOworCisgICAgdWludDMyX3QgZmllbGRDb3VudDsKKyAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmaWVsZENvdW50KSwgImNhbid0IGdldCAiLCBw
b3NpdGlvbiwgInRoIHN0cnVjdCB0eXBlJ3MgZmllbGQgY291bnQiKTsKKyAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFzdHJ1Y3RUeXBlLmZpZWxkcy50cnlSZXNlcnZlQ2FwYWNpdHkoZmllbGRDb3Vu
dCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1Y3QgZmllbGRzICIsIGZp
ZWxkQ291bnQsICIgZW50cmllcyIpOworCisgICAgZm9yICh1aW50MzJfdCBmaWVsZEluZGV4ID0g
MDsgZmllbGRJbmRleCA8IGZpZWxkQ291bnQ7ICsrZmllbGRJbmRleCkgeworICAgICAgICBUeXBl
IGZpZWxkVHlwZTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUo
bV9pbmZvLCBmaWVsZFR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGZpZWxkSW5kZXgsICJ0aCBmaWVsZCBU
eXBlIik7CisKKyAgICAgICAgdWludDhfdCBtdXRhYmlsaXR5OworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxpdHkpLCBwb3NpdGlvbiwgImNhbid0IGdldCAi
LCBmaWVsZEluZGV4LCAidGggZmllbGQgbXV0YWJpbGl0eSIpOworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKG11dGFiaWxpdHkgIT0gMHgwICYmIG11dGFiaWxpdHkgIT0gMHgxLCAiaW52YWxp
ZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4IiwgaGV4KG11dGFiaWxpdHksIDIsIExvd2VyY2FzZSkp
OworCisgICAgICAgIHN0cnVjdFR5cGUuZmllbGRzLnVuY2hlY2tlZEFwcGVuZChTdHJ1Y3RGaWVs
ZCB7IGZpZWxkVHlwZSwgc3RhdGljX2Nhc3Q8TXV0YWJpbGl0eT4obXV0YWJpbGl0eSkgfSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkz
MkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mIGlu
aXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmV0dXJuIHBhcnNlSTMySW5pdEV4cHIo
aW5pdEV4cHIsICJFbGVtZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsKQEAg
LTc1OCw3ICs4MDMsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xvYmFsVHlwZShHbG9i
YWxJbmZvcm1hdGlvbiYgZ2xvYmFsKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBnbG9iYWwudHlwZSksICJjYW4ndCBnZXQg
R2xvYmFsJ3MgdmFsdWUgdHlwZSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUlu
dDgobXV0YWJpbGl0eSksICJjYW4ndCBnZXQgR2xvYmFsIHR5cGUncyBtdXRhYmlsaXR5Iik7CiAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtdXRhYmlsaXR5ICE9IDB4MCAmJiBtdXRhYmlsaXR5ICE9
IDB4MSwgImludmFsaWQgR2xvYmFsJ3MgbXV0YWJpbGl0eTogMHgiLCBoZXgobXV0YWJpbGl0eSwg
MiwgTG93ZXJjYXNlKSk7Ci0gICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxHbG9i
YWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eT4obXV0YWJpbGl0eSk7CisgICAgZ2xvYmFsLm11dGFi
aWxpdHkgPSBzdGF0aWNfY2FzdDxNdXRhYmlsaXR5PihtdXRhYmlsaXR5KTsKICAgICByZXR1cm4g
eyB9OwogfQogCkBAIC04NjcsOCArOTEyLDggQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUV4
Y2VwdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgICAgICB1aW50MzJfdCB0eXBlTnVtYmVy
OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0eXBlTnVtYmVy
KSwgImNhbid0IGdldCAiLCBleGNlcHRpb25OdW1iZXIsICJ0aCBFeGNlcHRpb24ncyB0eXBlIG51
bWJlciIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9pbmZv
LT51c2VkU2lnbmF0dXJlcy5zaXplKCksIGV4Y2VwdGlvbk51bWJlciwgInRoIEV4Y2VwdGlvbiB0
eXBlIG51bWJlciBpcyBpbnZhbGlkICIsIHR5cGVOdW1iZXIpOwotICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51
c2VkU2lnbmF0dXJlc1t0eXBlTnVtYmVyXSk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
dHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVzQ291bnQoKSwgZXhjZXB0aW9uTnVtYmVyLCAidGgg
RXhjZXB0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7CisgICAgICAg
IFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChtX2luZm8tPmdldFNpZ25hdHVyZSh0eXBlTnVtYmVyKSk7CiAgICAgICAgIG1faW5mby0+aW50
ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJ
bmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuaAppbmRleCA5MWZkM2VkODM0MjI1YzgxM2UyZDAxMzkyYjQ5ZThkOWMzYmUyYjg3
Li40YjBjMzIyZGJlMWJhNjRlMmU0ZDlmNzI2MGFiMmE4OTc2MzgxYjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAgLTY5LDYgKzY5LDkg
QEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUlu
aXRFeHByKHVpbnQ4X3QmLCB1aW50NjRfdCYsIFR5cGUmIGluaXRFeHByVHlwZSk7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhwcihzdGQ6Om9wdGlv
bmFsPEkzMkluaXRFeHByPiYsIEFTQ0lJTGl0ZXJhbCBmYWlsTWVzc2FnZSk7CiAKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBw
b3NpdGlvbiwgRnVuY1R5cGUmKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBwYXJzZVN0cnVjdFR5cGUodWludDMyX3QgcG9zaXRpb24sIFN0cnVjdFR5cGUmKTsKKwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4
KHVpbnQzMl90KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkz
MkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVsZW1lbnRLaW5kKHVp
bnQ4X3QmIGVsZW1lbnRLaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKaW5kZXggNzY5NWQ3NzBjMWQ1ODQzOGEwYTMw
NjIzNDA5OTlmYjkwMGViYzYyMi4uMmMyM2NkNTQ0NjcxOTM2NTEyMGM4OWY4MjA3MDI3MDYzYjE4
YTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUdsb2JhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUdsb2JhbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNPYmplY3QqIEpTV2ViQXNzZW1i
bHlHbG9iYWw6OnR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCksIDIpOwogCi0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIiksIGpzQm9vbGVhbihtX2dsb2Jh
bC0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmxlKSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRh
YmxlIiksIGpzQm9vbGVhbihtX2dsb2JhbC0+bXV0YWJpbGl0eSgpID09IFdhc206Ok11dGFibGUp
KTsKIAogICAgIFdhc206OlR5cGUgdmFsdWVUeXBlID0gbV9nbG9iYWwtPnR5cGUoKTsKICAgICBK
U1N0cmluZyogdmFsdWVTdHJpbmcgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2FzbVRvSlMuY3BwCmluZGV4IDU4MTA0MWIzY2EzNDMzYzdhZmFiZjFiZTM0Njc1ZGFi
N2Q0YTRmZDYuLjY2YTkyMTNlOWE0YTEzYTk4ZWQ2ZTczOTA1MGNmYzMxMjQ1NTE5Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTEwNCw2ICsxMDQs
NyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBl
LmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0Ogog
ICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyAvLyBIYW5kbGVkIGFib3ZlLgpAQCAtMTc4LDYgKzE3OSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMo
Vk0mIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUua2luZCkgewogICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6Cisg
ICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBjYXNlIFR5cGVL
aW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2Jh
bENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCmluZGV4IDBiOTYzMWVhNTQ2NTQ1Zjc2YTMyZTg3MmQz
OTc4ZTBmNThjODA4ZWMuLmE4ZTIwYzc5MDM3YTY0MzdjMWY2ZmJkN2FhMTI2OTAzMjJlZTQwNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xv
YmFsQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5R2xvYmFsLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGdsb2JhbERlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihhcmd1bWVudCk7CiAgICAgfQogCi0gICAgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11
dGFiaWxpdHkgbXV0YWJpbGl0eTsKKyAgICBXYXNtOjpNdXRhYmlsaXR5IG11dGFiaWxpdHk7CiAg
ICAgewogICAgICAgICBJZGVudGlmaWVyIG11dGFibGVJZGVudCA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtdXRhYmxlIik7CiAgICAgICAgIEpTVmFsdWUgbXV0YWJsZVZhbHVlID0gZ2xv
YmFsRGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgbXV0YWJsZUlkZW50KTsKQEAgLTc0LDkg
Kzc0LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlH
bG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgYm9vbCBtdXRhYmxlQm9v
bGVhbiA9IG11dGFibGVWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKG11dGFibGVCb29sZWFuKQotICAgICAgICAgICAgbXV0YWJpbGl0eSA9IFdhc206Okdsb2Jh
bEluZm9ybWF0aW9uOjpNdXRhYmxlOworICAgICAgICAgICAgbXV0YWJpbGl0eSA9IFdhc206Ok11
dGFibGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG11dGFiaWxpdHkgPSBXYXNtOjpHbG9i
YWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlOworICAgICAgICAgICAgbXV0YWJpbGl0eSA9IFdhc206
OkltbXV0YWJsZTsKICAgICB9CiAKICAgICBXYXNtOjpUeXBlIHR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3Rv
dHlwZS5jcHAKaW5kZXggYzdiM2Q2ZjdlOTQ1MTFjMThhZGZkN2E3NmM4OTIxOTY5MDY0ZTk1Yy4u
ZGI4ZDkwNGFkZDc0MjZlZTg3YTJkZWQ4YmMyMGI0NjhhYWYxNDlkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJv
dG90eXBlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3
ZWJBc3NlbWJseUdsb2JhbFByb3RvU2V0dGVyRnVuY1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqCiAg
ICAgSlNXZWJBc3NlbWJseUdsb2JhbCogZ2xvYmFsID0gZ2V0R2xvYmFsKGdsb2JhbE9iamVjdCwg
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAoZ2xvYmFsLT5nbG9iYWwoKS0+
bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpJbW11
dGFibGUpCisgICAgaWYgKGdsb2JhbC0+Z2xvYmFsKCktPm11dGFiaWxpdHkoKSA9PSBXYXNtOjpN
dXRhYmlsaXR5OjpJbW11dGFibGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuR2xvYmFsLnByb3RvdHlwZS52YWx1ZSBhdHRlbXB0cyB0
byBtb2RpZnkgaW1tdXRhYmxlIGdsb2JhbCB2YWx1ZSJfcykpKTsKIAogICAgIGdsb2JhbC0+Z2xv
YmFsKCktPnNldChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCmluZGV4IDA2NGFjNjk5MTNjOGQ2YTFiMTg4YWRkYmNlNDRjZDhjY2Q0OGY2ZTku
LjE5ODE3OWE0ZTA2Y2UxMTYzOWIxZDllYjYzZWU0ZmMzNjI0ZjU5OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
ICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpHbG9iYWw6IHsKICAgICAgICAgICAgIC8vIDUu
IElmIGkgaXMgYSBnbG9iYWwgaW1wb3J0OgogICAgICAgICAgICAgY29uc3QgV2FzbTo6R2xvYmFs
SW5mb3JtYXRpb24mIGdsb2JhbCA9IG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0Lmtp
bmRJbmRleF07Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xv
YmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSkgeworICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRh
YmlsaXR5ID09IFdhc206OkltbXV0YWJsZSkgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5p
bmhlcml0czxKU1dlYkFzc2VtYmx5R2xvYmFsPih2bSkpIHsKICAgICAgICAgICAgICAgICAgICAg
SlNXZWJBc3NlbWJseUdsb2JhbCogZ2xvYmFsVmFsdWUgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUds
b2JhbCo+KHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9i
YWwoKS0+dHlwZSgpICE9IGdsb2JhbC50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwg
dm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJl
IGEgc2FtZSB0eXBlIikpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5n
bG9iYWwoKS0+bXV0YWJpbGl0eSgpICE9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFi
bGUpCisgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPm11dGFi
aWxpdHkoKSAhPSBXYXNtOjpJbW11dGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2
bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUg
YSBzYW1lIG11dGFiaWxpdHkiKSkpOwogICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBk
ZWNsYXJlZEdsb2JhbFR5cGUgPSBtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5k
SW5kZXhdLnR5cGU7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVjbGFyZWRHbG9iYWxU
eXBlLmtpbmQpIHsKQEAgLTUwMSw4ICs1MDEsOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBX
YXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOiB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0
aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKLSAgICAgICAgICAgICAgICBSZWY8V2FzbTo6R2xv
YmFsPiBnbG9iYWxSZWYgPSBXYXNtOjpHbG9iYWw6OmNyZWF0ZShnbG9iYWwudHlwZSwgV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJsZSk7
CisgICAgICAgICAgICAgICAgUmVmPFdhc206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xv
YmFsOjpjcmVhdGUoZ2xvYmFsLnR5cGUsIFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUsIGluaXRp
YWxCaXRzKTsKICAgICAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5R2xvYmFsKiBnbG9iYWxWYWx1
ZSA9IEpTV2ViQXNzZW1ibHlHbG9iYWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVm
KSk7CiAgICAgICAgICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAg
ICAgICAgICBtX2luc3RhbmNlLT5saW5rR2xvYmFsKHZtLCBnbG9iYWxJbmRleCwgZ2xvYmFsVmFs
dWUpOwpAQCAtNTU3LDEyICs1NTcsMTIgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6
aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICAg
ICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTV2ViQXNzZW1ibHlHbG9iYWw6OnRyeUNy
ZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5R2xvYmFsU3Ry
dWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7CiAgICAgICAgICAgICAgICAgICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmdldEdsb2JhbEJpbmRpbmcoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxSZWYpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Z2xvYmFsUmVmLT50eXBlKCkgPT0gZ2xvYmFsLnR5cGUpOwogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZ2xvYmFsUmVmLT5tdXRhYmlsaXR5KCkgPT0gZ2xvYmFsLm11dGFiaWxpdHkpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoZ2xvYmFsUmVmLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6
TXV0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxSZWYtPm93bmVyPEpT
V2ViQXNzZW1ibHlHbG9iYWw+KCkpOwogICAgICAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVl
ID0gZ2xvYmFsUmVmLT5vd25lcjxKU1dlYkFzc2VtYmx5R2xvYmFsPigpOwogICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCAzMmM4YWY4YmJmNTdl
YTYwNWIzMzU1YTU2ZDg4MmU4ZGRlMWUwZWVkLi43NDI4MTJjZGViMDNkNWE1NDg0NWEwNzdhYmIx
ZDc0YjUyN2ZlNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNt
Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCkBAIC0xNiw2
ICsxNiw3IEBACiAgICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFs
dWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgInJlZiI6ICAgICAg
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0
IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
IC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgInN0cnVjdCI6ICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAg
ICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwg
Imk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU5MjZlNDRmYTgx
NGMxMzFmNjNmOWUwOTgwNzA1MmExNjA2NTRhYzAuLjFhODQxOWI3MTc0NmY0OWI1ZmI4NDk1MmEw
MDA0YmJlOTMzMDRhOTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRz
a292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1
cHBvcnQgZm9yIEdDIHN0cnVjdHMgdHlwZXMgZW5jb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIHNpbXBsZSB0ZXN0cyBmb3Ig
cGFyc2luZyBXYXNtIHN0cnVjdHMuCisgICAgICAgIAorICAgICAgICAqIHdhc20ueWFtbDoKKyAg
ICAgICAgKiB3YXNtL2djL3N0cnVjdHMuanM6IEFkZGVkLgorICAgICAgICAobW9kdWxlKToKKyAg
ICAgICAgKHRlc3RTdHJ1Y3REZWNsYXJhdGlvbik6CisgICAgICAgICogd2FzbS93YXNtLmpzb246
CisKIDIwMjEtMTEtMTkgIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBGaXggV2ViQXNzZW1ibHkgbWVtb3J5LmZpbGwgb3V0IG9mIGJvdW5kcyBlcnJvciBtZXNz
YWdlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20ueWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCmlu
ZGV4IDAwNmMzM2JlNzgzNzkzN2Y1NTQwOGNiZTg2ZjY2ODI2ZTI5NGE5MjguLjk0ZDZkNGYyN2Vm
OTZhYzBkNzhhMjc3Nzk3NmVlMjRmNjExYWMzYTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55
YW1sCisrKyBiL0pTVGVzdHMvd2FzbS55YW1sCkBAIC0zNSw2ICszNSw4IEBACiAgIGNtZDogcnVu
V2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL2Z1
bmN0aW9uLXJlZmVyZW5jZXMKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJz
ZVJ1bkNvbW1hbmRzCistIHBhdGg6IHdhc20vZ2MKKyAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRl
IHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vZnV6egogICBjbWQ6IHJ1bldl
YkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDogd2FzbS9sb3dF
eGVjdXRhYmxlTWVtb3J5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcyBi
L0pTVGVzdHMvd2FzbS9nYy9zdHJ1Y3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NzA0ZWM5NzUyNjM4Y2Qw
OGUzNzc2N2ExNjcxMjI0ZDA0Y2Y2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20v
Z2Mvc3RydWN0cy5qcwpAQCAtMCwwICsxLDgzIEBACisvL0AgcnVuV2ViQXNzZW1ibHlTdWl0ZSgi
LS11c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzPXRydWUiLCAiLS11c2VXZWJB
c3NlbWJseUdDPXRydWUiKQorCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0Lmpz
IjsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVyLmpzIjsKKwor
ZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2YWxpZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9IG5l
dyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpOworICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5
KGJ1ZmZlcik7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAg
ICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShidWZmZXIpOworfQorCitmdW5jdGlvbiB0ZXN0U3RydWN0RGVjbGFyYXRp
b24oKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0KSkKKyAgICog
KQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwM1x4MDFceDVmXHgwMCIpKTsKKworICAvKgorICAg
KiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0cnVjdCAoZmllbGQgaTMyKSkpCisgICAqICkKKyAg
ICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4MDVceDAxXHg1Zlx4MDFceDdmXHgwMCIpKTsKKworICAvKgor
ICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0cnVjdCAoZmllbGQgaTMyKSAoZmllbGQgaTMy
KSkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDdceDAxXHg1Zlx4MDJceDdmXHgw
MFx4N2ZceDAwIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0
IChmaWVsZCAobXV0IGkzMikpKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNVx4
MDFceDVmXHgwMVx4N2ZceDAxIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlw
ZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgKG11dCBpMzIpIChtdXQgaTMyKSkpKQorICAgKiAgICh0
eXBlICRMaW5lIChzdHJ1Y3QgKGZpZWxkIChtdXQgKHJlZiAkUG9pbnQpKSAobXV0IChyZWYgJFBv
aW50KSkpKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDJceDVmXHgwMlx4
N2ZceDAxXHg3Zlx4MDFceDVmXHgwMlx4NmJceDAwXHgwMVx4NmJceDAwXHgwMSIpKTsKKworICAv
KgorICAgKiB0b28gbWFueSBmaWVsZHMKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1
Y3QgKGZpZWxkIGkzMikpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgp
ID0+CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDA3XHgwMVx4NWZceGZmXHhmZlx4ZmZceDdmXHgwMCIKKyAgICAgICksCisgICAg
V2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAorICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24n
dCBwYXJzZSBhdCBieXRlIDE2OiBjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1
Y3QgZmllbGRzIDI2ODQzNTQ1NSBlbnRyaWVzIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1ZmZlciknKSIKKyAgKTsKKworICAvKgorICAgKiBpbnZhbGlkIG11dGFiaWxpdHkK
KyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIChtdXQgaTMyKSkpKQor
ICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBtb2R1bGUo
CisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA1XHgwMVx4
NWZceDAxXHg3Zlx4MDIiCisgICAgICApLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwK
KyAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNTogaW52YWxp
ZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4MDIgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5N
b2R1bGUoYnVmZmVyKScpIgorICApOworfQorCit0ZXN0U3RydWN0RGVjbGFyYXRpb24oKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
CmluZGV4IDMyYzhhZjhiYmY1N2VhNjA1YjMzNTVhNTZkODgyZThkZGUxZTBlZWQuLjc0MjgxMmNk
ZWIwM2Q1YTU0ODQ1YTA3N2FiYjFkNzRiNTI3ZmU1MzUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtMTYsNiArMTYsNyBA
QAogICAgICAgICAicmVmX251bGwiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0y
MCwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJyZWYiOiAgICAgICB7ICJ0eXBl
IjogInZhcmludDciLCAidmFsdWUiOiAgLTIxLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAg
ICAgICAgImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJi
M3R5cGUiOiAiQjM6OlZvaWQiIH0sCisgICAgICAgICJzdHJ1Y3QiOiAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTMzLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAi
dm9pZCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6
ICJCMzo6Vm9pZCIgfQogICAgIH0sCiAgICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAi
ZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3JlZiJdLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446138</attachid>
            <date>2021-12-07 02:05:12 -0800</date>
            <delta_ts>2021-12-07 02:36:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233416-20211207170510.patch</filename>
            <type>text/plain</type>
            <size>72654</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi42OGYwYWQ3ZGJlMTkwYWY4
Mjk1MDA2ZDU3YTI2OTc4MzY3NWYyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTIgQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZA
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVj
dHMgdHlwZXMgZW5jb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgSW50cm9kdWNlZCBmbGFnIGZvciBXYXNtIEdDIGFuZCBhZGQgc3Vw
cG9ydCBvZiBXYXNtIEdDIHN0cnVjdCB0eXBlcyBlbmNvZGluZworICAgICAgICBhY2NvcmRpbmcg
dG8gdGhlIE1WUCBzcGVjOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkv
Z2MvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2djL01WUC5tZC4KKyAgICAgICAgCisgICAgICAgICog
cnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmdldEdsb2JhbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAq
IHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjpnZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpz
ZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUdsb2JhbC5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6c2V0KToKKyAgICAgICAgKiB3YXNtL1dh
c21HbG9iYWwuaDoKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIp
OgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9y
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50
cyk6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6Z2V0U2lnbmF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpN
b2R1bGVJbmZvcm1hdGlvbjo6dHlwZXNDb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
Ok1vZHVsZUluZm9ybWF0aW9uOjppc1N0cnVjdFR5cGUgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VIZWFwVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNz
VHlwZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9u
UGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFy
c2VyOjpwYXJzZUdsb2JhbFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUV4Y2VwdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oOgor
ICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUpOgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6
CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKKzIwMjEtMTEtMjMgIERtaXRyeSBCZXpoZXRz
a292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1S
ZWZlcmVuY2VzXSBTaW1wbGlmeSByZXByZXNlbnRhdGlvbiBvZiBXYXNtIFR5cGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVwbGFjZSBT
aWduYXR1cmUgaW5kZXggd2l0aCBpbmRleCBpbnRvIFdhc20gVHlwZSBzZWN0aW9uLgorICAgICAg
ICBBZGQgY29ycmVzcG9uZGluZyBtYXBwaW5nIHRvIGJlIGFibGUgdG8gZ2V0IGl0cm9kdWNlZCB0
eXBlIGluZGV4CisgICAgICAgIHZpYSBnaXZlbiBmdW5jdGlvbiBpbmRleC4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBs
YW46OndvcmspOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNFeHRl
cm5yZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjppc0Z1bmNyZWYpOgorICAgICAgICAoSlNDOjpX
YXNtOjpmdW5jcmVmVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OmV4dGVybnJlZlR5cGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjppc1R5cGVJbmRleEhlYXBUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dh
c21MTEludFBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVG
dW5jdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21w
aWxhdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0
aW9uOjpnZXRUeXBlSW5kZXhGb3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNt
T01HRm9yT1NSRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50
cnlQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6
CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBl
KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VJbml0RXhwcik6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNI
ZWFkZXIucHk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVC
bG9jayk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0Fu
ZEV4cG9ydHMpOgorCiAyMDIxLTExLTIyICBHZXphIExvcmUgIDxnbG9yZUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtKU0NdIE1ha2Ugc2hhcmluZyBvZiB1bmxpbmtlZCBiYXNlbGluZSBjb2RlIHBv
c3NpYmxlIG9uIEpTVkFMVUUzMl82NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggMzk4ZjU1YjNlNzU2NWRiMzYyNDZmN2UxZTIx
MzE5MzllMDExYTk3Ni4uODYxNGU5NTNhOThkMjA4YjA2YjAwZjk5NGY2YWQzZDFkYmYwMjlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjo6ZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrKiBibG9jaywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24KICAgICBvdXQu
cHJpbnQobWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1vZHVsZUlu
Zm9ybWF0aW9uLm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpKTsKIAogICAg
IGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rpb25zW2Jsb2Nr
LT5mdW5jdGlvbkluZGV4KCldOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbYmxvY2st
PmZ1bmN0aW9uSW5kZXgoKV07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
b2R1bGVJbmZvcm1hdGlvbi5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tibG9jay0+
ZnVuY3Rpb25JbmRleCgpXS5zaWduYXR1cmVJbmRleDsKICAgICBjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAg
IG91dC5wcmludCgiIDogIiwgc2lnbmF0dXJlLCAiXG4iKTsKICAgICBvdXQucHJpbnQoIndhc20g
c2l6ZTogIiwgZnVuY3Rpb24uZGF0YS5zaXplKCksICIgYnl0ZXNcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTU3YWVhNDIxZjNhMzliNTMx
ZjhiZGI4ZDNhMDI2MzkwNjc4ZGVmMy4uYThiOGFkZWZkNmY5MDM1Yjg1NzliNWU3MzFhYjA1ZWFh
N2VlZWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01NDYsNiArNTQ2LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsK
ICAgICB2KEJvb2wsIHVzZVRlbXBvcmFsLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBUZW1w
b3JhbCBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRocmVhZGluZyBz
cGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5j
ZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRoZSB3YXNtIHR5
cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseUdDLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZ2MgdHlwZXMgZnJvbSB0aGUgd2FzbSBnYyBw
cm9wb3NhbC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUV4Y2VwdGlvbnMsIHRydWUs
IE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2VjdGlvbiBhbmQgaW5zdHJ1Y3Rpb25zIGZyb20gdGhl
IHdhc20gZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWMuIikgXAogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGU0MjhiMGQ1ZjMy
YmVmMDg0OTkzNDEwNWQ5MWVmYzAxYzEyMjdhOTcuLmFlY2FiODZmMGJiZWFlYTIzN2Y0NThjNmU5
MTMyMDVkZjFjMDFmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMTEyNCw4ICsxMTI0LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGkKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICBTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBU
eXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIHNpZ25hdHVyZUluZGV4IH0pOworICAgICAgICBy
ZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1f
aW5mby5nZXRUeXBlSW5kZXhGb3JGdW5jdGlvbihpbmRleCkgfSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkZ1bmNyZWYpOwogICAgIGVtaXRDQ2FsbCgm
b3BlcmF0aW9uV2FzbVJlZkZ1bmMsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFu
dChUeXBlczo6STMyLCBpbmRleCkpOwpAQCAtMTQzOCw3ICsxNDM3LDcgQEAgYXV0byBBaXJJUkdl
bmVyYXRvcjo6Z2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWEKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okds
b2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6Ci0gICAgICAgIEFTU0VSVChn
bG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6
TXV0YWJsZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRh
YmlsaXR5OjpNdXRhYmxlKTsKICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNl
dCwgQjM6OldpZHRoNjQpKQogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1w
LCBvZmZzZXQpLCB0ZW1wKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNDc4LDcgKzE0NzcsNyBAQCBh
dXRvIEFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25U
eXBlIHZhbHVlKSAtPiBQYXJ0aWFsUgogICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpT
V3JhcHBlcigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0
aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6Ci0gICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJp
bGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7Cisg
ICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpNdXRh
YmxlKTsKICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6OldpZHRo
NjQpKQogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wLCBvZmZzZXQpLCB0
ZW1wKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGI1OWNhMGQ4OTk0YWJmODE3YzViOGRmMTIxMDUy
ZmZhNTc0NjE4Ni4uMWM5YjgzM2MyMDE2MjdiMGYxZDZmOTVjN2I0MjE2ZDIyOGVjYTYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApA
QCAtMTM2Niw3ICsxMzY2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpnZXRHbG9iYWwodWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWwKICAgICAgICAgcmVz
dWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHRvQjNUeXBlKGdsb2JhbC50eXBlKSwgb3JpZ2luKCksIGdsb2JhbHNBcnJheSwgc2Fm
ZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFi
bGU6IHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbElu
Zm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5t
dXRhYmlsaXR5ID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBWYWx1ZSog
cG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgQjM6OkludDY0LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90
PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICAgICAgcmVzdWx0ID0gcHVzaChtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBl
KGdsb2JhbC50eXBlKSwgb3JpZ2luKCksIHBvaW50ZXIpKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
Mzg3LDcgKzEzODcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZQogICAgICAgICAgICAgZW1p
dFdyaXRlQmFycmllckZvckpTV3JhcHBlcigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdh
c206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6IHsKLSAgICAgICAg
QVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRh
YmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdh
c206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBWYWx1ZSogcG9pbnRlciA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgQjM6OkludDY0
LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90PihpbmRleCAqIHNpemVv
ZihSZWdpc3RlcikpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIGdldCh2YWx1ZSksIHBvaW50ZXIpOwogICAg
ICAgICAvLyBXZSBlbWl0IGEgd3JpdGUtYmFycmllciBvbnRvIEpTV2ViQXNzZW1ibHlHbG9iYWws
IG5vdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKaW5kZXggMjQzMDI5ZTYyYjMzYzFkMzk3MDk3YWI0OWRhOGM5MzgzOWFh
ZGJjMS4uYzI3ZWM4NmUxYjZiZWUyODZhZGQxYTFhZGU4MmY5Mzg5Zjc1NWU4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IHZvaWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgY29tcHV0
ZUV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMoZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucywgZnVu
Y3Rpb24uZ2V0KCksIGNvbnRleHQsIGxpbmtCdWZmZXIpOwogCiAgICAgc2l6ZV90IGZ1bmN0aW9u
SW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlSW5mb3JtYXRpb24tPmltcG9y
dEZ1bmN0aW9uQ291bnQoKTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1f
bW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVu
Y3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVs
ZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9u
SW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgZnVuY3Rpb24t
PmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPigKICAgICAg
ICAgRklOQUxJWkVfV0FTTV9DT0RFX0ZPUl9NT0RFKENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwg
bGlua0J1ZmZlciwgSklUQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVuY3Rp
b25bJWldICVzIG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFj
ZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3Bh
Y2UpKSkuYXNjaWkoKS5kYXRhKCkpLApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQkJRUGxhbjo6
Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAKICAgICBpZiAobV9leHBv
cnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRleCkp
IHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rp
b25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgICAgICBTaWduYXR1cmVJbmRl
eCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgICAgICBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2ln
bmF0dXJlSW5kZXgpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZW1iZWRkZXJUb1dhc21JbnRl
cm5hbEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25JbmRleCwgY3JlYXRlSlNUb1dhc21XcmFwcGVyKCpt
X2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF0uZW1iZWRkZXJFbnRyeXBvaW50SklU
LCBzaWduYXR1cmUsICZtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBt
X21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIGZ1bmN0aW9uSW5kZXgpKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbklu
ZGV4KQogc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IEJCUVBsYW46OmNvbXBpbGVG
dW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBDb21waWxhdGlvbkNvbnRleHQmIGNvbnRl
eHQsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHMsIFRpZXJVcENvdW50KiB0aWVyVXApCiB7CiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb24gPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnNbZnVuY3Rpb25JbmRleF07Ci0gICAgU2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRl
eCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1
cmVJbmRleCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpICsgZnVuY3Rpb25JbmRleDsKICAgICBBU1NF
UlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0
dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkgPT0gc2ln
bmF0dXJlSW5kZXgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQkJRUGxhbjo6ZGlkQ29tcGxl
dGVDb21waWxhdGlvbigpCiB7CiAgICAgZm9yICh1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gMDsg
ZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9ucy5zaXplKCk7IGZ1
bmN0aW9uSW5kZXgrKykgewogICAgICAgICBDb21waWxhdGlvbkNvbnRleHQmIGNvbnRleHQgPSBt
X2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgIFNpZ25hdHVyZUlu
ZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWdu
YXR1cmVJbmRleCk7CiAgICAgICAgIGNvbnN0IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9
IGZ1bmN0aW9uSW5kZXggKyBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50
KCk7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbkluZGV4U3BhY2UgPCBtX21vZHVsZUluZm9ybWF0
aW9uLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5oCmluZGV4IDgyNGZhOGI3MzQ3YzVmNDg2YzdlMDljMWQ1YTlkMWUwNzRlYjJj
MzcuLjE1NDUyZmQ2ZjlmMDQzOTY0M2I3NDQ4OTU2OWQwNWRhNWUzOWJkYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTEwNSwyOCArMTA1LDI4IEBAIGlubGlu
ZSBib29sIGlzUmVmVHlwZShUeXBlIHR5cGUpCiBpbmxpbmUgYm9vbCBpc0V4dGVybnJlZihUeXBl
IHR5cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJl
ZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4
ID09IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihUeXBlS2luZDo6RXh0ZXJucmVmKTsKKyAg
ICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0
PHVpbnQzMl90PihUeXBlS2luZDo6RXh0ZXJucmVmKTsKICAgICByZXR1cm4gdHlwZS5raW5kID09
IFR5cGVLaW5kOjpFeHRlcm5yZWY7CiB9CiAKIGlubGluZSBib29sIGlzRnVuY3JlZihUeXBlIHR5
cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVy
ZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4ID09
IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihUeXBlS2luZDo6RnVuY3JlZik7CisgICAgICAg
IHJldHVybiBpc1JlZlR5cGUodHlwZSkgJiYgdHlwZS5pbmRleCA9PSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYpOwogICAgIHJldHVybiB0eXBlLmtpbmQgPT0gVHlwZUtp
bmQ6OkZ1bmNyZWY7CiB9CiAKIGlubGluZSBUeXBlIGZ1bmNyZWZUeXBlKCkKIHsKICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gV2FzbTo6VHlwZSB7IFdhc206OlR5cGVLaW5kOjpSZWZOdWxsLCBXYXNtOjpOdWxs
YWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxXYXNtOjpTaWduYXR1cmVJbmRleD4oV2FzbTo6VHlwZUtp
bmQ6OkZ1bmNyZWYpIH07CisgICAgICAgIHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtp
bmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihX
YXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKICAgICByZXR1cm4gVHlwZXM6OkZ1bmNyZWY7CiB9
CiAKIGlubGluZSBUeXBlIGV4dGVybnJlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNt
OjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0
YXRpY19jYXN0PFdhc206OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVm
KSB9OworICAgICAgICByZXR1cm4gV2FzbTo6VHlwZSB7IFdhc206OlR5cGVLaW5kOjpSZWZOdWxs
LCBXYXNtOjpOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2FzbTo6VHlwZUtp
bmQ6OkV4dGVybnJlZikgfTsKICAgICByZXR1cm4gVHlwZXM6OkV4dGVybnJlZjsKIH0KIApAQCAt
MTM4LDE0ICsxMzgsNiBAQCBpbmxpbmUgYm9vbCBpc1JlZldpdGhUeXBlSW5kZXgoVHlwZSB0eXBl
KQogICAgIHJldHVybiBpc1JlZlR5cGUodHlwZSkgJiYgIWlzRXh0ZXJucmVmKHR5cGUpICYmICFp
c0Z1bmNyZWYodHlwZSk7CiB9CiAKLWlubGluZSBib29sIGlzVHlwZUluZGV4SGVhcFR5cGUoaW50
MzJfdCBoZWFwVHlwZSkKLXsKLSAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRG
dW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IGhlYXBUeXBlID49IDA7Ci19Ci0KIGlubGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlw
ZSBwYXJlbnQpCiB7CiAgICAgaWYgKHN1Yi5pc051bGxhYmxlKCkgJiYgIXBhcmVudC5pc051bGxh
YmxlKCkpCkBAIC0yMzYsMTMgKzIyOCwxNCBAQCBzdHJ1Y3QgRXhwb3J0IHsKIAogU3RyaW5nIG1h
a2VTdHJpbmcoY29uc3QgTmFtZSYgY2hhcmFjdGVycyk7CiAKK2VudW0gTXV0YWJpbGl0eSA6IHVp
bnQ4X3QgeworICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUgdGhpcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQorICAgIE11dGFibGUgPSAxLAorICAgIElt
bXV0YWJsZSA9IDAKK307CisKIHN0cnVjdCBHbG9iYWxJbmZvcm1hdGlvbiB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIGVudW0gTXV0YWJpbGl0eSA6IHVpbnQ4X3Qg
ewotICAgICAgICAvLyBGSVhNRSBhdXRvLWdlbmVyYXRlIHRoaXMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMzEKLSAgICAgICAgTXV0YWJsZSA9IDEsCi0gICAg
ICAgIEltbXV0YWJsZSA9IDAKLSAgICB9OwogCiAgICAgZW51bSBJbml0aWFsaXphdGlvblR5cGUg
OiB1aW50OF90IHsKICAgICAgICAgSXNJbXBvcnQsCkBAIC0yNjMsNiArMjU2LDI2IEBAIHN0cnVj
dCBHbG9iYWxJbmZvcm1hdGlvbiB7CiAgICAgdWludDY0X3QgaW5pdGlhbEJpdHNPckltcG9ydE51
bWJlciB7IDAgfTsKIH07CiAKK3N0cnVjdCBGdW5jdGlvbkRlc2NyaXB0aW9uIHsKKyAgICBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleDsKKyAgICB1aW50MzJfdCB0eXBlSW5kZXg7Cit9Owor
CitzdHJ1Y3QgRnVuY1R5cGUgeworICAgIFJlZlB0cjxTaWduYXR1cmU+IHNpZ25hdHVyZTsKK307
CisKK3N0cnVjdCBTdHJ1Y3RGaWVsZCB7CisgICAgVHlwZSB0eXBlOworICAgIE11dGFiaWxpdHkg
bXV0YWJpbGl0eTsKK307CisKK3N0cnVjdCBTdHJ1Y3RUeXBlIHsKKyAgICBWZWN0b3I8U3RydWN0
RmllbGQ+IGZpZWxkczsKK307CisKK3VzaW5nIFR5cGVSZWNvcmQgPSBzdGQ6OnZhcmlhbnQ8RnVu
Y1R5cGUsIFN0cnVjdFR5cGU+OworCiBzdHJ1Y3QgRnVuY3Rpb25EYXRhIHsKICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc2l6ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkOTdlN2U3NTlh
NGYyNDc1YTM3Nzc3Mzg3MTc4MzFiYzQ5ZTA5M2QyLi5mNzVhOGEzYmI1ZDZjYjg3NGQzMzc0ODcw
NTcxMjJiZjgxOWEzNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaApAQCAtMTA4MSwxMSArMTA4MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVN
T1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGhl
YXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZSht
X2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0
ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlw
ZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLnVzZWRTaWduYXR1cmVzW2hl
YXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBl
S2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5kZXggfTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6
OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihoZWFw
VHlwZSkgfTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51
bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihoZWFwVHlwZSkgfTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5
cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5j
ZSB0eXBlIik7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCh0
eXBlT2ZOdWxsLCBtX2NvbnRleHQuYWRkQ29uc3RhbnQodHlwZU9mTnVsbCwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKSkpOwpAQCAtMTExMyw4ICsxMTA5LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZFJlZkZ1bmMoaW5kZXgsIHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgICAgIFNpZ25h
dHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25z
dHJ1Y3RBbmRBcHBlbmQoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0
dXJlSW5kZXggfSwgcmVzdWx0KTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0
cnVjdEFuZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8u
Z2V0VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0sIHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTExNzUsNyArMTE3MCw3IEBAIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBUeXBlZEV4cHJlc3Npb24g
dmFsdWU7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsdWUs
ICJzZXRfZ2xvYmFsIHZhbHVlIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5k
ZXggPj0gbV9pbmZvLmdsb2JhbHMuc2l6ZSgpLCAic2V0X2dsb2JhbCAiLCBpbmRleCwgIiBvZiB1
bmtub3duIGdsb2JhbCwgbGltaXQgaXMgIiwgbV9pbmZvLmdsb2JhbHMuc2l6ZSgpKTsKLSAgICAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8uZ2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0
eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlLCAic2V0X2dsb2JhbCAiLCBpbmRleCwg
IiBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8u
Z2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpJbW11dGFibGUsICJzZXRf
Z2xvYmFsICIsIGluZGV4LCAiIGlzIGltbXV0YWJsZSIpOwogCiAgICAgICAgIFR5cGUgZ2xvYmFs
VHlwZSA9IG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlOwogICAgICAgICBBU1NFUlQoaXNWYWx1
ZVR5cGUoZ2xvYmFsVHlwZSkpOwpAQCAtMTIyNCwxMCArMTIxOSwxMCBAQCBGT1JfRUFDSF9XQVNN
X01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIoc2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJl
Y3QncyBzaWduYXR1cmUgaW5kZXgiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHRhYmxl
IGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2lu
Zm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4ICIsIHRhYmxlSW5k
ZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291bnQoKSk7Ci0gICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSA8PSBzaWdu
YXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwgc2lnbmF0dXJl
SW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5mby51c2VkU2lnbmF0dXJl
cy5zaXplKCkpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50eXBlc0NvdW50
KCkgPD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIs
IHNpZ25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udHlw
ZXNDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVzW3Rh
YmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiY2FsbF9pbmRp
cmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBmdW5jcmVmIik7CiAKLSAg
ICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8udXNlZFNpZ25h
dHVyZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOworICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNh
bGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWduYXR1cmUoc2lnbmF0dXJlSW5kZXgpOwogICAg
ICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50
KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGluZGV4LgogICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX2lu
ZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhw
cmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgp
LCAiIHZhbHVlcyIpOwogCkBAIC0xMjU4LDggKzEyNTMsOCBAQCBGT1JfRUFDSF9XQVNNX01FTU9S
WV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpLCAiZnVuY3Rpb24g
cmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighaXNSZWZXaXRoVHlwZUluZGV4KG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkp
LCAibm9uLWZ1bmNyZWYgY2FsbF9yZWYgdmFsdWUgIiwgbV9leHByZXNzaW9uU3RhY2subGFzdCgp
LnR5cGUoKS5raW5kKTsKIAotICAgICAgICBjb25zdCBTaWduYXR1cmVJbmRleCBjYWxsZWVTaWdu
YXR1cmVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXg7Ci0gICAg
ICAgIGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChjYWxsZWVTaWduYXR1cmVJbmRleCk7CisgICAgICAgIGNvbnN0IGF1dG8gY2FsbGVl
U2lnbmF0dXJlSW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4Owor
ICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWdu
YXR1cmUoY2FsbGVlU2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3Vu
dCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxl
ZSdzIHZhbHVlLgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFyZ3VtZW50Q291
bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRz
ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcAppbmRleCBjYjNkMTYzYmJlMDhiNmE1NzU4Y2Q5
ZGMyOGRlMDY4YTFkZTU2ZjE3Li5hMmEwYWNiNWYxMGQ3MzU4YzUwYzBhMDlkZjk2ZTRmMWVmODVi
YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIEdsb2JhbDo6c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEFTU0VS
VChtX211dGFiaWxpdHkgIT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSk7Cisg
ICAgQVNTRVJUKG1fbXV0YWJpbGl0eSAhPSBXYXNtOjpJbW11dGFibGUpOwogICAgIHN3aXRjaCAo
bV90eXBlLmtpbmQpIHsKICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6IHsKICAgICAgICAgaW50MzJf
dCB2YWx1ZSA9IGFyZ3VtZW50LnRvSW50MzIoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21HbG9iYWwuaAppbmRleCAxN2Y4ODY4MWUwNmU0MDIyODBkMTlhZmEyZWVi
YmNhZThkOWJkMTVlLi40MzhhN2Y3NDBmZjk5MzE2Yzc2NTgxM2VhZTg3MmY3ZDY3OTQwZjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHVibGljOgogICAgICAgICBWYWx1ZSogbV9wb2ludGVyOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPEdsb2JhbD4gY3JlYXRlKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6R2xvYmFsSW5mb3Jt
YXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlhbFZhbHVlID0gMCkK
KyAgICBzdGF0aWMgUmVmPEdsb2JhbD4gY3JlYXRlKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6TXV0
YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUgPSAwKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2xvYmFsKHR5cGUsIG11dGFiaWxpdHksIGluaXRp
YWxWYWx1ZSkpOwogICAgIH0KIAogICAgIFdhc206OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotICAgIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFi
aWxpdHkoKSBjb25zdCB7IHJldHVybiBtX211dGFiaWxpdHk7IH0KKyAgICBXYXNtOjpNdXRhYmls
aXR5IG11dGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX211dGFiaWxpdHk7IH0KICAgICBKU1Zh
bHVlIGdldChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQ2NF90IGdldFByaW1pdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubV9wcmltaXRpdmU7IH0KICAgICB2b2lkIHNldChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
VmFsdWUqIHZhbHVlUG9pbnRlcigpIHsgcmV0dXJuICZtX3ZhbHVlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgR2xvYmFsKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFi
aWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlhbFZhbHVlKQorICAgIEdsb2JhbChXYXNt
OjpUeXBlIHR5cGUsIFdhc206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlh
bFZhbHVlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbXV0YWJpbGl0eSht
dXRhYmlsaXR5KQogICAgICAgICAsIG1fdmFsdWUoKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFdhc206OlR5cGUgbV90eXBlOwotICAgIFdhc206Okdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmlsaXR5IG1fbXV0YWJpbGl0eTsKKyAgICBXYXNtOjpNdXRhYmlsaXR5IG1f
bXV0YWJpbGl0eTsKICAgICBKU09iamVjdCogbV9vd25lciB7IG51bGxwdHIgfTsKICAgICBWYWx1
ZSBtX3ZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwCmluZGV4IDhlZDIzMDkzZjcxM2UxZjQyMjllYjNmMWZjNzQ1ZDU0MWJm
ZmIyNzcuLmQxMGJiYzgwZGE4M2Q4NWNiOTllY2VmYzk1ZDhmNjQ1NDAyZGE2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAt
NjI1LDYgKzYyNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNh
bGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH07CkBAIC02ODIsNiArNjgz
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzExLDYgKzcxMyw3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTc2OCw2ICs3NzEsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IFZlYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0
cnVjdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC04MTgsNiArODIyLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJn
dW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggN2MwYmJj
NWY3MWY1OWNiZDY2YjJlOGUzMjllM2MyMzU3N2RjZTgwYS4uYjE2NjU4YTczZmNkNzk3YzA0YjFl
YTNlYzg2OGE4OGE3ZDllNTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50UGxhbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBMTEludFBsYW46OnByZXBhcmVJ
bXBsKCkKIHZvaWQgTExJbnRQbGFuOjpjb21waWxlRnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25J
bmRleCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuc2l6ZSgpICsg
ZnVuY3Rpb25JbmRleDsKICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1
bmN0aW9uSW5kZXhTcGFjZSkgPT0gc2lnbmF0dXJlSW5kZXgpOwpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIAogICAgIGZvciAodWlu
dDMyX3QgZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZUluZm9ybWF0
aW9uLT5mdW5jdGlvbnMuc2l6ZSgpOyBmdW5jdGlvbkluZGV4KyspIHsKICAgICAgICAgaWYgKG1f
ZXhwb3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygpLmNvbnRhaW5zKGZ1bmN0aW9uSW5k
ZXgpKSB7Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9u
SW5kZXhdOworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21v
ZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlv
bkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAgICAgICAgICAgLy8gVGhlIExMSW50IGFsd2F5
cyBib3VuZHMgY2hlY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTGltaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKaW5k
ZXggZjhmMDUzYjU4NjBlN2RmOTdkYjQ0NjRhYTBlYTE3NDhkOWI4N2YzNi4uZjgyZTcwMzFkYTQw
NjFlMjk3NDQ0YzE1Yzk0OWUwYzgzMDRhM2Y4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MaW1pdHMuaApAQCAtNDQsNiArNDQsNyBAQCBjb25zdGV4cHIgc2l6ZV90IG1heEV4cG9y
dHMgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heEV4Y2VwdGlvbnMgPSAxMDAwMDA7CiBj
b25zdGV4cHIgc2l6ZV90IG1heEdsb2JhbHMgPSAxMDAwMDAwOwogY29uc3RleHByIHNpemVfdCBt
YXhEYXRhU2VnbWVudHMgPSAxMDAwMDA7Citjb25zdGV4cHIgc2l6ZV90IG1heFN0cnVjdHNGaWVs
ZHMgPSAxMDAwMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFN0cmluZ1NpemUgPSAxMDAwMDA7
CiBjb25zdGV4cHIgc2l6ZV90IG1heE1vZHVsZVNpemUgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggZDUwZmRkZmIzNzgzN2Ey
OTEzYWM3ZDAxNTY4ZmE2OTRjMjJhN2IzMS4uNWYzNTg2ZWQ5NDQ4NTlhN2MzMzQzMDRmYThlYmQ5
MWM1OTAwNzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldhc21Db2RlQmxvY2suaCIKICNpbmNsdWRlICJXYXNt
RW1iZWRkZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU9wcy5o
IgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KQEAgLTQxLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIExMSW50UGxhbjsKIHN0cnVjdCBDb250ZXh0Owogc3Ry
dWN0IE1vZHVsZUluZm9ybWF0aW9uOwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7
CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxl
SW5mb3JtYXRpb24uY3BwCmluZGV4IGM2ZThiOGM3ZmViOWNjMjA4ZWIyNzk2ZWE3ZjJhNDIwNGQ0
MDc2NzIuLmUzMjQ5NzRkM2I3MGVlMDNjYmUxMGI4NWRmOWEwM2FjOTJkM2ZmMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNw
cApAQCAtMzksNiArMzksMTQgQEAgTW9kdWxlSW5mb3JtYXRpb246Ok1vZHVsZUluZm9ybWF0aW9u
KCkKIAogTW9kdWxlSW5mb3JtYXRpb246On5Nb2R1bGVJbmZvcm1hdGlvbigpIHsgfQogCitjb25z
dCBTaWduYXR1cmUmIE1vZHVsZUluZm9ybWF0aW9uOjpnZXRTaWduYXR1cmUodWludDMyX3QgaW5k
ZXgpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byogZnVuY1R5cGUgPSBzdGQ6OmdldF9pZjxGdW5j
VHlwZT4oJnR5cGVzW2luZGV4XSk7CisgICAgQVNTRVJUKGZ1bmNUeXBlKTsKKyAgICBBU1NFUlQo
ZnVuY1R5cGUtPnNpZ25hdHVyZS5nZXQoKSk7CisgICAgcmV0dXJuICpmdW5jVHlwZS0+c2lnbmF0
dXJlLmdldCgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCAzMjhjNmJjYTZiZmE2NjJiNTNlOWM4YzhkYTlh
Y2IxOGY1MDQ0YWM1Li5lZDRjMDg2YWE1ZjQxNjM1OWVhYTU5ZjllZTYwZTJiZGFlNWU2YWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRp
b24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgogCisjaW5j
bHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC01NCw4ICs1NSw4IEBAIHN0cnVjdCBNb2R1bGVJbmZv
cm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4g
ewogICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFj
ZShzaXplX3QgZnVuY3Rpb25JbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0lt
cG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpCi0gICAg
ICAgICAgICA/IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XQot
ICAgICAgICAgICAgOiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbklu
ZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKV07CisgICAgICAgICAg
ICA/IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XS5zaWduYXR1
cmVJbmRleAorICAgICAgICAgICAgOiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKV0uc2ln
bmF0dXJlSW5kZXg7CiAgICAgfQogCiAgICAgc2l6ZV90IGV4Y2VwdGlvbkluZGV4U3BhY2VTaXpl
KCkgY29uc3QgeyByZXR1cm4gaW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCkg
KyBpbnRlcm5hbEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOyB9CkBAIC04MSw2ICs4
Miw3IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25z
dCB7IHJldHVybiB0YWJsZXMuc2l6ZSgpOyB9CiAgICAgdWludDMyX3QgZWxlbWVudENvdW50KCkg
Y29uc3QgeyByZXR1cm4gZWxlbWVudHMuc2l6ZSgpOyB9CiAgICAgdWludDMyX3QgZGF0YVNlZ21l
bnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBudW1iZXJPZkRhdGFTZWdtZW50czsgfQorICAgIHVp
bnQzMl90IHR5cGVzQ291bnQoKSBjb25zdCB7IHJldHVybiB0eXBlcy5zaXplKCk7IH0KIAogICAg
IGNvbnN0IFRhYmxlSW5mb3JtYXRpb24mIHRhYmxlKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiB0YWJsZXNbaW5kZXhdOyB9CiAKQEAgLTkzLDEyICs5NSwyMiBAQCBzdHJ1Y3QgTW9kdWxl
SW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRp
b24+IHsKICAgICBib29sIGlzRGVjbGFyZWRFeGNlcHRpb24odWludDMyX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjbGFyZWRFeGNlcHRpb25zLmNvbnRhaW5zKGluZGV4KTsgfQogICAgIHZv
aWQgYWRkRGVjbGFyZWRFeGNlcHRpb24odWludDMyX3QgaW5kZXgpIHsgbV9kZWNsYXJlZEV4Y2Vw
dGlvbnMuc2V0KGluZGV4KTsgfQogCisgICAgdWludDMyX3QgZ2V0VHlwZUluZGV4Rm9yRnVuY3Rp
b24odWludDMyX3QgZnVuY3Rpb25JbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0lt
cG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpKQorICAg
ICAgICAgICAgcmV0dXJuIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbklu
ZGV4XS50eXBlSW5kZXg7CisgICAgICAgIHJldHVybiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlc1tmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNp
emUoKV0udHlwZUluZGV4OworICAgIH0KKworICAgIGNvbnN0IFNpZ25hdHVyZSYgZ2V0U2lnbmF0
dXJlKHVpbnQzMl90IGluZGV4KSBjb25zdDsKKyAgICBib29sIGlzU3RydWN0VHlwZSh1aW50MzJf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJ1Y3RUeXBl
Pih0eXBlc1tpbmRleF0pOyB9CisKICAgICBWZWN0b3I8SW1wb3J0PiBpbXBvcnRzOwotICAgIFZl
Y3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOwotICAg
IFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7
CisgICAgVmVjdG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlczsKKyAgICBWZWN0b3I8RnVuY3Rpb25EZXNjcmlwdGlvbj4gaW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBvcnRFeGNl
cHRpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJu
YWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzOwotICAgIFZlY3RvcjxSZWY8U2lnbmF0dXJlPj4g
dXNlZFNpZ25hdHVyZXM7CisgICAgVmVjdG9yPFR5cGVSZWNvcmQ+IHR5cGVzOwogCiAgICAgTWVt
b3J5SW5mb3JtYXRpb24gbWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCmluZGV4IDQ4ZmI0NTBjNGMwODkwOWMx
NmQxOGMxMjYxN2M5OGU2OWNhYWQzMzQuLjA3MzEzOWY1ZGQ1YjQwMGI0YjI5NDgzZWY3YzViODc0
NWUxYzVlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdG
b3JPU1JFbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
TUdGb3JPU1JFbnRyeVBsYW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgT01HRm9yT1NSRW50
cnlQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1h
dGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25JbmRleFNw
YWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNwYWNlU2l6
ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4
XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRp
b24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0uc2ln
bmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJ
bmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxpbmtlZFdh
c21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR1BsYW4uY3BwCmluZGV4IDZhNGY3ODcyNjk1NDg1NDYzMGVlOGU4MzUzZTY4ZmY0NDNm
MGU2MWYuLjU4ZDVlZjRlZDk0YzIxMzAxOTA3ZGFlMjU5MDNjNTc0MTM2Nzg5ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
dm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25J
bmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlv
bkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYjc5YWRjMWYzYzhhYjBmMzQ2ZmM0ZjZk
YTg5YWUuLjNmNWIwYmIzZjg3MmJjNTM0MGEwYzVmMjIyMmFlYTEwZTUxOTVlMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTI4OCw5ICsyODgsOSBAQCBBTFdB
WVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxTdWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFy
c2VyPFN1Y2Nlc3NUeXBlPjo6cAogICAgIGludDY0X3QgaW5kZXg7CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJJbnQ2NChpbmRleCksICJCbG9jay1saWtlIGluc3RydWN0aW9uIGRv
ZXNuJ3QgcmV0dXJuIHZhbHVlIHR5cGUgYnV0IGNhbid0IGRlY29kZSB0eXBlIHNlY3Rpb24gaW5k
ZXgiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4IDwgMCwgIkJsb2NrLWxpa2UgaW5z
dHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG5lZ2F0aXZlIik7Ci0gICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnVzZWRTaWduYXR1cmVz
LnNpemUoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBv
ZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwgIiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnVz
ZWRTaWduYXR1cmVzLnNpemUoKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2Fz
dDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnR5cGVzQ291bnQoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1
Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwg
IiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnR5cGVzQ291bnQoKSk7CiAKLSAgICByZXN1bHQg
PSAmaW5mby51c2VkU2lnbmF0dXJlc1tpbmRleF0uZ2V0KCk7CisgICAgcmVzdWx0ID0gJmluZm8u
Z2V0U2lnbmF0dXJlKGluZGV4KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0zMTIsNyArMzEy
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5
cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnVzZWRT
aWduYXR1cmVzLnNpemUoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkg
Pj0gaW5mby50eXBlc0NvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3Vs
dCA9IGhlYXBUeXBlOwpAQCAtMzMwLDIwICszMzAsMjQgQEAgQUxXQVlTX0lOTElORSBib29sIFBh
cnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JgogCiAgICAgVHlwZUtpbmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7
CiAgICAgYm9vbCBpc051bGxhYmxlID0gdHJ1ZTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRl
eCA9IDA7CisgICAgdW5zaWduZWQgdHlwZUluZGV4ID0gMDsgICAgCiAKICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpICYmICh0eXBlS2luZCA9
PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6RXh0ZXJucmVmKSkg
ewotICAgICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4Pih0eXBlS2lu
ZCk7CisgICAgICAgIHR5cGVJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlS2luZCk7
CiAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51bGw7CiAgICAgfSBlbHNlIGlmICh0
eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmIHx8IHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWZOdWxs
KSB7CiAgICAgICAgIGlzTnVsbGFibGUgPSB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbDsK
ICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAgaWYgKCFwYXJzZUhlYXBUeXBlKGlu
Zm8sIGhlYXBUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2lnSW5k
ZXggPSBoZWFwVHlwZSA8IDAgPyBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUp
IDogU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChpbmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBl
XS5nZXQoKSk7CisgICAgICAgIGlmIChoZWFwVHlwZSA8IDAgJiYgIWlzVmFsaWRIZWFwVHlwZUtp
bmQoc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGhlYXBUeXBlKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChoZWFwVHlwZSA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4o
aGVhcFR5cGUpID49IGluZm8udHlwZXNDb3VudCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB0eXBlSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcFR5cGUpOwog
ICAgIH0KIAotICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19jYXN0PE51bGxhYmxl
Pihpc051bGxhYmxlKSwgc2lnSW5kZXggfTsKKyAgICBUeXBlIHR5cGUgPSB7IHR5cGVLaW5kLCBz
dGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHR5cGVJbmRleCB9OwogICAgIGlmICgh
aXNWYWx1ZVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSB0
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwCmluZGV4IGE4ODk1Yzk1MTI5ZDMzYzdjMGNkYmY4NjY0ZTg5MGQ0YWYzNTEzYmEuLmM1YmJi
MmU3NzU0MjBkMzgxMzU2ODUxOTk3NTA4MTc4ODVkN2I2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTQ0LDQxICs0NCwzMyBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGNvdW50KSwgImNhbid0IGdldCBU
eXBlIHNlY3Rpb24ncyBjb3VudCIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY291bnQgPiBt
YXhUeXBlcywgIlR5cGUgc2VjdGlvbidzIGNvdW50IGlzIHRvbyBiaWcgIiwgY291bnQsICIgbWF4
aW11bSAiLCBtYXhUeXBlcyk7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT51c2Vk
U2lnbmF0dXJlcy50cnlSZXNlcnZlQ2FwYWNpdHkoY291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5v
dWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgY291bnQsICIgZW50cmllcyIpOworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby0+dHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGNv
dW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIs
IGNvdW50LCAiIGVudHJpZXMiKTsKIAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIGludDhfdCB0eXBlOwotICAgICAgICB1aW50MzJfdCBhcmd1bWVu
dENvdW50OwotICAgICAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRUeXBlczsKLQogICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUludDcodHlwZSksICJjYW4ndCBnZXQgIiwgaSwgInRo
IFR5cGUncyB0eXBlIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZSAhPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KFR5cGVLaW5kOjpGdW5jKSwgaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMg
IiwgdHlwZSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGFy
Z3VtZW50Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgYXJndW1lbnQgY291bnQi
KTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbWF4RnVuY3Rp
b25QYXJhbXMsIGksICJ0aCBhcmd1bWVudCBjb3VudCBpcyB0b28gYmlnICIsIGFyZ3VtZW50Q291
bnQsICIgbWF4aW11bSAiLCBtYXhGdW5jdGlvblBhcmFtcyk7Ci0gICAgICAgIFZlY3RvcjxUeXBl
PiBhcmd1bWVudHM7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3VtZW50cy50cnlS
ZXNlcnZlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewotICAgICAgICAg
ICAgVHlwZSBhcmd1bWVudFR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhbHVlVHlwZShtX2luZm8sIGFyZ3VtZW50VHlwZSksICJjYW4ndCBnZXQgIiwgaSwgInRo
IGFyZ3VtZW50IFR5cGUiKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnRU
eXBlKTsKKyAgICAgICAgVHlwZVJlY29yZCB0eXBlUmVjb3JkOworICAgICAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PFR5cGVLaW5kPih0eXBlKSkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5j
OiB7CisgICAgICAgICAgICBGdW5jVHlwZSBmdW5jVHlwZTsKKyAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvblR5cGUoaSwgZnVuY1R5cGUpKTsKKyAgICAg
ICAgICAgIHR5cGVSZWNvcmQgPSBUeXBlUmVjb3JkIHsgRnVuY1R5cGUgeyBXVEZNb3ZlKGZ1bmNU
eXBlKSB9IH07CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpTdHJ1Y3Q6IHsKKyAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlHQygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGksICJ0aCBUeXBlIGlzIG5vbi1G
dW5jICIsIHR5cGUpOwogCi0gICAgICAgIHVpbnQzMl90IHJldHVybkNvdW50OwotICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihyZXR1cm5Db3VudCksICJjYW4ndCBn
ZXQgIiwgaSwgInRoIFR5cGUncyByZXR1cm4gY291bnQiKTsKLQotICAgICAgICBWZWN0b3I8VHlw
ZSwgMT4gcmV0dXJuVHlwZXM7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJldHVyblR5
cGVzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIGVu
b3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGksICJ0aCBzaWduYXR1cmUiKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJldHVybkNvdW50OyArK2kpIHsKLSAgICAg
ICAgICAgIFR5cGUgdmFsdWU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhbHVlVHlwZShtX2luZm8sIHZhbHVlKSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJl
dHVybiB2YWx1ZSIpOwotICAgICAgICAgICAgcmV0dXJuVHlwZXMuYXBwZW5kKHZhbHVlKTsKKyAg
ICAgICAgICAgIFN0cnVjdFR5cGUgc3RydWN0VHlwZTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMocGFyc2VTdHJ1Y3RUeXBlKGksIHN0cnVjdFR5cGUpKTsKKyAgICAgICAg
ICAgIHR5cGVSZWNvcmQgPSBUeXBlUmVjb3JkIHsgV1RGTW92ZShzdHJ1Y3RUeXBlKSB9OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBmYWlsKGksICJ0aCBUeXBlIGlzIG5vbi1GdW5jICIsIHR5cGUpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPFNpZ25hdHVyZT4gc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3Jt
YXRpb246OnNpZ25hdHVyZUZvcihyZXR1cm5UeXBlcywgYXJndW1lbnRzKTsKLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighc2lnbmF0dXJlLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9y
eSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwotCi0gICAgICAgIG1f
aW5mby0+dXNlZFNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICAgICAgbV9pbmZvLT50eXBlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh0
eXBlUmVjb3JkKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMTMsMTAgKzEwNSwx
MCBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAog
ICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIHVpbnQz
Ml90IGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvblNpZ25hdHVyZUluZGV4KSwgImNhbid0IGdldCAi
LCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQncyBmdW5jdGlvbiBzaWduYXR1cmUgaW4gbW9kdWxl
ICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKLSAgICAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaWduYXR1cmVJbmRleCA+PSBtX2lu
Zm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgImludmFsaWQgZnVuY3Rpb24gc2lnbmF0dXJlIGZv
ciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgs
ICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAi
IGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICIn
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uU2lnbmF0dXJlSW5k
ZXggPj0gbV9pbmZvLT50eXBlc0NvdW50KCksICJpbnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSBm
b3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0LCAiLCBmdW5jdGlvblNpZ25hdHVyZUluZGV4
LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291bnQoKSwgIiBpbiBtb2R1
bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwogICAg
ICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXMuc2l6ZSgpOwotICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbZnVuY3Rpb25T
aWduYXR1cmVJbmRleF0pOwotICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25h
dHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAg
IFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChtX2luZm8tPmdldFNpZ25hdHVyZShmdW5jdGlvblNpZ25hdHVyZUluZGV4KSk7CisgICAgICAg
ICAgICBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBl
bmQoRnVuY3Rpb25EZXNjcmlwdGlvbiB7IHNpZ25hdHVyZUluZGV4LCBmdW5jdGlvblNpZ25hdHVy
ZUluZGV4IH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
eHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0xMzgsNyArMTMwLDcgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIEdsb2JhbElu
Zm9ybWF0aW9uIGdsb2JhbDsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMo
cGFyc2VHbG9iYWxUeXBlKGdsb2JhbCkpOwogICAgICAgICAgICAgLy8gT25seSBtdXRhYmxlIGds
b2JhbHMgbmVlZCBmbG9hdGluZyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGlmIChnbG9iYWwubXV0
YWJpbGl0eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSkKKyAgICAg
ICAgICAgIGlmIChnbG9iYWwubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpNdXRhYmxlKQogICAg
ICAgICAgICAgICAgIGdsb2JhbC5iaW5kaW5nTW9kZSA9IEdsb2JhbEluZm9ybWF0aW9uOjpCaW5k
aW5nTW9kZTo6UG9ydGFibGU7CiAgICAgICAgICAgICBraW5kSW5kZXggPSBtX2luZm8tPmdsb2Jh
bHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pbmZvLT5nbG9iYWxzLnVuY2hlY2tlZEFwcGVuZChX
VEZNb3ZlKGdsb2JhbCkpOwpAQCAtMTUzLDkgKzE0NSw5IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAgICAgIHVpbnQzMl90IGV4
Y2VwdGlvblNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIGlt
cG9ydE51bWJlciwgInRoIEltcG9ydCdzIGV4Y2VwdGlvbiBzaWduYXR1cmUgaW4gbW9kdWxlICci
LCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKLSAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZv
LT51c2VkU2lnbmF0dXJlcy5zaXplKCksICJpbnZhbGlkIGV4Y2VwdGlvbiBzaWduYXR1cmUgZm9y
ICIsIGltcG9ydE51bWJlciwgInRoIEltcG9ydCwgIiwgZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgs
ICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAi
IGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICIn
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGV4Y2VwdGlvblNpZ25hdHVyZUlu
ZGV4ID49IG1faW5mby0+dHlwZXNDb3VudCgpLCAiaW52YWxpZCBleGNlcHRpb24gc2lnbmF0dXJl
IGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGV4Y2VwdGlvblNpZ25hdHVyZUlu
ZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291bnQoKSwgIiBpbiBt
b2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwog
ICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRFeGNlcHRpb25TaWduYXR1cmVJ
bmRpY2VzLnNpemUoKTsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWduYXR1cmVzW2V4Y2Vw
dGlvblNpZ25hdHVyZUluZGV4XSk7CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1
cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT5nZXRTaWduYXR1cmUo
ZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgpKTsKICAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RXhj
ZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlSW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3OSwxMyArMTcxLDEzIEBAIGF1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICB1aW50MzJfdCB0eXBl
TnVtYmVyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0eXBl
TnVtYmVyKSwgImNhbid0IGdldCAiLCBpLCAidGggRnVuY3Rpb24ncyB0eXBlIG51bWJlciIpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9pbmZvLT51c2VkU2ln
bmF0dXJlcy5zaXplKCksIGksICJ0aCBGdW5jdGlvbiB0eXBlIG51bWJlciBpcyBpbnZhbGlkICIs
IHR5cGVOdW1iZXIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0g
bV9pbmZvLT50eXBlc0NvdW50KCksIGksICJ0aCBGdW5jdGlvbiB0eXBlIG51bWJlciBpcyBpbnZh
bGlkICIsIHR5cGVOdW1iZXIpOwogCi0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWduYXR1cmVzW3R5
cGVOdW1iZXJdKTsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+Z2V0U2lnbmF0dXJlKHR5cGVOdW1iZXIpKTsK
ICAgICAgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBmaXhlcyB1cCBzdGFydCBhbmQgZW5kLgogICAg
ICAgICBzaXplX3Qgc3RhcnQgPSAwOwogICAgICAgICBzaXplX3QgZW5kID0gMDsKLSAgICAgICAg
bV9pbmZvLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQo
c2lnbmF0dXJlSW5kZXgpOworICAgICAgICBtX2luZm8tPmludGVybmFsRnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRlc2NyaXB0aW9uIHsgc2lnbmF0dXJl
SW5kZXgsIHR5cGVOdW1iZXIgfSk7CiAgICAgICAgIG1faW5mby0+ZnVuY3Rpb25zLnVuY2hlY2tl
ZEFwcGVuZCh7IHN0YXJ0LCBlbmQsIFZlY3Rvcjx1aW50OF90PigpIH0pOwogICAgIH0KIApAQCAt
MzcxLDcgKzM2Myw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGtpbmRJbmRleCA+PSBt
X2luZm8tPmdsb2JhbHMuc2l6ZSgpLCBleHBvcnROdW1iZXIsICJ0aCBFeHBvcnQgaGFzIGludmFs
aWQgZ2xvYmFsIG51bWJlciAiLCBraW5kSW5kZXgsICIgaXQgZXhjZWVkcyB0aGUgZ2xvYmFscyBj
b3VudCAiLCBtX2luZm8tPmdsb2JhbHMuc2l6ZSgpLCAiLCBuYW1lZCAnIiwgZmllbGRTdHJpbmcs
ICInIik7CiAgICAgICAgICAgICAvLyBPbmx5IG11dGFibGUgZ2xvYmFscyBuZWVkIGZsb2F0aW5n
IGJpbmRpbmdzLgogICAgICAgICAgICAgR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9IG1faW5m
by0+Z2xvYmFsc1traW5kSW5kZXhdOwotICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5
ID09IEdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKQorICAgICAgICAgICAg
aWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IE11dGFiaWxpdHk6Ok11dGFibGUpCiAgICAgICAgICAg
ICAgICAgZ2xvYmFsLmJpbmRpbmdNb2RlID0gR2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2Rl
OjpQb3J0YWJsZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02MDksNyArNjAx
LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwg
dWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKIAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKGluZGV4ID49IG1faW5mby0+Z2xvYmFscy5zaXplKCksICJnZXRfZ2xvYmFsJ3MgaW5kZXgg
IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGdsb2JhbHMgIiwgbV9pbmZvLT5nbG9i
YWxzLnNpemUoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZv
LT5maXJzdEludGVybmFsR2xvYmFsLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBp
bmRleCwgIiBleGNlZWRzIHRoZSBmaXJzdCBpbnRlcm5hbCBnbG9iYWwgIiwgbV9pbmZvLT5maXJz
dEludGVybmFsR2xvYmFsKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmds
b2JhbHNbaW5kZXhdLm11dGFiaWxpdHkgIT0gR2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSwg
ImdldF9nbG9iYWwgaW1wb3J0IGtpbmQgaW5kZXggIiwgaW5kZXgsICIgaXMgbXV0YWJsZSAiKTsK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNbaW5kZXhdLm11dGFi
aWxpdHkgIT0gTXV0YWJpbGl0eTo6SW1tdXRhYmxlLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBp
bmRleCAiLCBpbmRleCwgIiBpcyBtdXRhYmxlICIpOwogCiAgICAgICAgIHJlc3VsdFR5cGUgPSBt
X2luZm8tPmdsb2JhbHNbaW5kZXhdLnR5cGU7CiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9
IGluZGV4OwpAQCAtNjIxLDExICs2MTMsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5p
dEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KSB7CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhl
YXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAg
ICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMs
IHNpZ25hdHVyZUluZGV4IH07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0
eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0
aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIH07CisgICAgICAgICAgICB0eXBlT2ZO
dWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaGVhcFR5cGUpIH07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgdHlwZU9mTnVsbCksICJyZWYu
bnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOwogCkBAIC02MzUsMTcgKzYyMywx
NiBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1
aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgIH0KIAogICAgIGNhc2UgUmVmRnVuYzog
ewotICAgICAgICB1aW50MzJfdCBpbmRleDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIoaW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7Ci0gICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgp
LCAicmVmLmZ1bmMgaW5kZXgiLCBpbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rp
b25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7CisgICAgICAgIHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1
bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCks
ICJyZWYuZnVuYyBpbmRleCIsIGZ1bmN0aW9uSW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9m
IGZ1bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOwogCiAgICAgICAgIGlmIChP
cHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAg
ICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLT5zaWduYXR1cmVJ
bmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICAgICAgcmVzdWx0VHlw
ZSA9IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9OworICAg
ICAgICAgICAgcmVzdWx0VHlwZSA9IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2lu
Zm8tPmdldFR5cGVJbmRleEZvckZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXgpIH07CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVmOwogCi0gICAgICAg
IGJpdHNPckltcG9ydE51bWJlciA9IGluZGV4OworICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIg
PSBmdW5jdGlvbkluZGV4OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTY4MCw2ICs2Njcs
NjAgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByKHN0ZDo6b3B0aW9uYWw8
STMySW5pdEV4cHI+JiBpbml0RXhwciwgQVNDSUkKICAgICByZXR1cm4geyB9OwogfQogCithdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBGdW5j
VHlwZSYgZnVuY1R5cGUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCBhcmd1bWVu
dENvdW50OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGFyZ3VtZW50
Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIHBvc2l0aW9uLCAidGggVHlwZSdzIGFyZ3VtZW50IGNvdW50
Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbWF4RnVuY3Rpb25Q
YXJhbXMsIHBvc2l0aW9uLCAidGggYXJndW1lbnQgY291bnQgaXMgdG9vIGJpZyAiLCBhcmd1bWVu
dENvdW50LCAiIG1heGltdW0gIiwgbWF4RnVuY3Rpb25QYXJhbXMpOworICAgIFZlY3RvcjxUeXBl
PiBhcmd1bWVudFR5cGVzOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3VtZW50VHlwZXMu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdo
IG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgcG9zaXRpb24sICJ0aCBzaWduYXR1cmUiKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKKyAg
ICAgICAgVHlwZSBhcmd1bWVudFR5cGU7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFsdWVUeXBlKG1faW5mbywgYXJndW1lbnRUeXBlKSwgImNhbid0IGdldCAiLCBpLCAidGgg
YXJndW1lbnQgVHlwZSIpOworICAgICAgICBhcmd1bWVudFR5cGVzLmFwcGVuZChhcmd1bWVudFR5
cGUpOworICAgIH0KKworICAgIHVpbnQzMl90IHJldHVybkNvdW50OworICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHJldHVybkNvdW50KSwgImNhbid0IGdldCAiLCBwb3Np
dGlvbiwgInRoIFR5cGUncyByZXR1cm4gY291bnQiKTsKKworICAgIFZlY3RvcjxUeXBlLCAxPiBy
ZXR1cm5UeXBlczsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZXR1cm5UeXBlcy50cnlSZXNl
cnZlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5
IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBwb3NpdGlvbiwgInRoIHNpZ25hdHVyZSIpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXR1cm5Db3VudDsgKytpKSB7CisgICAgICAgIFR5cGUg
dmFsdWU7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5m
bywgdmFsdWUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVlIik7Cisg
ICAgICAgIHJldHVyblR5cGVzLmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgZnVuY1R5cGUu
c2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcihyZXR1cm5UeXBl
cywgYXJndW1lbnRUeXBlcyk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZnVuY1R5cGUuc2ln
bmF0dXJlLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3Mg
IiwgcG9zaXRpb24sICJ0aCBzaWduYXR1cmUiKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VTdHJ1Y3RUeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBTdHJ1
Y3RUeXBlJiBzdHJ1Y3RUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5R0MoKSk7CisKKyAgICB1aW50MzJfdCBmaWVsZENvdW50OworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZpZWxkQ291bnQpLCAiY2FuJ3Qg
Z2V0ICIsIHBvc2l0aW9uLCAidGggc3RydWN0IHR5cGUncyBmaWVsZCBjb3VudCIpOworICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoZmllbGRDb3VudCA+IG1heFN0cnVjdHNGaWVsZHMsICJudW1iZXIg
b2YgZmllbGRzIGZvciBzdHJ1Y3QgdHlwZSBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBpcyB0
b28gYmlnICIsIGZpZWxkQ291bnQsICIgbWF4aW11bSAiLCBtYXhTdHJ1Y3RzRmllbGRzKTsKKyAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFzdHJ1Y3RUeXBlLmZpZWxkcy50cnlSZXNlcnZlQ2FwYWNp
dHkoZmllbGRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1Y3Qg
ZmllbGRzICIsIGZpZWxkQ291bnQsICIgZW50cmllcyIpOworCisgICAgZm9yICh1aW50MzJfdCBm
aWVsZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkQ291bnQ7ICsrZmllbGRJbmRleCkgewor
ICAgICAgICBUeXBlIGZpZWxkVHlwZTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYWx1ZVR5cGUobV9pbmZvLCBmaWVsZFR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGZpZWxkSW5kZXgs
ICJ0aCBmaWVsZCBUeXBlIik7CisKKyAgICAgICAgdWludDhfdCBtdXRhYmlsaXR5OworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxpdHkpLCBwb3NpdGlvbiwg
ImNhbid0IGdldCAiLCBmaWVsZEluZGV4LCAidGggZmllbGQgbXV0YWJpbGl0eSIpOworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKG11dGFiaWxpdHkgIT0gMHgwICYmIG11dGFiaWxpdHkgIT0g
MHgxLCAiaW52YWxpZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4IiwgaGV4KG11dGFiaWxpdHksIDIs
IExvd2VyY2FzZSkpOworCisgICAgICAgIHN0cnVjdFR5cGUuZmllbGRzLnVuY2hlY2tlZEFwcGVu
ZChTdHJ1Y3RGaWVsZCB7IGZpZWxkVHlwZSwgc3RhdGljX2Nhc3Q8TXV0YWJpbGl0eT4obXV0YWJp
bGl0eSkgfSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJ
bml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmV0dXJuIHBhcnNl
STMySW5pdEV4cHIoaW5pdEV4cHIsICJFbGVtZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4g
aTMyIl9zKTsKQEAgLTc1OCw3ICs3OTksNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xv
YmFsVHlwZShHbG9iYWxJbmZvcm1hdGlvbiYgZ2xvYmFsKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBnbG9iYWwudHlwZSks
ICJjYW4ndCBnZXQgR2xvYmFsJ3MgdmFsdWUgdHlwZSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVUludDgobXV0YWJpbGl0eSksICJjYW4ndCBnZXQgR2xvYmFsIHR5cGUncyBtdXRh
YmlsaXR5Iik7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtdXRhYmlsaXR5ICE9IDB4MCAmJiBt
dXRhYmlsaXR5ICE9IDB4MSwgImludmFsaWQgR2xvYmFsJ3MgbXV0YWJpbGl0eTogMHgiLCBoZXgo
bXV0YWJpbGl0eSwgMiwgTG93ZXJjYXNlKSk7Ci0gICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0
aWNfY2FzdDxHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eT4obXV0YWJpbGl0eSk7CisgICAg
Z2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxNdXRhYmlsaXR5PihtdXRhYmlsaXR5KTsK
ICAgICByZXR1cm4geyB9OwogfQogCkBAIC04NjcsOCArOTA4LDggQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUV4Y2VwdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgICAgICB1aW50MzJf
dCB0eXBlTnVtYmVyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih0eXBlTnVtYmVyKSwgImNhbid0IGdldCAiLCBleGNlcHRpb25OdW1iZXIsICJ0aCBFeGNlcHRp
b24ncyB0eXBlIG51bWJlciIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1i
ZXIgPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksIGV4Y2VwdGlvbk51bWJlciwgInRo
IEV4Y2VwdGlvbiB0eXBlIG51bWJlciBpcyBpbnZhbGlkICIsIHR5cGVOdW1iZXIpOwotICAgICAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1t0eXBlTnVtYmVyXSk7CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVzQ291bnQoKSwgZXhjZXB0aW9u
TnVtYmVyLCAidGggRXhjZXB0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJl
cik7CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5m
b3JtYXRpb246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZSh0eXBlTnVtYmVyKSk7CiAgICAgICAg
IG1faW5mby0+aW50ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVu
ZChzaWduYXR1cmVJbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA5MWZkM2VkODM0MjI1YzgxM2UyZDAxMzkyYjQ5
ZThkOWMzYmUyYjg3Li40YjBjMzIyZGJlMWJhNjRlMmU0ZDlmNzI2MGFiMmE4OTc2MzgxYjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAg
LTY5LDYgKzY5LDkgQEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUluaXRFeHByKHVpbnQ4X3QmLCB1aW50NjRfdCYsIFR5cGUmIGluaXRFeHByVHlw
ZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhw
cihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYsIEFTQ0lJTGl0ZXJhbCBmYWlsTWVzc2FnZSk7
CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlw
ZSh1aW50MzJfdCBwb3NpdGlvbiwgRnVuY1R5cGUmKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBwYXJzZVN0cnVjdFR5cGUodWludDMyX3QgcG9zaXRpb24sIFN0cnVjdFR5
cGUmKTsKKwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxl
bWVudFRhYmxlSWR4KHVpbnQzMl90KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJ
bml0RXhwcj4mKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVs
ZW1lbnRLaW5kKHVpbnQ4X3QmIGVsZW1lbnRLaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TaWduYXR1cmUuaAppbmRleCAzYWNlOWFmYjE3NTc4OTY2MzgyYTcwYjk1MGVjYjM4
YjlmNDcwNmY2Li4zZDRhOGIxZDg0MTA1N2FlYTg0ZDk1MWJlOTBjMGU3NGE1YzI0MDcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCkBAIC00MSw2ICs0MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBTaWduYXR1cmVB
cmdDb3VudCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiAK
IGNsYXNzIFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQppbmRleCA2NTc2YTY5YzU2ODM1
M2FiNjc3YjhlMWI0Yzg0MTQ2YTc0YzAzNWZmLi42M2U5NGRiYzJlOGFlNDU0MmE3OWQ4YWFjOTIw
YjA2ZDBlMDFhOGU0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5l
cmF0ZVdhc21PcHNIZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2Vu
ZXJhdGVXYXNtT3BzSGVhZGVyLnB5CkBAIC0yMTgsMTIgKzIxOCwxMCBAQCBlbnVtIGNsYXNzIE51
bGxhYmxlIDogYm9vbCB7CiAgIFllcyA9IHRydWUsCiB9OwogCi11c2luZyBTaWduYXR1cmVJbmRl
eCA9IHVpbnRwdHJfdDsKLQogc3RydWN0IFR5cGUgewogICAgIFR5cGVLaW5kIGtpbmQ7CiAgICAg
TnVsbGFibGUgbnVsbGFibGU7Ci0gICAgU2lnbmF0dXJlSW5kZXggaW5kZXg7CisgICAgdW5zaWdu
ZWQgaW5kZXg7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYgb3RoZXIpIGNvbnN0
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmNwcAppbmRleCA1NGU5NzQxNGI2NjI2MDM0ZjEzMGUxNWQ0OTNk
N2M5NTBlMzgxNTc1Li43MTVmMGE3ZWQ3MWM5OTM1MzJlOTllMzljOGRlZmY1MWM4YmYwMjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmNwcApAQCAtNTIsNyArNTIsNyBAQCBKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
OjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiB2bSwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiBj
bwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NjcK
ICAgICBtX3dhc21Ub0pTRXhpdFN0dWJzLnJlc2VydmVDYXBhY2l0eShtX2NvZGVCbG9jay0+ZnVu
Y3Rpb25JbXBvcnRDb3VudCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGltcG9ydEluZGV4ID0gMDsg
aW1wb3J0SW5kZXggPCBtX2NvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpOyArK2ltcG9y
dEluZGV4KSB7Ci0gICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLmF0KGltcG9y
dEluZGV4KTsKKyAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
b2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuYXQoaW1wb3J0
SW5kZXgpLnNpZ25hdHVyZUluZGV4OwogICAgICAgICBhdXRvIGJpbmRpbmcgPSBXYXNtOjp3YXNt
VG9KUyh2bSwgbV9jYWxsTGlua0luZm9zLCBzaWduYXR1cmVJbmRleCwgaW1wb3J0SW5kZXgpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJp
bmRpbmcuZXJyb3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcAppbmRleCA3Njk1ZDc3MGMxZDU4NDM4YTBhMzA2MjM0
MDk5OWZiOTAwZWJjNjIyLi4yYzIzY2Q1NDQ2NzE5MzY1MTIwYzg5ZjgyMDcwMjcwNjNiMThhMGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
R2xvYmFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5R2xvYmFsLmNwcApAQCAtODgsNyArODgsNyBAQCBKU09iamVjdCogSlNXZWJBc3NlbWJseUds
b2JhbDo6dHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNPYmplY3Qq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSwgMik7CiAKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm11dGFibGUiKSwganNCb29sZWFuKG1fZ2xvYmFsLT5t
dXRhYmlsaXR5KCkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFibGUpKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm11dGFibGUi
KSwganNCb29sZWFuKG1fZ2xvYmFsLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6TXV0YWJsZSkpOwog
CiAgICAgV2FzbTo6VHlwZSB2YWx1ZVR5cGUgPSBtX2dsb2JhbC0+dHlwZSgpOwogICAgIEpTU3Ry
aW5nKiB2YWx1ZVN0cmluZyA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5kZXggYTZkNjRlZTM0NWZiYzdhNDNj
ZTFjNWU0Y2EzZDc3NzI0YTAwM2NjOS4uYTkxMzVlMzRhOTY0YzViNjQ4NjhiYTg4ZDIzZTQ0YjE0
YjcyMDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2FzbSB7CiBjbGFz
cyBNb2R1bGU7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQbGFuOwordXNpbmcg
U2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiB9CiAKIGNsYXNzIFN5bWJvbFRhYmxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCmluZGV4IDU4MTA0MWIzY2Ez
NDMzYzdhZmFiZjFiZTM0Njc1ZGFiN2Q0YTRmZDYuLjY2YTkyMTNlOWE0YTEzYTk4ZWQ2ZTczOTA1
MGNmYzMxMjQ1NTE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAg
ICAgICAgc3dpdGNoIChhcmdUeXBlLmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoK
ICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgpAQCAtMTc4LDYgKzE3OSw3
IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUu
a2luZCkgewogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAg
ICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6UmVmOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIEhhbmRsZWQgYWJvdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCmluZGV4IDBiOTYz
MWVhNTQ2NTQ1Zjc2YTMyZTg3MmQzOTc4ZTBmNThjODA4ZWMuLmE4ZTIwYzc5MDM3YTY0MzdjMWY2
ZmJkN2FhMTI2OTAzMjJlZTQwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCkBAIC02
Niw3ICs2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5R2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGdsb2JhbERlc2Ny
aXB0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCi0gICAgV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eTsKKyAgICBXYXNtOjpNdXRh
YmlsaXR5IG11dGFiaWxpdHk7CiAgICAgewogICAgICAgICBJZGVudGlmaWVyIG11dGFibGVJZGVu
dCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIik7CiAgICAgICAgIEpTVmFs
dWUgbXV0YWJsZVZhbHVlID0gZ2xvYmFsRGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgbXV0
YWJsZUlkZW50KTsKQEAgLTc0LDkgKzc0LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNv
bnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAg
ICAgICAgYm9vbCBtdXRhYmxlQm9vbGVhbiA9IG11dGFibGVWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKG11dGFibGVCb29sZWFuKQotICAgICAgICAgICAgbXV0
YWJpbGl0eSA9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmxlOworICAgICAgICAgICAg
bXV0YWJpbGl0eSA9IFdhc206Ok11dGFibGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG11
dGFiaWxpdHkgPSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlOworICAgICAgICAg
ICAgbXV0YWJpbGl0eSA9IFdhc206OkltbXV0YWJsZTsKICAgICB9CiAKICAgICBXYXNtOjpUeXBl
IHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUdsb2JhbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKaW5kZXggYzdiM2Q2ZjdlOTQ1MTFjMThhZGZk
N2E3NmM4OTIxOTY5MDY0ZTk1Yy4uZGI4ZDkwNGFkZDc0MjZlZTg3YTJkZWQ4YmMyMGI0NjhhYWYx
NDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlHbG9iYWxQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUdsb2JhbFByb3RvU2V0dGVyRnVuY1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSlNXZWJBc3NlbWJseUdsb2JhbCogZ2xvYmFsID0gZ2V0
R2xvYmFsKGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBp
ZiAoZ2xvYmFsLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbEluZm9ybWF0
aW9uOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpCisgICAgaWYgKGdsb2JhbC0+Z2xvYmFsKCktPm11
dGFiaWxpdHkoKSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuR2xvYmFsLnByb3Rv
dHlwZS52YWx1ZSBhdHRlbXB0cyB0byBtb2RpZnkgaW1tdXRhYmxlIGdsb2JhbCB2YWx1ZSJfcykp
KTsKIAogICAgIGdsb2JhbC0+Z2xvYmFsKCktPnNldChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDA2NGFjNjk5MTNjOGQ2YTFiMTg4
YWRkYmNlNDRjZDhjY2Q0OGY2ZTkuLjExNTY4YTFlMjg4MTY2NTdjNDYzNDYxMTdlOGNhZDMxOTA2
YzVlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogICAgICAgICAgICAgICAgICAgICAvLyBiLiBMZXQgY2xvc3VyZSBiZSB2
LltbQ2xvc3VyZV1dLgogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHdhc21XcmFwcGVy
RnVuY3Rpb24tPmZ1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZv
cm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRleF07
CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0ZWRTaWduYXR1cmVJ
bmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tp
bXBvcnQua2luZEluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgICAgICBpZiAoaW1w
b3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
Z2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZnVu
Y3Rpb24iLCAic2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIFdlYkFzc2VtYmx5
IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIikpKTsKICAgICAgICAgICAgIH0KQEAgLTI1MCwxMiArMjUw
LDEyIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5k
RXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJu
YWxLaW5kOjpHbG9iYWw6IHsKICAgICAgICAgICAgIC8vIDUuIElmIGkgaXMgYSBnbG9iYWwgaW1w
b3J0OgogICAgICAgICAgICAgY29uc3QgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9
IG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF07Ci0gICAgICAgICAg
ICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0
YWJsZSkgeworICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206OkltbXV0
YWJsZSkgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmhlcml0czxKU1dlYkFzc2VtYmx5
R2xvYmFsPih2bSkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUdsb2JhbCog
Z2xvYmFsVmFsdWUgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUdsb2JhbCo+KHZhbHVlKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+dHlwZSgpICE9IGdsb2Jh
bC50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdl
KGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgc2FtZSB0eXBlIikpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgp
ICE9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPm11dGFiaWxpdHkoKSAhPSBXYXNtOjpJbW11
dGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2Uo
aW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBzYW1lIG11dGFiaWxpdHkiKSkp
OwogICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBkZWNsYXJlZEdsb2JhbFR5cGUgPSBt
b2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGU7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZGVjbGFyZWRHbG9iYWxUeXBlLmtpbmQpIHsKQEAgLTUwMSw4
ICs1MDEsOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0
c0FuZEV4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlv
bjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOiB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRh
YmxlKTsKLSAgICAgICAgICAgICAgICBSZWY8V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBXYXNt
OjpHbG9iYWw6OmNyZWF0ZShnbG9iYWwudHlwZSwgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11
dGFiaWxpdHk6Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
Z2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJsZSk7CisgICAgICAgICAgICAgICAgUmVm
PFdhc206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xvYmFsOjpjcmVhdGUoZ2xvYmFsLnR5
cGUsIFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKICAgICAgICAgICAg
ICAgICBKU1dlYkFzc2VtYmx5R2xvYmFsKiBnbG9iYWxWYWx1ZSA9IEpTV2ViQXNzZW1ibHlHbG9i
YWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5
R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7CiAgICAgICAgICAgICAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5s
aW5rR2xvYmFsKHZtLCBnbG9iYWxJbmRleCwgZ2xvYmFsVmFsdWUpOwpAQCAtNTU3LDEyICs1NTcs
MTIgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRF
eHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICAgICAgICAgICAgICAgICAgZXhwb3J0
ZWRWYWx1ZSA9IEpTV2ViQXNzZW1ibHlHbG9iYWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZt
LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xv
YmFsUmVmKSk7CiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGds
b2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpN
dXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09
IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmdldEdsb2Jh
bEJpbmRpbmcoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9i
YWxSZWYpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT50eXBlKCkgPT0g
Z2xvYmFsLnR5cGUpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT5tdXRh
YmlsaXR5KCkgPT0gZ2xvYmFsLm11dGFiaWxpdHkpOwotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZ2xvYmFsUmVmLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11
dGFiaWxpdHk6Ok11dGFibGUpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVm
LT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxSZWYtPm93bmVyPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkp
OwogICAgICAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gZ2xvYmFsUmVmLT5vd25lcjxK
U1dlYkFzc2VtYmx5R2xvYmFsPigpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL3dhc20uanNvbgppbmRleCAzMmM4YWY4YmJmNTdlYTYwNWIzMzU1YTU2ZDg4MmU4ZGRl
MWUwZWVkLi43NDI4MTJjZGViMDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICJy
ZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjog
IkIzOjpJbnQ2NCIgfSwKICAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6
ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6
Vm9pZCIgfSwKKyAgICAgICAgInN0cnVjdCI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgICB7
ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9
CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0Iiwg
ImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU5MjZlNDRmYTgxNGMxMzFmNjNmOWUwOTgwNzA1MmEx
NjA2NTRhYzAuLjFhODQxOWI3MTc0NmY0OWI1ZmI4NDk1MmEwMDA0YmJlOTMzMDRhOTggMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdh
bGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVjdHMg
dHlwZXMgZW5jb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWRkIHNpbXBsZSB0ZXN0cyBmb3IgcGFyc2luZyBXYXNtIHN0cnVjdHMu
CisgICAgICAgIAorICAgICAgICAqIHdhc20ueWFtbDoKKyAgICAgICAgKiB3YXNtL2djL3N0cnVj
dHMuanM6IEFkZGVkLgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKHRlc3RTdHJ1Y3REZWNs
YXJhdGlvbik6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMTEtMTkgIEFzdW11
IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggV2ViQXNzZW1ibHkg
bWVtb3J5LmZpbGwgb3V0IG9mIGJvdW5kcyBlcnJvciBtZXNzYWdlCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20ueWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCmluZGV4IDAwNmMzM2JlNzgzNzkzN2Y1
NTQwOGNiZTg2ZjY2ODI2ZTI5NGE5MjguLjk0ZDZkNGYyN2VmOTZhYzBkNzhhMjc3Nzk3NmVlMjRm
NjExYWMzYTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1sCisrKyBiL0pTVGVzdHMvd2Fz
bS55YW1sCkBAIC0zNSw2ICszNSw4IEBACiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxl
c3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMKICAg
Y21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCistIHBhdGg6
IHdhc20vZ2MKKyAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1h
bmRzCiAtIHBhdGg6IHdhc20vZnV6egogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNz
IHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDogd2FzbS9sb3dFeGVjdXRhYmxlTWVtb3J5CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcyBiL0pTVGVzdHMvd2FzbS9nYy9zdHJ1
Y3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIzOGIyMjEzMTE5OTIxNzAzOTJiNGJkMGY1NjFjMjZmYjAxN2Nk
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcwpAQCAtMCww
ICsxLDgzIEBACisvL0AgcnVuV2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzPXRydWUiLCAiLS11c2VXZWJBc3NlbWJseUdDPXRydWUiKQorCitp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKK2ltcG9ydCB7IGluc3RhbnRp
YXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVyLmpzIjsKKworZnVuY3Rpb24gbW9kdWxlKGJ5dGVz
LCB2YWxpZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5s
ZW5ndGgpOworICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgIGZvciAobGV0
IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2aWV3W2ldID0gYnl0ZXMuY2hh
ckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIp
OworfQorCitmdW5jdGlvbiB0ZXN0U3RydWN0RGVjbGFyYXRpb24oKSB7CisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0KSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHgwM1x4MDFceDVmXHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5
cGUgKHN0cnVjdCAoZmllbGQgaTMyKSkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
MDVceDAxXHg1Zlx4MDFceDdmXHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHR5cGUgKHN0cnVjdCAoZmllbGQgaTMyKSAoZmllbGQgaTMyKSkpCisgICAqICkKKyAgICovCisg
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4MDdceDAxXHg1Zlx4MDJceDdmXHgwMFx4N2ZceDAwIikpOworCisgIC8q
CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCAobXV0IGkzMikpKSkK
KyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNVx4MDFceDVmXHgwMVx4N2ZceDAxIikp
OworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmll
bGQgKG11dCBpMzIpIChtdXQgaTMyKSkpKQorICAgKiAgICh0eXBlICRMaW5lIChzdHJ1Y3QgKGZp
ZWxkIChtdXQgKHJlZiAkUG9pbnQpKSAobXV0IChyZWYgJFBvaW50KSkpKSkKKyAgICogKQorICAg
Ki8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDJceDVmXHgwMlx4N2ZceDAxXHg3Zlx4MDFceDVmXHgw
Mlx4NmJceDAwXHgwMVx4NmJceDAwXHgwMSIpKTsKKworICAvKgorICAgKiB0b28gbWFueSBmaWVs
ZHMKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIGkzMikpKQorICAg
KiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBtb2R1bGUoCisg
ICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4NWZc
eGZmXHhmZlx4ZmZceDdmXHgwMCIKKyAgICAgICksCisgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVy
cm9yLAorICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE2OiBu
dW1iZXIgb2YgZmllbGRzIGZvciBzdHJ1Y3QgdHlwZSBhdCBwb3NpdGlvbiAwIGlzIHRvbyBiaWcg
MjY4NDM1NDU1IG1heGltdW0gMTAwMDAwMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZShidWZmZXIpJykiCisgICk7CisKKyAgLyoKKyAgICogaW52YWxpZCBtdXRhYmlsaXR5Cisg
ICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCAobXV0IGkzMikpKSkKKyAg
ICogKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAor
ICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNVx4MDFceDVm
XHgwMVx4N2ZceDAyIgorICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisg
ICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTU6IGludmFsaWQg
RmllbGQncyBtdXRhYmlsaXR5OiAweDAyIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJ1ZmZlciknKSIKKyAgKTsKK30KKwordGVzdFN0cnVjdERlY2xhcmF0aW9uKCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpp
bmRleCAzMmM4YWY4YmJmNTdlYTYwNWIzMzU1YTU2ZDg4MmU4ZGRlMWUwZWVkLi43NDI4MTJjZGVi
MDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
d2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTE2LDYgKzE2LDcgQEAK
ICAgICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjAs
ICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAicmVmIjogICAgICAgeyAidHlwZSI6
ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMSwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAg
ICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMyLCAiYjN0
eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAic3RydWN0IjogICAgeyAidHlwZSI6ICJ2YXJp
bnQ3IiwgInZhbHVlIjogIC0zMywgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZv
aWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAi
QjM6OlZvaWQiIH0KICAgICB9LAogICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYz
MiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446145</attachid>
            <date>2021-12-07 02:36:15 -0800</date>
            <delta_ts>2021-12-07 02:38:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233416-20211207173613.patch</filename>
            <type>text/plain</type>
            <size>97858</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi42OGYwYWQ3ZGJlMTkwYWY4
Mjk1MDA2ZDU3YTI2OTc4MzY3NWYyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTIgQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZA
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVj
dHMgdHlwZXMgZW5jb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgSW50cm9kdWNlZCBmbGFnIGZvciBXYXNtIEdDIGFuZCBhZGQgc3Vw
cG9ydCBvZiBXYXNtIEdDIHN0cnVjdCB0eXBlcyBlbmNvZGluZworICAgICAgICBhY2NvcmRpbmcg
dG8gdGhlIE1WUCBzcGVjOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkv
Z2MvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2djL01WUC5tZC4KKyAgICAgICAgCisgICAgICAgICog
cnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmdldEdsb2JhbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAq
IHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjpnZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpz
ZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUdsb2JhbC5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6c2V0KToKKyAgICAgICAgKiB3YXNtL1dh
c21HbG9iYWwuaDoKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIp
OgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9y
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50
cyk6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6Z2V0U2lnbmF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpN
b2R1bGVJbmZvcm1hdGlvbjo6dHlwZXNDb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
Ok1vZHVsZUluZm9ybWF0aW9uOjppc1N0cnVjdFR5cGUgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VIZWFwVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNz
VHlwZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9u
UGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFy
c2VyOjpwYXJzZUdsb2JhbFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUV4Y2VwdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oOgor
ICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUpOgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6
CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKKzIwMjEtMTEtMjMgIERtaXRyeSBCZXpoZXRz
a292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1S
ZWZlcmVuY2VzXSBTaW1wbGlmeSByZXByZXNlbnRhdGlvbiBvZiBXYXNtIFR5cGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVwbGFjZSBT
aWduYXR1cmUgaW5kZXggd2l0aCBpbmRleCBpbnRvIFdhc20gVHlwZSBzZWN0aW9uLgorICAgICAg
ICBBZGQgY29ycmVzcG9uZGluZyBtYXBwaW5nIHRvIGJlIGFibGUgdG8gZ2V0IGl0cm9kdWNlZCB0
eXBlIGluZGV4CisgICAgICAgIHZpYSBnaXZlbiBmdW5jdGlvbiBpbmRleC4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBs
YW46OndvcmspOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNFeHRl
cm5yZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjppc0Z1bmNyZWYpOgorICAgICAgICAoSlNDOjpX
YXNtOjpmdW5jcmVmVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OmV4dGVybnJlZlR5cGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjppc1R5cGVJbmRleEhlYXBUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dh
c21MTEludFBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVG
dW5jdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21w
aWxhdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0
aW9uOjpnZXRUeXBlSW5kZXhGb3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNt
T01HRm9yT1NSRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50
cnlQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6
CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBl
KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VJbml0RXhwcik6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNI
ZWFkZXIucHk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVC
bG9jayk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0Fu
ZEV4cG9ydHMpOgorCiAyMDIxLTExLTIyICBHZXphIExvcmUgIDxnbG9yZUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtKU0NdIE1ha2Ugc2hhcmluZyBvZiB1bmxpbmtlZCBiYXNlbGluZSBjb2RlIHBv
c3NpYmxlIG9uIEpTVkFMVUUzMl82NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggMzk4ZjU1YjNlNzU2NWRiMzYyNDZmN2UxZTIx
MzE5MzllMDExYTk3Ni4uODYxNGU5NTNhOThkMjA4YjA2YjAwZjk5NGY2YWQzZDFkYmYwMjlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjo6ZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrKiBibG9jaywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24KICAgICBvdXQu
cHJpbnQobWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1vZHVsZUlu
Zm9ybWF0aW9uLm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpKTsKIAogICAg
IGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rpb25zW2Jsb2Nr
LT5mdW5jdGlvbkluZGV4KCldOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbYmxvY2st
PmZ1bmN0aW9uSW5kZXgoKV07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
b2R1bGVJbmZvcm1hdGlvbi5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tibG9jay0+
ZnVuY3Rpb25JbmRleCgpXS5zaWduYXR1cmVJbmRleDsKICAgICBjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAg
IG91dC5wcmludCgiIDogIiwgc2lnbmF0dXJlLCAiXG4iKTsKICAgICBvdXQucHJpbnQoIndhc20g
c2l6ZTogIiwgZnVuY3Rpb24uZGF0YS5zaXplKCksICIgYnl0ZXNcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTU3YWVhNDIxZjNhMzliNTMx
ZjhiZGI4ZDNhMDI2MzkwNjc4ZGVmMy4uYThiOGFkZWZkNmY5MDM1Yjg1NzliNWU3MzFhYjA1ZWFh
N2VlZWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01NDYsNiArNTQ2LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsK
ICAgICB2KEJvb2wsIHVzZVRlbXBvcmFsLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBUZW1w
b3JhbCBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRocmVhZGluZyBz
cGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5j
ZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRoZSB3YXNtIHR5
cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseUdDLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZ2MgdHlwZXMgZnJvbSB0aGUgd2FzbSBnYyBw
cm9wb3NhbC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUV4Y2VwdGlvbnMsIHRydWUs
IE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2VjdGlvbiBhbmQgaW5zdHJ1Y3Rpb25zIGZyb20gdGhl
IHdhc20gZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWMuIikgXAogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGU0MjhiMGQ1ZjMy
YmVmMDg0OTkzNDEwNWQ5MWVmYzAxYzEyMjdhOTcuLjQxOWZlMjg5ZWNmMzg0MjJiYjNhZjM2ZDZl
N2EyZjcyY2IwZGM1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMTEyNCw4ICsxMTI0LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGkKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICBTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBU
eXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIHNpZ25hdHVyZUluZGV4IH0pOworICAgICAgICBy
ZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1f
aW5mby5nZXRUeXBlSW5kZXhGb3JGdW5jdGlvbihpbmRleCkgfSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkZ1bmNyZWYpOwogICAgIGVtaXRDQ2FsbCgm
b3BlcmF0aW9uV2FzbVJlZkZ1bmMsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFu
dChUeXBlczo6STMyLCBpbmRleCkpOwpAQCAtMTIxNiw3ICsxMjE1LDcgQEAgYXV0byBBaXJJUkdl
bmVyYXRvcjo6YWRkVGFibGVTaXplKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0KIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0
YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBmaWxsLCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VSVChmaWxs
LnRtcCgpKTsKLSAgICBBU1NFUlQoaXNTdWJ0eXBlKGZpbGwudHlwZSgpLCBtX2luZm8udGFibGVz
W3RhYmxlSW5kZXhdLndhc21UeXBlKCkpKTsKKyAgICBBU1NFUlQobV9pbmZvLmlzU3VidHlwZShm
aWxsLnR5cGUoKSwgbV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS53YXNtVHlwZSgpKSk7CiAgICAg
QVNTRVJUKGRlbHRhLnRtcCgpKTsKICAgICBBU1NFUlQoZGVsdGEudHlwZSgpLmlzSTMyKCkpOwog
ICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkkzMik7CkBAIC0xMjI5LDcgKzEyMjgsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdyb3codW5zaWduZWQgdGFibGVJbmRleCwg
RXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcgogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVG
aWxsKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIG9mZnNldCwgRXhwcmVzc2lv
blR5cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBBU1NFUlQoZmlsbC50bXAoKSk7Ci0gICAgQVNTRVJUKGlzU3VidHlwZShmaWxsLnR5cGUoKSwg
bV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS53YXNtVHlwZSgpKSk7CisgICAgQVNTRVJUKG1faW5m
by5pc1N1YnR5cGUoZmlsbC50eXBlKCksIG1faW5mby50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5
cGUoKSkpOwogICAgIEFTU0VSVChvZmZzZXQudG1wKCkpOwogICAgIEFTU0VSVChvZmZzZXQudHlw
ZSgpLmlzSTMyKCkpOwogICAgIEFTU0VSVChjb3VudC50bXAoKSk7CkBAIC0xNDM4LDcgKzE0Mzcs
NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZToK
LSAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0
aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmls
aXR5ID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBpZiAoQXJnOjppc1Zh
bGlkQWRkckZvcm0ob2Zmc2V0LCBCMzo6V2lkdGg2NCkpCiAgICAgICAgICAgICBhcHBlbmQoTW92
ZSwgQXJnOjphZGRyKHRlbXAsIG9mZnNldCksIHRlbXApOwogICAgICAgICBlbHNlIHsKQEAgLTE0
NzgsNyArMTQ3Nyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSCiAgICAgICAgICAgICBlbWl0
V3JpdGVCYXJyaWVyRm9ySlNXcmFwcGVyKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2Fz
bTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZToKLSAgICAgICAgQVNT
RVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmls
aXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206
Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBpZiAoQXJnOjppc1ZhbGlkQWRkckZvcm0o
b2Zmc2V0LCBCMzo6V2lkdGg2NCkpCiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRy
KHRlbXAsIG9mZnNldCksIHRlbXApOwogICAgICAgICBlbHNlIHsKQEAgLTM1NDMsNyArMzU0Miw3
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwoVHlwZWRUbXAgY2FsbGVl
SW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhCiAKIHZvaWQgQWlySVJHZW5lcmF0b3I6OnVuaWZ5
KGNvbnN0IEV4cHJlc3Npb25UeXBlIGRzdCwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291cmNlKQog
ewotICAgIEFTU0VSVChpc1N1YnR5cGUoc291cmNlLnR5cGUoKSwgZHN0LnR5cGUoKSkpOworICAg
IEFTU0VSVChtX2luZm8uaXNTdWJ0eXBlKHNvdXJjZS50eXBlKCksIGRzdC50eXBlKCkpKTsKICAg
ICBhcHBlbmQobW92ZU9wRm9yVmFsdWVUeXBlKGRzdC50eXBlKCkpLCBzb3VyY2UsIGRzdCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAppbmRleCAwYjU5Y2EwZDg5OTRhYmY4MTdjNWI4ZGYxMjEwNTJmZmE1NzQ2MTg2Li4xYzliODMz
YzIwMTYyN2IwZjFkNmY5NWM3YjQyMTZkMjI4ZWNhNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xMzY2LDcgKzEzNjYsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbAogICAgICAgICByZXN1bHQgPSBwdXNoKG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgdG9CM1R5cGUoZ2xv
YmFsLnR5cGUpLCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90PihpbmRl
eCAqIHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZTogewotICAgICAgICBBU1NF
UlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxp
dHk6Ok11dGFibGUpOworICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6
TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAgICAgIFZhbHVlKiBwb2ludGVyID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBCMzo6SW50NjQsIG9y
aWdpbigpLCBnbG9iYWxzQXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJl
Z2lzdGVyKSkpOwogICAgICAgICByZXN1bHQgPSBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgdG9CM1R5cGUoZ2xvYmFsLnR5cGUpLCBvcmln
aW4oKSwgcG9pbnRlcikpOwogICAgICAgICBicmVhazsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSB2YWx1ZSkgLT4gUGFydGlhbFJlCiAgICAgICAgICAgICBlbWl0V3JpdGVCYXJyaWVyRm9ySlNX
cmFwcGVyKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRp
b246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZTogewotICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFi
aWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpOwor
ICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0
YWJsZSk7CiAgICAgICAgIFZhbHVlKiBwb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBCMzo6SW50NjQsIG9yaWdpbigpLCBnbG9iYWxz
QXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3Jl
LCBvcmlnaW4oKSwgZ2V0KHZhbHVlKSwgcG9pbnRlcik7CiAgICAgICAgIC8vIFdlIGVtaXQgYSB3
cml0ZS1iYXJyaWVyIG9udG8gSlNXZWJBc3NlbWJseUdsb2JhbCwgbm90IEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRl
eCAyNDMwMjllNjJiMzNjMWQzOTcwOTdhYjQ5ZGE4YzkzODM5YWFkYmMxLi5jMjdlYzg2ZTFiNmJl
ZTI4NmFkZDFhMWFkZTgyZjkzODlmNzU1ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBCQlFQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBjb21wdXRlRXhjZXB0aW9uSGFuZGxlckxv
Y2F0aW9ucyhleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zLCBmdW5jdGlvbi5nZXQoKSwgY29udGV4
dCwgbGlua0J1ZmZlcik7CiAKICAgICBzaXplX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9mdW5j
dGlvbkluZGV4ICsgbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpOwot
ICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKKyAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5k
ZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxh
dGlvbiA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9XQVNNX0NP
REVfRk9SX01PREUoQ29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBsaW5rQnVmZmVyLCBKSVRDb21w
aWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIs
IG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1h
a2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0
aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEo
KSksCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWlu
dDMyX3QgZnVuY3Rpb25JbmRleCkKIAogICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2Vz
LmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5j
ZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNb
ZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9lbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb25zLmFkZChm
dW5jdGlvbkluZGV4LCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoKm1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQsIHNpZ25hdHVyZSwgJm1fdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQkJRUGxh
bjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJuYWxGdW5jdGlvbj4gQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXgsIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPFVubGlua2Vk
V2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgVGllclVwQ291bnQqIHRp
ZXJVcCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5j
dGlvbkNvdW50KCkgKyBmdW5jdGlvbkluZGV4OwogICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25J
bmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRleCk7CkBAIC0y
MjUsNyArMjI1LDcgQEAgdm9pZCBCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIHsK
ICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CiAg
ICAgICAgIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCA9IG1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4XTsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5j
dGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAg
ICAgY29uc3QgdWludDMyX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gZnVuY3Rpb25JbmRleCArIG1f
bW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICAgICAgQVNTRVJU
KGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uSW5kZXhT
cGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXgg
ODI0ZmE4YjczNDdjNWY0ODZjN2UwOWMxZDVhOWQxZTA3NGViMmMzNy4uYWJlY2M3NWM1YWZhYTE1
NjM0YjhjY2Q2ODhlNDU3MzBhMTUwOTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaApAQCAtMTA1LDI4ICsxMDUsMjggQEAgaW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5
cGUgdHlwZSkKIGlubGluZSBib29sIGlzRXh0ZXJucmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2ln
bmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpFeHRlcm5yZWYpOworICAgICAgICByZXR1cm4gaXNSZWZU
eXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFR5cGVLaW5k
OjpFeHRlcm5yZWYpOwogICAgIHJldHVybiB0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OkV4dGVybnJl
ZjsKIH0KIAogaW5saW5lIGJvb2wgaXNGdW5jcmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAgICBy
ZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0
dXJlSW5kZXg+KFR5cGVLaW5kOjpGdW5jcmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0
eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RnVu
Y3JlZik7CiAgICAgcmV0dXJuIHR5cGUua2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZjsKIH0KIAog
aW5saW5lIFR5cGUgZnVuY3JlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNtOjpUeXBl
IHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PFdhc206OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKKyAg
ICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVmTnVsbCwgV2FzbTo6
TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdhc206OlR5cGVLaW5kOjpGdW5j
cmVmKSB9OwogICAgIHJldHVybiBUeXBlczo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5cGUgZXh0
ZXJucmVmVHlwZSgpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBl
S2luZDo6UmVmTnVsbCwgV2FzbTo6TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8V2FzbTo6U2ln
bmF0dXJlSW5kZXg+KFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWYpIH07CisgICAgICAgIHJldHVy
biBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZ
ZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmKSB9Owog
ICAgIHJldHVybiBUeXBlczo6RXh0ZXJucmVmOwogfQogCkBAIC0xMzgsMjggKzEzOCw2IEBAIGlu
bGluZSBib29sIGlzUmVmV2l0aFR5cGVJbmRleChUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGlzUmVm
VHlwZSh0eXBlKSAmJiAhaXNFeHRlcm5yZWYodHlwZSkgJiYgIWlzRnVuY3JlZih0eXBlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNUeXBlSW5kZXhIZWFwVHlwZShpbnQzMl90IGhlYXBUeXBlKQotewot
ICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaGVhcFR5cGUgPj0gMDsKLX0K
LQotaW5saW5lIGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkKLXsKLSAgICBp
ZiAoc3ViLmlzTnVsbGFibGUoKSAmJiAhcGFyZW50LmlzTnVsbGFibGUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKChzdWIuaXNSZWYoKSB8fCBzdWIuaXNSZWZOdWxsKCkpICYm
IGlzRnVuY3JlZihwYXJlbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChzdWIu
aXNSZWYoKSAmJiBwYXJlbnQuaXNSZWZOdWxsKCkgJiYgc3ViLmluZGV4ID09IHBhcmVudC5pbmRl
eCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gc3ViID09IHBhcmVudDsKLX0K
LQogaW5saW5lIGJvb2wgaXNWYWxpZEhlYXBUeXBlS2luZChUeXBlS2luZCBraW5kKQogewogICAg
IHN3aXRjaCAoa2luZCkgewpAQCAtMjM2LDEzICsyMTQsMTQgQEAgc3RydWN0IEV4cG9ydCB7CiAK
IFN0cmluZyBtYWtlU3RyaW5nKGNvbnN0IE5hbWUmIGNoYXJhY3RlcnMpOwogCitlbnVtIE11dGFi
aWxpdHkgOiB1aW50OF90IHsKKyAgICAvLyBGSVhNRSBhdXRvLWdlbmVyYXRlIHRoaXMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMzEKKyAgICBNdXRhYmxlID0g
MSwKKyAgICBJbW11dGFibGUgPSAwCit9OworCiBzdHJ1Y3QgR2xvYmFsSW5mb3JtYXRpb24gewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBlbnVtIE11dGFiaWxpdHkg
OiB1aW50OF90IHsKLSAgICAgICAgLy8gRklYTUUgYXV0by1nZW5lcmF0ZSB0aGlzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMxCi0gICAgICAgIE11dGFibGUg
PSAxLAotICAgICAgICBJbW11dGFibGUgPSAwCi0gICAgfTsKIAogICAgIGVudW0gSW5pdGlhbGl6
YXRpb25UeXBlIDogdWludDhfdCB7CiAgICAgICAgIElzSW1wb3J0LApAQCAtMjYzLDYgKzI0Miwy
OSBAQCBzdHJ1Y3QgR2xvYmFsSW5mb3JtYXRpb24gewogICAgIHVpbnQ2NF90IGluaXRpYWxCaXRz
T3JJbXBvcnROdW1iZXIgeyAwIH07CiB9OwogCitzdHJ1Y3QgRnVuY3Rpb25EZXNjcmlwdGlvbiB7
CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXg7CisgICAgdWludDMyX3QgdHlwZUlu
ZGV4OworfTsKKworc3RydWN0IEZ1bmNUeXBlIHsKKyAgICBSZWZQdHI8U2lnbmF0dXJlPiBzaWdu
YXR1cmU7Cit9OworCitzdHJ1Y3QgU3RydWN0RmllbGQgeworICAgIFR5cGUgdHlwZTsKKyAgICBN
dXRhYmlsaXR5IG11dGFiaWxpdHk7CisKKyAgICBib29sIGlzTXV0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG11dGFiaWxpdHkgPT0gTXV0YWJpbGl0eTo6TXV0YWJsZTsgfQorICAgIGJvb2wgSXNJbW11
dGFibGUoKSBjb25zdCB7IHJldHVybiBtdXRhYmlsaXR5ID09IE11dGFiaWxpdHk6OkltbXV0YWJs
ZTsgfQorfTsKKworc3RydWN0IFN0cnVjdFR5cGUgeworICAgIFZlY3RvcjxTdHJ1Y3RGaWVsZD4g
ZmllbGRzOworfTsKKwordXNpbmcgVHlwZVJlY29yZCA9IHN0ZDo6dmFyaWFudDxGdW5jVHlwZSwg
U3RydWN0VHlwZT47CisKIHN0cnVjdCBGdW5jdGlvbkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBzaXplX3Qgc3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGQ5N2U3ZTc1OWE0ZjI0NzVh
Mzc3NzczODcxNzgzMWJjNDllMDkzZDIuLjdhZGU4ODg1ODM0YzlkNjIxODE3YjU1YjAzMDhhNWEy
YjQxNWNlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oCkBAIC0yNTcsNyArMjU3LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2UoKSAtPiBSZXN1bHQKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VW
YXJVSW50MzIobnVtYmVyT2ZMb2NhbHMpLCAiY2FuJ3QgZ2V0IEZ1bmN0aW9uJ3MgbnVtYmVyIG9m
IGxvY2FscyBpbiBncm91cCAiLCBpKTsKICAgICAgICAgdG90YWxOdW1iZXJPZkxvY2FscyArPSBu
dW1iZXJPZkxvY2FsczsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0b3RhbE51bWJlck9m
TG9jYWxzID4gbWF4RnVuY3Rpb25Mb2NhbHMsICJGdW5jdGlvbidzIG51bWJlciBvZiBsb2NhbHMg
aXMgdG9vIGJpZyAiLCB0b3RhbE51bWJlck9mTG9jYWxzLCAiIG1heGltdW0gIiwgbWF4RnVuY3Rp
b25Mb2NhbHMpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZSht
X2luZm8sIHR5cGVPZkxvY2FsKSwgImNhbid0IGdldCBGdW5jdGlvbiBsb2NhbCdzIHR5cGUgaW4g
Z3JvdXAgIiwgaSk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBl
KHR5cGVPZkxvY2FsKSwgImNhbid0IGdldCBGdW5jdGlvbiBsb2NhbCdzIHR5cGUgaW4gZ3JvdXAg
IiwgaSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzRGVmYXVsdGFibGVUeXBlKHR5
cGVPZkxvY2FsKSwgIkZ1bmN0aW9uIGxvY2FscyBtdXN0IGhhdmUgYSBkZWZhdWx0YWJsZSB0eXBl
Iik7CiAKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9sb2NhbHMudHJ5UmVzZXJ2ZUNh
cGFjaXR5KHRvdGFsTnVtYmVyT2ZMb2NhbHMpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9y
eSBmb3IgZnVuY3Rpb24ncyAiLCB0b3RhbE51bWJlck9mTG9jYWxzLCAiIGxvY2FscyIpOwpAQCAt
NjY5LDcgKzY2OSw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQW5ub3Rh
dGVkU2VsZWN0SW1tZWRpYXRlcyhBbm5vdGF0ZWRTZWxlY3RJbW1lCiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihzaXplT2ZBbm5vdGF0aW9uVmVjdG9yICE9IDEsICJzZWxlY3QgaW52YWxpZCByZXN1
bHQgYXJpdHkgZm9yIik7CiAKICAgICBUeXBlIHRhcmdldFR5cGU7Ci0gICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB0YXJnZXRUeXBlKSwgInNlbGVjdCBjYW4n
dCBwYXJzZSBhbm5vdGF0aW9ucyIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFs
dWVUeXBlKHRhcmdldFR5cGUpLCAic2VsZWN0IGNhbid0IHBhcnNlIGFubm90YXRpb25zIik7CiAK
ICAgICByZXN1bHQuc2l6ZU9mQW5ub3RhdGlvblZlY3RvciA9IHNpemVPZkFubm90YXRpb25WZWN0
b3I7CiAgICAgcmVzdWx0LnRhcmdldFR5cGUgPSB0YXJnZXRUeXBlOwpAQCAtNzI0LDcgKzcyNCw3
IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmNoZWNrQnJhbmNoVGFyZ2V0KGNvbnN0
IENvbnRyb2xUeXBlJiB0YXJnZXQpIC0+IFBhCiAKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4
cHJlc3Npb25TdGFjay5zaXplKCkgLSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7ICsraSkK
LSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKG1fZXhwcmVzc2lvblN0
YWNrW29mZnNldCArIGldLnR5cGUoKSwgdGFyZ2V0LmJyYW5jaFRhcmdldFR5cGUoaSkpLCAiYnJh
bmNoJ3Mgc3RhY2sgdHlwZSBpcyBub3QgYSBibG9jaydzIHR5cGUgYnJhbmNoIHRhcmdldCB0eXBl
LiBTdGFjayB2YWx1ZSBoYXMgdHlwZSAiLCBtX2V4cHJlc3Npb25TdGFja1tvZmZzZXQgKyBpXS50
eXBlKCkua2luZCwgIiBidXQgYnJhbmNoIHRhcmdldCBleHBlY3RzIGEgdmFsdWUgb2YgIiwgdGFy
Z2V0LmJyYW5jaFRhcmdldFR5cGUoaSkua2luZCwgIiBhdCBpbmRleCAiLCBpKTsKKyAgICAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9pbmZvLmlzU3VidHlwZShtX2V4cHJlc3Npb25TdGFj
a1tvZmZzZXQgKyBpXS50eXBlKCksIHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkpKSwgImJyYW5j
aCdzIHN0YWNrIHR5cGUgaXMgbm90IGEgYmxvY2sncyB0eXBlIGJyYW5jaCB0YXJnZXQgdHlwZS4g
U3RhY2sgdmFsdWUgaGFzIHR5cGUgIiwgbV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlw
ZSgpLmtpbmQsICIgYnV0IGJyYW5jaCB0YXJnZXQgZXhwZWN0cyBhIHZhbHVlIG9mICIsIHRhcmdl
dC5icmFuY2hUYXJnZXRUeXBlKGkpLmtpbmQsICIgYXQgaW5kZXggIiwgaSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtNzM0LDcgKzczNCw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnVuaWZ5KGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sRGF0YSkgLT4gUGFydGlhbFJlCiB7
CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihjb250cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0
dXJuQ291bnQoKSAhPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgYmxvY2sgd2l0aCB0eXBl
OiAiLCBjb250cm9sRGF0YS5zaWduYXR1cmUoKS0+dG9TdHJpbmcoKSwgIiByZXR1cm5zOiAiLCBj
b250cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0dXJuQ291bnQoKSwgIiBidXQgc3RhY2sgaGFzOiAi
LCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNvbnRyb2xEYXRhLnNpZ25hdHVyZSgpLT5yZXR1cm5Db3VudCgpOyArK2kp
Ci0gICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShtX2V4cHJlc3Npb25T
dGFja1tpXS50eXBlKCksIGNvbnRyb2xEYXRhLnNpZ25hdHVyZSgpLT5yZXR1cm5UeXBlKGkpKSwg
ImNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGggdW5leHBlY3RlZCB0eXBlLiAiLCBtX2V4cHJlc3Np
b25TdGFja1tpXS50eXBlKCkua2luZCwgIiBpcyBub3QgYSAiLCBjb250cm9sRGF0YS5zaWduYXR1
cmUoKS0+cmV0dXJuVHlwZShpKS5raW5kKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
RighbV9pbmZvLmlzU3VidHlwZShtX2V4cHJlc3Npb25TdGFja1tpXS50eXBlKCksIGNvbnRyb2xE
YXRhLnNpZ25hdHVyZSgpLT5yZXR1cm5UeXBlKGkpKSwgImNvbnRyb2wgZmxvdyByZXR1cm5zIHdp
dGggdW5leHBlY3RlZCB0eXBlLiAiLCBtX2V4cHJlc3Npb25TdGFja1tpXS50eXBlKCkua2luZCwg
IiBpcyBub3QgYSAiLCBjb250cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKS5raW5k
KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04NTYsNyArODU2LDcgQEAgRk9SX0VBQ0hfV0FT
TV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBS
RVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKICAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IGluZGV4LnR5cGUoKS5raW5kLCAidGFibGUu
c2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgVHlw
ZUtpbmQ6OkkzMik7CiAgICAgICAgIFR5cGUgdHlwZSA9IG1faW5mby50YWJsZXNbdGFibGVJbmRl
eF0ud2FzbVR5cGUoKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBl
KHZhbHVlLnR5cGUoKSwgdHlwZSksICJ0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZS50
eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCB0eXBlLmtpbmQpOworICAgICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKCFtX2luZm8uaXNTdWJ0eXBlKHZhbHVlLnR5cGUoKSwgdHlwZSksICJ0YWJs
ZS5zZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCB0
eXBlLmtpbmQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luZm8udGFibGVzW3RhYmxlSW5k
ZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpFeHRlcm5yZWYgfHwgbV9pbmZvLnRhYmxl
c1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAgICAg
ICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlU2V0KHRhYmxlSW5kZXgsIGluZGV4
LCB2YWx1ZSkpOwogICAgICAgICByZXR1cm4geyB9OwpAQCAtOTEyLDcgKzkxMiw3IEBAIEZPUl9F
QUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgV0FTTV9U
UllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhmaWxsLCAidGFibGUuZ3JvdyIpOwogCiAgICAg
ICAgICAgICBUeXBlIHRhYmxlVHlwZSA9IG1faW5mby50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5
cGUoKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShmaWxs
LnR5cGUoKSwgdGFibGVUeXBlKSwgInRhYmxlLmdyb3cgZXhwZWN0cyBmaWxsIHZhbHVlIG9mIHR5
cGUgIiwgdGFibGVUeXBlLmtpbmQsICIgZ290ICIsIGZpbGwudHlwZSgpLmtpbmQpOworICAgICAg
ICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9pbmZvLmlzU3VidHlwZShmaWxsLnR5cGUo
KSwgdGFibGVUeXBlKSwgInRhYmxlLmdyb3cgZXhwZWN0cyBmaWxsIHZhbHVlIG9mIHR5cGUgIiwg
dGFibGVUeXBlLmtpbmQsICIgZ290ICIsIGZpbGwudHlwZSgpLmtpbmQpOwogICAgICAgICAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IGRlbHRhLnR5cGUoKS5raW5k
LCAidGFibGUuZ3JvdyBleHBlY3RzIGFuIGkzMiBkZWx0YSB2YWx1ZSwgZ290ICIsIGRlbHRhLnR5
cGUoKS5raW5kKTsKIAogICAgICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwpAQCAtOTMw
LDcgKzkzMCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQog
ICAgICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhvZmZzZXQsICJ0
YWJsZS5maWxsIik7CiAKICAgICAgICAgICAgIFR5cGUgdGFibGVUeXBlID0gbV9pbmZvLnRhYmxl
c1t0YWJsZUluZGV4XS53YXNtVHlwZSgpOwotICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighaXNTdWJ0eXBlKGZpbGwudHlwZSgpLCB0YWJsZVR5cGUpLCAidGFibGUuZmlsbCBleHBl
Y3RzIGZpbGwgdmFsdWUgb2YgdHlwZSAiLCB0YWJsZVR5cGUua2luZCwgIiBnb3QgIiwgZmlsbC50
eXBlKCkua2luZCk7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2luZm8u
aXNTdWJ0eXBlKGZpbGwudHlwZSgpLCB0YWJsZVR5cGUpLCAidGFibGUuZmlsbCBleHBlY3RzIGZp
bGwgdmFsdWUgb2YgdHlwZSAiLCB0YWJsZVR5cGUua2luZCwgIiBnb3QgIiwgZmlsbC50eXBlKCku
a2luZCk7CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGVLaW5kOjpJMzIg
IT0gb2Zmc2V0LnR5cGUoKS5raW5kLCAidGFibGUuZmlsbCBleHBlY3RzIGFuIGkzMiBvZmZzZXQg
dmFsdWUsIGdvdCAiLCBvZmZzZXQudHlwZSgpLmtpbmQpOwogICAgICAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IGNvdW50LnR5cGUoKS5raW5kLCAidGFibGUu
ZmlsbCBleHBlY3RzIGFuIGkzMiBjb3VudCB2YWx1ZSwgZ290ICIsIGNvdW50LnR5cGUoKS5raW5k
KTsKIApAQCAtMTA4MCwxNCArMTA4MCwxMCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9P
UChDUkVBVEVfQ0FTRSkKICAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOwogICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAg
ICAgICBpbnQzMl90IGhlYXBUeXBlOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3Qg
YmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAgICAgICBpZiAoaXNU
eXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLnVz
ZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgdHlwZU9mTnVs
bCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5k
ZXggfTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBU
eXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25h
dHVyZUluZGV4PihoZWFwVHlwZSkgfTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlSGVhcFR5cGUoaGVhcFR5cGUpLCAicmVmLm51bGwgaGVhcHR5cGUgbXVzdCBiZSBmdW5j
cmVmLCBleHRlcm5yZWYgb3IgdHlwZV9pZHgiKTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwgPSBU
eXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5
cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUg
YSByZWZlcmVuY2UgdHlwZSIpOwogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RB
bmRBcHBlbmQodHlwZU9mTnVsbCwgbV9jb250ZXh0LmFkZENvbnN0YW50KHR5cGVPZk51bGwsIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBA
IC0xMTEzLDggKzExMDksNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVf
Q0FTRSkKICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmVmRnVuYyhpbmRleCwg
cmVzdWx0KSk7CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4
KTsKLSAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBl
IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9LCByZXN1bHQp
OworICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKFR5cGUg
eyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby5nZXRUeXBlSW5kZXhGb3JGdW5j
dGlvbihpbmRleCkgfSwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KIApAQCAtMTEzOSw3ICsxMTM0LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1Ao
Q1JFQVRFX0NBU0UpCiAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2YWx1ZTsKICAgICAgICAgV0FT
TV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh2YWx1ZSwgInNldF9sb2NhbCIpOwogICAg
ICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGluZGV4ID49IG1fbG9jYWxzLnNpemUoKSwgImF0
dGVtcHQgdG8gc2V0IHVua25vd24gbG9jYWwgIiwgaW5kZXgsICIgbGFzdCBvbmUgaXMgIiwgbV9s
b2NhbHMuc2l6ZSgpKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBl
KHZhbHVlLnR5cGUoKSwgbV9sb2NhbHNbaW5kZXhdKSwgInNldF9sb2NhbCB0byB0eXBlICIsIHZh
bHVlLnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIG1fbG9jYWxzW2luZGV4XS5raW5kKTsKKyAg
ICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9pbmZvLmlzU3VidHlwZSh2YWx1ZS50eXBl
KCksIG1fbG9jYWxzW2luZGV4XSksICJzZXRfbG9jYWwgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCku
a2luZCwgIiBleHBlY3RlZCAiLCBtX2xvY2Fsc1tpbmRleF0ua2luZCk7CiAgICAgICAgIFdBU01f
VFJZX0FERF9UT19DT05URVhUKHNldExvY2FsKGluZGV4LCB2YWx1ZSkpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KQEAgLTExNTEsNyArMTE0Niw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZ
X1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhw
cmVzc2lvblN0YWNrLmlzRW1wdHkoKSwgImNhbid0IHRlZV9sb2NhbCBvbiBlbXB0eSBleHByZXNz
aW9uIHN0YWNrIik7CiAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2YWx1ZSA9IG1fZXhwcmVzc2lv
blN0YWNrLmxhc3QoKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihpbmRleCA+PSBt
X2xvY2Fscy5zaXplKCksICJhdHRlbXB0IHRvIHRlZSB1bmtub3duIGxvY2FsICIsIGluZGV4LCAi
IGxhc3Qgb25lIGlzICIsIG1fbG9jYWxzLnNpemUoKSk7Ci0gICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIG1fbG9jYWxzW2luZGV4XSksICJzZXRf
bG9jYWwgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBtX2xvY2Fs
c1tpbmRleF0ua2luZCk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1faW5mby5p
c1N1YnR5cGUodmFsdWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xvY2FsIHRvIHR5
cGUgIiwgdmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNbaW5kZXhdLmtp
bmQpOwogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgdmFs
dWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xMTc1LDExICsxMTcwLDExIEBA
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBUeXBl
ZEV4cHJlc3Npb24gdmFsdWU7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNL
X0lOVE8odmFsdWUsICJzZXRfZ2xvYmFsIHZhbHVlIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLmdsb2JhbHMuc2l6ZSgpLCAic2V0X2dsb2JhbCAiLCBp
bmRleCwgIiBvZiB1bmtub3duIGdsb2JhbCwgbGltaXQgaXMgIiwgbV9pbmZvLmdsb2JhbHMuc2l6
ZSgpKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8uZ2xvYmFsc1tpbmRl
eF0ubXV0YWJpbGl0eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlLCAic2V0X2dsb2Jh
bCAiLCBpbmRleCwgIiBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihtX2luZm8uZ2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpJbW11
dGFibGUsICJzZXRfZ2xvYmFsICIsIGluZGV4LCAiIGlzIGltbXV0YWJsZSIpOwogCiAgICAgICAg
IFR5cGUgZ2xvYmFsVHlwZSA9IG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlOwogICAgICAgICBB
U1NFUlQoaXNWYWx1ZVR5cGUoZ2xvYmFsVHlwZSkpOwotICAgICAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKCFpc1N1YnR5cGUodmFsdWUudHlwZSgpLCBnbG9iYWxUeXBlKSwgInNldF9nbG9iYWwg
IiwgaW5kZXgsICIgd2l0aCB0eXBlICIsIGdsb2JhbFR5cGUua2luZCwgIiB3aXRoIGEgdmFyaWFi
bGUgb2YgdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCk7CisgICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYoIW1faW5mby5pc1N1YnR5cGUodmFsdWUudHlwZSgpLCBnbG9iYWxUeXBlKSwgInNl
dF9nbG9iYWwgIiwgaW5kZXgsICIgd2l0aCB0eXBlICIsIGdsb2JhbFR5cGUua2luZCwgIiB3aXRo
IGEgdmFyaWFibGUgb2YgdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCk7CiAKICAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoc2V0R2xvYmFsKGluZGV4LCB2YWx1ZSkpOwogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTE5OCw3ICsxMTkzLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RP
UkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3MudHJ5
UmVzZXJ2ZUNhcGFjaXR5KGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpLCAiY2FuJ3Qg
YWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgY2FsbCdzICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCksICIgYXJndW1lbnRzIik7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJz
dEFyZ3VtZW50SW5kZXg7IGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLmF0KGkpOwot
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZy50eXBlKCks
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1
bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4
cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KS5raW5kKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1faW5mby5pc1N1
YnR5cGUoYXJnLnR5cGUoKSwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3Vt
ZW50SW5kZXgpKSwgImFyZ3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbCwgZ290ICIsIGFyZy50
eXBlKCkua2luZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBm
aXJzdEFyZ3VtZW50SW5kZXgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBl
bmQoYXJnKTsKICAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOwog
ICAgICAgICB9CkBAIC0xMjI0LDEwICsxMjE5LDEwIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMihzaWduYXR1cmVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHNpZ25h
dHVyZSBpbmRleCIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih0YWJsZUluZGV4KSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgdGFibGUgaW5kZXgiKTsK
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0YWJsZUluZGV4ID49IG1faW5mby50YWJsZUNv
dW50KCksICJjYWxsX2luZGlyZWN0J3MgdGFibGUgaW5kZXggIiwgdGFibGVJbmRleCwgIiBpbnZh
bGlkLCBsaW1pdCBpcyAiLCBtX2luZm8udGFibGVDb3VudCgpKTsKLSAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihtX2luZm8udXNlZFNpZ25hdHVyZXMuc2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4
LCAiY2FsbF9pbmRpcmVjdCdzIHNpZ25hdHVyZSBpbmRleCAiLCBzaWduYXR1cmVJbmRleCwgIiBl
eGNlZWRzIGtub3duIHNpZ25hdHVyZXMgIiwgbV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSk7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnR5cGVzQ291bnQoKSA8PSBzaWdu
YXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwgc2lnbmF0dXJl
SW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5mby50eXBlc0NvdW50KCkp
OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0u
dHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJjYWxsX2luZGlyZWN0IGlzIG9u
bHkgdmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGZ1bmNyZWYiKTsKIAotICAgICAgICBjb25z
dCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby51c2VkU2lnbmF0dXJlc1tzaWdu
YXR1cmVJbmRleF0uZ2V0KCk7CisgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0
dXJlID0gbV9pbmZvLmdldFNpZ25hdHVyZShzaWduYXR1cmVJbmRleCk7CiAgICAgICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8v
IEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJn
dW1lbnRDb3VudCA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbGxfaW5kaXJlY3QgZXhw
ZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0
YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVz
Iik7CiAKQEAgLTEyMzksNyArMTIzNCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09Q
KENSRUFURV9DQVNFKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBcmd1bWVudEluZGV4
OyBpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFR5cGVk
RXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChpKTsKICAgICAgICAgICAgIGlm
IChpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUoYXJnLnR5cGUoKSwgY2FsbGVlU2lnbmF0dXJl
LmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpKSwgImFyZ3VtZW50IHR5cGUgbWlzbWF0
Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZy50eXBlKCkua2luZCwgIiwgZXhwZWN0ZWQg
IiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpLmtpbmQp
OworICAgICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1faW5mby5pc1N1YnR5
cGUoYXJnLnR5cGUoKSwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50
SW5kZXgpKSwgImFyZ3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIs
IGFyZy50eXBlKCkua2luZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50
KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51bmNoZWNr
ZWRBcHBlbmQoYXJnKTsKICAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFj
aygpOwogICAgICAgICB9CkBAIC0xMjU4LDggKzEyNTMsOCBAQCBGT1JfRUFDSF9XQVNNX01FTU9S
WV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpLCAiZnVuY3Rpb24g
cmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighaXNSZWZXaXRoVHlwZUluZGV4KG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkp
LCAibm9uLWZ1bmNyZWYgY2FsbF9yZWYgdmFsdWUgIiwgbV9leHByZXNzaW9uU3RhY2subGFzdCgp
LnR5cGUoKS5raW5kKTsKIAotICAgICAgICBjb25zdCBTaWduYXR1cmVJbmRleCBjYWxsZWVTaWdu
YXR1cmVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXg7Ci0gICAg
ICAgIGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChjYWxsZWVTaWduYXR1cmVJbmRleCk7CisgICAgICAgIGNvbnN0IGF1dG8gY2FsbGVl
U2lnbmF0dXJlSW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4Owor
ICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWdu
YXR1cmUoY2FsbGVlU2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3Vu
dCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxl
ZSdzIHZhbHVlLgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFyZ3VtZW50Q291
bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRz
ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcAppbmRleCBjYjNkMTYzYmJlMDhiNmE1NzU4Y2Q5
ZGMyOGRlMDY4YTFkZTU2ZjE3Li5hMmEwYWNiNWYxMGQ3MzU4YzUwYzBhMDlkZjk2ZTRmMWVmODVi
YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIEdsb2JhbDo6c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEFTU0VS
VChtX211dGFiaWxpdHkgIT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSk7Cisg
ICAgQVNTRVJUKG1fbXV0YWJpbGl0eSAhPSBXYXNtOjpJbW11dGFibGUpOwogICAgIHN3aXRjaCAo
bV90eXBlLmtpbmQpIHsKICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6IHsKICAgICAgICAgaW50MzJf
dCB2YWx1ZSA9IGFyZ3VtZW50LnRvSW50MzIoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21HbG9iYWwuaAppbmRleCAxN2Y4ODY4MWUwNmU0MDIyODBkMTlhZmEyZWVi
YmNhZThkOWJkMTVlLi40MzhhN2Y3NDBmZjk5MzE2Yzc2NTgxM2VhZTg3MmY3ZDY3OTQwZjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHVibGljOgogICAgICAgICBWYWx1ZSogbV9wb2ludGVyOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPEdsb2JhbD4gY3JlYXRlKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6R2xvYmFsSW5mb3Jt
YXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlhbFZhbHVlID0gMCkK
KyAgICBzdGF0aWMgUmVmPEdsb2JhbD4gY3JlYXRlKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6TXV0
YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUgPSAwKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2xvYmFsKHR5cGUsIG11dGFiaWxpdHksIGluaXRp
YWxWYWx1ZSkpOwogICAgIH0KIAogICAgIFdhc206OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotICAgIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFi
aWxpdHkoKSBjb25zdCB7IHJldHVybiBtX211dGFiaWxpdHk7IH0KKyAgICBXYXNtOjpNdXRhYmls
aXR5IG11dGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX211dGFiaWxpdHk7IH0KICAgICBKU1Zh
bHVlIGdldChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQ2NF90IGdldFByaW1pdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubV9wcmltaXRpdmU7IH0KICAgICB2b2lkIHNldChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
VmFsdWUqIHZhbHVlUG9pbnRlcigpIHsgcmV0dXJuICZtX3ZhbHVlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgR2xvYmFsKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFi
aWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlhbFZhbHVlKQorICAgIEdsb2JhbChXYXNt
OjpUeXBlIHR5cGUsIFdhc206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlh
bFZhbHVlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbXV0YWJpbGl0eSht
dXRhYmlsaXR5KQogICAgICAgICAsIG1fdmFsdWUoKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFdhc206OlR5cGUgbV90eXBlOwotICAgIFdhc206Okdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmlsaXR5IG1fbXV0YWJpbGl0eTsKKyAgICBXYXNtOjpNdXRhYmlsaXR5IG1f
bXV0YWJpbGl0eTsKICAgICBKU09iamVjdCogbV9vd25lciB7IG51bGxwdHIgfTsKICAgICBWYWx1
ZSBtX3ZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwCmluZGV4IDhlZDIzMDkzZjcxM2UxZjQyMjllYjNmMWZjNzQ1ZDU0MWJm
ZmIyNzcuLmQxMGJiYzgwZGE4M2Q4NWNiOTllY2VmYzk1ZDhmNjQ1NDAyZGE2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAt
NjI1LDYgKzYyNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNh
bGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH07CkBAIC02ODIsNiArNjgz
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzExLDYgKzcxMyw3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTc2OCw2ICs3NzEsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IFZlYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0
cnVjdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC04MTgsNiArODIyLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJn
dW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggN2MwYmJj
NWY3MWY1OWNiZDY2YjJlOGUzMjllM2MyMzU3N2RjZTgwYS4uYjE2NjU4YTczZmNkNzk3YzA0YjFl
YTNlYzg2OGE4OGE3ZDllNTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50UGxhbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBMTEludFBsYW46OnByZXBhcmVJ
bXBsKCkKIHZvaWQgTExJbnRQbGFuOjpjb21waWxlRnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25J
bmRleCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuc2l6ZSgpICsg
ZnVuY3Rpb25JbmRleDsKICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1
bmN0aW9uSW5kZXhTcGFjZSkgPT0gc2lnbmF0dXJlSW5kZXgpOwpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIAogICAgIGZvciAodWlu
dDMyX3QgZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZUluZm9ybWF0
aW9uLT5mdW5jdGlvbnMuc2l6ZSgpOyBmdW5jdGlvbkluZGV4KyspIHsKICAgICAgICAgaWYgKG1f
ZXhwb3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygpLmNvbnRhaW5zKGZ1bmN0aW9uSW5k
ZXgpKSB7Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9u
SW5kZXhdOworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21v
ZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlv
bkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAgICAgICAgICAgLy8gVGhlIExMSW50IGFsd2F5
cyBib3VuZHMgY2hlY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTGltaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKaW5k
ZXggZjhmMDUzYjU4NjBlN2RmOTdkYjQ0NjRhYTBlYTE3NDhkOWI4N2YzNi4uZjgyZTcwMzFkYTQw
NjFlMjk3NDQ0YzE1Yzk0OWUwYzgzMDRhM2Y4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MaW1pdHMuaApAQCAtNDQsNiArNDQsNyBAQCBjb25zdGV4cHIgc2l6ZV90IG1heEV4cG9y
dHMgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heEV4Y2VwdGlvbnMgPSAxMDAwMDA7CiBj
b25zdGV4cHIgc2l6ZV90IG1heEdsb2JhbHMgPSAxMDAwMDAwOwogY29uc3RleHByIHNpemVfdCBt
YXhEYXRhU2VnbWVudHMgPSAxMDAwMDA7Citjb25zdGV4cHIgc2l6ZV90IG1heFN0cnVjdHNGaWVs
ZHMgPSAxMDAwMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFN0cmluZ1NpemUgPSAxMDAwMDA7
CiBjb25zdGV4cHIgc2l6ZV90IG1heE1vZHVsZVNpemUgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggZDUwZmRkZmIzNzgzN2Ey
OTEzYWM3ZDAxNTY4ZmE2OTRjMjJhN2IzMS4uNWYzNTg2ZWQ5NDQ4NTlhN2MzMzQzMDRmYThlYmQ5
MWM1OTAwNzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldhc21Db2RlQmxvY2suaCIKICNpbmNsdWRlICJXYXNt
RW1iZWRkZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU9wcy5o
IgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KQEAgLTQxLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIExMSW50UGxhbjsKIHN0cnVjdCBDb250ZXh0Owogc3Ry
dWN0IE1vZHVsZUluZm9ybWF0aW9uOwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7
CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxl
SW5mb3JtYXRpb24uY3BwCmluZGV4IGM2ZThiOGM3ZmViOWNjMjA4ZWIyNzk2ZWE3ZjJhNDIwNGQ0
MDc2NzIuLjY0NGUyMTBjOTQxYWQ3NjM2ZDg4ZmM5MzNhZDE1MzNmODJlM2I1ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNw
cApAQCAtMzksNiArMzksNjkgQEAgTW9kdWxlSW5mb3JtYXRpb246Ok1vZHVsZUluZm9ybWF0aW9u
KCkKIAogTW9kdWxlSW5mb3JtYXRpb246On5Nb2R1bGVJbmZvcm1hdGlvbigpIHsgfQogCitjb25z
dCBTaWduYXR1cmUmIE1vZHVsZUluZm9ybWF0aW9uOjpnZXRTaWduYXR1cmUodWludDMyX3QgaW5k
ZXgpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byogZnVuY1R5cGUgPSBzdGQ6OmdldF9pZjxGdW5j
VHlwZT4oJnR5cGVzW2luZGV4XSk7CisgICAgQVNTRVJUKGZ1bmNUeXBlKTsKKyAgICBBU1NFUlQo
ZnVuY1R5cGUtPnNpZ25hdHVyZS5nZXQoKSk7CisgICAgcmV0dXJuICpmdW5jVHlwZS0+c2lnbmF0
dXJlLmdldCgpOworfQorCitjb25zdCBTdHJ1Y3RUeXBlJiBNb2R1bGVJbmZvcm1hdGlvbjo6Z2V0
U3RydWN0VHlwZSh1aW50MzJfdCB0eXBlSW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzU3Ry
dWN0VHlwZSh0eXBlSW5kZXgpKTsKKyAgICByZXR1cm4gKnN0ZDo6Z2V0X2lmPFN0cnVjdFR5cGU+
KCZ0eXBlc1t0eXBlSW5kZXhdKTsKK30KKworYm9vbCBNb2R1bGVJbmZvcm1hdGlvbjo6aXNTdWJ0
eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkgY29uc3QKK3sKKyAgICBpZiAoc3ViLmlzTnVsbGFi
bGUoKSAmJiAhcGFyZW50LmlzTnVsbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKChzdWIuaXNSZWYoKSB8fCBzdWIuaXNSZWZOdWxsKCkpICYmIChwYXJlbnQuaXNSZWYo
KSB8fCBwYXJlbnQuaXNSZWZOdWxsKCkpKQorICAgICAgICByZXR1cm4gaXNTdWJ0eXBlKHN1Yi5p
bmRleCwgcGFyZW50LmluZGV4KTsKKworICAgIHJldHVybiBzdWIgPT0gcGFyZW50OworfQorCiti
b29sIE1vZHVsZUluZm9ybWF0aW9uOjppc1N1YnR5cGUodW5zaWduZWQgc3ViVHlwZUluZGV4LCB1
bnNpZ25lZCBwYXJlbnRUeXBlSW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKHN1YlR5cGVJbmRleCA9
PSBwYXJlbnRUeXBlSW5kZXgpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHBhcmVu
dFR5cGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChpc1N0cnVjdFR5cGUoc3ViVHlwZUluZGV4
KSAmJiBpc1N0cnVjdFR5cGUocGFyZW50VHlwZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIGlzU3Ry
dWN0U3VidHlwZShnZXRTdHJ1Y3RUeXBlKHN1YlR5cGVJbmRleCksIGdldFN0cnVjdFR5cGUocGFy
ZW50VHlwZUluZGV4KSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTW9kdWxlSW5m
b3JtYXRpb246OmlzU3RydWN0U3VidHlwZShjb25zdCBTdHJ1Y3RUeXBlJiBzdWJTdHJ1Y3RUeXBl
LCBjb25zdCBTdHJ1Y3RUeXBlJiBwYXJlbnRTdHJ1Y3RUeXBlKSBjb25zdAoreworICAgIGlmIChz
dWJTdHJ1Y3RUeXBlLmZpZWxkcy5zaXplKCkgPCBwYXJlbnRTdHJ1Y3RUeXBlLmZpZWxkcy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc3RkOjpzaXplX3QgZmllbGRJ
bmRleCA9IDB1OyBmaWVsZEluZGV4IDwgcGFyZW50U3RydWN0VHlwZS5maWVsZHMuc2l6ZSgpOyAr
K2ZpZWxkSW5kZXgpIHsKKyAgICAgICAgaWYgKCFpc1N0cnVjdEZpZWxkU3VidHlwZShzdWJTdHJ1
Y3RUeXBlLmZpZWxkc1tmaWVsZEluZGV4XSwgcGFyZW50U3RydWN0VHlwZS5maWVsZHNbZmllbGRJ
bmRleF0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIE1vZHVsZUluZm9ybWF0aW9uOjppc1N0cnVjdEZpZWxkU3VidHlwZShj
b25zdCBTdHJ1Y3RGaWVsZCYgc3ViRmllbGQsIGNvbnN0IFN0cnVjdEZpZWxkJiBwYXJlbnRGaWVs
ZCkgY29uc3QKK3sKKyAgICBpZiAoc3ViRmllbGQuSXNJbW11dGFibGUoKSAmJiBwYXJlbnRGaWVs
ZC5pc011dGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpc1N1YnR5
cGUoc3ViRmllbGQudHlwZSwgcGFyZW50RmllbGQudHlwZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCAzMjhjNmJjYTZiZmE2NjJi
NTNlOWM4YzhkYTlhY2IxOGY1MDQ0YWM1Li42ZDVlOWI0MzY3ZDk0NDQ5NzFmMmIwNWQ2NjdmMTgx
ZjEwMGE5ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlSW5mb3JtYXRpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2FzbUZvcm1h
dC5oIgogCisjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC01NCw4ICs1NSw4IEBAIHN0cnVj
dCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJ
bmZvcm1hdGlvbj4gewogICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZShzaXplX3QgZnVuY3Rpb25JbmRleCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBpc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9u
SW5kZXgpCi0gICAgICAgICAgICA/IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5j
dGlvbkluZGV4XQotICAgICAgICAgICAgOiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNl
c1tmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKV07
CisgICAgICAgICAgICA/IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbklu
ZGV4XS5zaWduYXR1cmVJbmRleAorICAgICAgICAgICAgOiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2Vz
LnNpemUoKV0uc2lnbmF0dXJlSW5kZXg7CiAgICAgfQogCiAgICAgc2l6ZV90IGV4Y2VwdGlvbklu
ZGV4U3BhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gaW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5k
aWNlcy5zaXplKCkgKyBpbnRlcm5hbEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOyB9
CkBAIC04MSw2ICs4Miw3IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIHVpbnQzMl90IHRhYmxl
Q291bnQoKSBjb25zdCB7IHJldHVybiB0YWJsZXMuc2l6ZSgpOyB9CiAgICAgdWludDMyX3QgZWxl
bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4gZWxlbWVudHMuc2l6ZSgpOyB9CiAgICAgdWludDMy
X3QgZGF0YVNlZ21lbnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBudW1iZXJPZkRhdGFTZWdtZW50
czsgfQorICAgIHVpbnQzMl90IHR5cGVzQ291bnQoKSBjb25zdCB7IHJldHVybiB0eXBlcy5zaXpl
KCk7IH0KIAogICAgIGNvbnN0IFRhYmxlSW5mb3JtYXRpb24mIHRhYmxlKHVuc2lnbmVkIGluZGV4
KSBjb25zdCB7IHJldHVybiB0YWJsZXNbaW5kZXhdOyB9CiAKQEAgLTkzLDEyICs5NSwyOCBAQCBz
dHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9k
dWxlSW5mb3JtYXRpb24+IHsKICAgICBib29sIGlzRGVjbGFyZWRFeGNlcHRpb24odWludDMyX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRFeGNlcHRpb25zLmNvbnRhaW5zKGluZGV4
KTsgfQogICAgIHZvaWQgYWRkRGVjbGFyZWRFeGNlcHRpb24odWludDMyX3QgaW5kZXgpIHsgbV9k
ZWNsYXJlZEV4Y2VwdGlvbnMuc2V0KGluZGV4KTsgfQogCisgICAgdWludDMyX3QgZ2V0VHlwZUlu
ZGV4Rm9yRnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25JbmRleCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChpc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9u
SW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNl
c1tmdW5jdGlvbkluZGV4XS50eXBlSW5kZXg7CisgICAgICAgIHJldHVybiBpbnRlcm5hbEZ1bmN0
aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzLnNpemUoKV0udHlwZUluZGV4OworICAgIH0KKworICAgIGNvbnN0IFNpZ25hdHVy
ZSYgZ2V0U2lnbmF0dXJlKHVpbnQzMl90IGluZGV4KSBjb25zdDsKKyAgICBib29sIGlzU3RydWN0
VHlwZSh1aW50MzJfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJ1Y3RUeXBlPih0eXBlc1tpbmRleF0pOyB9CisgICAgY29uc3QgU3RydWN0VHlwZSYgZ2V0
U3RydWN0VHlwZSh1aW50MzJfdCB0eXBlSW5kZXgpIGNvbnN0OworCisgICAgYm9vbCBpc1N1YnR5
cGUoVHlwZSBzdWIsIFR5cGUgcGFyZW50KSBjb25zdDsKKyAgICBib29sIGlzU3VidHlwZSh1bnNp
Z25lZCBzdWJUeXBlSW5kZXgsIHVuc2lnbmVkIHBhcmVudFR5cGVJbmRleCkgY29uc3Q7CisgICAg
Ym9vbCBpc1N0cnVjdFN1YnR5cGUoY29uc3QgU3RydWN0VHlwZSYgc3ViU3RydWN0VHlwZSwgY29u
c3QgU3RydWN0VHlwZSYgcGFyZW50U3RydWN0VHlwZSkgY29uc3Q7CisgICAgYm9vbCBpc1N0cnVj
dEZpZWxkU3VidHlwZShjb25zdCBTdHJ1Y3RGaWVsZCYgc3ViRmllbGQsIGNvbnN0IFN0cnVjdEZp
ZWxkJiBwYXJlbnRGaWVsZCkgY29uc3Q7CisKICAgICBWZWN0b3I8SW1wb3J0PiBpbXBvcnRzOwot
ICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2Vz
OwotICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUlu
ZGljZXM7CisgICAgVmVjdG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGltcG9ydEZ1bmN0aW9uU2ln
bmF0dXJlSW5kaWNlczsKKyAgICBWZWN0b3I8RnVuY3Rpb25EZXNjcmlwdGlvbj4gaW50ZXJuYWxG
dW5jdGlvblNpZ25hdHVyZUluZGljZXM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBv
cnRFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4g
aW50ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzOwotICAgIFZlY3RvcjxSZWY8U2lnbmF0
dXJlPj4gdXNlZFNpZ25hdHVyZXM7CisgICAgVmVjdG9yPFR5cGVSZWNvcmQ+IHR5cGVzOwogCiAg
ICAgTWVtb3J5SW5mb3JtYXRpb24gbWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCmluZGV4IDQ4ZmI0NTBjNGMw
ODkwOWMxNmQxOGMxMjYxN2M5OGU2OWNhYWQzMzQuLjA3MzEzOWY1ZGQ1YjQwMGI0YjI5NDgzZWY3
YzViODc0NWUxYzVlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgT01HRm9y
T1NSRW50cnlQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25J
bmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlv
bkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDZhNGY3ODcyNjk1NDg1NDYzMGVlOGU4MzUzZTY4
ZmY0NDNmMGU2MWYuLjU4ZDVlZjRlZDk0YzIxMzAxOTA3ZGFlMjU5MDNjNTc0MTM2Nzg5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5t
b2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVu
Y3Rpb25JbmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25J
bmRleFNwYWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9m
dW5jdGlvbkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rp
b25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUg
PSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYjc5YWRjMWYzYzhhYjBmMzQ2
ZmM0ZjZkYTg5YWUuLjIyMjhlZjkzODc5YWMzMTg4ZmRhMjZhYTVlYmJkZWQ2MWIzNjY1MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTg0LDEwICs4NCwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYXJJbnQ2NChp
bnQ2NF90Jik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJs
b2NrU2lnbmF0dXJlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgQmxvY2tTaWduYXR1cmUmKTsK
LSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYsIFR5cGUmKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVJl
ZlR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBUeXBlJik7CisgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VWYWx1ZVR5cGUoVHlwZSYpOworICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlUmVmVHlwZShUeXBlJik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VFeHRlcm5hbEtpbmQoRXh0ZXJuYWxLaW5kJik7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VIZWFwVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIGludDMyX3QmKTsK
KyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUhlYXBUeXBlKGludDMyX3QmKTsKIAog
ICAgIHNpemVfdCBtX29mZnNldCA9IDA7CiAKQEAgLTI4OCwxNCArMjg4LDE0IEBAIEFMV0FZU19J
TkxJTkUgdHlwZW5hbWUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8
U3VjY2Vzc1R5cGU+OjpwCiAgICAgaW50NjRfdCBpbmRleDsKICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhckludDY0KGluZGV4KSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gZG9lc24n
dCByZXR1cm4gdmFsdWUgdHlwZSBidXQgY2FuJ3QgZGVjb2RlIHR5cGUgc2VjdGlvbiBpbmRleCIp
OwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPCAwLCAiQmxvY2stbGlrZSBpbnN0cnVj
dGlvbiBzaWduYXR1cmUgaW5kZXggaXMgbmVnYXRpdmUiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpID49IGluZm8udXNlZFNpZ25hdHVyZXMuc2l6
ZSgpLCAiQmxvY2stbGlrZSBpbnN0cnVjdGlvbiBzaWduYXR1cmUgaW5kZXggaXMgb3V0IG9mIGJv
dW5kcy4gSW5kZXg6ICIsIGluZGV4LCAiIHR5cGUgaW5kZXggc3BhY2U6ICIsIGluZm8udXNlZFNp
Z25hdHVyZXMuc2l6ZSgpKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHN0YXRpY19jYXN0PHNp
emVfdD4oaW5kZXgpID49IGluZm8udHlwZXNDb3VudCgpLCAiQmxvY2stbGlrZSBpbnN0cnVjdGlv
biBzaWduYXR1cmUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy4gSW5kZXg6ICIsIGluZGV4LCAiIHR5
cGUgaW5kZXggc3BhY2U6ICIsIGluZm8udHlwZXNDb3VudCgpKTsKIAotICAgIHJlc3VsdCA9ICZp
bmZvLnVzZWRTaWduYXR1cmVzW2luZGV4XS5nZXQoKTsKKyAgICByZXN1bHQgPSAmaW5mby5nZXRT
aWduYXR1cmUoaW5kZXgpOwogICAgIHJldHVybiB7IH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBh
cnNlSGVhcFR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIGludDMyX3QmIHJlc3Vs
dCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUhlYXBUeXBl
KGludDMyX3QmIHJlc3VsdCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlw
ZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzEyLDE1
ICszMTIsMTIgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNl
SGVhcFR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZv
LnVzZWRTaWduYXR1cmVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmVz
dWx0ID0gaGVhcFR5cGU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBh
cnNlVmFsdWVUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBUeXBlJiByZXN1bHQp
CitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUo
VHlwZSYgcmVzdWx0KQogewogICAgIGludDhfdCBraW5kOwogICAgIGlmICghcGFyc2VJbnQ3KGtp
bmQpKQpAQCAtMzMwLDIwICszMjcsMjIgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNj
ZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJgogCiAgICAg
VHlwZUtpbmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7CiAgICAgYm9v
bCBpc051bGxhYmxlID0gdHJ1ZTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRleCA9IDA7Cisg
ICAgdW5zaWduZWQgdHlwZUluZGV4ID0gMDsgICAgCiAKICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpICYmICh0eXBlS2luZCA9PSBUeXBlS2lu
ZDo6RnVuY3JlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6RXh0ZXJucmVmKSkgewotICAgICAg
ICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4Pih0eXBlS2luZCk7CisgICAg
ICAgIHR5cGVJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlS2luZCk7CiAgICAgICAg
IHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51bGw7CiAgICAgfSBlbHNlIGlmICh0eXBlS2luZCA9
PSBUeXBlS2luZDo6UmVmIHx8IHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWZOdWxsKSB7CiAgICAg
ICAgIGlzTnVsbGFibGUgPSB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbDsKICAgICAgICAg
aW50MzJfdCBoZWFwVHlwZTsKLSAgICAgICAgaWYgKCFwYXJzZUhlYXBUeXBlKGluZm8sIGhlYXBU
eXBlKSkKKyAgICAgICAgaWYgKCFwYXJzZUhlYXBUeXBlKGhlYXBUeXBlKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhlYXBUeXBlIDwgMCAmJiAhaXNWYWxpZEhlYXBU
eXBlS2luZChzdGF0aWNfY2FzdDxUeXBlS2luZD4oaGVhcFR5cGUpKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgc2lnSW5kZXggPSBoZWFwVHlwZSA8IDAgPyBzdGF0aWNfY2Fz
dDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIDogU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChp
bmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7CisgICAgICAgIHR5cGVJbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWFwVHlwZSk7CiAgICAgfQogCi0gICAgVHlwZSB0eXBl
ID0geyB0eXBlS2luZCwgc3RhdGljX2Nhc3Q8TnVsbGFibGU+KGlzTnVsbGFibGUpLCBzaWdJbmRl
eCB9OworICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19jYXN0PE51bGxhYmxlPihp
c051bGxhYmxlKSwgdHlwZUluZGV4IH07CiAgICAgaWYgKCFpc1ZhbHVlVHlwZSh0eXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IHR5cGU7CkBAIC0zNTEsOSArMzUwLDkg
QEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBl
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNz
VHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVJlZlR5
cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFR5cGUmIHJlc3VsdCkKK0FMV0FZU19J
TkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVJlZlR5cGUoVHlwZSYgcmVzdWx0
KQogewotICAgIGNvbnN0IGJvb2wgcGFyc2VkID0gcGFyc2VWYWx1ZVR5cGUoaW5mbywgcmVzdWx0
KTsKKyAgICBjb25zdCBib29sIHBhcnNlZCA9IHBhcnNlVmFsdWVUeXBlKHJlc3VsdCk7CiAgICAg
cmV0dXJuIHBhcnNlZCAmJiBpc1JlZlR5cGUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGE4ODk1Yzk1MTI5
ZDMzYzdjMGNkYmY4NjY0ZTg5MGQ0YWYzNTEzYmEuLmJhZDBmMGQzM2VjZDNiOTM5MjcwZmExZjE1
Y2VmOTc5YjM2ZjhmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2VjdGlvblBhcnNlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXYXNtT3BzLmgi
CiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGV4TnVt
YmVyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogCkBAIC00NCw0MiArNDUsMzcgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVZhclVJbnQzMihjb3VudCksICJjYW4ndCBnZXQgVHlwZSBzZWN0aW9uJ3MgY291bnQi
KTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ID4gbWF4VHlwZXMsICJUeXBlIHNlY3Rp
b24ncyBjb3VudCBpcyB0b28gYmlnICIsIGNvdW50LCAiIG1heGltdW0gIiwgbWF4VHlwZXMpOwot
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby0+dXNlZFNpZ25hdHVyZXMudHJ5UmVzZXJ2
ZUNhcGFjaXR5KGNvdW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUg
c2VjdGlvbidzICIsIGNvdW50LCAiIGVudHJpZXMiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFtX2luZm8tPnR5cGVzLnRyeVJlc2VydmVDYXBhY2l0eShjb3VudCksICJjYW4ndCBhbGxvY2F0
ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBjb3VudCwgIiBlbnRyaWVzIik7
CiAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBp
bnQ4X3QgdHlwZTsKLSAgICAgICAgdWludDMyX3QgYXJndW1lbnRDb3VudDsKLSAgICAgICAgVmVj
dG9yPFR5cGU+IGFyZ3VtZW50VHlwZXM7Ci0KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VJbnQ3KHR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgdHlwZSIpOwotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGUgIT0gc3RhdGljX2Nhc3Q8aW50OF90PihUeXBl
S2luZDo6RnVuYyksIGksICJ0aCBUeXBlIGlzIG5vbi1GdW5jICIsIHR5cGUpOwotICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihhcmd1bWVudENvdW50KSwgImNhbid0
IGdldCAiLCBpLCAidGggVHlwZSdzIGFyZ3VtZW50IGNvdW50Iik7Ci0gICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1heEZ1bmN0aW9uUGFyYW1zLCBpLCAidGggYXJn
dW1lbnQgY291bnQgaXMgdG9vIGJpZyAiLCBhcmd1bWVudENvdW50LCAiIG1heGltdW0gIiwgbWF4
RnVuY3Rpb25QYXJhbXMpOwotICAgICAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRzOwotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFhcmd1bWVudHMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3Vt
ZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9u
J3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFR5cGUgYXJndW1lbnRUeXBl
OwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZv
LCBhcmd1bWVudFR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBhcmd1bWVudCBUeXBlIik7Ci0g
ICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50VHlwZSk7CisgICAgICAgIFR5cGVS
ZWNvcmQgdHlwZVJlY29yZDsKKyAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUeXBlS2luZD4o
dHlwZSkpIHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzogeworICAgICAgICAgICAgRnVu
Y1R5cGUgZnVuY1R5cGU7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBh
cnNlRnVuY3Rpb25UeXBlKGksIGZ1bmNUeXBlKSk7CisgICAgICAgICAgICB0eXBlUmVjb3JkID0g
VHlwZVJlY29yZCB7IEZ1bmNUeXBlIHsgV1RGTW92ZShmdW5jVHlwZSkgfSB9OworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OiB7Cisg
ICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5R0MoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFpbChpLCAidGggVHlwZSBpcyBub24tRnVuYyAiLCB0eXBlKTsKIAotICAg
ICAgICB1aW50MzJfdCByZXR1cm5Db3VudDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIocmV0dXJuQ291bnQpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3Mg
cmV0dXJuIGNvdW50Iik7Ci0KLSAgICAgICAgVmVjdG9yPFR5cGUsIDE+IHJldHVyblR5cGVzOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZXR1cm5UeXBlcy50cnlSZXNlcnZlQ2FwYWNp
dHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBl
IHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZXR1cm5Db3VudDsgKytpKSB7Ci0gICAgICAgICAgICBUeXBlIHZhbHVlOwot
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB2
YWx1ZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIFR5cGUncyByZXR1cm4gdmFsdWUiKTsKLSAgICAg
ICAgICAgIHJldHVyblR5cGVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICBTdHJ1Y3RUeXBl
IHN0cnVjdFR5cGU7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNl
U3RydWN0VHlwZShpLCBzdHJ1Y3RUeXBlKSk7CisgICAgICAgICAgICB0eXBlUmVjb3JkID0gVHlw
ZVJlY29yZCB7IFdURk1vdmUoc3RydWN0VHlwZSkgfTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFpbChpLCAidGgg
VHlwZSBpcyBub24tRnVuYyAiLCB0eXBlKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxT
aWduYXR1cmU+IHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaWduYXR1cmVGb3Io
cmV0dXJuVHlwZXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXNp
Z25hdHVyZSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidz
ICIsIGksICJ0aCBzaWduYXR1cmUiKTsKLQotICAgICAgICBtX2luZm8tPnVzZWRTaWduYXR1cmVz
LnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1f
aW5mby0+dHlwZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUodHlwZVJlY29yZCkpOwogICAgIH0K
KworICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMoUmVmVHlwZXNWYWxpZCgpKTsKKwogICAg
IHJldHVybiB7IH07CiB9CiAKQEAgLTExMywxMCArMTA5LDEwIEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIGNhc2UgRXh0ZXJuYWxL
aW5kOjpGdW5jdGlvbjogewogICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25TaWduYXR1cmVJ
bmRleDsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1
bmN0aW9uU2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIGltcG9ydE51bWJlciwgInRoIElt
cG9ydCdzIGZ1bmN0aW9uIHNpZ25hdHVyZSBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicg
ZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRihmdW5jdGlvblNpZ25hdHVyZUluZGV4ID49IG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6
ZSgpLCAiaW52YWxpZCBmdW5jdGlvbiBzaWduYXR1cmUgZm9yICIsIGltcG9ydE51bWJlciwgInRo
IEltcG9ydCwgIiwgZnVuY3Rpb25TaWduYXR1cmVJbmRleCwgIiBpcyBvdXQgb2YgcmFuZ2Ugb2Yg
IiwgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksICIgaW4gbW9kdWxlICciLCBtb2R1bGVT
dHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaWduYXR1cmVJbmRleCA+PSBtX2luZm8tPnR5cGVzQ291
bnQoKSwgImludmFsaWQgZnVuY3Rpb24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnROdW1iZXIsICJ0
aCBJbXBvcnQsICIsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgsICIgaXMgb3V0IG9mIHJhbmdlIG9m
ICIsIG1faW5mby0+dHlwZXNDb3VudCgpLCAiIGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAi
JyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICInIik7CiAgICAgICAgICAgICBraW5kSW5kZXggPSBt
X2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCk7Ci0gICAgICAgICAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1tmdW5jdGlvblNpZ25hdHVyZUluZGV4XSk7Ci0gICAg
ICAgICAgICBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRB
cHBlbmQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0
dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+Z2V0U2lnbmF0dXJl
KGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgpKTsKKyAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RnVu
Y3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRlc2NyaXB0aW9u
IHsgc2lnbmF0dXJlSW5kZXgsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggfSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6VGFibGU6IHsK
QEAgLTEzOCw3ICsxMzQsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4g
UGFydGlhbFJlc3VsdAogICAgICAgICAgICAgR2xvYmFsSW5mb3JtYXRpb24gZ2xvYmFsOwogICAg
ICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUdsb2JhbFR5cGUoZ2xvYmFs
KSk7CiAgICAgICAgICAgICAvLyBPbmx5IG11dGFibGUgZ2xvYmFscyBuZWVkIGZsb2F0aW5nIGJp
bmRpbmdzLgotICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IEdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKQorICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRh
YmlsaXR5ID09IE11dGFiaWxpdHk6Ok11dGFibGUpCiAgICAgICAgICAgICAgICAgZ2xvYmFsLmJp
bmRpbmdNb2RlID0gR2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZTsKICAg
ICAgICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+Z2xvYmFscy5zaXplKCk7CiAgICAgICAgICAg
ICBtX2luZm8tPmdsb2JhbHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZ2xvYmFsKSk7CkBAIC0x
NTMsOSArMTQ5LDkgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRp
YWxSZXN1bHQKIAogICAgICAgICAgICAgdWludDMyX3QgZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXg7
CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihleGNlcHRp
b25TaWduYXR1cmVJbmRleCksICJjYW4ndCBnZXQgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0
J3MgZXhjZXB0aW9uIHNpZ25hdHVyZSBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmll
bGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RihleGNlcHRpb25TaWduYXR1cmVJbmRleCA+PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUo
KSwgImludmFsaWQgZXhjZXB0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVyLCAidGgg
SW1wb3J0LCAiLCBleGNlcHRpb25TaWduYXR1cmVJbmRleCwgIiBpcyBvdXQgb2YgcmFuZ2Ugb2Yg
IiwgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksICIgaW4gbW9kdWxlICciLCBtb2R1bGVT
dHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZvLT50eXBlc0Nv
dW50KCksICJpbnZhbGlkIGV4Y2VwdGlvbiBzaWduYXR1cmUgZm9yICIsIGltcG9ydE51bWJlciwg
InRoIEltcG9ydCwgIiwgZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgsICIgaXMgb3V0IG9mIHJhbmdl
IG9mICIsIG1faW5mby0+dHlwZXNDb3VudCgpLCAiIGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5n
LCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICInIik7CiAgICAgICAgICAgICBraW5kSW5kZXgg
PSBtX2luZm8tPmltcG9ydEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOwotICAgICAg
ICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXhdKTsK
KyAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5m
b3JtYXRpb246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZShleGNlcHRpb25TaWduYXR1cmVJbmRl
eCkpOwogICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRFeGNlcHRpb25TaWduYXR1cmVJbmRpY2Vz
LnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTc5LDEzICsxNzUsMTMgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGVOdW1iZXI7CiAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHR5cGVOdW1iZXIpLCAiY2FuJ3QgZ2V0ICIs
IGksICJ0aCBGdW5jdGlvbidzIHR5cGUgbnVtYmVyIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgaSwgInRo
IEZ1bmN0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7CisgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVzQ291bnQoKSwg
aSwgInRoIEZ1bmN0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7CiAK
LSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbdHlwZU51bWJlcl0pOworICAgICAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQo
bV9pbmZvLT5nZXRTaWduYXR1cmUodHlwZU51bWJlcikpOwogICAgICAgICAvLyBUaGUgQ29kZSBz
ZWN0aW9uIGZpeGVzIHVwIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgIHNpemVfdCBzdGFydCA9IDA7
CiAgICAgICAgIHNpemVfdCBlbmQgPSAwOwotICAgICAgICBtX2luZm8tPmludGVybmFsRnVuY3Rp
b25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CisgICAg
ICAgIG1faW5mby0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXMudW5jaGVja2VkQXBw
ZW5kKEZ1bmN0aW9uRGVzY3JpcHRpb24geyBzaWduYXR1cmVJbmRleCwgdHlwZU51bWJlciB9KTsK
ICAgICAgICAgbV9pbmZvLT5mdW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKHsgc3RhcnQsIGVuZCwg
VmVjdG9yPHVpbnQ4X3Q+KCkgfSk7CiAgICAgfQogCkBAIC0zMTksNyArMzE1LDcgQEAgYXV0byBT
ZWN0aW9uUGFyc2VyOjpwYXJzZUdsb2JhbCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAg
IGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPSBHbG9iYWxJbmZvcm1hdGlvbjo6RnJvbVJlZkZ1
bmM7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUg
PSBHbG9iYWxJbmZvcm1hdGlvbjo6RnJvbUV4cHJlc3Npb247Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIWlzU3VidHlwZSh0eXBlRm9ySW5pdE9wY29kZSwgZ2xvYmFsLnR5cGUpLCAiR2xv
YmFsIGluaXRfZXhwciBvcGNvZGUgb2YgdHlwZSAiLCB0eXBlRm9ySW5pdE9wY29kZS5raW5kLCAi
IGRvZXNuJ3QgbWF0Y2ggZ2xvYmFsJ3MgdHlwZSAiLCBnbG9iYWwudHlwZS5raW5kKTsKKyAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT5pc1N1YnR5cGUodHlwZUZvckluaXRPcGNv
ZGUsIGdsb2JhbC50eXBlKSwgIkdsb2JhbCBpbml0X2V4cHIgb3Bjb2RlIG9mIHR5cGUgIiwgdHlw
ZUZvckluaXRPcGNvZGUua2luZCwgIiBkb2Vzbid0IG1hdGNoIGdsb2JhbCdzIHR5cGUgIiwgZ2xv
YmFsLnR5cGUua2luZCk7CiAKICAgICAgICAgaWYgKGluaXRPcGNvZGUgPT0gUmVmRnVuYykKICAg
ICAgICAgICAgIG1faW5mby0+YWRkRGVjbGFyZWRGdW5jdGlvbihnbG9iYWwuaW5pdGlhbEJpdHNP
ckltcG9ydE51bWJlcik7CkBAIC0zNzEsNyArMzY3LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpw
YXJzZUV4cG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoa2luZEluZGV4ID49IG1faW5mby0+Z2xvYmFscy5zaXplKCksIGV4cG9ydE51bWJlciwg
InRoIEV4cG9ydCBoYXMgaW52YWxpZCBnbG9iYWwgbnVtYmVyICIsIGtpbmRJbmRleCwgIiBpdCBl
eGNlZWRzIHRoZSBnbG9iYWxzIGNvdW50ICIsIG1faW5mby0+Z2xvYmFscy5zaXplKCksICIsIG5h
bWVkICciLCBmaWVsZFN0cmluZywgIiciKTsKICAgICAgICAgICAgIC8vIE9ubHkgbXV0YWJsZSBn
bG9iYWxzIG5lZWQgZmxvYXRpbmcgYmluZGluZ3MuCiAgICAgICAgICAgICBHbG9iYWxJbmZvcm1h
dGlvbiYgZ2xvYmFsID0gbV9pbmZvLT5nbG9iYWxzW2tpbmRJbmRleF07Ci0gICAgICAgICAgICBp
ZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gR2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6Ok11
dGFibGUpCisgICAgICAgICAgICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gTXV0YWJpbGl0eTo6
TXV0YWJsZSkKICAgICAgICAgICAgICAgICBnbG9iYWwuYmluZGluZ01vZGUgPSBHbG9iYWxJbmZv
cm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTUwMCw3ICs0OTYsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVu
dCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgfQogICAgICAgICBjYXNlIDB4MDU6IHsKICAg
ICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBl
bGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVm
VHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CiAg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVm
dHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAg
ICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUyMiw3ICs1MTgsNyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGlu
aXRFeHByKSk7CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFy
c2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxl
bSBzZWN0aW9uIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlz
RnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYi
KTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUzOCw3ICs1MzQsNyBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICAgICAgfQogICAgICAgICBjYXNlIDB4MDc6IHsKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsK
LSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJl
ZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBh
cnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24g
c2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsK
QEAgLTYwOSw3ICs2MDUsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWlu
dDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogCiAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5nbG9iYWxzLnNpemUoKSwgImdldF9n
bG9iYWwncyBpbmRleCAiLCBpbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZ2xvYmFscyAi
LCBtX2luZm8tPmdsb2JhbHMuc2l6ZSgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihp
bmRleCA+PSBtX2luZm8tPmZpcnN0SW50ZXJuYWxHbG9iYWwsICJnZXRfZ2xvYmFsIGltcG9ydCBr
aW5kIGluZGV4ICIsIGluZGV4LCAiIGV4Y2VlZHMgdGhlIGZpcnN0IGludGVybmFsIGdsb2JhbCAi
LCBtX2luZm8tPmZpcnN0SW50ZXJuYWxHbG9iYWwpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKG1faW5mby0+Z2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0eSAhPSBHbG9iYWxJbmZvcm1hdGlv
bjo6SW1tdXRhYmxlLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBpbmRleCwgIiBp
cyBtdXRhYmxlICIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+Z2xvYmFs
c1tpbmRleF0ubXV0YWJpbGl0eSAhPSBNdXRhYmlsaXR5OjpJbW11dGFibGUsICJnZXRfZ2xvYmFs
IGltcG9ydCBraW5kIGluZGV4ICIsIGluZGV4LCAiIGlzIG11dGFibGUgIik7CiAKICAgICAgICAg
cmVzdWx0VHlwZSA9IG1faW5mby0+Z2xvYmFsc1tpbmRleF0udHlwZTsKICAgICAgICAgYml0c09y
SW1wb3J0TnVtYmVyID0gaW5kZXg7CkBAIC02MjAsMTQgKzYxNiwxMCBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1w
b3J0TnVtYmVyLAogICAgICAgICBUeXBlIHR5cGVPZk51bGw7CiAgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKICAgICAgICAgICAg
IGludDMyX3QgaGVhcFR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZUhlYXBUeXBlKG1faW5mbywgaGVhcFR5cGUpLCAicmVmLm51bGwgaGVhcHR5cGUgbXVzdCBiZSBm
dW5jcmVmLCBleHRlcm5yZWYgb3IgdHlwZV9pZHgiKTsKLSAgICAgICAgICAgIGlmIChpc1R5cGVJ
bmRleEhlYXBUeXBlKGhlYXBUeXBlKSkgewotICAgICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRT
aWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9
IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5kZXgg
fTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBl
IHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25hdHVy
ZUluZGV4PihoZWFwVHlwZSkgfTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlSGVhcFR5cGUoaGVhcFR5cGUpLCAicmVmLm51bGwgaGVhcHR5cGUgbXVzdCBiZSBmdW5jcmVm
LCBleHRlcm5yZWYgb3IgdHlwZV9pZHgiKTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBl
IHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUg
bXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSBy
ZWZlcmVuY2UgdHlwZSIpOwogCiAgICAgICAgIHJlc3VsdFR5cGUgPSB0eXBlT2ZOdWxsOwogICAg
ICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAt
NjM1LDE3ICs2MjcsMTYgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4
X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKICAgICB9CiAKICAgICBj
YXNlIFJlZkZ1bmM6IHsKLSAgICAgICAgdWludDMyX3QgaW5kZXg7Ci0gICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBp
bmRleCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5mby0+ZnVu
Y3Rpb25zLnNpemUoKSwgInJlZi5mdW5jIGluZGV4IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVt
YmVyIG9mIGZ1bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOworICAgICAgICB1
aW50MzJfdCBmdW5jdGlvbkluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBpbmRleCIpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5j
dGlvbnMuc2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXgiLCBmdW5jdGlvbkluZGV4LCAiIGV4Y2VlZHMg
dGhlIG51bWJlciBvZiBmdW5jdGlvbnMgIiwgbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKIAog
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNl
cygpKSB7Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5m
by0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKLSAgICAgICAg
ICAgIHJlc3VsdFR5cGUgPSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJl
SW5kZXggfTsKKyAgICAgICAgICAgIHJlc3VsdFR5cGUgPSB7IFR5cGVLaW5kOjpSZWYsIE51bGxh
YmxlOjpObywgbV9pbmZvLT5nZXRUeXBlSW5kZXhGb3JGdW5jdGlvbihmdW5jdGlvbkluZGV4KSB9
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBUeXBlczo6RnVuY3Jl
ZjsKIAotICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBpbmRleDsKKyAgICAgICAgYml0c09y
SW1wb3J0TnVtYmVyID0gZnVuY3Rpb25JbmRleDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC02ODAsNiArNjcxLDYwIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihz
dGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBw
b3NpdGlvbiwgRnVuY1R5cGUmIGZ1bmNUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWlu
dDMyX3QgYXJndW1lbnRDb3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihhcmd1bWVudENvdW50KSwgImNhbid0IGdldCAiLCBwb3NpdGlvbiwgInRoIFR5cGUncyBh
cmd1bWVudCBjb3VudCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+
IG1heEZ1bmN0aW9uUGFyYW1zLCBwb3NpdGlvbiwgInRoIGFyZ3VtZW50IGNvdW50IGlzIHRvbyBi
aWcgIiwgYXJndW1lbnRDb3VudCwgIiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uUGFyYW1zKTsKKyAg
ICBWZWN0b3I8VHlwZT4gYXJndW1lbnRUeXBlczsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFh
cmd1bWVudFR5cGVzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFs
bG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0aW9uLCAidGgg
c2lnbmF0dXJlIik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKSB7CisgICAgICAgIFR5cGUgYXJndW1lbnRUeXBlOworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShhcmd1bWVudFR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGks
ICJ0aCBhcmd1bWVudCBUeXBlIik7CisgICAgICAgIGFyZ3VtZW50VHlwZXMuYXBwZW5kKGFyZ3Vt
ZW50VHlwZSk7CisgICAgfQorCisgICAgdWludDMyX3QgcmV0dXJuQ291bnQ7CisgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIocmV0dXJuQ291bnQpLCAiY2FuJ3QgZ2V0ICIs
IHBvc2l0aW9uLCAidGggVHlwZSdzIHJldHVybiBjb3VudCIpOworCisgICAgVmVjdG9yPFR5cGUs
IDE+IHJldHVyblR5cGVzOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJldHVyblR5cGVzLnRy
eVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBt
ZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0aW9uLCAidGggc2lnbmF0dXJlIik7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJldHVybkNvdW50OyArK2kpIHsKKyAgICAgICAg
VHlwZSB2YWx1ZTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUo
dmFsdWUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVlIik7CisgICAg
ICAgIHJldHVyblR5cGVzLmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgZnVuY1R5cGUuc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcihyZXR1cm5UeXBlcywg
YXJndW1lbnRUeXBlcyk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZnVuY1R5cGUuc2lnbmF0
dXJlLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwg
cG9zaXRpb24sICJ0aCBzaWduYXR1cmUiKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VTdHJ1Y3RUeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBTdHJ1Y3RU
eXBlJiBzdHJ1Y3RUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5R0MoKSk7CisKKyAgICB1aW50MzJfdCBmaWVsZENvdW50OworICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZpZWxkQ291bnQpLCAiY2FuJ3QgZ2V0
ICIsIHBvc2l0aW9uLCAidGggc3RydWN0IHR5cGUncyBmaWVsZCBjb3VudCIpOworICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZmllbGRDb3VudCA+IG1heFN0cnVjdHNGaWVsZHMsICJudW1iZXIgb2Yg
ZmllbGRzIGZvciBzdHJ1Y3QgdHlwZSBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBpcyB0b28g
YmlnICIsIGZpZWxkQ291bnQsICIgbWF4aW11bSAiLCBtYXhTdHJ1Y3RzRmllbGRzKTsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFzdHJ1Y3RUeXBlLmZpZWxkcy50cnlSZXNlcnZlQ2FwYWNpdHko
ZmllbGRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1Y3QgZmll
bGRzICIsIGZpZWxkQ291bnQsICIgZW50cmllcyIpOworCisgICAgZm9yICh1aW50MzJfdCBmaWVs
ZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkQ291bnQ7ICsrZmllbGRJbmRleCkgeworICAg
ICAgICBUeXBlIGZpZWxkVHlwZTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VW
YWx1ZVR5cGUoZmllbGRUeXBlKSwgImNhbid0IGdldCAiLCBmaWVsZEluZGV4LCAidGggZmllbGQg
VHlwZSIpOworCisgICAgICAgIHVpbnQ4X3QgbXV0YWJpbGl0eTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VVSW50OChtdXRhYmlsaXR5KSwgcG9zaXRpb24sICJjYW4ndCBnZXQg
IiwgZmllbGRJbmRleCwgInRoIGZpZWxkIG11dGFiaWxpdHkiKTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihtdXRhYmlsaXR5ICE9IDB4MCAmJiBtdXRhYmlsaXR5ICE9IDB4MSwgImludmFs
aWQgRmllbGQncyBtdXRhYmlsaXR5OiAweCIsIGhleChtdXRhYmlsaXR5LCAyLCBMb3dlcmNhc2Up
KTsKKworICAgICAgICBzdHJ1Y3RUeXBlLmZpZWxkcy51bmNoZWNrZWRBcHBlbmQoU3RydWN0Rmll
bGQgeyBmaWVsZFR5cGUsIHN0YXRpY19jYXN0PE11dGFiaWxpdHk+KG11dGFiaWxpdHkpIH0pOwor
ICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
MzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+JiBp
bml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHJldHVybiBwYXJzZUkzMkluaXRFeHBy
KGluaXRFeHByLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiJfcyk7CkBA
IC03MTksNyArNzY0LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnRTZWdtZW50
VmVjdG9yT2ZFeHByZXNzaW9ucyhWZWN0b3I8dWludDMyX3Q+JiByZXMKICAgICAgICAgICAgIG1f
aW5mby0+YWRkRGVjbGFyZWRGdW5jdGlvbihmdW5jdGlvbkluZGV4KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIFR5cGUgdHlwZU9mTnVsbDsKLSAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlw
ZSBtdXN0IGJlIGEgZnVuYyB0eXBlIGluIGVsZW0gc2VjdGlvbiIpOworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlw
ZSBtdXN0IGJlIGEgZnVuYyB0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwogICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighdHlwZU9mTnVsbC5pc0Z1bmNyZWYoKSwgInJlZi5udWxsIGV4dGVy
biBpcyBmb3JiaWRkZW4gaW4gZWxlbWVudCBzZWN0aW9uJ3MsICIsIGVsZW1lbnROdW0sICJ0aCBl
bGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOwogICAgICAgICAgICAgZnVuY3Rpb25JbmRl
eCA9IEVsZW1lbnQ6Om51bGxGdW5jSW5kZXg7CiAgICAgICAgIH0KQEAgLTc1MiwxMyArNzk3LDQ1
IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwckZvckRhdGFTZWN0aW9uKHN0
ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+JiBpCiAgICAgcmV0dXJuIHBhcnNlSTMySW5pdEV4cHIo
aW5pdEV4cHIsICJEYXRhIGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsKIH0KIAor
YXV0byBTZWN0aW9uUGFyc2VyOjpSZWZUeXBlc1ZhbGlkKCkgY29uc3QgLT4gUGFydGlhbFJlc3Vs
dAoreworICAgIGNvbnN0IHVpbnQzMl90IHR5cGVzQ291bnQgPSBtX2luZm8tPnR5cGVzQ291bnQo
KTsKKyAgICBhdXRvIHJlZlR5cGVzQ2hlY2tWaXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbdHlw
ZXNDb3VudF0oY29uc3QgU3RydWN0VHlwZSYgc3RydWN0VHlwZSkgLT4gYm9vbCB7CisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgZmllbGQgOiBzdHJ1Y3RUeXBlLmZpZWxkcykgeworICAgICAgICAg
ICAgaWYgKGlzUmVmV2l0aFR5cGVJbmRleChmaWVsZC50eXBlKSAmJiBmaWVsZC50eXBlLmluZGV4
ID4gdHlwZXNDb3VudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwgW3R5cGVzQ291bnRdKGNvbnN0IEZ1bmNUeXBl
JiBmdW5jVHlwZSkgLT4gYm9vbCB7CisgICAgICAgIGZvciAodWludDMyX3QgYXJndW1lbnRJbmRl
eCA9IDA7IGFyZ3VtZW50SW5kZXggPCBmdW5jVHlwZS5zaWduYXR1cmUtPmFyZ3VtZW50Q291bnQo
KTsgKythcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBhcmd1bWVudFR5
cGUgPSBmdW5jVHlwZS5zaWduYXR1cmUtPmFyZ3VtZW50KGFyZ3VtZW50SW5kZXgpOworICAgICAg
ICAgICAgaWYgKGlzUmVmV2l0aFR5cGVJbmRleChhcmd1bWVudFR5cGUpICYmIGFyZ3VtZW50VHlw
ZS5pbmRleCA+IHR5cGVzQ291bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yICh1aW50MzJfdCByZXR1cm5JbmRleCA9IDA7IHJldHVybklu
ZGV4IDwgZnVuY1R5cGUuc2lnbmF0dXJlLT5yZXR1cm5Db3VudCgpOyArK3JldHVybkluZGV4KSB7
CisgICAgICAgICAgICBjb25zdCBhdXRvJiByZXR1cm5UeXBlID0gZnVuY1R5cGUuc2lnbmF0dXJl
LT5yZXR1cm5UeXBlKHJldHVybkluZGV4KTsKKyAgICAgICAgICAgIGlmIChpc1JlZldpdGhUeXBl
SW5kZXgocmV0dXJuVHlwZSkgJiYgcmV0dXJuVHlwZS5pbmRleCA+IHR5cGVzQ291bnQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0pOworCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1faW5mby0+dHlwZXND
b3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFzdGQ6OnZpc2l0KHJlZlR5cGVzQ2hlY2tWaXNp
dG9yLCBtX2luZm8tPnR5cGVzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJpbmNvcnJl
Y3QgdHlwZSBhdCBpbmRleCAiLCBpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCiBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xvYmFsVHlwZShHbG9iYWxJbmZvcm1hdGlvbiYgZ2xv
YmFsKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgdWludDhfdCBtdXRhYmlsaXR5OwotICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgZ2xvYmFsLnR5cGUpLCAi
Y2FuJ3QgZ2V0IEdsb2JhbCdzIHZhbHVlIHR5cGUiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVZhbHVlVHlwZShnbG9iYWwudHlwZSksICJjYW4ndCBnZXQgR2xvYmFsJ3MgdmFsdWUg
dHlwZSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgobXV0YWJpbGl0eSks
ICJjYW4ndCBnZXQgR2xvYmFsIHR5cGUncyBtdXRhYmlsaXR5Iik7CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihtdXRhYmlsaXR5ICE9IDB4MCAmJiBtdXRhYmlsaXR5ICE9IDB4MSwgImludmFsaWQg
R2xvYmFsJ3MgbXV0YWJpbGl0eTogMHgiLCBoZXgobXV0YWJpbGl0eSwgMiwgTG93ZXJjYXNlKSk7
Ci0gICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxHbG9iYWxJbmZvcm1hdGlvbjo6
TXV0YWJpbGl0eT4obXV0YWJpbGl0eSk7CisgICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNf
Y2FzdDxNdXRhYmlsaXR5PihtdXRhYmlsaXR5KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC04
NjcsOCArOTQ0LDggQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUV4Y2VwdGlvbigpIC0+IFBh
cnRpYWxSZXN1bHQKIAogICAgICAgICB1aW50MzJfdCB0eXBlTnVtYmVyOwogICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0eXBlTnVtYmVyKSwgImNhbid0IGdldCAi
LCBleGNlcHRpb25OdW1iZXIsICJ0aCBFeGNlcHRpb24ncyB0eXBlIG51bWJlciIpOwotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJl
cy5zaXplKCksIGV4Y2VwdGlvbk51bWJlciwgInRoIEV4Y2VwdGlvbiB0eXBlIG51bWJlciBpcyBp
bnZhbGlkICIsIHR5cGVOdW1iZXIpOwotICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1t0
eXBlTnVtYmVyXSk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBt
X2luZm8tPnR5cGVzQ291bnQoKSwgZXhjZXB0aW9uTnVtYmVyLCAidGggRXhjZXB0aW9uIHR5cGUg
bnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJlcik7CisgICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPmdldFNp
Z25hdHVyZSh0eXBlTnVtYmVyKSk7CiAgICAgICAgIG1faW5mby0+aW50ZXJuYWxFeGNlcHRpb25T
aWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRl
eCA5MWZkM2VkODM0MjI1YzgxM2UyZDAxMzkyYjQ5ZThkOWMzYmUyYjg3Li40Y2QzMjNmYjdhYWJk
ZTYzMjZiYjgwNzJjNWRlNDc1MDQ2YTVlNjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAgLTY5LDYgKzY5LDkgQEAgcHJpdmF0ZToKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUluaXRFeHByKHVpbnQ4X3Qm
LCB1aW50NjRfdCYsIFR5cGUmIGluaXRFeHByVHlwZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhwcihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHBy
PiYsIEFTQ0lJTGl0ZXJhbCBmYWlsTWVzc2FnZSk7CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgRnVuY1R5
cGUmKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVN0cnVjdFR5
cGUodWludDMyX3QgcG9zaXRpb24sIFN0cnVjdFR5cGUmKTsKKwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRWxl
bWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVsZW1lbnRLaW5kKHVpbnQ4X3QmIGVsZW1lbnRL
aW5kKTsKQEAgLTc4LDYgKzgxLDggQEAgcHJpdmF0ZToKIAogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlSTMySW5pdEV4cHJGb3JEYXRhU2VjdGlvbihzdGQ6Om9wdGlv
bmFsPEkzMkluaXRFeHByPiYpOwogCisgICAgUGFydGlhbFJlc3VsdCBSZWZUeXBlc1ZhbGlkKCkg
Y29uc3Q7CisKICAgICBzaXplX3QgbV9vZmZzZXRJblNvdXJjZTsKICAgICBSZWY8TW9kdWxlSW5m
b3JtYXRpb24+IG1faW5mbzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2ln
bmF0dXJlLmgKaW5kZXggM2FjZTlhZmIxNzU3ODk2NjM4MmE3MGI5NTBlY2IzOGI5ZjQ3MDZmNi4u
M2Q0YThiMWQ4NDEwNTdhZWE4NGQ5NTFiZTkwYzBlNzRhNWMyNDA3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIG5hbWVzcGFjZSBXYXNtIHsKIAogdXNpbmcgU2lnbmF0dXJlQXJnQ291bnQgPSB1
aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludHB0cl90OwogCiBjbGFzcyBTaWdu
YXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJlPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKaW5kZXggNjU3NmE2OWM1NjgzNTNhYjY3N2I4ZTFi
NGM4NDE0NmE3NGMwMzVmZi4uNjNlOTRkYmMyZThhZTQ1NDJhNzlkOGFhYzkyMGIwNmQwZTAxYThl
NCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3Bz
SGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9w
c0hlYWRlci5weQpAQCAtMjE4LDEyICsyMTgsMTAgQEAgZW51bSBjbGFzcyBOdWxsYWJsZSA6IGJv
b2wgewogICBZZXMgPSB0cnVlLAogfTsKIAotdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRy
X3Q7Ci0KIHN0cnVjdCBUeXBlIHsKICAgICBUeXBlS2luZCBraW5kOwogICAgIE51bGxhYmxlIG51
bGxhYmxlOwotICAgIFNpZ25hdHVyZUluZGV4IGluZGV4OworICAgIHVuc2lnbmVkIGluZGV4Owog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUmIG90aGVyKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNv
ZGVCbG9jay5jcHAKaW5kZXggNTRlOTc0MTRiNjYyNjAzNGYxMzBlMTVkNDkzZDdjOTUwZTM4MTU3
NS4uNzE1ZjBhN2VkNzFjOTkzNTMyZTk5ZTM5YzhkZWZmNTFjOGJmMDI5OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3Nl
bWJseUNvZGVCbG9jayhWTSYgdm0sIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY28KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTY3CiAgICAgbV93YXNt
VG9KU0V4aXRTdHVicy5yZXNlcnZlQ2FwYWNpdHkobV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0
Q291bnQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbXBvcnRJbmRleCA9IDA7IGltcG9ydEluZGV4
IDwgbV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsgKytpbXBvcnRJbmRleCkgewot
ICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9y
bWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5hdChpbXBvcnRJbmRleCk7Cisg
ICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3Jt
YXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLmF0KGltcG9ydEluZGV4KS5zaWdu
YXR1cmVJbmRleDsKICAgICAgICAgYXV0byBiaW5kaW5nID0gV2FzbTo6d2FzbVRvSlModm0sIG1f
Y2FsbExpbmtJbmZvcywgc2lnbmF0dXJlSW5kZXgsIGltcG9ydEluZGV4KTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFiaW5kaW5nKSkgewogICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLmVycm9y
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlHbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUdsb2JhbC5jcHAKaW5kZXggNzY5NWQ3NzBjMWQ1ODQzOGEwYTMwNjIzNDA5OTlmYjkwMGVi
YzYyMi4uMmMyM2NkNTQ0NjcxOTM2NTEyMGM4OWY4MjA3MDI3MDYzYjE4YTBmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5j
cHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNPYmplY3QqIEpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCksIDIpOwogCi0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtdXRhYmxlIiksIGpzQm9vbGVhbihtX2dsb2JhbC0+bXV0YWJpbGl0eSgp
ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmxlKSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIiksIGpzQm9vbGVh
bihtX2dsb2JhbC0+bXV0YWJpbGl0eSgpID09IFdhc206Ok11dGFibGUpKTsKIAogICAgIFdhc206
OlR5cGUgdmFsdWVUeXBlID0gbV9nbG9iYWwtPnR5cGUoKTsKICAgICBKU1N0cmluZyogdmFsdWVT
dHJpbmcgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4IGE2ZDY0ZWUzNDVmYmM3YTQzY2UxYzVlNGNhM2Q3
NzcyNGEwMDNjYzkuLmE5MTM1ZTM0YTk2NGM1YjY0ODY4YmE4OGQyM2U0NGIxNGI3MjA3ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9k
dWxlLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTW9kdWxlOwog
c3RydWN0IE1vZHVsZUluZm9ybWF0aW9uOwogY2xhc3MgUGxhbjsKK3VzaW5nIFNpZ25hdHVyZUlu
ZGV4ID0gdWludHB0cl90OwogfQogCiBjbGFzcyBTeW1ib2xUYWJsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA1ODEwNDFiM2NhMzQzM2M3YWZhYmYx
YmUzNDY3NWRhYjdkNGE0ZmQ2Li42NmE5MjEzZTlhNGExM2E5OGVkNmU3MzkwNTBjZmMzMTI0NTUx
OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC0x
MDQsNiArMTA0LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIHN3aXRj
aCAoYXJnVHlwZS5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlN0cnVjdDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KQEAgLTE3OCw2ICsxNzksNyBAQCBFeHBlY3Rl
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+
IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlLmtpbmQpIHsKICAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpGdW5jOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoK
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVk
IGFib3ZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAppbmRleCAwYjk2MzFlYTU0NjU0NWY3
NmEzMmU4NzJkMzk3OGUwZjU4YzgwOGVjLi5hOGUyMGM3OTAzN2E2NDM3YzFmNmZiZDdhYTEyNjkw
MzIyZWU0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcApAQCAtNjYsNyArNjYsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJseUdsb2JhbCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBnbG9iYWxEZXNjcmlwdG9yID0ganND
YXN0PEpTT2JqZWN0Kj4oYXJndW1lbnQpOwogICAgIH0KIAotICAgIFdhc206Okdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmlsaXR5IG11dGFiaWxpdHk7CisgICAgV2FzbTo6TXV0YWJpbGl0eSBtdXRh
YmlsaXR5OwogICAgIHsKICAgICAgICAgSWRlbnRpZmllciBtdXRhYmxlSWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibXV0YWJsZSIpOwogICAgICAgICBKU1ZhbHVlIG11dGFibGVW
YWx1ZSA9IGdsb2JhbERlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIG11dGFibGVJZGVudCk7
CkBAIC03NCw5ICs3NCw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5R2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGJvb2wg
bXV0YWJsZUJvb2xlYW4gPSBtdXRhYmxlVmFsdWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIGlmIChtdXRhYmxlQm9vbGVhbikKLSAgICAgICAgICAgIG11dGFiaWxpdHkgPSBX
YXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJsZTsKKyAgICAgICAgICAgIG11dGFiaWxpdHkg
PSBXYXNtOjpNdXRhYmxlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtdXRhYmlsaXR5ID0g
V2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZTsKKyAgICAgICAgICAgIG11dGFiaWxp
dHkgPSBXYXNtOjpJbW11dGFibGU7CiAgICAgfQogCiAgICAgV2FzbTo6VHlwZSB0eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlH
bG9iYWxQcm90b3R5cGUuY3BwCmluZGV4IGM3YjNkNmY3ZTk0NTExYzE4YWRmZDdhNzZjODkyMTk2
OTA2NGU5NWMuLmRiOGQ5MDRhZGQ3NDI2ZWU4N2EyZGVkOGJjMjBiNDY4YWFmMTQ5ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUdsb2JhbFByb3RvdHlwZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04od2ViQXNzZW1ibHlHbG9iYWxQcm90b1NldHRlckZ1bmNWYWx1ZSwgKEpTR2xvYmFs
T2JqZWN0KgogICAgIEpTV2ViQXNzZW1ibHlHbG9iYWwqIGdsb2JhbCA9IGdldEdsb2JhbChnbG9i
YWxPYmplY3QsIHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKGdsb2JhbC0+
Z2xvYmFsKCktPm11dGFiaWxpdHkoKSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJp
bGl0eTo6SW1tdXRhYmxlKQorICAgIGlmIChnbG9iYWwtPmdsb2JhbCgpLT5tdXRhYmlsaXR5KCkg
PT0gV2FzbTo6TXV0YWJpbGl0eTo6SW1tdXRhYmxlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5Lkdsb2JhbC5wcm90b3R5cGUudmFsdWUg
YXR0ZW1wdHMgdG8gbW9kaWZ5IGltbXV0YWJsZSBnbG9iYWwgdmFsdWUiX3MpKSk7CiAKICAgICBn
bG9iYWwtPmdsb2JhbCgpLT5zZXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAwNjRhYzY5OTEzYzhkNmExYjE4OGFkZGJjZTQ0Y2Q4
Y2NkNDhmNmU5Li4xMTU2OGExZTI4ODE2NjU3YzQ2MzQ2MTE3ZThjYWQzMTkwNmM1ZWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJl
Y29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwKICAgICAgICAgICAgICAgICAgICAgLy8gYi4gTGV0IGNsb3N1cmUgYmUgdi5bW0Nsb3N1cmVd
XS4KICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB3YXNtV3JhcHBlckZ1bmN0aW9uLT5m
dW5jdGlvbigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBXYXNtOjpTaWdu
YXR1cmVJbmRleCBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW1w
b3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2ltcG9ydC5raW5kSW5kZXhdOworICAgICAgICAg
ICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1
bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJ
bmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkU2lnbmF0
dXJlSW5kZXggIT0gZXhwZWN0ZWRTaWduYXR1cmVJbmRleCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVj
dCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwgInNp
Z25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidz
IHNpZ25hdHVyZSIpKSk7CiAgICAgICAgICAgICB9CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCB2b2lk
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbAogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6R2xv
YmFsOiB7CiAgICAgICAgICAgICAvLyA1LiBJZiBpIGlzIGEgZ2xvYmFsIGltcG9ydDoKICAgICAg
ICAgICAgIGNvbnN0IFdhc206Okdsb2JhbEluZm9ybWF0aW9uJiBnbG9iYWwgPSBtb2R1bGVJbmZv
cm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdOwotICAgICAgICAgICAgaWYgKGdsb2Jh
bC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpIHsKKyAg
ICAgICAgICAgIGlmIChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpJbW11dGFibGUpIHsKICAg
ICAgICAgICAgICAgICBpZiAodmFsdWUuaW5oZXJpdHM8SlNXZWJBc3NlbWJseUdsb2JhbD4odm0p
KSB7CiAgICAgICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlHbG9iYWwqIGdsb2JhbFZhbHVl
ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlHbG9iYWwqPih2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPnR5cGUoKSAhPSBnbG9iYWwudHlwZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJp
bXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHNhbWUgdHlwZSIpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPm11dGFiaWxpdHkoKSAhPSBXYXNtOjpH
bG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlKQorICAgICAgICAgICAgICAgICAgICBpZiAoZ2xv
YmFsVmFsdWUtPmdsb2JhbCgpLT5tdXRhYmlsaXR5KCkgIT0gV2FzbTo6SW1tdXRhYmxlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5
TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImlt
cG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgc2FtZSBtdXRhYmlsaXR5IikpKTsKICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgYXV0byYgZGVjbGFyZWRHbG9iYWxUeXBlID0gbW9kdWxlSW5mb3Jt
YXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlOwogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGRlY2xhcmVkR2xvYmFsVHlwZS5raW5kKSB7CkBAIC01MDEsOCArNTAxLDggQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdN
b2RlOjpQb3J0YWJsZTogewotICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0
eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7Ci0gICAg
ICAgICAgICAgICAgUmVmPFdhc206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xvYmFsOjpj
cmVhdGUoZ2xvYmFsLnR5cGUsIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpN
dXRhYmxlLCBpbml0aWFsQml0cyk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRh
YmlsaXR5ID09IFdhc206Ok11dGFibGUpOworICAgICAgICAgICAgICAgIFJlZjxXYXNtOjpHbG9i
YWw+IGdsb2JhbFJlZiA9IFdhc206Okdsb2JhbDo6Y3JlYXRlKGdsb2JhbC50eXBlLCBXYXNtOjpN
dXRhYmlsaXR5OjpNdXRhYmxlLCBpbml0aWFsQml0cyk7CiAgICAgICAgICAgICAgICAgSlNXZWJB
c3NlbWJseUdsb2JhbCogZ2xvYmFsVmFsdWUgPSBKU1dlYkFzc2VtYmx5R2xvYmFsOjp0cnlDcmVh
dGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUdsb2JhbFN0cnVj
dHVyZSgpLCBXVEZNb3ZlKGdsb2JhbFJlZikpOwogICAgICAgICAgICAgICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+bGlua0dsb2JhbCh2
bSwgZ2xvYmFsSW5kZXgsIGdsb2JhbFZhbHVlKTsKQEAgLTU1NywxMiArNTU3LDEyIEBAIHZvaWQg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBK
U1dlYkFzc2VtYmx5R2xvYmFsOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2Jq
ZWN0LT53ZWJBc3NlbWJseUdsb2JhbFN0cnVjdHVyZSgpLCBXVEZNb3ZlKGdsb2JhbFJlZikpOwog
ICAgICAgICAgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJp
bGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRh
YmlsaXR5OjpNdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFdhc206Okdsb2Jh
bD4gZ2xvYmFsUmVmID0gbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5nZXRHbG9iYWxCaW5kaW5nKGV4
cC5raW5kSW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmKTsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbFJlZi0+dHlwZSgpID09IGdsb2JhbC50eXBl
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbFJlZi0+bXV0YWJpbGl0eSgpID09
IGdsb2JhbC5tdXRhYmlsaXR5KTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbFJl
Zi0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpN
dXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbFJlZi0+bXV0YWJpbGl0
eSgpID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZ2xvYmFsUmVmLT5vd25lcjxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKTsKICAgICAgICAg
ICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IGdsb2JhbFJlZi0+b3duZXI8SlNXZWJBc3NlbWJs
eUdsb2JhbD4oKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNt
Lmpzb24KaW5kZXggMzJjOGFmOGJiZjU3ZWE2MDViMzM1NWE1NmQ4ODJlOGRkZTFlMGVlZC4uNzQy
ODEyY2RlYjAzZDVhNTQ4NDVhMDc3YWJiMWQ3NGI1MjdmZTUzNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL3dhc20uanNvbgpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAicmVmX251bGwiOiAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMCwgImIzdHlwZSI6ICJCMzo6SW50NjQi
IH0sCiAgICAgICAgICJyZWYiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAg
LTIxLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCisg
ICAgICAgICJzdHJ1Y3QiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMzLCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAgIH0sCiAg
ICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYi
LCAiZnVuY3JlZiJdLApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBlOTI2ZTQ0ZmE4MTRjMTMxZjYzZjllMDk4MDcwNTJhMTYwNjU0YWMwLi4x
YTg0MTliNzE3NDZmNDliNWZiODQ5NTJhMDAwNGJiZTkzMzA0YTk4IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIxLTExLTIyICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CisK
KyAgICAgICAgW1dBU00tR0NdIEFkZCBzdXBwb3J0IGZvciBHQyBzdHJ1Y3RzIHR5cGVzIGVuY29k
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBzaW1wbGUgdGVzdHMgZm9yIHBhcnNpbmcgV2FzbSBzdHJ1Y3RzLgorICAgICAgICAK
KyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9nYy9zdHJ1Y3RzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgICh0ZXN0U3RydWN0RGVjbGFyYXRpb24pOgor
ICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTExLTE5ICBBc3VtdSBUYWtpa2F3YSAg
PGFzdW11QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IFdlYkFzc2VtYmx5IG1lbW9yeS5maWxs
IG91dCBvZiBib3VuZHMgZXJyb3IgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlh
bWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCAwMDZjMzNiZTc4Mzc5MzdmNTU0MDhjYmU4NmY2
NjgyNmUyOTRhOTI4Li45NGQ2ZDRmMjdlZjk2YWMwZDc4YTI3Nzc5NzZlZTI0ZjYxMWFjM2E3IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApAQCAt
MzUsNiArMzUsOCBAQAogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVu
Q29tbWFuZHMKIC0gcGF0aDogd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzCiAgIGNtZDogcnVuV2Vi
QXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcworLSBwYXRoOiB3YXNtL2djCisg
IGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRo
OiB3YXNtL2Z1enoKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNv
bW1hbmRzCiAtIHBhdGg6IHdhc20vbG93RXhlY3V0YWJsZU1lbW9yeQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpzIGIvSlNUZXN0cy93YXNt
L2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpzCmluZGV4IDg2YmVjNjE5OThhYjAyOTBh
MDhmNWQyNDk4YTlkNTMxMTliMjNlNTQuLmJiZTM5YTI0NTczMjc3ODFmZDE2Yzk2NzY1MWZhNTkw
ZjJhNTViMjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzL3Jl
Zl90eXBlcy5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9yZWZfdHlw
ZXMuanMKQEAgLTM2OSw2ICszNjksMzYgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdFJlZlR5cGVzSW5U
YWJsZXMoKSB7CiAgIGFzc2VydC5lcSh3YXNtVGFibGVFeHRlcm5yZWYuZ2V0KDApLCBjb25zb2xl
LmxvZyk7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIHRlc3RGdW5jUGFyYW1BbmRSZXN1bHRUeXBlc1Bv
aW50VG9Ob25FeGlzdGVudFR5cGUoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAoZnVu
YyAocGFyYW0gKHJlZiAzNykpIChyZXN1bHQgKHJlZiBmdW5jKSkpCisgICAqICkKKyAgICovCisg
IGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4KKyAgICAgIG1vZHVsZSgKKyAgICAgICAgIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDZceDAxXHg2MFx4MDFceDZiXHgyNVx4
MDBceDAzXHgwMlx4MDFceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiIgorICAgICAgKSwKKyAg
ICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vz
bid0IHBhcnNlIGF0IGJ5dGUgMTY6IGluY29ycmVjdCB0eXBlIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICApOworCisgIC8qCisgICAq
IChtb2R1bGUKKyAgICogICAoZnVuYyAocmVzdWx0IChyZWYgMzcpKSkKKyAgICogKQorICAgKi8K
KyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAorICAgICAgICAiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNlx4MDFceDYwXHgwMFx4MDFceDZi
XHgyNVx4MDNceDAyXHgwMVx4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGIiCisgICAgICApLAor
ICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRv
ZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNjogaW5jb3JyZWN0IHR5cGUgYXQgaW5kZXggMCAoZXZhbHVh
dGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiCisgICk7Cit9CisKIGFzc2Vy
dC5hc3luY1Rlc3QodGVzdFJlZlR5cGVMb2NhbCgpKTsKIGFzc2VydC5hc3luY1Rlc3QodGVzdE5v
bk51bGxSZWZUeXBlTG9jYWwoKSk7CiBhc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZUeXBlSW5TaWdu
YXR1cmUoKSk7CkBAIC0zODEsMyArNDExLDQgQEAgYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0RnVuY3Jl
ZkNvbXBhdGliaWxpdHkoKSk7CiBhc3NlcnQuYXN5bmNUZXN0KHRlc3ROb25OdWxsRnVuY3JlZklu
Y29tcGF0aWJsZSgpKTsKIGFzc2VydC5hc3luY1Rlc3QodGVzdFdhc21KU0dsb2JhbHMoKSk7CiBh
c3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZUeXBlc0luVGFibGVzKCkpOworYXNzZXJ0LmFzeW5jVGVz
dCh0ZXN0RnVuY1BhcmFtQW5kUmVzdWx0VHlwZXNQb2ludFRvTm9uRXhpc3RlbnRUeXBlKCkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2djL3N0cnVjdHMuanMgYi9KU1Rlc3RzL3dhc20vZ2Mv
c3RydWN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGZlZTIwN2M5ZjJkYTAwY2YwMzBiNGQ5MWYwZGUyYzI0
NjhlNDAxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2djL3N0cnVjdHMuanMKQEAg
LTAsMCArMSwxMDAgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdlYkFzc2VtYmx5
VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdlYkFzc2VtYmx5R0M9dHJ1ZSIp
CisKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOworaW1wb3J0IHsgaW5z
dGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOworCitmdW5jdGlvbiBtb2R1bGUo
Ynl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5
dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9y
IChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdbaV0gPSBieXRl
cy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1
ZmZlcik7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHJ1Y3REZWNsYXJhdGlvbigpIHsKKyAgLyoKKyAg
ICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QpKQorICAgKiApCisgICAqLworICBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDAzXHgwMVx4NWZceDAwIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICog
ICAodHlwZSAoc3RydWN0IChmaWVsZCBpMzIpKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHgwNVx4MDFceDVmXHgwMVx4N2ZceDAwIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAg
ICogICAodHlwZSAoc3RydWN0IChmaWVsZCBpMzIpIChmaWVsZCBpMzIpKSkKKyAgICogKQorICAg
Ki8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDVmXHgwMlx4N2ZceDAwXHg3Zlx4MDAiKSk7CisK
KyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIChtdXQgaTMy
KSkpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA1XHgwMVx4NWZceDAxXHg3Zlx4
MDEiKSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0
IChmaWVsZCAobXV0IGkzMikgKG11dCBpMzIpKSkpCisgICAqICAgKHR5cGUgJExpbmUgKHN0cnVj
dCAoZmllbGQgKG11dCAocmVmICRQb2ludCkpIChtdXQgKHJlZiAkUG9pbnQpKSkpKQorICAgKiAp
CisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBmXHgwMlx4NWZceDAyXHg3Zlx4MDFceDdmXHgwMVx4
NWZceDAyXHg2Ylx4MDBceDAxXHg2Ylx4MDBceDAxIikpOworCisgIC8qCisgICAqIHRvbyBtYW55
IGZpZWxkcworICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0cnVjdCAoZmllbGQgaTMyKSkp
CisgICAqICkKKyAgICovCisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4KKyAgICAgIG1vZHVs
ZSgKKyAgICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDdceDAx
XHg1Zlx4ZmZceGZmXHhmZlx4N2ZceDAwIgorICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21w
aWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUg
MTY6IG51bWJlciBvZiBmaWVsZHMgZm9yIHN0cnVjdCB0eXBlIGF0IHBvc2l0aW9uIDAgaXMgdG9v
IGJpZyAyNjg0MzU0NTUgbWF4aW11bSAxMDAwMDAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgKTsKKworICAvKgorICAgKiBpbnZhbGlkIG11dGFiaWxp
dHkKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIChtdXQgaTMyKSkp
KQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBtb2R1
bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA1XHgw
MVx4NWZceDAxXHg3Zlx4MDIiCisgICAgICApLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJv
ciwKKyAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNTogaW52
YWxpZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4MDIgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoYnVmZmVyKScpIgorICApOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZFJlZklu
RmllbGRzKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0cnVjdCAoZmll
bGQgKHJlZiA3KSkpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+
CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDA2XHgwMVx4NWZceDAxXHg2Ylx4MDdceDAwIgorICAgICAgKSwKKyAgICBXZWJBc3Nl
bWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTY6IGluY29ycmVjdCB0eXBlIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICApOworfQorCit0ZXN0U3RydWN0RGVjbGFy
YXRpb24oKTsKK3Rlc3RJbnZhbGlkUmVmSW5GaWVsZHMoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9nYy9zdHJ1Y3RzX3N1YnR5cGluZy5qcyBiL0pTVGVzdHMvd2FzbS9nYy9zdHJ1Y3RzX3N1
YnR5cGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTc4ZTMyMjFiZTVhNzg2NWUwOTczMmE5NGQ1NGE5OTJm
ODA0NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2djL3N0cnVjdHNfc3VidHlw
aW5nLmpzCkBAIC0wLDAgKzEsNTYgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdl
YkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdlYkFzc2VtYmx5
R0M9dHJ1ZSIpCisKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOworaW1w
b3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOworCitmdW5jdGlv
biBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
KTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdb
aV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHJ1Y3RTdWJ0eXBpbmcoKSB7Cisg
IC8qCisgICAqIChtb2R1bGUKKyAgICogICAgICh0eXBlICR0MCAoc3RydWN0IChmaWVsZCBpMzIp
KSkKKyAgICogICAgICh0eXBlICR0MSAoc3RydWN0IChmaWVsZCBpMzIpIChmaWVsZCBpMzIpKSkK
KyAgICoKKyAgICogICAgIChmdW5jICRmb28gKHBhcmFtIChyZWYgbnVsbCAkdDApKSAocmVzdWx0
IGkzMikgKGkzMi5jb25zdCAzNykpCisgICAqCisgICAqICAgICAoZnVuYyAoZXhwb3J0ICJtYWlu
IikgKHJlc3VsdCBpMzIpCisgICAqICAgICAgICAgKGkzMi5hZGQgKGNhbGwgJGZvbyAocmVmLm51
bGwgJHQwKSkKKyAgICogICAgICAgICAgICAgICAgICAoY2FsbCAkZm9vIChyZWYubnVsbCAkdDEp
KSkKKyAgICogICAgICkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgxNVx4MDRceDVm
XHgwMVx4N2ZceDAwXHg2MFx4MDFceDZjXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4NWZc
eDAyXHg3Zlx4MDBceDdmXHgwMFx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4
NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDEyXHgwMlx4MDRceDAwXHg0MVx4MjVceDBiXHgw
Ylx4MDBceGQwXHgwMFx4MTBceDAwXHhkMFx4MDNceDEwXHgwMFx4NmFceDBiIikpOworCisgIC8q
CisgICAqIFJlcGxhY2UgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiAkZm9vIHRv
ICR0MSBhbmQgY2hlY2sgZm9yIGZhaWx1cmUuCisgICAqCisgICAqIChtb2R1bGUKKyAgICogICAg
ICh0eXBlICR0MCAoc3RydWN0IChmaWVsZCBpMzIpKSkKKyAgICogICAgICh0eXBlICR0MSAoc3Ry
dWN0IChmaWVsZCBpMzIpIChmaWVsZCBpMzIpKSkKKyAgICoKKyAgICogICAgIChmdW5jICRmb28g
KHBhcmFtIChyZWYgbnVsbCAkdDEpKSAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAzNykpCisgICAq
CisgICAqICAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAqICAgICAg
ICAgKGkzMi5hZGQgKGNhbGwgJGZvbyAocmVmLm51bGwgJHQwKSkKKyAgICogICAgICAgICAgICAg
ICAgICAoY2FsbCAkZm9vIChyZWYubnVsbCAkdDEpKSkKKyAgICogICAgICkKKyAgICogKQorICAg
Ki8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAorICAgICAgICAi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgxNVx4MDRceDVmXHgwMVx4N2Zc
eDAwXHg2MFx4MDFceDZjXHgwM1x4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4NWZceDAyXHg3Zlx4
MDBceDdmXHgwMFx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2
OVx4NmVceDAwXHgwMVx4MGFceDEyXHgwMlx4MDRceDAwXHg0MVx4MjVceDBiXHgwYlx4MDBceGQw
XHgwMFx4MTBceDAwXHhkMFx4MDNceDEwXHgwMFx4NmFceDBiIgorICAgICAgKSwKKyAgICBXZWJB
c3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZh
bGlkYXRlOiBhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCBSZWZOdWxsLCBleHBl
Y3RlZCBSZWZOdWxsLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAxIChldmFsdWF0aW5nICduZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgKTsKK30KKwordGVzdFN0cnVjdFN1YnR5cGlu
ZygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93
YXNtLmpzb24KaW5kZXggMzJjOGFmOGJiZjU3ZWE2MDViMzM1NWE1NmQ4ODJlOGRkZTFlMGVlZC4u
NzQyODEyY2RlYjAzZDVhNTQ4NDVhMDc3YWJiMWQ3NGI1MjdmZTUzNSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xNiw2
ICsxNiw3IEBACiAgICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFs
dWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgInJlZiI6ICAgICAg
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0
IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
IC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgInN0cnVjdCI6ICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAg
ICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwg
Imk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446146</attachid>
            <date>2021-12-07 02:38:11 -0800</date>
            <delta_ts>2021-12-07 02:38:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233416-20211207173809.patch</filename>
            <type>text/plain</type>
            <size>72654</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi42OGYwYWQ3ZGJlMTkwYWY4
Mjk1MDA2ZDU3YTI2OTc4MzY3NWYyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTIgQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZA
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVj
dHMgdHlwZXMgZW5jb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgSW50cm9kdWNlZCBmbGFnIGZvciBXYXNtIEdDIGFuZCBhZGQgc3Vw
cG9ydCBvZiBXYXNtIEdDIHN0cnVjdCB0eXBlcyBlbmNvZGluZworICAgICAgICBhY2NvcmRpbmcg
dG8gdGhlIE1WUCBzcGVjOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkv
Z2MvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2djL01WUC5tZC4KKyAgICAgICAgCisgICAgICAgICog
cnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmdldEdsb2JhbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwpOgorICAgICAgICAq
IHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjpnZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpz
ZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUdsb2JhbC5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6c2V0KToKKyAgICAgICAgKiB3YXNtL1dh
c21HbG9iYWwuaDoKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIp
OgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9y
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50
cyk6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6Z2V0U2lnbmF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpN
b2R1bGVJbmZvcm1hdGlvbjo6dHlwZXNDb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
Ok1vZHVsZUluZm9ybWF0aW9uOjppc1N0cnVjdFR5cGUgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VIZWFwVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNz
VHlwZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9u
UGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFy
c2VyOjpwYXJzZUdsb2JhbFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUV4Y2VwdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oOgor
ICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUpOgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6
CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKKzIwMjEtMTEtMjMgIERtaXRyeSBCZXpoZXRz
a292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1S
ZWZlcmVuY2VzXSBTaW1wbGlmeSByZXByZXNlbnRhdGlvbiBvZiBXYXNtIFR5cGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVwbGFjZSBT
aWduYXR1cmUgaW5kZXggd2l0aCBpbmRleCBpbnRvIFdhc20gVHlwZSBzZWN0aW9uLgorICAgICAg
ICBBZGQgY29ycmVzcG9uZGluZyBtYXBwaW5nIHRvIGJlIGFibGUgdG8gZ2V0IGl0cm9kdWNlZCB0
eXBlIGluZGV4CisgICAgICAgIHZpYSBnaXZlbiBmdW5jdGlvbiBpbmRleC4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNv
ZGVEdW1wZXI6OmR1bXBCbG9jayk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBs
YW46OndvcmspOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNFeHRl
cm5yZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjppc0Z1bmNyZWYpOgorICAgICAgICAoSlNDOjpX
YXNtOjpmdW5jcmVmVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OmV4dGVybnJlZlR5cGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjppc1R5cGVJbmRleEhlYXBUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dh
c21MTEludFBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVG
dW5jdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21w
aWxhdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0
aW9uOjpnZXRUeXBlSW5kZXhGb3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNt
T01HRm9yT1NSRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50
cnlQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6
CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBl
KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
ZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VJbml0RXhwcik6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNI
ZWFkZXIucHk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVC
bG9jayk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0Fu
ZEV4cG9ydHMpOgorCiAyMDIxLTExLTIyICBHZXphIExvcmUgIDxnbG9yZUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtKU0NdIE1ha2Ugc2hhcmluZyBvZiB1bmxpbmtlZCBiYXNlbGluZSBjb2RlIHBv
c3NpYmxlIG9uIEpTVkFMVUUzMl82NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggMzk4ZjU1YjNlNzU2NWRiMzYyNDZmN2UxZTIx
MzE5MzllMDExYTk3Ni4uODYxNGU5NTNhOThkMjA4YjA2YjAwZjk5NGY2YWQzZDFkYmYwMjlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjo6ZHVtcEJsb2NrKEZ1
bmN0aW9uQ29kZUJsb2NrKiBibG9jaywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24KICAgICBvdXQu
cHJpbnQobWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1vZHVsZUlu
Zm9ybWF0aW9uLm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpKTsKIAogICAg
IGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rpb25zW2Jsb2Nr
LT5mdW5jdGlvbkluZGV4KCldOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbYmxvY2st
PmZ1bmN0aW9uSW5kZXgoKV07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
b2R1bGVJbmZvcm1hdGlvbi5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tibG9jay0+
ZnVuY3Rpb25JbmRleCgpXS5zaWduYXR1cmVJbmRleDsKICAgICBjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAg
IG91dC5wcmludCgiIDogIiwgc2lnbmF0dXJlLCAiXG4iKTsKICAgICBvdXQucHJpbnQoIndhc20g
c2l6ZTogIiwgZnVuY3Rpb24uZGF0YS5zaXplKCksICIgYnl0ZXNcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTU3YWVhNDIxZjNhMzliNTMx
ZjhiZGI4ZDNhMDI2MzkwNjc4ZGVmMy4uYThiOGFkZWZkNmY5MDM1Yjg1NzliNWU3MzFhYjA1ZWFh
N2VlZWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01NDYsNiArNTQ2LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsK
ICAgICB2KEJvb2wsIHVzZVRlbXBvcmFsLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBUZW1w
b3JhbCBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRocmVhZGluZyBz
cGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5j
ZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRoZSB3YXNtIHR5
cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseUdDLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZ2MgdHlwZXMgZnJvbSB0aGUgd2FzbSBnYyBw
cm9wb3NhbC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUV4Y2VwdGlvbnMsIHRydWUs
IE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2VjdGlvbiBhbmQgaW5zdHJ1Y3Rpb25zIGZyb20gdGhl
IHdhc20gZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWMuIikgXAogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGU0MjhiMGQ1ZjMy
YmVmMDg0OTkzNDEwNWQ5MWVmYzAxYzEyMjdhOTcuLmFlY2FiODZmMGJiZWFlYTIzN2Y0NThjNmU5
MTMyMDVkZjFjMDFmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMTEyNCw4ICsxMTI0LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGkKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICBTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBU
eXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIHNpZ25hdHVyZUluZGV4IH0pOworICAgICAgICBy
ZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1f
aW5mby5nZXRUeXBlSW5kZXhGb3JGdW5jdGlvbihpbmRleCkgfSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkZ1bmNyZWYpOwogICAgIGVtaXRDQ2FsbCgm
b3BlcmF0aW9uV2FzbVJlZkZ1bmMsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFu
dChUeXBlczo6STMyLCBpbmRleCkpOwpAQCAtMTQzOCw3ICsxNDM3LDcgQEAgYXV0byBBaXJJUkdl
bmVyYXRvcjo6Z2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWEKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okds
b2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6Ci0gICAgICAgIEFTU0VSVChn
bG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6
TXV0YWJsZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRh
YmlsaXR5OjpNdXRhYmxlKTsKICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNl
dCwgQjM6OldpZHRoNjQpKQogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1w
LCBvZmZzZXQpLCB0ZW1wKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNDc4LDcgKzE0NzcsNyBAQCBh
dXRvIEFpcklSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25U
eXBlIHZhbHVlKSAtPiBQYXJ0aWFsUgogICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpT
V3JhcHBlcigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0
aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6Ci0gICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJp
bGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7Cisg
ICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpNdXRh
YmxlKTsKICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6OldpZHRo
NjQpKQogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wLCBvZmZzZXQpLCB0
ZW1wKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGI1OWNhMGQ4OTk0YWJmODE3YzViOGRmMTIxMDUy
ZmZhNTc0NjE4Ni4uMWM5YjgzM2MyMDE2MjdiMGYxZDZmOTVjN2I0MjE2ZDIyOGVjYTYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApA
QCAtMTM2Niw3ICsxMzY2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpnZXRHbG9iYWwodWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWwKICAgICAgICAgcmVz
dWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHRvQjNUeXBlKGdsb2JhbC50eXBlKSwgb3JpZ2luKCksIGdsb2JhbHNBcnJheSwgc2Fm
ZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFi
bGU6IHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbElu
Zm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5t
dXRhYmlsaXR5ID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBWYWx1ZSog
cG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgQjM6OkludDY0LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90
PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICAgICAgcmVzdWx0ID0gcHVzaChtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBl
KGdsb2JhbC50eXBlKSwgb3JpZ2luKCksIHBvaW50ZXIpKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
Mzg3LDcgKzEzODcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZQogICAgICAgICAgICAgZW1p
dFdyaXRlQmFycmllckZvckpTV3JhcHBlcigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdh
c206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6IHsKLSAgICAgICAg
QVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRh
YmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdh
c206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBWYWx1ZSogcG9pbnRlciA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgQjM6OkludDY0
LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90PihpbmRleCAqIHNpemVv
ZihSZWdpc3RlcikpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIGdldCh2YWx1ZSksIHBvaW50ZXIpOwogICAg
ICAgICAvLyBXZSBlbWl0IGEgd3JpdGUtYmFycmllciBvbnRvIEpTV2ViQXNzZW1ibHlHbG9iYWws
IG5vdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKaW5kZXggMjQzMDI5ZTYyYjMzYzFkMzk3MDk3YWI0OWRhOGM5MzgzOWFh
ZGJjMS4uYzI3ZWM4NmUxYjZiZWUyODZhZGQxYTFhZGU4MmY5Mzg5Zjc1NWU4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IHZvaWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgY29tcHV0
ZUV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMoZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucywgZnVu
Y3Rpb24uZ2V0KCksIGNvbnRleHQsIGxpbmtCdWZmZXIpOwogCiAgICAgc2l6ZV90IGZ1bmN0aW9u
SW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlSW5mb3JtYXRpb24tPmltcG9y
dEZ1bmN0aW9uQ291bnQoKTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1f
bW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVu
Y3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVs
ZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9u
SW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgZnVuY3Rpb24t
PmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPigKICAgICAg
ICAgRklOQUxJWkVfV0FTTV9DT0RFX0ZPUl9NT0RFKENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwg
bGlua0J1ZmZlciwgSklUQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVuY3Rp
b25bJWldICVzIG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFj
ZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3Bh
Y2UpKSkuYXNjaWkoKS5kYXRhKCkpLApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQkJRUGxhbjo6
Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAKICAgICBpZiAobV9leHBv
cnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRleCkp
IHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rp
b25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgICAgICBTaWduYXR1cmVJbmRl
eCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgICAgICBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2ln
bmF0dXJlSW5kZXgpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZW1iZWRkZXJUb1dhc21JbnRl
cm5hbEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25JbmRleCwgY3JlYXRlSlNUb1dhc21XcmFwcGVyKCpt
X2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF0uZW1iZWRkZXJFbnRyeXBvaW50SklU
LCBzaWduYXR1cmUsICZtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBt
X21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIGZ1bmN0aW9uSW5kZXgpKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbklu
ZGV4KQogc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IEJCUVBsYW46OmNvbXBpbGVG
dW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBDb21waWxhdGlvbkNvbnRleHQmIGNvbnRl
eHQsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHMsIFRpZXJVcENvdW50KiB0aWVyVXApCiB7CiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb24gPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnNbZnVuY3Rpb25JbmRleF07Ci0gICAgU2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRl
eCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1
cmVJbmRleCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpICsgZnVuY3Rpb25JbmRleDsKICAgICBBU1NF
UlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0
dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkgPT0gc2ln
bmF0dXJlSW5kZXgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQkJRUGxhbjo6ZGlkQ29tcGxl
dGVDb21waWxhdGlvbigpCiB7CiAgICAgZm9yICh1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gMDsg
ZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9ucy5zaXplKCk7IGZ1
bmN0aW9uSW5kZXgrKykgewogICAgICAgICBDb21waWxhdGlvbkNvbnRleHQmIGNvbnRleHQgPSBt
X2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgIFNpZ25hdHVyZUlu
ZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWdu
YXR1cmVJbmRleCk7CiAgICAgICAgIGNvbnN0IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9
IGZ1bmN0aW9uSW5kZXggKyBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50
KCk7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbkluZGV4U3BhY2UgPCBtX21vZHVsZUluZm9ybWF0
aW9uLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5oCmluZGV4IDgyNGZhOGI3MzQ3YzVmNDg2YzdlMDljMWQ1YTlkMWUwNzRlYjJj
MzcuLjE1NDUyZmQ2ZjlmMDQzOTY0M2I3NDQ4OTU2OWQwNWRhNWUzOWJkYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTEwNSwyOCArMTA1LDI4IEBAIGlubGlu
ZSBib29sIGlzUmVmVHlwZShUeXBlIHR5cGUpCiBpbmxpbmUgYm9vbCBpc0V4dGVybnJlZihUeXBl
IHR5cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJl
ZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4
ID09IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihUeXBlS2luZDo6RXh0ZXJucmVmKTsKKyAg
ICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0
PHVpbnQzMl90PihUeXBlS2luZDo6RXh0ZXJucmVmKTsKICAgICByZXR1cm4gdHlwZS5raW5kID09
IFR5cGVLaW5kOjpFeHRlcm5yZWY7CiB9CiAKIGlubGluZSBib29sIGlzRnVuY3JlZihUeXBlIHR5
cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVy
ZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4ID09
IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihUeXBlS2luZDo6RnVuY3JlZik7CisgICAgICAg
IHJldHVybiBpc1JlZlR5cGUodHlwZSkgJiYgdHlwZS5pbmRleCA9PSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYpOwogICAgIHJldHVybiB0eXBlLmtpbmQgPT0gVHlwZUtp
bmQ6OkZ1bmNyZWY7CiB9CiAKIGlubGluZSBUeXBlIGZ1bmNyZWZUeXBlKCkKIHsKICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gV2FzbTo6VHlwZSB7IFdhc206OlR5cGVLaW5kOjpSZWZOdWxsLCBXYXNtOjpOdWxs
YWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxXYXNtOjpTaWduYXR1cmVJbmRleD4oV2FzbTo6VHlwZUtp
bmQ6OkZ1bmNyZWYpIH07CisgICAgICAgIHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtp
bmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihX
YXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKICAgICByZXR1cm4gVHlwZXM6OkZ1bmNyZWY7CiB9
CiAKIGlubGluZSBUeXBlIGV4dGVybnJlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNt
OjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0
YXRpY19jYXN0PFdhc206OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVm
KSB9OworICAgICAgICByZXR1cm4gV2FzbTo6VHlwZSB7IFdhc206OlR5cGVLaW5kOjpSZWZOdWxs
LCBXYXNtOjpOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2FzbTo6VHlwZUtp
bmQ6OkV4dGVybnJlZikgfTsKICAgICByZXR1cm4gVHlwZXM6OkV4dGVybnJlZjsKIH0KIApAQCAt
MTM4LDE0ICsxMzgsNiBAQCBpbmxpbmUgYm9vbCBpc1JlZldpdGhUeXBlSW5kZXgoVHlwZSB0eXBl
KQogICAgIHJldHVybiBpc1JlZlR5cGUodHlwZSkgJiYgIWlzRXh0ZXJucmVmKHR5cGUpICYmICFp
c0Z1bmNyZWYodHlwZSk7CiB9CiAKLWlubGluZSBib29sIGlzVHlwZUluZGV4SGVhcFR5cGUoaW50
MzJfdCBoZWFwVHlwZSkKLXsKLSAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRG
dW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IGhlYXBUeXBlID49IDA7Ci19Ci0KIGlubGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlw
ZSBwYXJlbnQpCiB7CiAgICAgaWYgKHN1Yi5pc051bGxhYmxlKCkgJiYgIXBhcmVudC5pc051bGxh
YmxlKCkpCkBAIC0yMzYsMTMgKzIyOCwxNCBAQCBzdHJ1Y3QgRXhwb3J0IHsKIAogU3RyaW5nIG1h
a2VTdHJpbmcoY29uc3QgTmFtZSYgY2hhcmFjdGVycyk7CiAKK2VudW0gTXV0YWJpbGl0eSA6IHVp
bnQ4X3QgeworICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUgdGhpcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQorICAgIE11dGFibGUgPSAxLAorICAgIElt
bXV0YWJsZSA9IDAKK307CisKIHN0cnVjdCBHbG9iYWxJbmZvcm1hdGlvbiB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIGVudW0gTXV0YWJpbGl0eSA6IHVpbnQ4X3Qg
ewotICAgICAgICAvLyBGSVhNRSBhdXRvLWdlbmVyYXRlIHRoaXMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMzEKLSAgICAgICAgTXV0YWJsZSA9IDEsCi0gICAg
ICAgIEltbXV0YWJsZSA9IDAKLSAgICB9OwogCiAgICAgZW51bSBJbml0aWFsaXphdGlvblR5cGUg
OiB1aW50OF90IHsKICAgICAgICAgSXNJbXBvcnQsCkBAIC0yNjMsNiArMjU2LDI2IEBAIHN0cnVj
dCBHbG9iYWxJbmZvcm1hdGlvbiB7CiAgICAgdWludDY0X3QgaW5pdGlhbEJpdHNPckltcG9ydE51
bWJlciB7IDAgfTsKIH07CiAKK3N0cnVjdCBGdW5jdGlvbkRlc2NyaXB0aW9uIHsKKyAgICBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleDsKKyAgICB1aW50MzJfdCB0eXBlSW5kZXg7Cit9Owor
CitzdHJ1Y3QgRnVuY1R5cGUgeworICAgIFJlZlB0cjxTaWduYXR1cmU+IHNpZ25hdHVyZTsKK307
CisKK3N0cnVjdCBTdHJ1Y3RGaWVsZCB7CisgICAgVHlwZSB0eXBlOworICAgIE11dGFiaWxpdHkg
bXV0YWJpbGl0eTsKK307CisKK3N0cnVjdCBTdHJ1Y3RUeXBlIHsKKyAgICBWZWN0b3I8U3RydWN0
RmllbGQ+IGZpZWxkczsKK307CisKK3VzaW5nIFR5cGVSZWNvcmQgPSBzdGQ6OnZhcmlhbnQ8RnVu
Y1R5cGUsIFN0cnVjdFR5cGU+OworCiBzdHJ1Y3QgRnVuY3Rpb25EYXRhIHsKICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc2l6ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkOTdlN2U3NTlh
NGYyNDc1YTM3Nzc3Mzg3MTc4MzFiYzQ5ZTA5M2QyLi5mNzVhOGEzYmI1ZDZjYjg3NGQzMzc0ODcw
NTcxMjJiZjgxOWEzNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaApAQCAtMTA4MSwxMSArMTA4MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVN
T1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGhl
YXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZSht
X2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0
ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlw
ZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLnVzZWRTaWduYXR1cmVzW2hl
YXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBl
S2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5kZXggfTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6
OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihoZWFw
VHlwZSkgfTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51
bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihoZWFwVHlwZSkgfTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5
cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5j
ZSB0eXBlIik7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCh0
eXBlT2ZOdWxsLCBtX2NvbnRleHQuYWRkQ29uc3RhbnQodHlwZU9mTnVsbCwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKSkpOwpAQCAtMTExMyw4ICsxMTA5LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZFJlZkZ1bmMoaW5kZXgsIHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgICAgIFNpZ25h
dHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25z
dHJ1Y3RBbmRBcHBlbmQoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0
dXJlSW5kZXggfSwgcmVzdWx0KTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0
cnVjdEFuZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8u
Z2V0VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0sIHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTExNzUsNyArMTE3MCw3IEBAIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBUeXBlZEV4cHJlc3Npb24g
dmFsdWU7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsdWUs
ICJzZXRfZ2xvYmFsIHZhbHVlIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5k
ZXggPj0gbV9pbmZvLmdsb2JhbHMuc2l6ZSgpLCAic2V0X2dsb2JhbCAiLCBpbmRleCwgIiBvZiB1
bmtub3duIGdsb2JhbCwgbGltaXQgaXMgIiwgbV9pbmZvLmdsb2JhbHMuc2l6ZSgpKTsKLSAgICAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8uZ2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0
eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlLCAic2V0X2dsb2JhbCAiLCBpbmRleCwg
IiBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2luZm8u
Z2xvYmFsc1tpbmRleF0ubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpJbW11dGFibGUsICJzZXRf
Z2xvYmFsICIsIGluZGV4LCAiIGlzIGltbXV0YWJsZSIpOwogCiAgICAgICAgIFR5cGUgZ2xvYmFs
VHlwZSA9IG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlOwogICAgICAgICBBU1NFUlQoaXNWYWx1
ZVR5cGUoZ2xvYmFsVHlwZSkpOwpAQCAtMTIyNCwxMCArMTIxOSwxMCBAQCBGT1JfRUFDSF9XQVNN
X01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIoc2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJl
Y3QncyBzaWduYXR1cmUgaW5kZXgiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHRhYmxl
IGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2lu
Zm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4ICIsIHRhYmxlSW5k
ZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291bnQoKSk7Ci0gICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSA8PSBzaWdu
YXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwgc2lnbmF0dXJl
SW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5mby51c2VkU2lnbmF0dXJl
cy5zaXplKCkpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50eXBlc0NvdW50
KCkgPD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIs
IHNpZ25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udHlw
ZXNDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVzW3Rh
YmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiY2FsbF9pbmRp
cmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBmdW5jcmVmIik7CiAKLSAg
ICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8udXNlZFNpZ25h
dHVyZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOworICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNh
bGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWduYXR1cmUoc2lnbmF0dXJlSW5kZXgpOwogICAg
ICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50
KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGluZGV4LgogICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX2lu
ZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhw
cmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgp
LCAiIHZhbHVlcyIpOwogCkBAIC0xMjU4LDggKzEyNTMsOCBAQCBGT1JfRUFDSF9XQVNNX01FTU9S
WV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpLCAiZnVuY3Rpb24g
cmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighaXNSZWZXaXRoVHlwZUluZGV4KG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkp
LCAibm9uLWZ1bmNyZWYgY2FsbF9yZWYgdmFsdWUgIiwgbV9leHByZXNzaW9uU3RhY2subGFzdCgp
LnR5cGUoKS5raW5kKTsKIAotICAgICAgICBjb25zdCBTaWduYXR1cmVJbmRleCBjYWxsZWVTaWdu
YXR1cmVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXg7Ci0gICAg
ICAgIGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChjYWxsZWVTaWduYXR1cmVJbmRleCk7CisgICAgICAgIGNvbnN0IGF1dG8gY2FsbGVl
U2lnbmF0dXJlSW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4Owor
ICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWdu
YXR1cmUoY2FsbGVlU2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3Vu
dCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxl
ZSdzIHZhbHVlLgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFyZ3VtZW50Q291
bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRz
ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcAppbmRleCBjYjNkMTYzYmJlMDhiNmE1NzU4Y2Q5
ZGMyOGRlMDY4YTFkZTU2ZjE3Li5hMmEwYWNiNWYxMGQ3MzU4YzUwYzBhMDlkZjk2ZTRmMWVmODVi
YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIEdsb2JhbDo6c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEFTU0VS
VChtX211dGFiaWxpdHkgIT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSk7Cisg
ICAgQVNTRVJUKG1fbXV0YWJpbGl0eSAhPSBXYXNtOjpJbW11dGFibGUpOwogICAgIHN3aXRjaCAo
bV90eXBlLmtpbmQpIHsKICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6IHsKICAgICAgICAgaW50MzJf
dCB2YWx1ZSA9IGFyZ3VtZW50LnRvSW50MzIoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21HbG9iYWwuaAppbmRleCAxN2Y4ODY4MWUwNmU0MDIyODBkMTlhZmEyZWVi
YmNhZThkOWJkMTVlLi40MzhhN2Y3NDBmZjk5MzE2Yzc2NTgxM2VhZTg3MmY3ZDY3OTQwZjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHVibGljOgogICAgICAgICBWYWx1ZSogbV9wb2ludGVyOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPEdsb2JhbD4gY3JlYXRlKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6R2xvYmFsSW5mb3Jt
YXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlhbFZhbHVlID0gMCkK
KyAgICBzdGF0aWMgUmVmPEdsb2JhbD4gY3JlYXRlKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6TXV0
YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUgPSAwKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2xvYmFsKHR5cGUsIG11dGFiaWxpdHksIGluaXRp
YWxWYWx1ZSkpOwogICAgIH0KIAogICAgIFdhc206OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotICAgIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFi
aWxpdHkoKSBjb25zdCB7IHJldHVybiBtX211dGFiaWxpdHk7IH0KKyAgICBXYXNtOjpNdXRhYmls
aXR5IG11dGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX211dGFiaWxpdHk7IH0KICAgICBKU1Zh
bHVlIGdldChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQ2NF90IGdldFByaW1pdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubV9wcmltaXRpdmU7IH0KICAgICB2b2lkIHNldChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
VmFsdWUqIHZhbHVlUG9pbnRlcigpIHsgcmV0dXJuICZtX3ZhbHVlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgR2xvYmFsKFdhc206OlR5cGUgdHlwZSwgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFi
aWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlhbFZhbHVlKQorICAgIEdsb2JhbChXYXNt
OjpUeXBlIHR5cGUsIFdhc206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWludDY0X3QgaW5pdGlh
bFZhbHVlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbXV0YWJpbGl0eSht
dXRhYmlsaXR5KQogICAgICAgICAsIG1fdmFsdWUoKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFdhc206OlR5cGUgbV90eXBlOwotICAgIFdhc206Okdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmlsaXR5IG1fbXV0YWJpbGl0eTsKKyAgICBXYXNtOjpNdXRhYmlsaXR5IG1f
bXV0YWJpbGl0eTsKICAgICBKU09iamVjdCogbV9vd25lciB7IG51bGxwdHIgfTsKICAgICBWYWx1
ZSBtX3ZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwCmluZGV4IDhlZDIzMDkzZjcxM2UxZjQyMjllYjNmMWZjNzQ1ZDU0MWJm
ZmIyNzcuLmQxMGJiYzgwZGE4M2Q4NWNiOTllY2VmYzk1ZDhmNjQ1NDAyZGE2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAt
NjI1LDYgKzYyNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNh
bGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH07CkBAIC02ODIsNiArNjgz
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzExLDYgKzcxMyw3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTc2OCw2ICs3NzEsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IFZlYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0
cnVjdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC04MTgsNiArODIyLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJn
dW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggN2MwYmJj
NWY3MWY1OWNiZDY2YjJlOGUzMjllM2MyMzU3N2RjZTgwYS4uYjE2NjU4YTczZmNkNzk3YzA0YjFl
YTNlYzg2OGE4OGE3ZDllNTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50UGxhbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBMTEludFBsYW46OnByZXBhcmVJ
bXBsKCkKIHZvaWQgTExJbnRQbGFuOjpjb21waWxlRnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25J
bmRleCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuc2l6ZSgpICsg
ZnVuY3Rpb25JbmRleDsKICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1
bmN0aW9uSW5kZXhTcGFjZSkgPT0gc2lnbmF0dXJlSW5kZXgpOwpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIAogICAgIGZvciAodWlu
dDMyX3QgZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZUluZm9ybWF0
aW9uLT5mdW5jdGlvbnMuc2l6ZSgpOyBmdW5jdGlvbkluZGV4KyspIHsKICAgICAgICAgaWYgKG1f
ZXhwb3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygpLmNvbnRhaW5zKGZ1bmN0aW9uSW5k
ZXgpKSB7Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9u
SW5kZXhdOworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21v
ZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlv
bkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAgICAgICAgICAgLy8gVGhlIExMSW50IGFsd2F5
cyBib3VuZHMgY2hlY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTGltaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKaW5k
ZXggZjhmMDUzYjU4NjBlN2RmOTdkYjQ0NjRhYTBlYTE3NDhkOWI4N2YzNi4uZjgyZTcwMzFkYTQw
NjFlMjk3NDQ0YzE1Yzk0OWUwYzgzMDRhM2Y4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MaW1pdHMuaApAQCAtNDQsNiArNDQsNyBAQCBjb25zdGV4cHIgc2l6ZV90IG1heEV4cG9y
dHMgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heEV4Y2VwdGlvbnMgPSAxMDAwMDA7CiBj
b25zdGV4cHIgc2l6ZV90IG1heEdsb2JhbHMgPSAxMDAwMDAwOwogY29uc3RleHByIHNpemVfdCBt
YXhEYXRhU2VnbWVudHMgPSAxMDAwMDA7Citjb25zdGV4cHIgc2l6ZV90IG1heFN0cnVjdHNGaWVs
ZHMgPSAxMDAwMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFN0cmluZ1NpemUgPSAxMDAwMDA7
CiBjb25zdGV4cHIgc2l6ZV90IG1heE1vZHVsZVNpemUgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggZDUwZmRkZmIzNzgzN2Ey
OTEzYWM3ZDAxNTY4ZmE2OTRjMjJhN2IzMS4uNWYzNTg2ZWQ5NDQ4NTlhN2MzMzQzMDRmYThlYmQ5
MWM1OTAwNzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldhc21Db2RlQmxvY2suaCIKICNpbmNsdWRlICJXYXNt
RW1iZWRkZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU9wcy5o
IgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KQEAgLTQxLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIExMSW50UGxhbjsKIHN0cnVjdCBDb250ZXh0Owogc3Ry
dWN0IE1vZHVsZUluZm9ybWF0aW9uOwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7
CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxl
SW5mb3JtYXRpb24uY3BwCmluZGV4IGM2ZThiOGM3ZmViOWNjMjA4ZWIyNzk2ZWE3ZjJhNDIwNGQ0
MDc2NzIuLmUzMjQ5NzRkM2I3MGVlMDNjYmUxMGI4NWRmOWEwM2FjOTJkM2ZmMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNw
cApAQCAtMzksNiArMzksMTQgQEAgTW9kdWxlSW5mb3JtYXRpb246Ok1vZHVsZUluZm9ybWF0aW9u
KCkKIAogTW9kdWxlSW5mb3JtYXRpb246On5Nb2R1bGVJbmZvcm1hdGlvbigpIHsgfQogCitjb25z
dCBTaWduYXR1cmUmIE1vZHVsZUluZm9ybWF0aW9uOjpnZXRTaWduYXR1cmUodWludDMyX3QgaW5k
ZXgpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byogZnVuY1R5cGUgPSBzdGQ6OmdldF9pZjxGdW5j
VHlwZT4oJnR5cGVzW2luZGV4XSk7CisgICAgQVNTRVJUKGZ1bmNUeXBlKTsKKyAgICBBU1NFUlQo
ZnVuY1R5cGUtPnNpZ25hdHVyZS5nZXQoKSk7CisgICAgcmV0dXJuICpmdW5jVHlwZS0+c2lnbmF0
dXJlLmdldCgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCAzMjhjNmJjYTZiZmE2NjJiNTNlOWM4YzhkYTlh
Y2IxOGY1MDQ0YWM1Li5lZDRjMDg2YWE1ZjQxNjM1OWVhYTU5ZjllZTYwZTJiZGFlNWU2YWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRp
b24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgogCisjaW5j
bHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC01NCw4ICs1NSw4IEBAIHN0cnVjdCBNb2R1bGVJbmZv
cm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4g
ewogICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFj
ZShzaXplX3QgZnVuY3Rpb25JbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0lt
cG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpCi0gICAg
ICAgICAgICA/IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XQot
ICAgICAgICAgICAgOiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbklu
ZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKV07CisgICAgICAgICAg
ICA/IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XS5zaWduYXR1
cmVJbmRleAorICAgICAgICAgICAgOiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKV0uc2ln
bmF0dXJlSW5kZXg7CiAgICAgfQogCiAgICAgc2l6ZV90IGV4Y2VwdGlvbkluZGV4U3BhY2VTaXpl
KCkgY29uc3QgeyByZXR1cm4gaW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCkg
KyBpbnRlcm5hbEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOyB9CkBAIC04MSw2ICs4
Miw3IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25z
dCB7IHJldHVybiB0YWJsZXMuc2l6ZSgpOyB9CiAgICAgdWludDMyX3QgZWxlbWVudENvdW50KCkg
Y29uc3QgeyByZXR1cm4gZWxlbWVudHMuc2l6ZSgpOyB9CiAgICAgdWludDMyX3QgZGF0YVNlZ21l
bnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBudW1iZXJPZkRhdGFTZWdtZW50czsgfQorICAgIHVp
bnQzMl90IHR5cGVzQ291bnQoKSBjb25zdCB7IHJldHVybiB0eXBlcy5zaXplKCk7IH0KIAogICAg
IGNvbnN0IFRhYmxlSW5mb3JtYXRpb24mIHRhYmxlKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiB0YWJsZXNbaW5kZXhdOyB9CiAKQEAgLTkzLDEyICs5NSwyMiBAQCBzdHJ1Y3QgTW9kdWxl
SW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRp
b24+IHsKICAgICBib29sIGlzRGVjbGFyZWRFeGNlcHRpb24odWludDMyX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjbGFyZWRFeGNlcHRpb25zLmNvbnRhaW5zKGluZGV4KTsgfQogICAgIHZv
aWQgYWRkRGVjbGFyZWRFeGNlcHRpb24odWludDMyX3QgaW5kZXgpIHsgbV9kZWNsYXJlZEV4Y2Vw
dGlvbnMuc2V0KGluZGV4KTsgfQogCisgICAgdWludDMyX3QgZ2V0VHlwZUluZGV4Rm9yRnVuY3Rp
b24odWludDMyX3QgZnVuY3Rpb25JbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0lt
cG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpKQorICAg
ICAgICAgICAgcmV0dXJuIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbklu
ZGV4XS50eXBlSW5kZXg7CisgICAgICAgIHJldHVybiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlc1tmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNp
emUoKV0udHlwZUluZGV4OworICAgIH0KKworICAgIGNvbnN0IFNpZ25hdHVyZSYgZ2V0U2lnbmF0
dXJlKHVpbnQzMl90IGluZGV4KSBjb25zdDsKKyAgICBib29sIGlzU3RydWN0VHlwZSh1aW50MzJf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJ1Y3RUeXBl
Pih0eXBlc1tpbmRleF0pOyB9CisKICAgICBWZWN0b3I8SW1wb3J0PiBpbXBvcnRzOwotICAgIFZl
Y3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOwotICAg
IFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7
CisgICAgVmVjdG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlczsKKyAgICBWZWN0b3I8RnVuY3Rpb25EZXNjcmlwdGlvbj4gaW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBvcnRFeGNl
cHRpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJu
YWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzOwotICAgIFZlY3RvcjxSZWY8U2lnbmF0dXJlPj4g
dXNlZFNpZ25hdHVyZXM7CisgICAgVmVjdG9yPFR5cGVSZWNvcmQ+IHR5cGVzOwogCiAgICAgTWVt
b3J5SW5mb3JtYXRpb24gbWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCmluZGV4IDQ4ZmI0NTBjNGMwODkwOWMx
NmQxOGMxMjYxN2M5OGU2OWNhYWQzMzQuLjA3MzEzOWY1ZGQ1YjQwMGI0YjI5NDgzZWY3YzViODc0
NWUxYzVlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdG
b3JPU1JFbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
TUdGb3JPU1JFbnRyeVBsYW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgT01HRm9yT1NSRW50
cnlQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1h
dGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25JbmRleFNw
YWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNwYWNlU2l6
ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4
XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRp
b24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0uc2ln
bmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJ
bmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxpbmtlZFdh
c21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR1BsYW4uY3BwCmluZGV4IDZhNGY3ODcyNjk1NDg1NDYzMGVlOGU4MzUzZTY4ZmY0NDNm
MGU2MWYuLjU4ZDVlZjRlZDk0YzIxMzAxOTA3ZGFlMjU5MDNjNTc0MTM2Nzg5ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
dm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25J
bmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlv
bkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYjc5YWRjMWYzYzhhYjBmMzQ2ZmM0ZjZk
YTg5YWUuLjNmNWIwYmIzZjg3MmJjNTM0MGEwYzVmMjIyMmFlYTEwZTUxOTVlMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTI4OCw5ICsyODgsOSBAQCBBTFdB
WVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxTdWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFy
c2VyPFN1Y2Nlc3NUeXBlPjo6cAogICAgIGludDY0X3QgaW5kZXg7CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJJbnQ2NChpbmRleCksICJCbG9jay1saWtlIGluc3RydWN0aW9uIGRv
ZXNuJ3QgcmV0dXJuIHZhbHVlIHR5cGUgYnV0IGNhbid0IGRlY29kZSB0eXBlIHNlY3Rpb24gaW5k
ZXgiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4IDwgMCwgIkJsb2NrLWxpa2UgaW5z
dHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG5lZ2F0aXZlIik7Ci0gICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnVzZWRTaWduYXR1cmVz
LnNpemUoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBv
ZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwgIiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnVz
ZWRTaWduYXR1cmVzLnNpemUoKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2Fz
dDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnR5cGVzQ291bnQoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1
Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwg
IiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnR5cGVzQ291bnQoKSk7CiAKLSAgICByZXN1bHQg
PSAmaW5mby51c2VkU2lnbmF0dXJlc1tpbmRleF0uZ2V0KCk7CisgICAgcmVzdWx0ID0gJmluZm8u
Z2V0U2lnbmF0dXJlKGluZGV4KTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0zMTIsNyArMzEy
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5
cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnVzZWRT
aWduYXR1cmVzLnNpemUoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkg
Pj0gaW5mby50eXBlc0NvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3Vs
dCA9IGhlYXBUeXBlOwpAQCAtMzMwLDIwICszMzAsMjQgQEAgQUxXQVlTX0lOTElORSBib29sIFBh
cnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JgogCiAgICAgVHlwZUtpbmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7
CiAgICAgYm9vbCBpc051bGxhYmxlID0gdHJ1ZTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRl
eCA9IDA7CisgICAgdW5zaWduZWQgdHlwZUluZGV4ID0gMDsgICAgCiAKICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpICYmICh0eXBlS2luZCA9
PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6RXh0ZXJucmVmKSkg
ewotICAgICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4Pih0eXBlS2lu
ZCk7CisgICAgICAgIHR5cGVJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlS2luZCk7
CiAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51bGw7CiAgICAgfSBlbHNlIGlmICh0
eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmIHx8IHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWZOdWxs
KSB7CiAgICAgICAgIGlzTnVsbGFibGUgPSB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbDsK
ICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAgaWYgKCFwYXJzZUhlYXBUeXBlKGlu
Zm8sIGhlYXBUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2lnSW5k
ZXggPSBoZWFwVHlwZSA8IDAgPyBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUp
IDogU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChpbmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBl
XS5nZXQoKSk7CisgICAgICAgIGlmIChoZWFwVHlwZSA8IDAgJiYgIWlzVmFsaWRIZWFwVHlwZUtp
bmQoc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGhlYXBUeXBlKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChoZWFwVHlwZSA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4o
aGVhcFR5cGUpID49IGluZm8udHlwZXNDb3VudCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB0eXBlSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcFR5cGUpOwog
ICAgIH0KIAotICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19jYXN0PE51bGxhYmxl
Pihpc051bGxhYmxlKSwgc2lnSW5kZXggfTsKKyAgICBUeXBlIHR5cGUgPSB7IHR5cGVLaW5kLCBz
dGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHR5cGVJbmRleCB9OwogICAgIGlmICgh
aXNWYWx1ZVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSB0
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwCmluZGV4IGE4ODk1Yzk1MTI5ZDMzYzdjMGNkYmY4NjY0ZTg5MGQ0YWYzNTEzYmEuLmM1YmJi
MmU3NzU0MjBkMzgxMzU2ODUxOTk3NTA4MTc4ODVkN2I2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTQ0LDQxICs0NCwzMyBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGNvdW50KSwgImNhbid0IGdldCBU
eXBlIHNlY3Rpb24ncyBjb3VudCIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY291bnQgPiBt
YXhUeXBlcywgIlR5cGUgc2VjdGlvbidzIGNvdW50IGlzIHRvbyBiaWcgIiwgY291bnQsICIgbWF4
aW11bSAiLCBtYXhUeXBlcyk7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT51c2Vk
U2lnbmF0dXJlcy50cnlSZXNlcnZlQ2FwYWNpdHkoY291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5v
dWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgY291bnQsICIgZW50cmllcyIpOworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby0+dHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGNv
dW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIs
IGNvdW50LCAiIGVudHJpZXMiKTsKIAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIGludDhfdCB0eXBlOwotICAgICAgICB1aW50MzJfdCBhcmd1bWVu
dENvdW50OwotICAgICAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRUeXBlczsKLQogICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUludDcodHlwZSksICJjYW4ndCBnZXQgIiwgaSwgInRo
IFR5cGUncyB0eXBlIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZSAhPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KFR5cGVLaW5kOjpGdW5jKSwgaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMg
IiwgdHlwZSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGFy
Z3VtZW50Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgYXJndW1lbnQgY291bnQi
KTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbWF4RnVuY3Rp
b25QYXJhbXMsIGksICJ0aCBhcmd1bWVudCBjb3VudCBpcyB0b28gYmlnICIsIGFyZ3VtZW50Q291
bnQsICIgbWF4aW11bSAiLCBtYXhGdW5jdGlvblBhcmFtcyk7Ci0gICAgICAgIFZlY3RvcjxUeXBl
PiBhcmd1bWVudHM7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3VtZW50cy50cnlS
ZXNlcnZlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewotICAgICAgICAg
ICAgVHlwZSBhcmd1bWVudFR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhbHVlVHlwZShtX2luZm8sIGFyZ3VtZW50VHlwZSksICJjYW4ndCBnZXQgIiwgaSwgInRo
IGFyZ3VtZW50IFR5cGUiKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnRU
eXBlKTsKKyAgICAgICAgVHlwZVJlY29yZCB0eXBlUmVjb3JkOworICAgICAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PFR5cGVLaW5kPih0eXBlKSkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5j
OiB7CisgICAgICAgICAgICBGdW5jVHlwZSBmdW5jVHlwZTsKKyAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvblR5cGUoaSwgZnVuY1R5cGUpKTsKKyAgICAg
ICAgICAgIHR5cGVSZWNvcmQgPSBUeXBlUmVjb3JkIHsgRnVuY1R5cGUgeyBXVEZNb3ZlKGZ1bmNU
eXBlKSB9IH07CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpTdHJ1Y3Q6IHsKKyAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlHQygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGksICJ0aCBUeXBlIGlzIG5vbi1G
dW5jICIsIHR5cGUpOwogCi0gICAgICAgIHVpbnQzMl90IHJldHVybkNvdW50OwotICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihyZXR1cm5Db3VudCksICJjYW4ndCBn
ZXQgIiwgaSwgInRoIFR5cGUncyByZXR1cm4gY291bnQiKTsKLQotICAgICAgICBWZWN0b3I8VHlw
ZSwgMT4gcmV0dXJuVHlwZXM7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJldHVyblR5
cGVzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIGVu
b3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGksICJ0aCBzaWduYXR1cmUiKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJldHVybkNvdW50OyArK2kpIHsKLSAgICAg
ICAgICAgIFR5cGUgdmFsdWU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhbHVlVHlwZShtX2luZm8sIHZhbHVlKSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJl
dHVybiB2YWx1ZSIpOwotICAgICAgICAgICAgcmV0dXJuVHlwZXMuYXBwZW5kKHZhbHVlKTsKKyAg
ICAgICAgICAgIFN0cnVjdFR5cGUgc3RydWN0VHlwZTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMocGFyc2VTdHJ1Y3RUeXBlKGksIHN0cnVjdFR5cGUpKTsKKyAgICAgICAg
ICAgIHR5cGVSZWNvcmQgPSBUeXBlUmVjb3JkIHsgV1RGTW92ZShzdHJ1Y3RUeXBlKSB9OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBmYWlsKGksICJ0aCBUeXBlIGlzIG5vbi1GdW5jICIsIHR5cGUpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPFNpZ25hdHVyZT4gc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3Jt
YXRpb246OnNpZ25hdHVyZUZvcihyZXR1cm5UeXBlcywgYXJndW1lbnRzKTsKLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighc2lnbmF0dXJlLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9y
eSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwotCi0gICAgICAgIG1f
aW5mby0+dXNlZFNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICAgICAgbV9pbmZvLT50eXBlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh0
eXBlUmVjb3JkKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMTMsMTAgKzEwNSwx
MCBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAog
ICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIHVpbnQz
Ml90IGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvblNpZ25hdHVyZUluZGV4KSwgImNhbid0IGdldCAi
LCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQncyBmdW5jdGlvbiBzaWduYXR1cmUgaW4gbW9kdWxl
ICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKLSAgICAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaWduYXR1cmVJbmRleCA+PSBtX2lu
Zm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgImludmFsaWQgZnVuY3Rpb24gc2lnbmF0dXJlIGZv
ciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgs
ICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAi
IGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICIn
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uU2lnbmF0dXJlSW5k
ZXggPj0gbV9pbmZvLT50eXBlc0NvdW50KCksICJpbnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSBm
b3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0LCAiLCBmdW5jdGlvblNpZ25hdHVyZUluZGV4
LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291bnQoKSwgIiBpbiBtb2R1
bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwogICAg
ICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXMuc2l6ZSgpOwotICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbZnVuY3Rpb25T
aWduYXR1cmVJbmRleF0pOwotICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25h
dHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAg
IFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChtX2luZm8tPmdldFNpZ25hdHVyZShmdW5jdGlvblNpZ25hdHVyZUluZGV4KSk7CisgICAgICAg
ICAgICBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBl
bmQoRnVuY3Rpb25EZXNjcmlwdGlvbiB7IHNpZ25hdHVyZUluZGV4LCBmdW5jdGlvblNpZ25hdHVy
ZUluZGV4IH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
eHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0xMzgsNyArMTMwLDcgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIEdsb2JhbElu
Zm9ybWF0aW9uIGdsb2JhbDsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMo
cGFyc2VHbG9iYWxUeXBlKGdsb2JhbCkpOwogICAgICAgICAgICAgLy8gT25seSBtdXRhYmxlIGds
b2JhbHMgbmVlZCBmbG9hdGluZyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGlmIChnbG9iYWwubXV0
YWJpbGl0eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSkKKyAgICAg
ICAgICAgIGlmIChnbG9iYWwubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpNdXRhYmxlKQogICAg
ICAgICAgICAgICAgIGdsb2JhbC5iaW5kaW5nTW9kZSA9IEdsb2JhbEluZm9ybWF0aW9uOjpCaW5k
aW5nTW9kZTo6UG9ydGFibGU7CiAgICAgICAgICAgICBraW5kSW5kZXggPSBtX2luZm8tPmdsb2Jh
bHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pbmZvLT5nbG9iYWxzLnVuY2hlY2tlZEFwcGVuZChX
VEZNb3ZlKGdsb2JhbCkpOwpAQCAtMTUzLDkgKzE0NSw5IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAgICAgIHVpbnQzMl90IGV4
Y2VwdGlvblNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIGlt
cG9ydE51bWJlciwgInRoIEltcG9ydCdzIGV4Y2VwdGlvbiBzaWduYXR1cmUgaW4gbW9kdWxlICci
LCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKLSAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZv
LT51c2VkU2lnbmF0dXJlcy5zaXplKCksICJpbnZhbGlkIGV4Y2VwdGlvbiBzaWduYXR1cmUgZm9y
ICIsIGltcG9ydE51bWJlciwgInRoIEltcG9ydCwgIiwgZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgs
ICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAi
IGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICIn
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGV4Y2VwdGlvblNpZ25hdHVyZUlu
ZGV4ID49IG1faW5mby0+dHlwZXNDb3VudCgpLCAiaW52YWxpZCBleGNlcHRpb24gc2lnbmF0dXJl
IGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGV4Y2VwdGlvblNpZ25hdHVyZUlu
ZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291bnQoKSwgIiBpbiBt
b2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwog
ICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRFeGNlcHRpb25TaWduYXR1cmVJ
bmRpY2VzLnNpemUoKTsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWduYXR1cmVzW2V4Y2Vw
dGlvblNpZ25hdHVyZUluZGV4XSk7CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1
cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT5nZXRTaWduYXR1cmUo
ZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgpKTsKICAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RXhj
ZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlSW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3OSwxMyArMTcxLDEzIEBAIGF1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICB1aW50MzJfdCB0eXBl
TnVtYmVyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0eXBl
TnVtYmVyKSwgImNhbid0IGdldCAiLCBpLCAidGggRnVuY3Rpb24ncyB0eXBlIG51bWJlciIpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9pbmZvLT51c2VkU2ln
bmF0dXJlcy5zaXplKCksIGksICJ0aCBGdW5jdGlvbiB0eXBlIG51bWJlciBpcyBpbnZhbGlkICIs
IHR5cGVOdW1iZXIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0g
bV9pbmZvLT50eXBlc0NvdW50KCksIGksICJ0aCBGdW5jdGlvbiB0eXBlIG51bWJlciBpcyBpbnZh
bGlkICIsIHR5cGVOdW1iZXIpOwogCi0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWduYXR1cmVzW3R5
cGVOdW1iZXJdKTsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+Z2V0U2lnbmF0dXJlKHR5cGVOdW1iZXIpKTsK
ICAgICAgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBmaXhlcyB1cCBzdGFydCBhbmQgZW5kLgogICAg
ICAgICBzaXplX3Qgc3RhcnQgPSAwOwogICAgICAgICBzaXplX3QgZW5kID0gMDsKLSAgICAgICAg
bV9pbmZvLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQo
c2lnbmF0dXJlSW5kZXgpOworICAgICAgICBtX2luZm8tPmludGVybmFsRnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRlc2NyaXB0aW9uIHsgc2lnbmF0dXJl
SW5kZXgsIHR5cGVOdW1iZXIgfSk7CiAgICAgICAgIG1faW5mby0+ZnVuY3Rpb25zLnVuY2hlY2tl
ZEFwcGVuZCh7IHN0YXJ0LCBlbmQsIFZlY3Rvcjx1aW50OF90PigpIH0pOwogICAgIH0KIApAQCAt
MzcxLDcgKzM2Myw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGtpbmRJbmRleCA+PSBt
X2luZm8tPmdsb2JhbHMuc2l6ZSgpLCBleHBvcnROdW1iZXIsICJ0aCBFeHBvcnQgaGFzIGludmFs
aWQgZ2xvYmFsIG51bWJlciAiLCBraW5kSW5kZXgsICIgaXQgZXhjZWVkcyB0aGUgZ2xvYmFscyBj
b3VudCAiLCBtX2luZm8tPmdsb2JhbHMuc2l6ZSgpLCAiLCBuYW1lZCAnIiwgZmllbGRTdHJpbmcs
ICInIik7CiAgICAgICAgICAgICAvLyBPbmx5IG11dGFibGUgZ2xvYmFscyBuZWVkIGZsb2F0aW5n
IGJpbmRpbmdzLgogICAgICAgICAgICAgR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9IG1faW5m
by0+Z2xvYmFsc1traW5kSW5kZXhdOwotICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5
ID09IEdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKQorICAgICAgICAgICAg
aWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IE11dGFiaWxpdHk6Ok11dGFibGUpCiAgICAgICAgICAg
ICAgICAgZ2xvYmFsLmJpbmRpbmdNb2RlID0gR2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2Rl
OjpQb3J0YWJsZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02MDksNyArNjAx
LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwg
dWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKIAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKGluZGV4ID49IG1faW5mby0+Z2xvYmFscy5zaXplKCksICJnZXRfZ2xvYmFsJ3MgaW5kZXgg
IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGdsb2JhbHMgIiwgbV9pbmZvLT5nbG9i
YWxzLnNpemUoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZv
LT5maXJzdEludGVybmFsR2xvYmFsLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBp
bmRleCwgIiBleGNlZWRzIHRoZSBmaXJzdCBpbnRlcm5hbCBnbG9iYWwgIiwgbV9pbmZvLT5maXJz
dEludGVybmFsR2xvYmFsKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmds
b2JhbHNbaW5kZXhdLm11dGFiaWxpdHkgIT0gR2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSwg
ImdldF9nbG9iYWwgaW1wb3J0IGtpbmQgaW5kZXggIiwgaW5kZXgsICIgaXMgbXV0YWJsZSAiKTsK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNbaW5kZXhdLm11dGFi
aWxpdHkgIT0gTXV0YWJpbGl0eTo6SW1tdXRhYmxlLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBp
bmRleCAiLCBpbmRleCwgIiBpcyBtdXRhYmxlICIpOwogCiAgICAgICAgIHJlc3VsdFR5cGUgPSBt
X2luZm8tPmdsb2JhbHNbaW5kZXhdLnR5cGU7CiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9
IGluZGV4OwpAQCAtNjIxLDExICs2MTMsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5p
dEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KSB7CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhl
YXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAg
ICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMs
IHNpZ25hdHVyZUluZGV4IH07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0
eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0
aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIH07CisgICAgICAgICAgICB0eXBlT2ZO
dWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaGVhcFR5cGUpIH07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgdHlwZU9mTnVsbCksICJyZWYu
bnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOwogCkBAIC02MzUsMTcgKzYyMywx
NiBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1
aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgIH0KIAogICAgIGNhc2UgUmVmRnVuYzog
ewotICAgICAgICB1aW50MzJfdCBpbmRleDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIoaW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7Ci0gICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgp
LCAicmVmLmZ1bmMgaW5kZXgiLCBpbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rp
b25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7CisgICAgICAgIHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1
bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCks
ICJyZWYuZnVuYyBpbmRleCIsIGZ1bmN0aW9uSW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9m
IGZ1bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOwogCiAgICAgICAgIGlmIChP
cHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAg
ICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLT5zaWduYXR1cmVJ
bmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICAgICAgcmVzdWx0VHlw
ZSA9IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9OworICAg
ICAgICAgICAgcmVzdWx0VHlwZSA9IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2lu
Zm8tPmdldFR5cGVJbmRleEZvckZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXgpIH07CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVmOwogCi0gICAgICAg
IGJpdHNPckltcG9ydE51bWJlciA9IGluZGV4OworICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIg
PSBmdW5jdGlvbkluZGV4OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTY4MCw2ICs2Njcs
NjAgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByKHN0ZDo6b3B0aW9uYWw8
STMySW5pdEV4cHI+JiBpbml0RXhwciwgQVNDSUkKICAgICByZXR1cm4geyB9OwogfQogCithdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBGdW5j
VHlwZSYgZnVuY1R5cGUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCBhcmd1bWVu
dENvdW50OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGFyZ3VtZW50
Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIHBvc2l0aW9uLCAidGggVHlwZSdzIGFyZ3VtZW50IGNvdW50
Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbWF4RnVuY3Rpb25Q
YXJhbXMsIHBvc2l0aW9uLCAidGggYXJndW1lbnQgY291bnQgaXMgdG9vIGJpZyAiLCBhcmd1bWVu
dENvdW50LCAiIG1heGltdW0gIiwgbWF4RnVuY3Rpb25QYXJhbXMpOworICAgIFZlY3RvcjxUeXBl
PiBhcmd1bWVudFR5cGVzOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3VtZW50VHlwZXMu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdo
IG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgcG9zaXRpb24sICJ0aCBzaWduYXR1cmUiKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKKyAg
ICAgICAgVHlwZSBhcmd1bWVudFR5cGU7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFsdWVUeXBlKG1faW5mbywgYXJndW1lbnRUeXBlKSwgImNhbid0IGdldCAiLCBpLCAidGgg
YXJndW1lbnQgVHlwZSIpOworICAgICAgICBhcmd1bWVudFR5cGVzLmFwcGVuZChhcmd1bWVudFR5
cGUpOworICAgIH0KKworICAgIHVpbnQzMl90IHJldHVybkNvdW50OworICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHJldHVybkNvdW50KSwgImNhbid0IGdldCAiLCBwb3Np
dGlvbiwgInRoIFR5cGUncyByZXR1cm4gY291bnQiKTsKKworICAgIFZlY3RvcjxUeXBlLCAxPiBy
ZXR1cm5UeXBlczsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZXR1cm5UeXBlcy50cnlSZXNl
cnZlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5
IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBwb3NpdGlvbiwgInRoIHNpZ25hdHVyZSIpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXR1cm5Db3VudDsgKytpKSB7CisgICAgICAgIFR5cGUg
dmFsdWU7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5m
bywgdmFsdWUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVlIik7Cisg
ICAgICAgIHJldHVyblR5cGVzLmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgZnVuY1R5cGUu
c2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcihyZXR1cm5UeXBl
cywgYXJndW1lbnRUeXBlcyk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZnVuY1R5cGUuc2ln
bmF0dXJlLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3Mg
IiwgcG9zaXRpb24sICJ0aCBzaWduYXR1cmUiKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VTdHJ1Y3RUeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBTdHJ1
Y3RUeXBlJiBzdHJ1Y3RUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5R0MoKSk7CisKKyAgICB1aW50MzJfdCBmaWVsZENvdW50OworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZpZWxkQ291bnQpLCAiY2FuJ3Qg
Z2V0ICIsIHBvc2l0aW9uLCAidGggc3RydWN0IHR5cGUncyBmaWVsZCBjb3VudCIpOworICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoZmllbGRDb3VudCA+IG1heFN0cnVjdHNGaWVsZHMsICJudW1iZXIg
b2YgZmllbGRzIGZvciBzdHJ1Y3QgdHlwZSBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBpcyB0
b28gYmlnICIsIGZpZWxkQ291bnQsICIgbWF4aW11bSAiLCBtYXhTdHJ1Y3RzRmllbGRzKTsKKyAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFzdHJ1Y3RUeXBlLmZpZWxkcy50cnlSZXNlcnZlQ2FwYWNp
dHkoZmllbGRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1Y3Qg
ZmllbGRzICIsIGZpZWxkQ291bnQsICIgZW50cmllcyIpOworCisgICAgZm9yICh1aW50MzJfdCBm
aWVsZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkQ291bnQ7ICsrZmllbGRJbmRleCkgewor
ICAgICAgICBUeXBlIGZpZWxkVHlwZTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYWx1ZVR5cGUobV9pbmZvLCBmaWVsZFR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGZpZWxkSW5kZXgs
ICJ0aCBmaWVsZCBUeXBlIik7CisKKyAgICAgICAgdWludDhfdCBtdXRhYmlsaXR5OworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxpdHkpLCBwb3NpdGlvbiwg
ImNhbid0IGdldCAiLCBmaWVsZEluZGV4LCAidGggZmllbGQgbXV0YWJpbGl0eSIpOworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKG11dGFiaWxpdHkgIT0gMHgwICYmIG11dGFiaWxpdHkgIT0g
MHgxLCAiaW52YWxpZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4IiwgaGV4KG11dGFiaWxpdHksIDIs
IExvd2VyY2FzZSkpOworCisgICAgICAgIHN0cnVjdFR5cGUuZmllbGRzLnVuY2hlY2tlZEFwcGVu
ZChTdHJ1Y3RGaWVsZCB7IGZpZWxkVHlwZSwgc3RhdGljX2Nhc3Q8TXV0YWJpbGl0eT4obXV0YWJp
bGl0eSkgfSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJ
bml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmV0dXJuIHBhcnNl
STMySW5pdEV4cHIoaW5pdEV4cHIsICJFbGVtZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4g
aTMyIl9zKTsKQEAgLTc1OCw3ICs3OTksNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xv
YmFsVHlwZShHbG9iYWxJbmZvcm1hdGlvbiYgZ2xvYmFsKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBnbG9iYWwudHlwZSks
ICJjYW4ndCBnZXQgR2xvYmFsJ3MgdmFsdWUgdHlwZSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVUludDgobXV0YWJpbGl0eSksICJjYW4ndCBnZXQgR2xvYmFsIHR5cGUncyBtdXRh
YmlsaXR5Iik7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtdXRhYmlsaXR5ICE9IDB4MCAmJiBt
dXRhYmlsaXR5ICE9IDB4MSwgImludmFsaWQgR2xvYmFsJ3MgbXV0YWJpbGl0eTogMHgiLCBoZXgo
bXV0YWJpbGl0eSwgMiwgTG93ZXJjYXNlKSk7Ci0gICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0
aWNfY2FzdDxHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eT4obXV0YWJpbGl0eSk7CisgICAg
Z2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxNdXRhYmlsaXR5PihtdXRhYmlsaXR5KTsK
ICAgICByZXR1cm4geyB9OwogfQogCkBAIC04NjcsOCArOTA4LDggQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUV4Y2VwdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgICAgICB1aW50MzJf
dCB0eXBlTnVtYmVyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih0eXBlTnVtYmVyKSwgImNhbid0IGdldCAiLCBleGNlcHRpb25OdW1iZXIsICJ0aCBFeGNlcHRp
b24ncyB0eXBlIG51bWJlciIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1i
ZXIgPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksIGV4Y2VwdGlvbk51bWJlciwgInRo
IEV4Y2VwdGlvbiB0eXBlIG51bWJlciBpcyBpbnZhbGlkICIsIHR5cGVOdW1iZXIpOwotICAgICAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1t0eXBlTnVtYmVyXSk7CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYodHlwZU51bWJlciA+PSBtX2luZm8tPnR5cGVzQ291bnQoKSwgZXhjZXB0aW9u
TnVtYmVyLCAidGggRXhjZXB0aW9uIHR5cGUgbnVtYmVyIGlzIGludmFsaWQgIiwgdHlwZU51bWJl
cik7CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5m
b3JtYXRpb246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZSh0eXBlTnVtYmVyKSk7CiAgICAgICAg
IG1faW5mby0+aW50ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVu
ZChzaWduYXR1cmVJbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA5MWZkM2VkODM0MjI1YzgxM2UyZDAxMzkyYjQ5
ZThkOWMzYmUyYjg3Li40YjBjMzIyZGJlMWJhNjRlMmU0ZDlmNzI2MGFiMmE4OTc2MzgxYjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAg
LTY5LDYgKzY5LDkgQEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUluaXRFeHByKHVpbnQ4X3QmLCB1aW50NjRfdCYsIFR5cGUmIGluaXRFeHByVHlw
ZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhw
cihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYsIEFTQ0lJTGl0ZXJhbCBmYWlsTWVzc2FnZSk7
CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlw
ZSh1aW50MzJfdCBwb3NpdGlvbiwgRnVuY1R5cGUmKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBwYXJzZVN0cnVjdFR5cGUodWludDMyX3QgcG9zaXRpb24sIFN0cnVjdFR5
cGUmKTsKKwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxl
bWVudFRhYmxlSWR4KHVpbnQzMl90KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJ
bml0RXhwcj4mKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVs
ZW1lbnRLaW5kKHVpbnQ4X3QmIGVsZW1lbnRLaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TaWduYXR1cmUuaAppbmRleCAzYWNlOWFmYjE3NTc4OTY2MzgyYTcwYjk1MGVjYjM4
YjlmNDcwNmY2Li4zZDRhOGIxZDg0MTA1N2FlYTg0ZDk1MWJlOTBjMGU3NGE1YzI0MDcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCkBAIC00MSw2ICs0MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBTaWduYXR1cmVB
cmdDb3VudCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiAK
IGNsYXNzIFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQppbmRleCA2NTc2YTY5YzU2ODM1
M2FiNjc3YjhlMWI0Yzg0MTQ2YTc0YzAzNWZmLi42M2U5NGRiYzJlOGFlNDU0MmE3OWQ4YWFjOTIw
YjA2ZDBlMDFhOGU0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5l
cmF0ZVdhc21PcHNIZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2Vu
ZXJhdGVXYXNtT3BzSGVhZGVyLnB5CkBAIC0yMTgsMTIgKzIxOCwxMCBAQCBlbnVtIGNsYXNzIE51
bGxhYmxlIDogYm9vbCB7CiAgIFllcyA9IHRydWUsCiB9OwogCi11c2luZyBTaWduYXR1cmVJbmRl
eCA9IHVpbnRwdHJfdDsKLQogc3RydWN0IFR5cGUgewogICAgIFR5cGVLaW5kIGtpbmQ7CiAgICAg
TnVsbGFibGUgbnVsbGFibGU7Ci0gICAgU2lnbmF0dXJlSW5kZXggaW5kZXg7CisgICAgdW5zaWdu
ZWQgaW5kZXg7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYgb3RoZXIpIGNvbnN0
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrLmNwcAppbmRleCA1NGU5NzQxNGI2NjI2MDM0ZjEzMGUxNWQ0OTNk
N2M5NTBlMzgxNTc1Li43MTVmMGE3ZWQ3MWM5OTM1MzJlOTllMzljOGRlZmY1MWM4YmYwMjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmNwcApAQCAtNTIsNyArNTIsNyBAQCBKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
OjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiB2bSwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiBj
bwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NjcK
ICAgICBtX3dhc21Ub0pTRXhpdFN0dWJzLnJlc2VydmVDYXBhY2l0eShtX2NvZGVCbG9jay0+ZnVu
Y3Rpb25JbXBvcnRDb3VudCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGltcG9ydEluZGV4ID0gMDsg
aW1wb3J0SW5kZXggPCBtX2NvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpOyArK2ltcG9y
dEluZGV4KSB7Ci0gICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLmF0KGltcG9y
dEluZGV4KTsKKyAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
b2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuYXQoaW1wb3J0
SW5kZXgpLnNpZ25hdHVyZUluZGV4OwogICAgICAgICBhdXRvIGJpbmRpbmcgPSBXYXNtOjp3YXNt
VG9KUyh2bSwgbV9jYWxsTGlua0luZm9zLCBzaWduYXR1cmVJbmRleCwgaW1wb3J0SW5kZXgpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJp
bmRpbmcuZXJyb3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcAppbmRleCA3Njk1ZDc3MGMxZDU4NDM4YTBhMzA2MjM0
MDk5OWZiOTAwZWJjNjIyLi4yYzIzY2Q1NDQ2NzE5MzY1MTIwYzg5ZjgyMDcwMjcwNjNiMThhMGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
R2xvYmFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5R2xvYmFsLmNwcApAQCAtODgsNyArODgsNyBAQCBKU09iamVjdCogSlNXZWJBc3NlbWJseUds
b2JhbDo6dHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNPYmplY3Qq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSwgMik7CiAKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm11dGFibGUiKSwganNCb29sZWFuKG1fZ2xvYmFsLT5t
dXRhYmlsaXR5KCkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFibGUpKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm11dGFibGUi
KSwganNCb29sZWFuKG1fZ2xvYmFsLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6TXV0YWJsZSkpOwog
CiAgICAgV2FzbTo6VHlwZSB2YWx1ZVR5cGUgPSBtX2dsb2JhbC0+dHlwZSgpOwogICAgIEpTU3Ry
aW5nKiB2YWx1ZVN0cmluZyA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5kZXggYTZkNjRlZTM0NWZiYzdhNDNj
ZTFjNWU0Y2EzZDc3NzI0YTAwM2NjOS4uYTkxMzVlMzRhOTY0YzViNjQ4NjhiYTg4ZDIzZTQ0YjE0
YjcyMDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2FzbSB7CiBjbGFz
cyBNb2R1bGU7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQbGFuOwordXNpbmcg
U2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiB9CiAKIGNsYXNzIFN5bWJvbFRhYmxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCmluZGV4IDU4MTA0MWIzY2Ez
NDMzYzdhZmFiZjFiZTM0Njc1ZGFiN2Q0YTRmZDYuLjY2YTkyMTNlOWE0YTEzYTk4ZWQ2ZTczOTA1
MGNmYzMxMjQ1NTE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAg
ICAgICAgc3dpdGNoIChhcmdUeXBlLmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoK
ICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgpAQCAtMTc4LDYgKzE3OSw3
IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUu
a2luZCkgewogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAg
ICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6UmVmOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIEhhbmRsZWQgYWJvdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCmluZGV4IDBiOTYz
MWVhNTQ2NTQ1Zjc2YTMyZTg3MmQzOTc4ZTBmNThjODA4ZWMuLmE4ZTIwYzc5MDM3YTY0MzdjMWY2
ZmJkN2FhMTI2OTAzMjJlZTQwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCkBAIC02
Niw3ICs2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5R2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGdsb2JhbERlc2Ny
aXB0b3IgPSBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCi0gICAgV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eTsKKyAgICBXYXNtOjpNdXRh
YmlsaXR5IG11dGFiaWxpdHk7CiAgICAgewogICAgICAgICBJZGVudGlmaWVyIG11dGFibGVJZGVu
dCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIik7CiAgICAgICAgIEpTVmFs
dWUgbXV0YWJsZVZhbHVlID0gZ2xvYmFsRGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgbXV0
YWJsZUlkZW50KTsKQEAgLTc0LDkgKzc0LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNv
bnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAg
ICAgICAgYm9vbCBtdXRhYmxlQm9vbGVhbiA9IG11dGFibGVWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKG11dGFibGVCb29sZWFuKQotICAgICAgICAgICAgbXV0
YWJpbGl0eSA9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmxlOworICAgICAgICAgICAg
bXV0YWJpbGl0eSA9IFdhc206Ok11dGFibGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG11
dGFiaWxpdHkgPSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlOworICAgICAgICAg
ICAgbXV0YWJpbGl0eSA9IFdhc206OkltbXV0YWJsZTsKICAgICB9CiAKICAgICBXYXNtOjpUeXBl
IHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUdsb2JhbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKaW5kZXggYzdiM2Q2ZjdlOTQ1MTFjMThhZGZk
N2E3NmM4OTIxOTY5MDY0ZTk1Yy4uZGI4ZDkwNGFkZDc0MjZlZTg3YTJkZWQ4YmMyMGI0NjhhYWYx
NDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlHbG9iYWxQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseUdsb2JhbFByb3RvU2V0dGVyRnVuY1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSlNXZWJBc3NlbWJseUdsb2JhbCogZ2xvYmFsID0gZ2V0
R2xvYmFsKGdsb2JhbE9iamVjdCwgdm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBp
ZiAoZ2xvYmFsLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbEluZm9ybWF0
aW9uOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpCisgICAgaWYgKGdsb2JhbC0+Z2xvYmFsKCktPm11
dGFiaWxpdHkoKSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuR2xvYmFsLnByb3Rv
dHlwZS52YWx1ZSBhdHRlbXB0cyB0byBtb2RpZnkgaW1tdXRhYmxlIGdsb2JhbCB2YWx1ZSJfcykp
KTsKIAogICAgIGdsb2JhbC0+Z2xvYmFsKCktPnNldChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDA2NGFjNjk5MTNjOGQ2YTFiMTg4
YWRkYmNlNDRjZDhjY2Q0OGY2ZTkuLjExNTY4YTFlMjg4MTY2NTdjNDYzNDYxMTdlOGNhZDMxOTA2
YzVlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogICAgICAgICAgICAgICAgICAgICAvLyBiLiBMZXQgY2xvc3VyZSBiZSB2
LltbQ2xvc3VyZV1dLgogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHdhc21XcmFwcGVy
RnVuY3Rpb24tPmZ1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZv
cm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRleF07
CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0ZWRTaWduYXR1cmVJ
bmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tp
bXBvcnQua2luZEluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgICAgICBpZiAoaW1w
b3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
Z2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZnVu
Y3Rpb24iLCAic2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIFdlYkFzc2VtYmx5
IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIikpKTsKICAgICAgICAgICAgIH0KQEAgLTI1MCwxMiArMjUw
LDEyIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5k
RXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJu
YWxLaW5kOjpHbG9iYWw6IHsKICAgICAgICAgICAgIC8vIDUuIElmIGkgaXMgYSBnbG9iYWwgaW1w
b3J0OgogICAgICAgICAgICAgY29uc3QgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9
IG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF07Ci0gICAgICAgICAg
ICBpZiAoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0
YWJsZSkgeworICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206OkltbXV0
YWJsZSkgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmhlcml0czxKU1dlYkFzc2VtYmx5
R2xvYmFsPih2bSkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJseUdsb2JhbCog
Z2xvYmFsVmFsdWUgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUdsb2JhbCo+KHZhbHVlKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+dHlwZSgpICE9IGdsb2Jh
bC50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdl
KGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgc2FtZSB0eXBlIikpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgp
ICE9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPm11dGFiaWxpdHkoKSAhPSBXYXNtOjpJbW11
dGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2Uo
aW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBzYW1lIG11dGFiaWxpdHkiKSkp
OwogICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBkZWNsYXJlZEdsb2JhbFR5cGUgPSBt
b2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGU7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZGVjbGFyZWRHbG9iYWxUeXBlLmtpbmQpIHsKQEAgLTUwMSw4
ICs1MDEsOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0
c0FuZEV4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlv
bjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOiB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRh
YmxlKTsKLSAgICAgICAgICAgICAgICBSZWY8V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBXYXNt
OjpHbG9iYWw6OmNyZWF0ZShnbG9iYWwudHlwZSwgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11
dGFiaWxpdHk6Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
Z2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJsZSk7CisgICAgICAgICAgICAgICAgUmVm
PFdhc206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xvYmFsOjpjcmVhdGUoZ2xvYmFsLnR5
cGUsIFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUsIGluaXRpYWxCaXRzKTsKICAgICAgICAgICAg
ICAgICBKU1dlYkFzc2VtYmx5R2xvYmFsKiBnbG9iYWxWYWx1ZSA9IEpTV2ViQXNzZW1ibHlHbG9i
YWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5
R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7CiAgICAgICAgICAgICAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5s
aW5rR2xvYmFsKHZtLCBnbG9iYWxJbmRleCwgZ2xvYmFsVmFsdWUpOwpAQCAtNTU3LDEyICs1NTcs
MTIgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRF
eHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICAgICAgICAgICAgICAgICAgZXhwb3J0
ZWRWYWx1ZSA9IEpTV2ViQXNzZW1ibHlHbG9iYWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZt
LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xv
YmFsUmVmKSk7CiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGds
b2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpN
dXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09
IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmdldEdsb2Jh
bEJpbmRpbmcoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9i
YWxSZWYpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT50eXBlKCkgPT0g
Z2xvYmFsLnR5cGUpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVmLT5tdXRh
YmlsaXR5KCkgPT0gZ2xvYmFsLm11dGFiaWxpdHkpOwotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZ2xvYmFsUmVmLT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11
dGFiaWxpdHk6Ok11dGFibGUpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsUmVm
LT5tdXRhYmlsaXR5KCkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxSZWYtPm93bmVyPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkp
OwogICAgICAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gZ2xvYmFsUmVmLT5vd25lcjxK
U1dlYkFzc2VtYmx5R2xvYmFsPigpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL3dhc20uanNvbgppbmRleCAzMmM4YWY4YmJmNTdlYTYwNWIzMzU1YTU2ZDg4MmU4ZGRl
MWUwZWVkLi43NDI4MTJjZGViMDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICJy
ZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjog
IkIzOjpJbnQ2NCIgfSwKICAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6
ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6
Vm9pZCIgfSwKKyAgICAgICAgInN0cnVjdCI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgICB7
ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9
CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0Iiwg
ImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU5MjZlNDRmYTgxNGMxMzFmNjNmOWUwOTgwNzA1MmEx
NjA2NTRhYzAuLjFhODQxOWI3MTc0NmY0OWI1ZmI4NDk1MmEwMDA0YmJlOTMzMDRhOTggMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdh
bGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVjdHMg
dHlwZXMgZW5jb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWRkIHNpbXBsZSB0ZXN0cyBmb3IgcGFyc2luZyBXYXNtIHN0cnVjdHMu
CisgICAgICAgIAorICAgICAgICAqIHdhc20ueWFtbDoKKyAgICAgICAgKiB3YXNtL2djL3N0cnVj
dHMuanM6IEFkZGVkLgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKHRlc3RTdHJ1Y3REZWNs
YXJhdGlvbik6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMTEtMTkgIEFzdW11
IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggV2ViQXNzZW1ibHkg
bWVtb3J5LmZpbGwgb3V0IG9mIGJvdW5kcyBlcnJvciBtZXNzYWdlCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20ueWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCmluZGV4IDAwNmMzM2JlNzgzNzkzN2Y1
NTQwOGNiZTg2ZjY2ODI2ZTI5NGE5MjguLjk0ZDZkNGYyN2VmOTZhYzBkNzhhMjc3Nzk3NmVlMjRm
NjExYWMzYTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1sCisrKyBiL0pTVGVzdHMvd2Fz
bS55YW1sCkBAIC0zNSw2ICszNSw4IEBACiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxl
c3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMKICAg
Y21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCistIHBhdGg6
IHdhc20vZ2MKKyAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1h
bmRzCiAtIHBhdGg6IHdhc20vZnV6egogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNz
IHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDogd2FzbS9sb3dFeGVjdXRhYmxlTWVtb3J5CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcyBiL0pTVGVzdHMvd2FzbS9nYy9zdHJ1
Y3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIzOGIyMjEzMTE5OTIxNzAzOTJiNGJkMGY1NjFjMjZmYjAxN2Nk
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcwpAQCAtMCww
ICsxLDgzIEBACisvL0AgcnVuV2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzPXRydWUiLCAiLS11c2VXZWJBc3NlbWJseUdDPXRydWUiKQorCitp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKK2ltcG9ydCB7IGluc3RhbnRp
YXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVyLmpzIjsKKworZnVuY3Rpb24gbW9kdWxlKGJ5dGVz
LCB2YWxpZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5s
ZW5ndGgpOworICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgIGZvciAobGV0
IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2aWV3W2ldID0gYnl0ZXMuY2hh
ckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIp
OworfQorCitmdW5jdGlvbiB0ZXN0U3RydWN0RGVjbGFyYXRpb24oKSB7CisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0KSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHgwM1x4MDFceDVmXHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5
cGUgKHN0cnVjdCAoZmllbGQgaTMyKSkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
MDVceDAxXHg1Zlx4MDFceDdmXHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHR5cGUgKHN0cnVjdCAoZmllbGQgaTMyKSAoZmllbGQgaTMyKSkpCisgICAqICkKKyAgICovCisg
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4MDdceDAxXHg1Zlx4MDJceDdmXHgwMFx4N2ZceDAwIikpOworCisgIC8q
CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCAobXV0IGkzMikpKSkK
KyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNVx4MDFceDVmXHgwMVx4N2ZceDAxIikp
OworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmll
bGQgKG11dCBpMzIpIChtdXQgaTMyKSkpKQorICAgKiAgICh0eXBlICRMaW5lIChzdHJ1Y3QgKGZp
ZWxkIChtdXQgKHJlZiAkUG9pbnQpKSAobXV0IChyZWYgJFBvaW50KSkpKSkKKyAgICogKQorICAg
Ki8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDJceDVmXHgwMlx4N2ZceDAxXHg3Zlx4MDFceDVmXHgw
Mlx4NmJceDAwXHgwMVx4NmJceDAwXHgwMSIpKTsKKworICAvKgorICAgKiB0b28gbWFueSBmaWVs
ZHMKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkIGkzMikpKQorICAg
KiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBtb2R1bGUoCisg
ICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4NWZc
eGZmXHhmZlx4ZmZceDdmXHgwMCIKKyAgICAgICksCisgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVy
cm9yLAorICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE2OiBu
dW1iZXIgb2YgZmllbGRzIGZvciBzdHJ1Y3QgdHlwZSBhdCBwb3NpdGlvbiAwIGlzIHRvbyBiaWcg
MjY4NDM1NDU1IG1heGltdW0gMTAwMDAwMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZShidWZmZXIpJykiCisgICk7CisKKyAgLyoKKyAgICogaW52YWxpZCBtdXRhYmlsaXR5Cisg
ICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCAobXV0IGkzMikpKSkKKyAg
ICogKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAor
ICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNVx4MDFceDVm
XHgwMVx4N2ZceDAyIgorICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisg
ICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTU6IGludmFsaWQg
RmllbGQncyBtdXRhYmlsaXR5OiAweDAyIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJ1ZmZlciknKSIKKyAgKTsKK30KKwordGVzdFN0cnVjdERlY2xhcmF0aW9uKCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpp
bmRleCAzMmM4YWY4YmJmNTdlYTYwNWIzMzU1YTU2ZDg4MmU4ZGRlMWUwZWVkLi43NDI4MTJjZGVi
MDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
d2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTE2LDYgKzE2LDcgQEAK
ICAgICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjAs
ICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAicmVmIjogICAgICAgeyAidHlwZSI6
ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMSwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAg
ICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMyLCAiYjN0
eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAic3RydWN0IjogICAgeyAidHlwZSI6ICJ2YXJp
bnQ3IiwgInZhbHVlIjogIC0zMywgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZv
aWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAi
QjM6OlZvaWQiIH0KICAgICB9LAogICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYz
MiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>