<?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>231797</bug_id>
          
          <creation_ts>2021-10-14 23:26:42 -0700</creation_ts>
          <short_desc>Revert r284230, my last fixes to the watch build make it break tests</short_desc>
          <delta_ts>2021-10-15 00:36:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229353</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>229353</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804713</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 23:26:42 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=231795 for details of what went wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804714</commentid>
    <comment_count>1</comment_count>
      <attachid>441338</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 23:30:06 -0700</bug_when>
    <thetext>Created attachment 441338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804723</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-15 00:35:41 -0700</bug_when>
    <thetext>Committed r284237 (243046@main): &lt;https://commits.webkit.org/243046@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441338.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804724</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-15 00:36:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84291754&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441338</attachid>
            <date>2021-10-14 23:30:06 -0700</date>
            <delta_ts>2021-10-15 00:35:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchRevert</filename>
            <type>text/plain</type>
            <size>268061</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZTRkY2Q3ZTcxYzA1Li44MzNiYTc1ZThhZTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMTAtMTQgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjI4
NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzk3
CisKKyAgICAgICAgVW5yZXZpZXdlZC4KKworICAgICAgICAqIHN0cmVzcy9iaWctd2FzbS1tZW1v
cnktZ3Jvdy1uby1tYXguanM6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYmln
LXdhc20tbWVtb3J5LWdyb3cuanM6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5
cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKGdldEFycmF5TGVu
Z3RoKTogRGVsZXRlZC4KKyAgICAgICAgKGdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKHB1
dEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN0
cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBSZW1vdmVkLgorICAgICAgICAo
Z2V0QXJyYXlMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoZ2V0QnlWYWwpOiBEZWxldGVkLgor
ICAgICAgICAocHV0QnlWYWwpOiBEZWxldGVkLgorICAgICAgICAodGVzdCk6IERlbGV0ZWQuCisg
ICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzOiBSZW1v
dmVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoZ2V0QnlW
YWwpOiBEZWxldGVkLgorICAgICAgICAocHV0QnlWYWwpOiBEZWxldGVkLgorICAgICAgICAodGVz
dCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIuanM6CisgICAgICAgICogd2FzbS9y
ZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9T
SVpFLmpzOgorCiAyMDIxLTEwLTE0ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKaW5kZXggZjg2NTg5MzM2ZGNhLi5l
YjQ4MDI3MWFhMmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMKQEAgLTEsNSArMSw0IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAo
JGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCi0v
L0AgcnVuRGVmYXVsdCgpCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAogCiBmdW5jdGlvbiB0
ZXN0KCkgewogCkBAIC0yNSwyNSArMjQsMTkgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAg
IGxldCBtYXhTaXplID0gMHgxMDAwMDsKLSAgICB7Ci0gICAgICAgIHZhciBtZW1vcnkgPSBuZXcg
V2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwIH0pOwotICAgICAgICBtZW1vcnku
Z3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWlu
dDhBcnJheShtZW1vcnkuYnVmZmVyKSk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkK
LSAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7
Ci0gICAgfQotCiAgICAgdmFyIG9rID0gZmFsc2U7CiAgICAgdHJ5IHsKICAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAg
ICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDAgKyAxKTsKKyAgICAgICAgbWVtb3J5Lmdy
b3coMHg3MDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1v
cnkuYnVmZmVyKSk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICAgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CiAgICAgICAgIG9r
ID0gdHJ1ZTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0g
IlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93IGV4cGVjdHMgdGhlIGdyb3duIHNp
emUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKKyAgICAgICAgaWYgKGUudG9TdHJpbmcoKSAh
PSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KKwogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwppbmRleCBkYmVmMDRk
OTY1ZjUuLjExYWE1ZTVkMjU3MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20t
bWVtb3J5LWdyb3cuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKQEAgLTEsNSArMSw0IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hp
dGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCi0vL0AgcnVu
RGVmYXVsdCgpCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAogCiBmdW5jdGlvbiB0ZXN0KCkg
ewogCkBAIC0yNSwyNiArMjQsMTkgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotCi0gICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOwotICAgIHsKLSAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7Ci0g
ICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwotICAgICAgICB2YXIgcmVzdWx0
ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKLSAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKLSAgICB9Ci0KICAgICB2YXIgb2sgPSBmYWxzZTsKICAgICB0cnkgewot
ICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4
MTAwMCwgbWF4aW11bTogbWF4U2l6ZSsxIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXpl
ICsgMSAtIDB4MTAwMCk7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVt
b3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiAweDgwMDAgfSk7CisgICAgICAgIG1lbW9y
eS5ncm93KDB4NzAwMCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXko
bWVtb3J5LmJ1ZmZlcikpOworICAgICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwogICAgICAg
ICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0cmluZygp
ICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQg
aXMgdG9vIGxhcmdlIikKKyAgICAgICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjog
T3V0IG9mIG1lbW9yeSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KKwogICAgIGlmIChv
aykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IDgwZmYwNmIyNjdhZC4uZDhlN2ZiNjliNGJhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDUgKzEsNCBAQAotLy9AIHNraXAgaWYgJG1l
bW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJl
ICE9ICJ4ODYtNjQiKQotLy9AIHJ1bkRlZmF1bHQoKQorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0
ZWQKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjUsMjEgKzI0LDE3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28o
b2tBcnJheSk7CiAKLSAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7Ci0gICAgewotICAgICAgICB2
YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBp
bml0aWFsOiBtYXhTaXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwotICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCi0gICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OwotICAgIH0KLQogICAgIHZhciBvayA9IGZhbHNlOwogICAg
IHRyeSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0p
LmJ1ZmZlcikpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBX
ZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5i
dWZmZXIpKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKICAgICAgICAgb2sgPSB0
cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFu
Z2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdlIGNvdW50IGlzIHRvbyBs
YXJnZSIpCisgICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBt
ZW1vcnkiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9CisKICAgICBpZiAob2spCiAgICAg
ICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGY1ZWExNmQ4NWZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQt
YXJyYXktYWx3YXlzLWxhcmdlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy9A
IHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAk
YXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQotLy9AIHJ1bkRlZmF1bHQoKQotCi1mdW5jdGlvbiBn
ZXRBcnJheUxlbmd0aChhcnJheSkKLXsKLSAgICByZXR1cm4gYXJyYXkubGVuZ3RoOwotfQotbm9J
bmxpbmUoZ2V0QXJyYXlMZW5ndGgpOwotZnVuY3Rpb24gZ2V0QnlWYWwoYXJyYXksIGluZGV4KQot
ewotICAgIHJldHVybiBhcnJheVtpbmRleF07Ci19Ci1ub0lubGluZShnZXRCeVZhbCk7Ci1mdW5j
dGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQotewotICAgIGFycmF5W2luZGV4XSA9
IHZhbHVlOwotfQotbm9JbmxpbmUocHV0QnlWYWwpOwotCi1sZXQgb25lR2lnYSA9IDEwMjQgKiAx
MDI0ICogMTAyNDsKLQotZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcp
Ci17Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewotICAgICAgICB2YXIg
bCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKLSAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3Ro
KQotICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0
ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJp
bmcpOwotICAgICAgICB2YXIgaW5kZXggPSAoMiAqIG9uZUdpZ2EpICsgaTsKLSAgICAgICAgdmFy
IHZhbHVlID0gaSAlIDEwMDsKLSAgICAgICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7
Ci0gICAgICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOwotICAgICAgICBp
ZiAocmVzdWx0ICE9IHZhbHVlKQotICAgICAgICAgICAgdGhyb3cgKCJFeHBlY3RlZCAiICsgdmFs
dWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKLSAgICB9
Ci19Ci0KLWxldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKLWxldCBmb3VyR2lncyA9IDQgKiBv
bmVHaWdhOwotCi10ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiSW50
OEFycmF5LzNHQiIpOwotdGVzdChuZXcgVWludDhBcnJheShmb3VyR2lncyksIGZvdXJHaWdzLCAi
VWludDhBcnJheS80R0IiKTsKLXRlc3QobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRocmVlR2lncyks
IHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhlZWVkZDAxNGQwNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL3R5
cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCww
IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJt
NjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCi0vL0AgcnVuRGVmYXVsdCgpCi0KLWZ1
bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQotewotICAgIHJldHVybiBhcnJheS5sZW5ndGg7
Ci19Ci1ub0lubGluZShnZXRBcnJheUxlbmd0aCk7Ci1mdW5jdGlvbiBnZXRCeVZhbChhcnJheSwg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIGFycmF5W2luZGV4XTsKLX0KLW5vSW5saW5lKGdldEJ5VmFs
KTsKLWZ1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCi17Ci0gICAgYXJyYXlb
aW5kZXhdID0gdmFsdWU7Ci19Ci1ub0lubGluZShwdXRCeVZhbCk7Ci0KLWxldCBvbmVHaWdhID0g
MTAyNCAqIDEwMjQgKiAxMDI0OwotCi1mdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgs
IHN0cmluZykKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Ci0gICAg
ICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOwotICAgICAgICBpZiAobCAhPSBhY3R1
YWxMZW5ndGgpCi0gICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwg
KyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2Ug
IiArIHN0cmluZyk7Ci0gICAgICAgIHZhciBpbmRleCA9IGk7Ci0gICAgICAgIHZhciB2YWx1ZSA9
IGkgJSAxMDA7Ci0gICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwotICAgICAg
ICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKLSAgICAgICAgaWYgKHJlc3Vs
dCAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBi
dXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7Ci0gICAgfQotICAgIHZh
ciB2YWx1ZSA9IDQyOwotICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Ci0gICAgcHV0
QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7Ci0gICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFy
cmF5LCBpbmRleCk7Ci0gICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKLSAgICAgICAgdGhyb3cgKCJF
eHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2FzZSAiICsg
c3RyaW5nKTsKLX0KLQotbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOwotbGV0IGZvdXJHaWdz
ID0gNCAqIG9uZUdpZ2E7Ci0KLXRlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdp
Z3MsICJJbnQ4QXJyYXkvM0dCIik7Ci10ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdzKSwgZm91
ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwotdGVzdChuZXcgVWludDhDbGFtcGVkQXJyYXkodGhy
ZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTM5YjUwZDJlNTcuLjAwMDAwMDAwMDAwMAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5qcworKysgL2Rl
di9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgk
YXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKLS8v
QCBydW5EZWZhdWx0KCkKLWZ1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQotewotICAgIHJl
dHVybiBhcnJheS5sZW5ndGg7Ci19Ci1ub0lubGluZShnZXRBcnJheUxlbmd0aCk7Ci1mdW5jdGlv
biBnZXRCeVZhbChhcnJheSwgaW5kZXgpCi17Ci0gICAgcmV0dXJuIGFycmF5W2luZGV4XTsKLX0K
LW5vSW5saW5lKGdldEJ5VmFsKTsKLWZ1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFs
dWUpCi17Ci0gICAgJ3VzZSBzdHJpY3QnOwotICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOwotfQot
bm9JbmxpbmUocHV0QnlWYWwpOwotCi1sZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsK
LQotZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCi17Ci0gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewotICAgICAgICB2YXIgbCA9IGdldEFycmF5
TGVuZ3RoKGFycmF5KTsKLSAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQotICAgICAgICAg
ICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBl
eHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwotICAgICAg
ICB2YXIgaW5kZXggPSBpOwotICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOwotICAgICAgICBw
dXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCi0gICAgICAg
ICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOwotICAgIH0KLSAgICB2YXIgdmFsdWUgPSA0MjsKLSAgICB2
YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKLSAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgs
IHZhbHVlKTsKLSAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKLSAgICBp
ZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKLSAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2YtYm91bmRz
IGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2Ug
IiArIHN0cmluZyk7Ci19Ci0KLWxldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKLWxldCBmb3Vy
R2lncyA9IDQgKiBvbmVHaWdhOwotCi10ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdzKSwgdGhy
ZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwotdGVzdChuZXcgVWludDhBcnJheShmb3VyR2lncyks
IGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKLXRlc3QobmV3IFVpbnQ4Q2xhbXBlZEFycmF5
KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhh
bi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20t
bWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIuanMKaW5k
ZXggZWQwZTdhZjA5MTNhLi43N2Q1MGMzNTBiNDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9y
ZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9T
SVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVk
LW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2LDEzIEBA
IGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewogICAgIHZh
ciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRkTWVtb3J5
KCgyKioxNikgKyAxKTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KDMyNzY4KTsKICAgICBtb2R1bGUu
aW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQogCi1p
ZiAoZXhjZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0
IHBhcnNlIGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBp
cyBpbnZhbGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZm
ZXIoKSknKSIpIHsKK2lmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnki
KSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRo
YW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1t
ZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKaW5kZXgg
MDFmMDZkMmY0OTc2Li5iYTYyZDkxNDc2YWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWdy
ZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpF
LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3Jl
LXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2YXIgZXhj
ZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAw
eDEwMDAxLCBtYXhpbXVtOiAweDEwMDAxIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVyOwogfSBj
YXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24gIT0gIlJh
bmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcgcGFnZSBjb3VudCBpcyB0b28g
bGFyZ2UiKQotICAgIHRocm93ICJGQUlMRUQsIGV4Y2VwdGlvbiB3YXM6ICIgKyBleGNlcHRpb247
CitpZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICB0aHJv
dyAiRkFJTEVEIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA1MjJiZjk0MDRjMDIuLmUzZDQ5Y2QzMmJhNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTEwLTE0ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdh
dGNoIGJ1aWxkIG1ha2UgaXQgYnJlYWsgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc5NworCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAg
ICAgICAgUmV2ZXJ0ICJBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IiCisKKyAgICAgICAgKiBm
YXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgt
ZXhwZWN0ZWQudHh0OgorCiAyMDIxLTEwLTE0ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTdXBwb3J0IGFjY2VudC1jb2xvciBmb3IgY29udHJv
bHMgd2l0aG91dCB0ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uvc2Vy
aWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCmluZGV4IDg3YmNjNDQ5MmMxNy4uNTU0YTAyZGYxN2Fk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3JpcHQt
dmFsdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3Jp
cHQtdmFsdWUuaHRtbApAQCAtNiw3ICs2LDcgQEAKICAgICA8Ym9keT4KICAgICAgICAgPHNjcmlw
dD4KIAotY29uc3QgY3VycmVudFZlcnNpb24gPSAweDBhOworY29uc3QgY3VycmVudFZlcnNpb24g
PSAweDA5OwogCiAvLyBIZXJlJ3MgYSBsaXR0bGUgUSZEIGhlbHBlciBmb3IgZnV0dXJlIGFkdmVu
dHVyZXJzIG5lZWRpbmcgdG8gcmViYXNlbGluZSB0aGlzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVm
ZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA1YjhmMzY2NTljYjMuLjQ5OGJkYWNmZGRjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEs
NCBAQAorQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlv
QnVmZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxl
bmd0aCBvZiA1MzY4NzA5MTIuCiBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNo
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1s
ZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IGQwNzM2MDAxNDMwMy4uOTU2YTU3Nzk3OTQ5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZm
ZXItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQg
QEAKK0NPTlNPTEUgTUVTU0FHRTogRmFpbGVkIHRvIGNvbnN0cnVjdCBpbnRlcm5hbCBBdWRpb0J1
ZmZlciB3aXRoIDEgY2hhbm5lbChzKSwgYSBzYW1wbGUgcmF0ZSBvZiA0NDAwMCBhbmQgYSBsZW5n
dGggb2YgNTM2ODcwOTEyLgogTWFrZSBzdXJlIHRoYXQgdGhlIGxlbmd0aCByZXR1cm5lZCBieSBP
ZmZsaW5lQXVkaW9Db250ZXh0IGV2ZW4gaWYgd2UgZmFpbGVkIHRvIGNvbnN0cnVjdCB0aGUgcmVu
ZGVyaW5nIGJ1ZmZlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggMjRmMTYzMTQwYmFiLi45ZDYyYzhmZDQ5MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MCBAQAorMjAyMS0xMC0xNCAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0
IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3OTcKKworICAgICAgICBV
bnJldmlld2VkLgorCisgICAgICAgIFJldmVydCAiQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdC
IgorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwOgorICAg
ICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6
OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OlRydXN0ZWRJbW1QdHIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjphc0lu
dHB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHI6OmFzUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tUHRy
OjpJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OmFzVHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMjo6VHJ1c3RlZEltbTMyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjo6SW1tMzI6OkltbTMyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0OjpUcnVzdGVkSW1tNjQpOgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6SW1tNjQpOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6YXNUcnVzdGVkSW1tNjQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpjYW5CbGluZCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OmFuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OmJyYW5jaDY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRF
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRhZ0FycmF5UHRyTGVu
Z3RoMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0
ckxlbmd0aDY0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbkJs
aW5kKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBk
YXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdlVHlwZWRBcnJh
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVk
QXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmls
ZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
cnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6cmVmaW5lIGNvbnN0
KToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJy
YXlNb2RlOjpBcnJheU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6YWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjptYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzc0FuZFNwZWN1
bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6c3BlY3VsYXRpb25Gcm9tUHJvZmlsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAg
ICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RG
R0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5kR2V0QXJyYXlMZW5n
dGgpOgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0aW9uSW5mby5oOgorICAgICAgICAqIGRmZy9E
RkdIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAg
ICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGlsZCBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTU0FMb3dlcmluZ1BoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTU0FM
b3dlcmluZ1BoYXNlOjpsb3dlckJvdW5kc0NoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRv
RXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50
VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVj
a0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFy
cmF5Q2hlY2tzKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjp2YWxpZGF0ZUFJU3RhdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJp
Y3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1Mik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdU
eXBlZEFycmF5V2l0aFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuaDoK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQzMk5vbk5lZ2F0aXZlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NE5vbk5lZ2F0aXZlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvSW50cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpnZXRC
eVZhbCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlW
YWwpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAg
KEpTQzo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVu
dHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6Cisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlcjo6Y3JlYXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVG
cm9tQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
bGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyQ29udGVudHM6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Z2NT
aXplRXN0aW1hdGVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJWaWV3OjpzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6Cisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKToKKyAgICAgICAg
KiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcu
Y3BwOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAgICAgICAoSlNDOjpE
YXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3Lmg6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlND
OjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
Ojpwb3NzaWJseVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNpemVPZik6CisgICAgICAg
IChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6bGVuZ3RoIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1R5
cGVkQXJyYXlJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0RhdGFW
aWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTRGF0
YVZpZXc6OnNldCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnNldEluZGV4KToKKyAgICAg
ICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0
RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0
aEZhc3RWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2tseSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHkpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2Fu
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6Z2V0QnlWYWxXaXRoSW5kZXgpOgorICAgICAgICAqIHdhc20vV2FzbVBhZ2VDb3Vu
dC5oOgorCiAyMDIxLTEwLTE0ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNw
cAppbmRleCA1NWZkNzVmNDk2YTAuLmRjYzllNTkyMzFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggOTNlYjNiZmUyMDc5Li5kN2FhMGI3YmM5YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xhc3MgcmVx
dWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRpYXRlCiAg
ICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBtZW1vcnkg
b3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0ZWRJbW0g
ewotICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cigpIHsgfQorICAgICAgICBUcnVzdGVk
SW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0
cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAg
ICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0
ZDo6bnVsbHB0cl90KQorICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKHN0ZDo6bnVsbHB0
cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgY29uc3RleHBy
IGludHB0cl90IGFzSW50cHRyKCkKKyAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92YWx1
ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdGV4cHIgdm9pZCogYXNQdHIoKQorICAgICAg
ICB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0
PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIsMTIgQEAgcHVibGlj
OgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAgIHsKLSAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdGV4
cHIgVHJ1c3RlZEltbVB0ciBhc1RydXN0ZWRJbW1QdHIoKSB7IHJldHVybiAqdGhpczsgfQorICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CiAg
ICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBjb25zdGV4
cHIgVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFz
SW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICszMzYsMTcgQEAgcHVi
bGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7Ci0gICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQorICAgICAgICBleHBs
aWNpdCBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIodmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0
IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIocHRy
KQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdGV4cHIgY29uc3Qg
VHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVy
biAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1IEBAIHB1YmxpYzoK
ICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNjaWRlbnRh
bGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAgc3RydWN0
IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZElt
bTY0KCkgeyB9CisgICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAgICAgICAg
ZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQorICAgICAgICBl
eHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1
ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
VHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkp
CiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAgcHVibGljOgogCiAg
ICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBJ
bW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFsdWUpCiAg
ICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BV
KFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRy
IHB0cikKKyAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAg
ICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0g
ICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29u
c3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0
ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAgICAvLyBT
ZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEwNTMsOSAr
MTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7
CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5CbGlu
ZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVj
aWZpY0FyY2godWludDMyX3QpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgc2hv
dWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3MgRGF0YUxh
YmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCmluZGV4IDQxMzIzMDJmOGE4Ni4uMDFlNDhhMTFiYmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzksOSArMTM5
LDYgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVsMzI7
CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BV
KE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJh
bmNoUHRyOwotI2VuZGlmCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpi
cmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMyOwpAQCAt
MTQ2Myw3ICsxNDYwLDYgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFu
ZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9Ci0KICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BVKEFSTTY0
KQpAQCAtMTczMSw3ICsxNzI3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmU2NChpbW0u
YXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8gQ1BVKFg4Nl82NCkg
fHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwgQWRkcmVzcyBkZXN0
KQogICAgIHsKQEAgLTE4MjUsMjggKzE4MjEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBi
cmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsKICAgICB9CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMgZG9uJ3QgbmVlZCBi
bGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiwgUmVnaXN0ZXJJ
RCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUuCi0gICAgLy8gV2Ug
Y2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJlY2F1c2UgaXQgdXNl
cyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwgZXRjLi4gd2hpY2gg
YXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCi0gICAgSnVtcCBicmFuY2g2NChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmlnaHQpCi0g
ICAgewotICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7Ci0gICAgICAgICAgICBpZiAo
aGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBsb2Fk
Um90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0KSwgc2Ny
YXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3Rl
ciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAotICAgICAgICAgICAgLy8gcGxhY2UgYSBy
YW5kb20gbnVtYmVyIG9mIG5vcHMuCi0gICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJh
bmRvbSgpICYgMzsKLSAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQotICAgICAgICAgICAg
ICAgIG5vcCgpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0
LmFzVHJ1c3RlZEltbTY0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChj
b25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gQ1BV
KFg4Nl82NCkKLQogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA4NTc0MDU1Yzli
MWUuLjVmOThmZjllMzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IEFSTTY0UmVn
aXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBpbXBsZW1lbnRhdGlv
bnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9
Ci0gICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVp
bnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGlj
IGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsg
fQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDExICszMzA1LDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBJbW02NCByaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBs
ZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKLSAgICB9Ci0KICAgICBKdW1wIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0
KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMDc0YTM5OGY4ODNjLi4yNDcw
YzExOTY2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVu
Z3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0
aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDMyKEFkZHJlc3Mg
bGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAg
ICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKLSAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9h
ZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVB
dXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZh
bGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFs
aWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggM2ZhYmM0
ZDg5MTQwLi5lNjYxMDBiYTJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRl
clJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdp
c3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0g
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJf
dCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNhbkJsaW5kKCkg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAg
c3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsg
cmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRp
YyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKaW5kZXggMTMyNTBlYzQ4NDJmLi4zOTc5OTJhM2E3NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTQ4Niw2ICs0
ODYsNyBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgY2Fz
ZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgogICAg
IGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAg
ICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENoZWNrUHJpdmF0ZUJy
YW5kOgpAQCAtNTI4LDggKzUyOSw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBS
KCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3RvcmU6CiAgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5RmxvYXQ2NFN0b3JlOgotICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxlbmd0aC9UeXBlZEFy
cmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIgcmVzdWx0IGFzIGEg
ZG91YmxlCi0gICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE4NSwxNyArMTE4
NCwxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogCiAgICAgICAgIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKKyAgICAgICAgCiAgICAg
ICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxsVGhyb3VnaC5hcHBl
bmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpKTsKIAot
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KTsKLSAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BS
KTsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICAvLyBUaGUgbGVuZ3RoIGlz
IGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRm
b3JtLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsK
LSNlbHNlCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgp
KTsKLSNlbmRpZgorICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOwogCiAgICAgICAg
IGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0
Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVT
Y3JhdGNoR1BSKCk7CkBAIC0xMjAzLDEzICsxMTk3LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2
ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVy
c0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpF
eHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQotICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7Ci0j
ZWxzZQotICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7Ci0j
ZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAg
ICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBz
Y3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOworCiAgICAgICAgIGpp
dC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlm
IChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkg
ewpAQCAtMTYwNSwxNCArMTU5NSw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3Vh
cmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9CiAKLSAgICAgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3NPZkxlbmd0aCA9IENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSk7Ci0gICAg
ICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7Ci0jaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVS
ZWdpc3Rlciwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9y
bS4KLSAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7Ci0j
ZWxzZQotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7
Ci0jZW5kaWYKKyAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgLy8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0
aGUgb3BlcmF0aW9uIGZ1bmN0aW9uLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBl
bmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwg
c2NyYXRjaEdQUikpOwogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1
bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJH
UFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjIwLDEzICsxNjA1LDkg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRv
ci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAK
LSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NP
Zkxlbmd0aCwgc2NyYXRjaEdQUik7Ci0jZWxzZQotICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NP
Zkxlbmd0aCwgc2NyYXRjaEdQUik7Ci0jZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3Rv
cigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRh
ZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQ
UiwgZmFsc2UpOworCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwg
c2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgaWYg
KGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5oCmluZGV4IDM2ZmViMTQ0YmFkMy4uNjkxNjc5NDg0M2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQg
d2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdl
IGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUg
bG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhl
IGJpdHMgMTYtMjAgYW5kIDI2LTMxLgorLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMg
dGFraW5nIHRoZSBiaXRzIDE2IHRvIDI1LgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwog
CiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAx
NiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsMTUgKzIwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLQotI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBzX3Nt
YWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpOwotICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB7IG1fbWF5QmVMYXJnZVR5
cGVkQXJyYXkgPSB0cnVlOyB9Ci0gICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUJlTGFyZ2VUeXBlZEFycmF5
OyB9Ci0jZWxzZQotICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotCisgICAgCiAgICAg
U3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9s
YXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rl
cygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NP
Zk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KQEAgLTI1Miw5
ICsyNDQsNiBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJ
RCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlzIGZs
YWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2FzZXMg
dGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVuZHMg
b24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1c3Qg
b25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlzIGZs
YWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgogICAg
IGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKLSAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OwotI2VuZGlmCiAg
ICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBtX3Vz
ZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1GaXJz
dFJ1blBydW5pbmcgOiAxOwpAQCAtMjY0LDEzICsyNTMsNyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUgewog
cHVibGljOgotICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKLSAgICAgICAgOiBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQotI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCi0gICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKLSNlbmRpZgot
ICAgIHsKLSAgICB9CisgICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0yOTcs
MTMgKzI4MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlczsKLQotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgICAg
IGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQotICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJy
YXk7Ci0jZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMTQsMTEgKzI5MCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1fb3V0
T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAx
OwotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgYm9vbCBtX21heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKLSNlbmRpZgorICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMgeyB0cnVlIH07CiB9Owotc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJheVByb2Zp
bGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBh
MWNkNjk5NDRhYjEuLjJiMmY1ZTAzMDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzQ2MSwy
NCArMzQ2MSwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKLSAgICAgICAgICAg
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAg
ICAgICAgaWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsK
LSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzZXROb25DZWxsVHlwZUZv
ck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZl
clZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAgIGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKICAgICAg
ICAgaWYgKHZpZXcpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZp
ZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBz
ZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTM4MDcsMjYgKzM3OTYsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV92YWx1ZSk7CiAgICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHko
KTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0
ZU9mZnNldCkpIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigq
Ynl0ZU9mZnNldCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTI6IHsKLSAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKLSAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBieXRl
T2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKICAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQx
MzMsMTEgKzQxMDksNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25D
ZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogewotICAgICAgICAvLyBTZWUgdGhlIENo
ZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0IHdlIHB1dCBo
ZXJlLgotICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAg
ICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBhM2I5MzQw
ZjY5MDcuLjZlMjc1MzEwNGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0zMjUsMTEgKzMy
NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hp
bGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90
IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KLSAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAg
ICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZlY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSk7IApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4IDcyNThlMzcx
NTg2ZS4uNmU0ZmU5YWZhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSkK
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJl
aGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDggKzI5NCw2IEBA
IEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdV
aW50NjRBcnJheToKLSAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2Vy
dmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdl
dEJ5VmFsIGFzIHdlbGwuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWwpIHsK
ICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMs
IE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3VuZHMpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGRmNzVjNzg5MGQ2NC4u
YTAyNmFhZDE4OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgK
QEAgLTEyNyw3ICsxMjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJh
eTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0ZTsKLSAgICAg
ICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAog
ICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6QWN0aW9uIGFj
dGlvbikKQEAgLTEzNyw3ICsxMzYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVj
dWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24g
PSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKLSAgICAg
ICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAog
ICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywg
QXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDcsMTcgKzE0NSwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5h
c0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlv
biA9IGFjdGlvbjsKLSAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFs
c2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA9IGZhbHNlKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBB
cnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7
CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5dGVzLmFycmF5
Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBzcGVj
dWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOwogICAg
ICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOwotICAgICAgICB1LmFzQnl0ZXMubWF5QmVM
YXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAgICAgCiAgICAg
QXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJh
eTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE2Nyw3
ICsxNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5
OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOwog
ICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOwotICAgICAgICB1LmFzQnl0ZXMubWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXk6OlR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1LmFzQnl0ZXMu
dHlwZSk7IH0KQEAgLTE3NSw3ICsxNzAsNiBAQCBwdWJsaWM6CiAgICAgQXJyYXk6OlNwZWN1bGF0
aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlNwZWN1
bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNvbnZlcnNpb24g
Y29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpDb252ZXJzaW9u
Pih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRlcy5hY3Rpb24p
OyB9Ci0gICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0dXJuIHUuYXNC
eXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVkIGFzV29yZCgp
IGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xODUsNTAgKzE3OSwzNSBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9ic2VydmVkKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpBY3Rpb24sIGJv
b2wgbWFrZVNhZmUpOwotCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3Mo
KSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7Ci0gICAgfQotCisgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lv
bigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7Ci0gICAgfQotCi0gICAgQXJy
YXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBz
cGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXko
KSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1
bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKICAgICB9Ci0KLSAgICBBcnJheU1vZGUg
d2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJzaW9u
IGNvbnZlcnNpb24pIGNvbnN0CisgICAgCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzKEFy
cmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0
eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkp
OwogICAgIH0KLQotICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5k
TWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVj
dWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSkgY29uc3QKKyAg
ICAKKyAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2Fm
ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNs
YXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkpOwotICAgIH0KKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247
CiAKLSAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwg
Ym9vbCBtYWtlU2FmZSkKLSAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAgICAgICAgICAg
IHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAgICBteVNwZWN1bGF0aW9uID0g
QXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5tYXlTdG9yZVRv
SG9sZShsb2NrZXIpKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CisgICAgICAg
ICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuIEFycmF5OjpJbkJvdW5kczsKLSAgICB9Ci0KLSAgICBBcnJheU1vZGUgd2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIs
IEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKSk7CisgICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNw
ZWN1bGF0aW9uKTsKICAgICB9Ci0KKyAgICAKICAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9v
bCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xh
c3M7CisKICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAocHJvZmls
ZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZpdHNGcm9tT3Jp
Z2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0g
cHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yNDIsMTIgKzIyMSwyMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6OkFycmF5Owog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5Q2xhc3MoKTsK
LQotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZy
b21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwotCi0gICAgICAgIGJvb2wgbGFy
Z2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKLQot
ICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VU
eXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICB9
CisgICAgCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgfQorICAgIAorICAgIEFycmF5
TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOworICAgIH0KKyAgICAKKyAgICBBcnJh
eU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIHVudXNl
ZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTM2LDggKzUyNiw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKICAgICAgICAg
ICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAgICAgICAgICYm
IHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAgICAgJiYgY29u
dmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQotICAgICAgICAgICAgJiYgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOworICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0CkBAIC01OTAs
OCArNTc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlDbGFzczsKICAg
ICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50OF90IGNvbnZl
cnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOwotICAgICAgICAgICAg
dWludDhfdCBtYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CisgICAgICAgICAgICB1aW50OF90IGFj
dGlvbiA6IDQ7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQgYXNXb3JkOwog
ICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggYTAwYzg1MzcwMTAyLi5jODhkZTRiMjM5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3LDE3ICszODA3
LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFu
ZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5VmFyaWFudCYg
dmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cykKIHsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgIHN0YXRpY19hc3NlcnQoZW5h
YmxlSW50NTIoKSk7Ci0jZW5kaWYKLQogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkg
ewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKLSAgICAgICAgYm9v
bCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Ci0jaWYgIVVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCi0gICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwog
CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCku
YmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODMxLDMw
ICszODIyLDI2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihP
cGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQo
YXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgTm9k
ZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKLSAgICAgICAgTm9kZSogbGVuZ3Ro
Tm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6
UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBh
ZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJy
YXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIgQXJyYXlNb2Rl
IHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJlIG9rIHRvIGV4
aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKIAorCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewogICAgICAgICAg
ICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNh
dXNlIHR5cGVkIGFycmF5cyBtYXkgaGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50
MzIuCi0gICAgICAgIE5vZGUqIHR5cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxv
Z1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3Ro
Tm9kZSwgdHlwZVNpemUpKTsKKyAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJl
IGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKKyAgICAg
ICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCisgICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpz
Q29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKIAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6
IHsKLSAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlz
SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Ci0jaWYgIVVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgICAgIGlu
c2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQu
c3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5
cGU7CkBAIC0zODY2LDE5ICszODUzLDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAg
ICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7
CiAKLSAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKLSAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUs
IEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIHNldChyZXN1bHQs
IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJpbnNpYzogewot
ICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyID0gIWlz
SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Ci0jaWYgIVVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogICAgICAg
ICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJp
YW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3Jh
Z2VUeXBlOwpAQCAtMzg5MCw4ICszODcxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAg
ICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9
KTsKIAotICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhB
cnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwor
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDlhZDVjMjcwMjBkNi4uYThkZDNmZGU5Nzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw3ICsx
NTMsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgotICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2Fz
ZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjQwLDcgKzIzOSw2
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2Fz
ZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKLSAgICBjYXNlIENoZWNrSW5C
b3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAg
IGNhc2UgSW50NTJSZXA6CkBAIC0xMzM5LDExICsxMzM3LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywg
TWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgotICAgICAg
ICByZWFkKE1pc2NGaWVsZHMpOwotICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlC
eXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwotICAgICAgICByZXR1cm47Ci0KICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAg
ICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2Ug
QXJyYXlVc2U6CkBAIC0xNDUxLDE0ICsxNDQ0LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6
IHsKLSAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKLSAgICAgICAgcmVh
ZChNaXNjRmllbGRzKTsKLSAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5TGVuZ3Ro
SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNo
IChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXgg
YWZkYzEwYThhMDU4Li5jNjZmYjIyMzlmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgp
CiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKK2lubGlu
ZSBib29sIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAppbmRleCBmYTE3YmYxMTQxOTcuLmI4ODI1YWNhZTM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKQEAgLTM4Nyw4ICszODcsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAgIGNhc2UgR2V0
TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAppbmRleCA0MDI4NGNmYTIyZjguLjA3MGE0ODU0N2E5NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDcgKzE4NSw2IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAg
IGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgotICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAg
ICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk4LDEyICsxOTcsMTAg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0
dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Ci0gICAg
Y2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRB
dDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgotICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2Fz
ZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDU2NmY1MzlkZTFhNC4uOGUxYjkzZWVl
NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMDQzLDcgKzEwNDMsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1
bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAg
ICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAg
JiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCi0gICAgICAgICAgICAgICAgICAgICYm
ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAg
ICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3Zl
cmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3NCw3ICsxMDczLDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9u
J3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4K
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRv
IGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBi
ZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5
TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTEzNCwxOCArMTEzMyw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEFycmF5OjpJbnQ4QXJyYXk6Ci0gICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5Ogot
ICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKLSAgICAgICAgICAgIGNhc2UgQXJy
YXk6OlVpbnQ4QXJyYXk6Ci0gICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJh
eToKLSAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgotICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6VWludDMyQXJyYXk6Ci0gICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJy
YXk6Ci0gICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTk3LDcgKzExODQsNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9u
KQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkK
ICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCi0g
ICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRB
cnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9k
ZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTczMSwxNiArMTcx
NywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJh
eTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKKyAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTIxNjcsMjMgKzIxNDksNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7Ci0gICAg
ICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1f
Z3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7Ci0gICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlz
U29tZVR5cGVkQXJyYXlWaWV3KCkpOwotICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFy
cmF5TW9kZSk7Ci0gICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgp
LCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwotCi0gICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
bm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7
Ci0gICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTIyMTcsNyArMjE4Miw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5k
czoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgotICAgICAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBj
YXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpAQCAtNDEzMiw2
ICs0MDk2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQy
KCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KKyAgICAKKyAgICBOb2RlKiBwcmVwZW5kR2V0QXJy
YXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlN
b2RlKQorICAgIHsKKyAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2Rl
LCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworICAgICAgICBy
ZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAorICAgICAgICAgICAg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVk
Z2Uoc3RvcmFnZSkpOworICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5kZXhlZFByb3Bl
cnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
ZW5lcmF0aW9uSW5mby5oCmluZGV4IDJkODZlYjc1NzM5Yi4uNGZhZjk0OWE3ODYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw3ICsz
OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMg
dXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNv
ZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIg
YSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hl
dGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlm
IHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBt
ZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJl
bWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJl
IHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCisvLyBhYmxlIHRvIHRyYWNr
IHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBv
ZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBk
ZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkg
YmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMDY2MWU1YjgyNmI3Li4yYmI5ZDRi
ZWE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5j
cHAKQEAgLTE4MiwxNCArMTgyLDYgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRl
T2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAotICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVP
ZmZzZXRJbnQ1MkxvYzoKLSAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldElu
dDUyTG9jIik7Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aElu
dDUyTG9jOgotICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOwot
ICAgICAgICByZXR1cm47Ci0KICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnBy
aW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggNDBmYjcxNjczMjg0Li4yNjkxNzFjYjM0
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAt
NjcsOCArNjcsNiBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9jLAogICAgIFN0
cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKLSAgICBUeXBlZEFycmF5
Qnl0ZU9mZnNldEludDUyTG9jLAotICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYywKICAgICBQ
cm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9jLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcAppbmRleCA2ZGVkYTAzN2VlOTQuLjFiYWExYzhiY2Y1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2Vy
UmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub25OZWdhdGl2
ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5v
ZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2Rl
LT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4
LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCks
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVl
ZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDBiYTdiOWZmM2ViYi4u
MmFmNzk3MDY4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUs
NyArMTk2NSw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Ci0gICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3Bl
cnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAg
ICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDUsNyArMjAwNCw2IEBAIHB1YmxpYzoKIAog
ICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgotICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJu
IDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc4LDcgKzIyNzYs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Ci0gICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMjNmMWMx
NTBkNjAwLi45YTkwYTRjZmRhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI2MSwxMiArMjYxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIC8q
IFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBv
bmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBi
aXRzLiAqLyBcCi0gICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5kIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUyIGluIEZpeHVw
LiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICovIFwKLSAgICBt
YWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFjcm8oR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29w
ZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTI5MCw3ICsyODYsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFz
c2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5k
cywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKENoZWNrSW5C
b3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja1R5cGVJbmZv
RmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFn
cyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5v
ZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1dCBhcyBhIHNw
ZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDk0NTM1MzU2ZGU5OS4uZTUwN2YxZTgwYWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3
LDggKzk3LDEwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
bmRleCwgdmFsdWUpKQorICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5k
ZXgsIHZhbHVlKSkgeworICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGlu
ZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwg
aW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzMsNyArMTc1LDcg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IHNpemUsIGNoYXIq
IHZlY3RvcikKK2NoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNpemUsIGNo
YXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKQEAgLTE4MSwxNCArMTgzLDExIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKLSAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXpl
KTsKLQorICAgIAogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkp
KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVX
aXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0
cih2ZWN0b3IsIHNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdp
c2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHVuc2lnbmVkU2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNp
emUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDksNyArMTkwOCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxs
KiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRw
dHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI1LDcgKzE5MjQsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE5NDEsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTcsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIq
IHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzMsNyArMTk3
Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNV
aW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OSw3ICsxOTg4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAw
NSw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQx
NkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMSw3ICsyMDIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM3LDcgKzIw
MzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
RmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDUzLDcgKzIwNTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIq
IHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjksNyArMjA2
OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNC
aWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCA0ZmQ1Nzk1ZDJkMmEuLjM5M2RlODg1MDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5
QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOworSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFs
dWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRw
dHJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1
ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50cHRyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1
bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVl
KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwg
Y2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlNDZWxsKiwgKFZN
KiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4ZTBjNThiOGEyNjYu
LjIwZDA0NGY1ZjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4NiwxMiArOTg2LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKLSAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTI6IHsKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDUy
QW55KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgY2FzZSBTdHJp
bmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyNiw3ICsxMzIwLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Ci0gICAgICAg
IGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAg
ICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAppbmRleCBkOWRh
ZTNhODMyMjcuLmUzYTIzOWEzM2UzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMjEgKzEwMCwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVkQXJyYXkgJiYg
bV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgT3ZlcmZsb3cpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2Rl
LT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1v
ZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2Rl
LT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1v
ZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7
Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYK
KyAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJy
YXlMZW5ndGgsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVk
Z2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3LDI5ICsxMzcsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9kZSogY2hlY2tJ
bkJvdW5kczsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBpZiAoKG9wID09
IEdldEFycmF5TGVuZ3RoKSAmJiAobV9ub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRB
cnJheSgpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92
ZXJmbG93KSkpIHsKLSAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFueSwgR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAg
IE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwg
S25vd25DZWxsVXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgICAgICBsZW5ndGgtPnNldFJlc3VsdChO
b2RlUmVzdWx0SW50NTIpOwotICAgICAgICAgICAgLy8gVGhlIHJldHVybiB0eXBlIGlzIGEgZHVt
bXkgc2luY2UgdGhpcyBub2RlIGRvZXMgbm90IGFjdHVhbGx5IHJldHVybiBhbnl0aGluZy4KLSAg
ICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzSW50
NTIsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgIGluZGV4LCBFZGdlKGxlbmd0aCwg
SW50NTJSZXBVc2UpKTsKLSAgICAgICAgfSBlbHNlIHsKLSNlbmRpZgotICAgICAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBt
X25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgb3AsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5v
ZGUoKSwgS25vd25DZWxsVXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgICAgICBjaGVja0luQm91bmRz
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kcywgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAg
ICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKSk7Ci0jaWYgVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKLSAgICAgICAgfQotI2VuZGlmCi0KKyAgICAgICAgTm9kZSogbGVu
Z3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICBPcEluZm8o
bV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2Vs
bFVzZSksIHN0b3JhZ2UpOworICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5
LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgIGluZGV4LCBFZGdl
KGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOwogCiAgICAgICAgIEFkamFjZW5jeUxpc3QgYWRqYWNl
bmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRzLCBVbnR5cGVk
VXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDJlN2Y1NmFhMTFlMy4uOTI0ZmM4YzMxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDcgKzI4OCw2IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEFzc2Vy
dEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKLSAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVj
azoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3NCw3ICszNzMsNiBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Ci0gICAgY2FzZSBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNl
IEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg3LDcgKzM4NSw2IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKLSAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAgIAogICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDc0OWVmNTQ2YWJmOS4uMjVmNmFjYTY3YzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzIz
OCw0MyArMzIzOCwyOCBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUoSklU
Q29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAKLUpJVENvbXBp
bGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQorSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5
T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikK
IHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAgICByZXR1cm4g
SklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0
LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOwog
ICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsK
KyAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAgICAgIE5vZGUq
IGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgpOwotICAgICAg
ICBpZiAoaW5kZXhOb2RlLT5pc0FueUludENvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQz
MigpIDwgbGVuZ3RoKQorICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAm
JiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gSklU
Q29tcGlsZXI6Okp1bXAoKTsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBt
X2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHJl
dHVybiBtX2ppdC5icmFuY2g2NCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKLSNlbHNl
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0dXJuIG1faml0
LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5k
ZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKLSNlbmRpZgogICAgIH0KLQot
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
aW5kZXhHUFIsIHNjcmF0Y2hHUFIpOwotICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpKTsKLSNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKTsKLSNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJv
dW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQ
UlJlZyBzY3JhdGNoR1BSKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKQogewot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRz
KG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBp
bmRleEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBqdW1w
KTsKQEAgLTMzOTUsMTIgKzMzODAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHQKICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRo
aXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOwotICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJl
ZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0g
c3RvcmFnZS5ncHIoKTsKLSAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBGUFJSZWcgcmVz
dWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTM0MTQsNyArMzM5Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBl
ZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9IHByZWZpeChE
YXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09IERhdGFGb3Jt
YXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJv
cGVydHlSZWcsIHNjcmF0Y2hHUFIpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9k
ZSwgYmFzZVJlZywgcHJvcGVydHlSZWcpOwogICAgIGxvYWRGcm9tSW50VHlwZWRBcnJheShzdG9y
YWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5cGUpOwogICAg
IGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50VHlwZWRBcnJh
eUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRlLCBzaG91bGRC
b3gsIHJlc3VsdEZQUik7CkBAIC0zNTcyLDcgKzM1NTUsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJv
cGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFnZU9wZXJhbmQg
c3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKLSAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3Jh
Z2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMik7CkBAIC0zNjA1LDcgKzM1ODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJv
cGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHByb3BlcnR5KTsK
ICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0
b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5
cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2NyYXRjaC5ncHIoKSk7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKIAogICAgIHN3aXRjaCAoZWxlbWVudFNp
emUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjYzLDEyICszNjQ1LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgU3Rv
cmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsK
LSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBiYXNlUmVnID0g
YmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAg
ICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICBE
YXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NzYsNyArMzY1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJy
YXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQUlJlZyByZXN1
bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2Rl
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CisgICAgZW1pdFR5cGVkQXJyYXlC
b3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CiAgICAgc3dpdGNoIChlbGVt
ZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9hZEZsb2F0KE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzcxMCwxMiArMzY5MCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BS
UmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1
ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAg
ICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZh
bHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZwcigpOwotICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUs
IGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoR1BSKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHkpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNl
IDQ6IHsKQEAgLTc5ODksNyArNzk2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBl
ZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAg
ICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAg
IG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZh
bGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURf
UEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAt
ODA2MSw2ICs4MDM5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BSUmVnIGRhdGFH
UFIgPSBkYXRhLmdwcigpOworICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7CisgICAg
QVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRh
R1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAKQEAgLTgxMDIs
MTEgKzgwODMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKICNlbmRp
ZgogCi0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAvLyBBSSBwcm9taXNlcyB0aGF0
IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28g
d2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCi0gICAgc3BlY3VsYXRpb25DaGVjayhP
dmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSkpKTsKLSNlbmRpZgotCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVj
dG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM3MywxOCArODM0OSwxMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpKSk7Ci0jZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBy
ZXN1bHRHUFIpOwotI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCi0KIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTExNDksMjQg
KzExMTE5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRB
cnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJl
Q29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0
dXJlLmdldCgpKTsKLQotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgLy8gVGhlIG9w
ZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBhIGludHB0cl90LCBzbyBp
bnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKLSAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
Ci0gICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKLSAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBz
Y3JhdGNoR1BSKTsKLSAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2Rl
LCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsKLSNlbHNlCisgICAgCiAg
ICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhT
aXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsK
LSNlbmRpZgotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhT
aXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKQoteworICAgIAog
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2Uo
dGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTE4MCwxNSArMTEx
MzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VAogICAgIAogICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgc3RvcmFnZUdQUik7CiAKLSNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTY0KEpTQXJyYXlCdWZmZXJW
aWV3OjpmYXN0U2l6ZUxpbWl0KSkpOwotICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0
IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCi0gICAg
c3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0
U2l6ZUxpbWl0KSk7Ci0jZWxzZQogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIo
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKEpT
QXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOwotI2VuZGlmCiAgICAgCiAgICAgbV9q
aXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVk
SW1tMzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRjaEdQUik7CkBAIC0x
MTI0NCwxNSArMTExOTMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VAogICAgIG1faml0LnN0
b3JlUHRyKAogICAgICAgICBzdG9yYWdlR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7Ci0j
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICBtX2ppdC5zdG9yZTY0KAotICAgICAgICBz
aXplR1BSLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7Ci0jZWxzZQogICAgIG1faml0LnN0b3Jl
MzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKLSNlbmRpZgog
ICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0ZWRJbW0zMihGYXN0VHlwZWRBcnJheSks
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDIyNCwxMSArMTQxNjcsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogICAgIGNhc2Ug
SW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgY2FzZSBJbnQ1
MlJlcFVzZToKLSAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUp
OwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMDQ5YmNm
N2U2ZmRiLi4wN2I1NjNiMzQ4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDEzICsxMzAwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50
MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotCi0gICAgdm9pZCBlbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKKyAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSopOwotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAg
dm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSopOwotI2VuZGlmCi0K
KyAgICAKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9k
ZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICNpZiBVU0UoQklHSU5U
MzIpCkBAIC0xMzc3LDkgKzEzNzMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0R2xv
YmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7
Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7Ci0jZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZUNoZWNr
VHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7
CkBAIC0xNDM4LDEzICsxNDMxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVBcml0aE1p
bk1heChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9pbnRlcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKik7Ci0g
ICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1
bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNl
R1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7Ci0gICAgdm9pZCBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBH
UFJSZWcgc2NyYXRjaEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSop
OwotI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSos
IFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVn
cywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAg
ICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJl
ZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRC
eVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDM3LDcgKzI0MjcsNyBAQCBwcml2YXRlOgog
ICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNh
bCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxMiwgbG93IGJpdHMgemVybykuCisv
LyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkg
MTYsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0ODUsNyArMjQ3NSw3IEBAIHBy
aXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEg
c3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNTIgYml0cywgaGln
aCAxMiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1
MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBh
cmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMjJmNmY3
Mjc0YWYwLi42YTBmMjUyMGVhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw3ICsyMTM0LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1
bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogewotICAg
ICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAg
ICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5
VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0
QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzksMTEgKzM1
MzgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgotICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9y
dCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotCiAgICAg
Y2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTM2MjYsMTEgKzM2MjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2UgR2V0UHJvdG90
eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQ0MDksNyArNDM5OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBBc3NlcnRJbkJv
dW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Ci0gICAgY2FzZSBDaGVja0luQm91bmRzSW50
NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI1YzQ4NDk4M2ZiYy4uM2IzOTNmNTI3NWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNjk0LDg2ICsyNjk0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAg
ICB9IH0KIH0KIAotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKLXsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0g
bm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKLSAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7Ci0gICAgUkVMRUFTRV9B
U1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLQotICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFu
ZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUu
Z3ByKCk7Ci0KLSAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0
eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqIG5vZGUpCi17Ci0g
ICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXco
KSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
Ci0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7Ci0gICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxsIDw8IDUyKSwgInRoZXJlIGlz
IGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkgd29uJ3QgZml0IGluIGFuIElu
dDUyIik7Ci0gICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLX0KLQotdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihO
b2RlKiBub2RlKQotewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhpcyk7Ci0gICAgR1BSVGVtcG9y
YXJ5IGRhdGEodGhpcyk7Ci0KLSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAg
R1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKLSAgICBHUFJSZWcgZGF0YUdQUiA9IGRh
dGEuZ3ByKCk7Ci0KLSAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOwotCi0gICAg
SklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCi0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKLSAgICAg
ICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOwotCi0gICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBudWxs
VmVjdG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBU
cnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKLQotICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7Ci0gICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRh
Z2dpbmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOwotCi0gICAgY2FnZVR5cGVkQXJyYXlT
dG9yYWdlKGJhc2VHUFIsIHZlY3RvckdQUik7Ci0KLSAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigp
KSwgYXJyYXlCdWZmZXJHUFIpOwotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1Ci0gICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJy
YXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7Ci0jaWYgQ1BVKEFSTTY0RSkKLSAg
ICBtX2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKLSNlbmRpZgotCi0gICAgbV9qaXQu
c3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOwotCi0jaWYgQ1BVKEFSTTY0RSkKLSAgICBudWxsVmVjdG9yLmxpbmso
Jm1faml0KTsKLSNlbmRpZgotICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7Ci0gICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOwotCi0gICAgZG9u
ZS5saW5rKCZtX2ppdCk7Ci0jaWYgIUNQVShBUk02NEUpCi0gICAgQVNTRVJUKCFKU0FycmF5QnVm
ZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKTsKLSAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsK
LSNlbmRpZgotCi0gICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKLX0KLSNl
bmRpZiAvLyBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAt
MzcyNCwxMiArMzY0NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJh
c2VFZGdlKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMs
IGluZGV4RWRnZSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOwogCiAgICAgICAgIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwogICAg
ICAgICAKLSAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBp
bmRleEdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hl
Y2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSVGVtcG9y
YXJ5IGFyZ3NbMl07CiAgICAgICAgIApAQCAtNDQ2MiwxNCArNDM4MSw2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6Ci0jaWYgVVNFKEFERFJFU1M2NCkKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyKG5vZGUpOwotI2Vsc2UKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSNlbmRpZgotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgRGVsZXRlQnlJ
ZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC00NTg4LDE1ICs0NDk5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjogewotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgICAgIGNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIobm9kZSk7Ci0jZWxzZQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFBy
b3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTU2ODcsMTQgKzU1ODksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6
ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6
ZSAtIDEpLCB0Mik7Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKLSAgICAgICAgICAg
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0
ZWRJbW0zMigwKSkpOwotICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEp
OwotI2Vsc2UKLSAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5z
dCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMgYXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3
aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdDEpOwotI2VuZGlmCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTg5NSwxNCArNTc5MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVT
aXplIC0gMSksIHQyKTsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAotICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBpbmRleEdQUiwgVHJ1
c3RlZEltbTMyKDApKSk7Ci0gICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0
MSk7Ci0jZWxzZQotICAgICAgICAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjayBhZ2Fp
bnN0IDAgaGVyZSwgbmVnYXRpdmUgaW5kaWNlcyBhcmUgY2F1Z2h0IGJ5IHRoZSBjb21wYXJpc29u
IHdpdGggbGVuZ3RoIHJpZ2h0IGFmdGVyCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCB0MSk7Ci0jZW5kaWYKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCkBAIC02MTU0LDcgKzYwNDIsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBFeHRy
YWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hl
Y2tJbkJvdW5kczoKLSAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIEFyaXRo
SU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNr
SG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggZTEwZDYyZTQyN2QwLi41ZjUxZjIyNTEwNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcApAQCAtMjc5LDEyICsyNzksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAg
ICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgotICAgICAgICAgICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0Fy
cmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgICAgICAg
ICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKLSAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAg
ICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlHZXRC
eU9mZnNldDoKQEAgLTM2MSw3ICszNTksNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNh
c2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAg
ICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgICAgIGNhc2UgTW92SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAKaW5kZXggZmIzYmRkNDg2MWY5Li5jNWU1Y2YzNmE3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC02NDAsNyArNjQwLDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc4N2Ux
NDU1NjJmOC4uZDEyNDhjOWZhZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNyArMTcwLDYgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgotICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0
ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTIwMCw3ICsxOTksNiBAQCBpbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIExvZ2ljYWxOb3Q6
CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Ci0gICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVy
OgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CkBAIC0zOTMsNyArMzkx
LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoKICAgICBjYXNlIENQVUludHJpbnNp
YzoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgotICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBHZXRCeVZhbDoK
ICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNDhkNGUxYmZmNDBjLi4zYThmNWNmYzc5NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTYw
NSw4ICs2MDUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2tJbkJvdW5kcykKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHNJbnQ1
MikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1
ZSB2YWx1ZSA9IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2RlKTsKICAgICAgICAgICAgIHsKQEAg
LTEwMjcsOSArMTAyNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgotICAgICAgICAgICAg
Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCk7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVj
dG9yTGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzksOSArMTAzNCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgICAgIGNvbXBpbGVD
aGVja0luQm91bmRzKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kc0ludDUyKCk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgICAgIGNv
bXBpbGVHZXRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTgzLDkgKzExNzUsNiBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAg
ICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6Ci0gICAgICAg
ICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCk7Ci0gICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00ODM5LDkgKzQ4Mjgs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1fb3V0LmxvYWRQdHIoY2Vs
bCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAgICAgfQogCi0gICAgTFZh
bHVlIGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKQorICAg
IHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIExW
YWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVl
IGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOyAgICAKIAogICAgICAgICBMQmFz
aWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NTcsNyArNDg0Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8od2Fz
dGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9h
ZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJy
YXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmVxdWFsKHZlY3RvciwgbV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51
bGxWZWN0b3JQdHIoKSkpLCAKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bGwsIGNvbnRpbnVh
dGlvbik7CkBAIC00ODc3LDMwICs0ODY2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKIAotICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxW
ZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50
MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKLSAg
ICB7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRF
eGNlcHRTZXR0aW5nUmVzdWx0KCk7Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAg
ICAgLy8gQUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0IHdpbGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xkIHRoYXQgcHJvbWlzZSBoZXJlLgot
ICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJv
dmUocmVzdWx0LCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKSkpOwotI2VuZGlmCi0gICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHJl
c3VsdCkpOwotICAgIH0KLQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCi0gICAgdm9pZCBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKLSAgICB7Ci0gICAgICAgIC8v
IFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgotICAgICAgICBSRUxFQVNFX0FTU0VSVChz
aXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKLSAg
ICAgICAgc2V0U3RyaWN0SW50NTIocmVzdWx0KTsKLSAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCi0KICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA4NiwxMyArNTA1NCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFy
cmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQotICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25O
ZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKLSAgICAgICAgICAgICAgICBzZXRJbnQz
MihtX291dC5jYXN0VG9JbnQzMihsZW5ndGgpKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKLSNlbmRpZgorICAgICAgICAgICAg
ICAgIHNldEludDMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2
ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xl
bmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtNTEwMSwxNyArNTA2NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+
YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Ci0gICAgICAgIC8vIFRoZSBwcmVw
cm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
KSwgdGhpcyBpcyBlcXVpdmFsZW50LgotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6
ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQu
bG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpKTsKLSAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCi0KICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAg
c3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTE1NiwyMyArNTEwOCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRo
aXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0
ZSB0aGVtLgogICAgIH0KLQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCi0gICAgdm9pZCBj
b21waWxlQ2hlY2tJbkJvdW5kc0ludDUyKCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBwcmVwcm9j
ZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwg
dGhpcyBpcyBlcXVpdmFsZW50LgotICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90
KSA9PSBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgLy8gU2lnbi1leHRlbmRlZCB0byBhbHNv
IGNhdGNoIG5lZ2F0aXZlIGluZGljZXMKLSAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuc2ln
bkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgIExWYWx1ZSBs
ZW5ndGggPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgc3BlY3Vs
YXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChp
bmRleCwgbGVuZ3RoKSk7Ci0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGNsYWltIHRvIGhhdmUg
SlNWYWx1ZSByZXN1bHQsIG5vIHVzZXIgb2YgdXMgc2hvdWxkCi0gICAgICAgIC8vIGRlcGVuZCBv
biBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhh
dAotICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgotICAgIH0KLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLQorICAgIAogICAgIExWYWx1ZSBjb21waWxlR2V0QnlWYWxJbXBsKCkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC02MDcyLDE4ICs2MDA4LDExIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzSW5Cb3VuZHMgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc091dE9mQm91
bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAgICAgICAgICAgICAgICAgICBM
VmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNo
aWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgotICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29uZGl0aW9uID0gbV9vdXQuYWJv
dmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBsb3dTdHJpY3RJbnQ1MihjaGls
ZDUpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwoaW5k
ZXgsIGxvd0ludDMyKGNoaWxkNSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29uZGl0aW9uLCB1bnN1cmUoaXNP
dXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7Ci0KKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSksCisgICAgICAg
ICAgICAgICAgICAgICAgICB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRz
KSk7CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZCb3VuZHMpOwog
ICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIsIHN0
b3JlVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKQEAgLTgyNDAsMTggKzgxNjksOTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQz
MlVzZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNv
bmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9
IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOworICAgICAg
ICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAg
ICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogCi0gICAgICAgIGNhc2UgSW50NTJSZXBVc2U6
IHsKLSAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJy
ZW50bHkodHlwZWRBcnJheVR5cGUpKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgICAgICBtX291dC5hYm92ZShzaXplLCBtX291dC5jb25zdEludDMyKEpTQXJyYXlCdWZm
ZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAgICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNl
KSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKwor
ICAgICAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgICAgICBtX291dC5zaGwo
bV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0
eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5
VHlwZSkgPCA4KSB7CisgICAgICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIo
NykpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KDcpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgTFZh
bHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICAgICAgTFZhbHVlIHN0
b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBzcGxhdFdvcmRzKAorICAgICAgICAgICAgICAgIHN0b3JhZ2UsCisg
ICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgICAgIG1fb3V0LmNh
c3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCisg
ICAgICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAgICAgICAgIG1faGVhcHMu
dHlwZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSk7
CisgICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5w
YXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOworICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+
YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0
ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNb
Ml0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgor
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihz
dG9yYWdlKTsKKworICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7
CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FS
UkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAor
ICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1l
IyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVf
RVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURf
QVJSQVlfVFlQRV9DQVNFCisgICAgICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAgICAgICAg
ICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1
Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgICAgICBtX291dC5zdG9yZTMy
KHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OworICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFy
cmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAotICAgICAgICAgICAgTFZh
bHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAgTFZh
bHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhh
dmVTdG9yYWdlKTsKIAotICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBl
ZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUg
PSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxM
b2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZv
clR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9i
amVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKKyAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODI3MSwxMDQgKzgyNzcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotCi0gICAgdm9p
ZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBl
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCi0gICAgewotICAgICAgICBMQmFzaWNCbG9jayBzbWFs
bEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0KLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdl
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgIG1fb3V0LmJyYW5j
aCgKLSAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQo
SlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgIHJhcmVseShz
bG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsK
LSAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0
aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KLSAgICAgICAgc3RhdGljX2Fzc2VydChp
c0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7Ci0K
LSAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KLSAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRC
aXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwot
ICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAg
ICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCi0gICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5
dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwotICAgICAgICBMVmFsdWUg
c3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0KLSAgICAg
ICAgc3BsYXRXb3JkcygKLSAgICAgICAgICAgIHN0b3JhZ2UsCi0gICAgICAgICAgICBtX291dC5p
bnQzMlplcm8sCi0gICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVT
aXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJv
LAotICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUo
QVJNNjRFKQotICAgICAgICB7Ci0gICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRp
Y2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICBhdXRo
ZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAgICAgIGF1dGhl
bnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNv
bWVMYXRlUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJh
bXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0u
Z3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHN0
b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIFZhbHVl
RnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAgICAg
IExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOwotICAgICAgICBzd2l0Y2ggKHR5cGVk
QXJyYXlUeXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAg
ICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBh
bGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVy
bywgc2xvd0Nhc2UpOyBcCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgRk9SX0VBQ0hfVFlQ
RURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkK
LSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6
Ci0gICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3
PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9vdXQu
c3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X3ZlY3Rvcik7Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAgICAgbV9vdXQu
c3RvcmU2NChzaXplNjRCaXRzLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoKTsKLSNlbHNlCi0gICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRv
SW50MzIoc2l6ZTY0Qml0cyksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpOwotI2VuZGlmCi0gICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJ
bnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19tb2RlKTsKLQotICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBt
X291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7Ci0KLSAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9
IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFy
cmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgp
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
bnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNpemU2NEJp
dHMsIHN0b3JhZ2VWYWx1ZSk7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KKyAgICAKICAgICB2b2lk
IGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUg
b2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NzQ3LDggKzE0NjU2LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIGJhc2UgYW5kIHZhbHVlIGFy
ZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCi0gICAgLy8gc3RvcmVzIHZhbHVl
IGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStlbmQq
OAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFsdWUg
ZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAgICAg
ICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTY4NCwxMyArMTU1
OTEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5k
YXRhVmlld0RhdGEoKTsKIAotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi0gICAgICAgIHNw
ZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNzVGhhbihp
bmRleCwgbV9vdXQuY29uc3RJbnQzMigwKSkpOwotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9v
dXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKTsKLSNlbHNlCi0gICAgICAgIC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNvbXBh
cmlzb24gb2YgaW5kZXggdG8gMCwgdGhlIGNoZWNrIGFnYWluc3QgbGVuZ3RoIGNhdGNoZXMgdGhh
dCBjYXNlCiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0Lmxv
YWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCkpOwotI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0
UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAg
aW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChk
YXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU4MzMsMTMgKzE1NzM0LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSNp
ZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50
MzIoMCkpKTsKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZl
KGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0jZWxzZQotICAg
ICAgICAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAs
IHRoZSBjaGVjayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKLSNlbmRpZgogICAgICAg
ICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAg
IGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0
LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsK
QEAgLTE3MzQxLDExICsxNzIzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0Fy
cmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAg
ICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgewotI2lmIFVTRShBRERSRVNT
NjQpCi0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotI2Vsc2UKICAgICAgICAgICAgICAgICBM
VmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0
YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGVkOGZmNzNlMWEzYS4uYTk0
MjAwOTNmNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw3
ICszMjksNiBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJ
bnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQz
Mk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRl
cik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFi
c3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KLSAgICBM
VmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYg
ZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVh
bChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4
IDg5NTY4ZDQ2MzBmYS4uNWM3NjVlZDk3NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NiwzMiArODYsMjMgQEAgdm9pZCBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5
cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQot
ICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotICAgICAg
ICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0
ZS5zY3JhdGNoRlBSKTsKLSNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdz
KTsKLSNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CiAgICAgICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZTsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotICAgICAgICBqaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotICAgICAgICBpZiAoZWxlbWVu
dFNpemUodHlwZSkgPiAxKQotICAgICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihs
b2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKLSAgICAgICAgaml0LmJveEludDUyKHZh
bHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7Ci0j
ZWxzZQorCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUu
YmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7
CisKICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAgICAgICAgICAgLy8g
V2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBU
eXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMy
LgotICAgICAgICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0
eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBo
ZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVy
Zmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9CisKICAgICAgICAg
aml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwotI2VuZGlmCiAgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0MiwxMiArMTMzLDggQEAg
dm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihu
dWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwot
Ci0jaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICAgICAgaml0LmJveEludDUyKHZhbHVl
R1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7Ci0jZWxz
ZQorICAgICAgICAKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwot
I2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGZhYzhl
MGFjNjY4Yi4uNGE1YzA4MGMwNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTkzNyw4ICs5MzcsMTAgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwg
aSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJ
bmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGksIHZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MCwyMiArMjM0MiwyMSBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgo
KSkgewotICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OworICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzSW50MzIoKSkgeworICAgICAgICBp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAg
ICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhi
YXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChh
cnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAg
IGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5
UHJvZmlsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGlm
IChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKIAogICAg
ICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAgICAg
ICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMKLSAg
ICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBvYmplY3QtPmJ1dHRl
cmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhp
bmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cyAmJiBpID49IDAgJiYgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQz
MiwgYW5kIG1heWJlIERvdWJsZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3MSw3ICsyMzcyLDgg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmpl
Y3QsIGkpKTsKKyAgICAgICAgaWYgKGkgPj0gMCkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihpKSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZh
bHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggZTc2ZGFkYTBkMzMyLi40MWM3MWI2MDA0NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgKQEAgLTE0OSwxMiArMTQ5LDYgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIg
MAogI2VuZGlmCiAKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotI2RlZmluZSBPRkZMSU5F
X0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMQotI2Vsc2UKLSNkZWZpbmUgT0ZGTElORV9BU01fTEFS
R0VfVFlQRURfQVJSQVlTIDAKLSNlbmRpZgotCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUg
T0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA0OTRlZjc2MWUzMjcuLjU2ODEzNzdiYjk4
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5
VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVj
dC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2ts
eShpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7
CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBA
IC0xMTcwLDEzICsxMTcwLDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29k
ZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWlu
dDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAg
ICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGksIHZhbHVlKSkKKyAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVp
Y2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBp
LCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KaW5kZXggNmNkYmQ4ZGUzYmE4Li5iNDIxYTdmYTQxMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIx
NywxMCArMjE3LDYgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJp
dHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRG
b3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAotaWYgTEFSR0VfVFlQRURfQVJSQVlTCi0gICAgY29u
c3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3RleHByIEFycmF5UHJvZmlsZTo6c19z
bWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKLWVuZAotCiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbAogCiBp
ZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBvciBBUk02NCBvciBBUk02NEUgb3IgUklTQ1Y2NApAQCAt
MTMxNCw4ICsxMzEwLDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4
aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5n
VHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKLSMgTm90ZSB0aGF0IGluZGV4
IGlzIGFscmVhZHkgc2lnbi1leHRlbmRlZCB0byBiZSBhIHJlZ2lzdGVyIHdpZHRoLgotbWFjcm8g
Z2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNo
RG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgc2xvd1BhdGgpCittYWNybyBnZXRC
eVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgc2xvd1BhdGgpCiAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4g
aGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBm
cm9udC4KICAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVtiYXNlXSwgdDIKICAgICBzdWJpIEZpcnN0
VHlwZWRBcnJheVR5cGUsIHQyCkBAIC0xMzI2LDI2ICsxMzIxLDExIEBAIG1hY3JvIGdldEJ5VmFs
VHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CiAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKLSAg
ICAgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3Ro
Ci0gICAgICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxl
bmd0aAotICAgICAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKLSAgICAgICAg
ZW5kCisgICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVu
Z3RoCisgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCiAgICAgZWxzZQogICAg
ICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24g
dGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMu
Ci0gICAgICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUwotICAgICAgICAgICAgYnFhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFti
YXNlXSwgc2xvd1BhdGgKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLSAgICBpZiBMQVJHRV9UWVBF
RF9BUlJBWVMKLSAgICAgICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwg
LnNtYWxsVHlwZWRBcnJheQotICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXkoKQotLnNtYWxsVHlw
ZWRBcnJheToKKyAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0
aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAogICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3
OjptX3ZlY3RvcltiYXNlXSwgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNGU3MGY4YjE1ZmYwLi41
MGQ1ZGJkZjYwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjI0LDEwICsxNjI0LDYgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCi0gICAg
bWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKLSAgICAgICAgY3Jhc2goKQotICAgIGVuZAotCiAg
ICAgbWV0YWRhdGEodDUsIHQyKQogICAgIGdldChtX2Jhc2UsIHQyKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQpAQCAtMTY3Myw3ICsxNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNw
YXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBl
ZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBz
ZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDM1OWNlYzVjOTA4MC4uZDg0YjZl
YWQzN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMywxNCArMTcxMyw2IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAg
ICBlbmQKIAotICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCi0gICAgICAgIGlmIExBUkdF
X1RZUEVEX0FSUkFZUwotICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBjcmFzaCgpCi0gICAgICAgIGVuZAotICAgIGVuZAotCiAgICAgbWV0YWRh
dGEodDUsIHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzMxLDcgKzE3MjMsNiBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykK
LSAgICAjIFRoaXMgc2lnbi1leHRlbnNpb24gbWFrZXMgdGhlIGJvdW5kcy1jaGVja2luZyBpbiBn
ZXRCeVZhbFR5cGVkQXJyYXkgd29yayBldmVuIG9uIDRHQiBUeXBlZEFycmF5LgogICAgIHN4aTJx
IHQxLCB0MQogCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBd
LCB0MywgbnVtYmVyVGFnKQpAQCAtMTc3Miw3ICsxNzYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0g
ICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERv
dWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKKyAgICBn
ZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91Ymxl
R2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNDk3ZjQ5ZThhMWYwLi5jOWI4ZjJh
NzE5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlC
dWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0
b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFy
ZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0
YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAg
ICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29u
dGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQog
ICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlC
dWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50
czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRh
KGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsK
QEAgLTEwOSwyMSArMTA5LDIzIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQog
ICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRy
eUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJ
bml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRy
eUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICBDaGVja2VkU2l6ZSBzaXplSW5C
eXRlcyA9IG51bUVsZW1lbnRzOwotICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsK
LSAgICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVl
KCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgcmVzZXQoKTsKLSAgICAgICAg
cmV0dXJuOworICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFs
IHNpemUuCisgICAgaWYgKG51bUVsZW1lbnRzKSB7CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6
ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOworICAgICAgICBpZiAodG90YWxTaXpl
IC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkgeworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJ
bkJ5dGVzLnZhbHVlKCk7CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihudW1FbGVtZW50cykgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXM7CiAgICAgaWYgKCFhbGxv
Y2F0aW9uU2l6ZSkKICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFs
bG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVz
ZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCog
ZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlv
blNpemUpOwotICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkp
OworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKICAgICBpZiAoIWRh
dGEpIHsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzNCw3
IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlh
bGl6ZSkKICAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1f
c2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOworICAgIG1fc2l6ZUluQnl0ZXMgPSBz
aXplSW5CeXRlczsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQpAQCAtMTc2LDcgKzE3OCw3IEBAIHZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAg
IFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9T
SVpFKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xODksNyArMTkxLDcgQEAgUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5n
dGgoKSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlm
ICghYnVmZmVyKQpAQCAtMjA2LDcgKzIwOCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRo
aXMgaXMgb25seSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNs
b3dEb3duQW5kV2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxk
IGhhdmUgYWxyZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNh
Z2U6OmlzRW5hYmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6
OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGgg
LSAxKSkpOwogICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJy
YXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIxOCw3ICsyMjAs
NyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKQogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNv
dWxkIGludHJvZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5j
YWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJs
eS4gV2FzbSBzaG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRh
dGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYg
ZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNh
Z2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZl
R2lnYWNhZ2UoKTsKQEAgLTIyNyw3ICsyMjksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndAog
ICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsK
ICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzNyw3ICsyMzksNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXImIG90
aGVyKQogICAgIHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50
cy50cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5p
dGlhbGl6ZSk7CkBAIC0yNDYsMTcgKzI0OCwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aAog
ICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBieXRl
TGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0
aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gY3Jl
YXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRv
bnRJbml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
IHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5p
dGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRl
KG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC0yNjQsMTcgKzI2NiwxNSBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpegogICAgIHJldHVy
biBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAgQVNTRVJUKCFi
eXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFy
cmF5QnVmZmVyKFdURk1vdmUoY29udGVudHMpKSk7Ci0gICAgaWYgKGJ5dGVMZW5ndGgpIHsKLSAg
ICAgICAgQVNTRVJUKHNvdXJjZSk7Ci0gICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291
cmNlLCBieXRlTGVuZ3RoKTsKLSAgICB9CisgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3Vy
Y2UsIGJ5dGVMZW5ndGgpOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVy
Q29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRz
LCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZm
ZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAot
c2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6
ZV90IHJpZ2h0KQordW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVu
c2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0
KTsKICAgICBpZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgc2l6ZV90IEFycmF5QnVm
ZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KQogICAg
IHJldHVybiB4OwogfQogCi1zaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGlu
ZGV4KSBjb25zdAordW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4
KSBjb25zdAogewotICAgIHNpemVfdCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAg
IHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwg
MCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNs
YW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QK
ICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRl
TGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdp
dGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25zdAorUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CiB7Ci0gICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBl
bmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/
IGVuZCAtIGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAg
aWYgKHJlc3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVh
Y2NhMmMyMzNhOC4uNjhmZjkwZTEzZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyMiArMzMsMTMgQEAKICNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1NoYXJlZFRhc2suaD4KLSNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIAotI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihz
aXplX3QpID09IHNpemVvZih1aW50NjRfdCkpOwotI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgKDF1bGwgPDwgMzIpCi0jZWxzZQotc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBz
aXplb2YodWludDMyX3QpKTsKLS8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0
b3JlIHRoZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0
IDRHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgotLy8gU28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdC
LiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAt
IDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdm
ZmZmZmZmdQotI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7CkBAIC02MCw3
ICs1MSw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFj
a2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9p
ZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBT
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRN
YXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTY5LDE0ICs2MCwxNCBAQCBwcml2YXRlOgog
ICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwg
dGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgc2l6ZV90IG1fc2l6ZUluQnl0
ZXM7CisgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVy
Q29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMp
OwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25l
ZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRl
bnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJh
dG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtODgsNyArNzksNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAg
ICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUlu
Qnl0ZXMoKSk7IH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3Np
emVJbkJ5dGVzOyB9CisgICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBt
X3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkOyB9CiAgICAgCkBAIC0xMDMsNyArOTQsNyBAQCBwcml2YXRlOgogICAgICAgICBE
b250SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9jYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7
CisgICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtl
U2hhcmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAg
LTExNCwyOCArMTA1LDI4IEBAIHByaXZhdGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBh
Y2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNr
ZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgc2l6ZV90
IG1fc2l6ZUluQnl0ZXM7CisgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNz
IEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7
CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lk
KiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2
b2lkKiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBp
bmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
c2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBAIC0xNDYsNyArMTM3LDcg
QEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
bGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRl
eChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2lu
LCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAg
IGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNzAsMTIgKzE2MSwxMiBAQCBwdWJsaWM6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJp
bWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50
cyYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVy
Q29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwog
ICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgaW5saW5lIHNpemVf
dCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSBzaXpl
X3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CisgICAg
aW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVu
c2lnbmVkIHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTIw
MSw3ICsxOTIsNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCi1zaXplX3QgQXJyYXlCdWZmZXI6OmJ5dGVM
ZW5ndGgoKSBjb25zdAordW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMTQsNyArMjA1
LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVm
ZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBw
cm9iYWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29t
ZXRoaW5nLgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwor
ICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRl
TGVuZ3RoKCkpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNDczNzIyNzQ1
MzRmLi43NjhmZWE5MDliYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxNyArMjUsMTggQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJh
eUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiAgICAgICAg
IDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1
ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDxzaXplX3QsIENyYXNoT25PdmVyZmxv
dz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVy
Zmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCArPSBieXRlTGVuZ3RoOwogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggMDk5OTU0Yjg2NTMzLi43
ZTM5NjA3Nzc4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBl
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03OCwxNCArNzcsMTQgQEAgcHVibGljOgogCiAg
ICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHNp
emVfdCBieXRlT2Zmc2V0KCkgY29uc3QKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICBzaXplX3QgYnl0ZUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05MywxOCArOTIsMTkgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwog
CiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0g
ICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRB
bGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkpOworICAgICAgICByZXR1
cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRv
IHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzIHdpdGhp
biByYW5nZS4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJh
eUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50U2l6ZSkKKyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZl
biBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKKyAgICAvLyB3aXRoaW4gcmFuZ2UuCisg
ICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBz
aXplKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOworICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsK
ICAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAt
IGJ5dGVPZmZzZXQpIC8gc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7CisgICAgICAg
IHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAv
IHNpemU7CiAgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0OCAr
MTEzLDQzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpT
R2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4m
Jiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKIAotICAgIGlubGluZSBib29sIHNldElt
cGwoQXJyYXlCdWZmZXJWaWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29s
IHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKLSAgICBp
bmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBs
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zm
c2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9v
bCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
dW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9v
bCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5n
dGgpOworCisgICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgK
KyAgICAgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsCisgICAgICAg
IHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zm
c2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAg
IC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlp
bmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
dm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZl
ciYgYnVmZmVyLAotICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICBzaXpl
X3QgKm9mZnNldCwKLSAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKKyAgICAgICAgdW5zaWdu
ZWQgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAorICAgICAgICB1
bnNpZ25lZCAqbnVtRWxlbWVudHMpCiAgICAgewotICAgICAgICBzaXplX3QgbWF4T2Zmc2V0ID0g
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8g
c2l6ZW9mKFQpOworICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJh
eUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNl
dCkgewogICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAg
ICAgICAqbnVtRWxlbWVudHMgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIENoZWNrZWRTaXplIGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKLSAgICAgICAgYWRq
dXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOwotICAgICAgICBhZGp1c3RlZE9mZnNldCArPSBhcnJh
eUJ5dGVPZmZzZXQ7Ci0gICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkg
fHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkpCi0gICAgICAg
ICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7Ci0gICAgICAgIHNpemVfdCBy
ZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXpl
b2YoVCk7CisgICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZzZXQgKyAqb2Zmc2V0ICogc2l6
ZW9mKFQpOworICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVmZmVyLmJ5dGVMZW5ndGgoKSwg
Km9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5i
eXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRz
ID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0j
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKLSAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2
MzsKLSNlbHNlCi0gICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7Ci0jZW5kaWYKKyAgICB1
bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKICAgICBib29sIG1faXNEZXRhY2hhYmxlIDogMTsK
LSAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOworICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0
aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2
ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhl
IEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjUsNDYg
KzE2MCw4MSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CiB9
OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5
LCBzaXplX3QgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5
QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRl
TGVuZ3RoKCkpKQorICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8
IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCisgICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgeworICAg
ICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQorICAgIH0KKyAgICAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFy
cmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQorYm9vbCBBcnJh
eUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5
dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKCFpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKKyAg
ICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
ZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRh
dGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgeworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zm
c2V0IG9yIG92ZXJmbG93CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICB1aW50
OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1l
bW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKK2Jv
b2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoIWlzU3Vt
U21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3Ro
KCkpKQorICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zm
c2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7CisgICAgICAgIC8vIE91dCBvZiBy
YW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAog
ICAgIGNvbnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFz
ZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQs
IGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZl
clZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmICghaXNTdW1TbWFsbGVy
VGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQor
ICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVPZmZzZXQg
KyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCAr
IHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgLy8gT3V0IG9mIHJhbmdl
IG9mZnNldCBvciBvdmVyZmxvdwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICB9CisgICAg
CiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygp
KTsKICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZz
ZXRBbmRMZW5ndGgoCisgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUs
IHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCit7CisgICAgaWYgKHN0YXJ0IDwg
MCkKKyAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOworICAgIGlmIChzdGFydCA8IDApCisgICAg
ICAgIHN0YXJ0ID0gMDsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kICs9IGFycmF5U2l6
ZTsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kID0gMDsKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCisgICAgICAgIGVuZCA9IGFycmF5U2l6ZTsK
KyAgICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIGVuZCA9IHN0YXJ0OworICAgICpvZmZzZXQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgICpsZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNp
bmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0F0b21pY3NPYmplY3QuY3BwCmluZGV4IGQzNjI0NTBhMmY4Yi4uNjg4M2ExN2M0NzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApA
QCAtMTIwLDcgKzEyMCw4IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vz
c0luZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0lu
ZGV4Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLQor
ICAgIAorICAgIEFTU0VSVCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KElOVF9NQVgpKTsKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZp
ZXctPmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5jcHAKaW5kZXggZmJjOTg0N2QyZDViLi5kY2MyZjUwNjRhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6
OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShi
dWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERh
dGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHNpemVfdCBieXRlTGVuZ3RoID0g
YnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRl
TGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5k
ZXggMzQwMjY1NDEwMzE5Li5kYTA2YjRiYjIxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3Rh
dGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAg
ICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBUIGdldChzaXplX3Qgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKKyAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBi
b29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAg
ICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3Rh
dHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQodW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVF
bmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9
IHRoaXMtPnRlbXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAg
ICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHNpemVf
dCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxs
cHRyKQorICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVF
bmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVz
KSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZp
ZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVM
ZW5ndGgpOworICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKaW5kZXggNWJlODE2NWY3MmYyLi5iZTdlNmMwNTM0ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMz
LDI0ICszMywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJW
aWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKHNpemVfdCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5n
dGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShzaXplX3QgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSo+KGJhc2VBZGRyZXNzKCkpOyB9CiAgICAgCi0gICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKKyAgICBib29sIHNldChHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCiAgICAg
ewogICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRSYW5nZShjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHNpemVfdCBvZmZzZXQp
CisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBz
aXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBzZXRS
YW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KSwKQEAgLTU4LDM5ICs1OCwzOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHplcm9S
YW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAgYm9vbCB6ZXJvUmFuZ2UodW5z
aWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gemVyb1Jh
bmdlSW1wbChvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICog
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6
ZXJvRmlsbCgpIHsgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy
biBieXRlTGVuZ3RoKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQog
Ci0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKKyAg
ICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMt
Pmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAot
ICAgIHZvaWQgc2V0KHNpemVfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQg
c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsK
ICAgICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1
ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGlu
ZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7
CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKICAgICB9CiAKLSAgICBib29sIGdldFJh
bmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgc2l6ZV90IG9m
ZnNldCkKKyAgICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNp
emVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdldFJh
bmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpLApAQCAt
OTgsMTEgKzk4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogCi0gICAgYm9vbCBjaGVja0luYm91bmREYXRh
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW5ib3Vu
ZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVu
Z3RoKCkpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICAg
ICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCisgICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3Vu
dCA8PSBsZW5ndGgKKyAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93CisgICAgICAgICAgICAm
JiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7CisgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTExLDcgKzExOCw3IEBA
IHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBmMWE3NmRmZDNiYjEuLmFlNWJkZDhj
NmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxNCArMzIsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQorUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogewotICAgIEFTU0VSVCgo
bGVuZ3RoIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGUoc2l6ZV90IGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00OCw3ICs0Nyw3IEBAIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKHNpemVfCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0
aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Nyw3ICs1Niw3IEBAIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRl
KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQpOwpAQCAtNjUsNyArNjQsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBs
ZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
YXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc1LDcgKzc0LDcgQEAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGFycmF5LCBzaXplX3QgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04
Niw3ICs4NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTAxLDcgKzEwMCw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMTAsNyArMTA5
LDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVk
KHNpemVfdCBsZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCitHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwpAQCAtMTE5LDYgKzExOCwyNSBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKICAgICByZXR1cm4g
dHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CitH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
CitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50
IGVuZCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKKyAgICBjYWxjdWxh
dGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZs
ZW5ndGgpOworICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
OworICAgIEFTU0VSVChidWZmZXIpOworICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRh
cHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKKyAg
ICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOworfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCAzZDhlNDc0NTA2Njgu
Ljg5ZWFlYmQzYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8g
SlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6
ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDog
bV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4
MSwxOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENoZWNrZWRTaXplIHNp
emUgPSBsZW5ndGg7Ci0gICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKLSAgICBpZiAoc2l6ZS5oYXNP
dmVyZmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKKyAgICAvLyBEb24n
dCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgorICAgIGlmIChsZW5n
dGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxs
b2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKKyAgICAKKyAg
ICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0
PHNpemVfdD4oZWxlbWVudFNpemUpOworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2Fn
ZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOwogICAgIGlm
ICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkK
ICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7CisgICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVt
ZW50U2l6ZSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2Rl
ID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAg
ICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJy
YXlCdWZmZXIsCi0gICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCisgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3Ry
dWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlw
ZWRBcnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0
aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICBzaXplX3Qg
Ynl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmll
d01vZGUpCkBAIC0yMzgsMTYgKzIzOCw5IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRT
aXplKEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhB
cnJheVR5cGVdOwogfQogCi1zaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBj
b25zdAordW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogewot
I2lmIEFTU0VSVF9FTkFCTEVECi0gICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgp
OwotICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOwotICAgIHJldHVybiByZXN1bHQu
dmFsdWUoKTsKLSNlbHNlCi0gICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFk
eSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2Fu
aXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkg
KiBlbGVtZW50U2l6ZSh0eXBlKCkpOwotI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5
QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNzQsNyArMjY3LDcgQEAg
QXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRoaXMt
PmJ5dGVMZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0
aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7
CkBAIC0zMjIsOCArMzE1LDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZl
clZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBv
c3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwotICAg
IHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAg
IGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDE0ZmE1YmJhNWEwYy4uZGQwMWY3Zjgy
YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
ZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0
U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZv
aWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEyICsxMTcsMTAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qg
c2l6ZU9mKHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBz
aXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCiAgICAg
ewotICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOwotICAgICAgICByZXN1
bHQgKj0gZWxlbWVudFNpemU7Ci0gICAgICAgIHJlc3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpIC0gMTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpIC0gMSk7CisgICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSkKKyAgICAgICAg
ICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBA
IC0xMzgsMjUgKzEzNiwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAg
ICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0
cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplLCBJbml0aWFsaXph
dGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVj
dGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVs
ZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4g
SXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNv
bnRleHQoU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZl
Y3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25D
b250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsCi0gICAgICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICAK
ICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVj
dGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsCi0gICAgICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZp
ZXdUYWcpOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBEYXRhVmlld1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2
ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9
Ci0gICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAg
ICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAg
ICBUeXBlZEFycmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAg
ICAgICAgCkBAIC0xNjQsNyArMTYyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUq
IG1fc3RydWN0dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNh
Z2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1f
dmVjdG9yOwotICAgICAgICBzaXplX3QgbV9sZW5ndGg7CisgICAgICAgIHVpbnQzMl90IG1fbGVu
Z3RoOwogICAgICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSog
bV9idXR0ZXJmbHk7CiAgICAgfTsKQEAgLTE5MiwxMSArMTkwLDExIEBAIHB1YmxpYzoKICAgICB2
b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3Ro
KCkpOyB9CiAgICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3ZlY3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSBzaXplX3QgYnl0
ZU9mZnNldCgpOwotICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldENv
bmN1cnJlbnRseSgpOworICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7CisgICAgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAot
ICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHNpemVf
dCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjIxLDcgKzIxOSw3IEBAIHByb3RlY3RlZDoK
ICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVj
dG9yUHRyIG1fdmVjdG9yOwotICAgIHNpemVfdCBtX2xlbmd0aDsKKyAgICB1aW50MzJfdCBtX2xl
bmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmlu
ZGV4IGQ4NWIzMjgzMDc2Mi4uMWQwNzJiNzFhY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTks
NyArOTksNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNl
dEltcGwoKQogICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYnVmZmVyLT5kYXRhKCkpOwogCi0gICAgc2l6ZV90IHJlc3VsdCA9IHN0YXRpY19jYXN0PHNp
emVfdD4oZGVsdGEpOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihkZWx0YSk7CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAg
LTExMCwxNCArMTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlT2Zmc2V0SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHNpemVfdCBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCitpbmxpbmUgdW5zaWduZWQgSlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRh
dG9yLCBzaXplX3Q+KCk7CisgICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2ln
bmVkPigpOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAg
cmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90Pj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBlOGE0ZTdh
NjIzMzkuLjA4NjdkY2JlYWQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk5LDcgKzI5OCw2IEBAIHB1
YmxpYzoKICAgICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1
aW50MzJfdCB0b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRv
SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OwotICAg
IHNpemVfdCB0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVy
cm9yTmFtZSkgY29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAppbmRleCA4ZjVjMDcxOTg4NmYuLmY3YTllNzBlZDZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02
OSw0NyArNjksMTQgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLQotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBh
c0ludDMyKCk7Ci0KLSAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkgeworICAgIGlmIChkID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVy
cm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Ci19Ci0KLWlubGlu
ZSBzaXplX3QgSlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAotewotICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotCi0gICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChkIDw9IC0xKSB7Ci0gICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICBy
ZXR1cm4gYXNJbnQzMigpOwotCi0gICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KE1BWF9B
UlJBWV9CVUZGRVJfU0laRSkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JO
YW1lLCAiIHRvbyBsYXJnZSIpKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8v
IEFsbCBvZiB0aGlzIG1vbnN0cm9zaXR5IGlzIGp1c3QgdG8gZ2l2ZSB0aGUgY29ycmVjdCByZXN1
bHQgb24gMTw8MzIuCi0gICAgc2l6ZV90IG91dHB1dE9mZnNldCA9IDA7Ci0gICAgZG91YmxlIGlu
cHV0T2Zmc2V0ID0gMDsKLSAgICBzaXplX3QgaW50MzJNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKTsKLSAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50MzJN
YXgpKSB7Ci0gICAgICAgIG91dHB1dE9mZnNldCA9IGludDMyTWF4OwotICAgICAgICBpbnB1dE9m
ZnNldCA9IGludDMyTWF4OwotICAgIH0KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG91
dHB1dE9mZnNldCArIHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpT
Qzo6dG9JbnQzMihkIC0gaW5wdXRPZmZzZXQpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNDOjp0b0ludDMyKGQpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIv
I3NlYy10b2ludGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuY3BwCmluZGV4IGRmZDZhNTExZDE5NC4uNmZhYjQ2NWRkM2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQy
LDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQm
IGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6
Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAg
SlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCiB7CiAg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0ds
b2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCkKK2Jvb2wgSlNE
YXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWdu
ZWQsIHVuc2lnbmVkKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVj
dCosIHNpemVfdCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmgKaW5kZXggYTVlNzhjNDY5YjM4Li4yYzc4NWU0NzYxMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNCArNDYsMTUgQEAg
cHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3
KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAg
ICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwKKyAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAg
CiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2Ug
YXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7
Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90
LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRleChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcq
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKICAg
ICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCmluZGV4IGUwZmJjNTJmODc1OS4uOTQ5MDYyNDdlYTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
Y2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAot
ICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGds
b2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAK
ICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICB1bnNpZ25lZCBlbGVtZW50U2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUg
PiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxl
RW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0
YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNo
ZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3
LT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3
ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBv
ZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICBzaXpl
X3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CisgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1
bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5
NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0g
ZmFsc2U7Ci0gICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOworICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJs
eWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAot
ICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4g
Ynl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBv
ZiBib3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZWExZWY5YzEzZmE3Li5j
MjJjNTVhMGQ4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUg
IkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUg
IlRvTmF0aXZlRnJvbVZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01NiwxMCArNTUsMTAgQEAgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAg
IFN0cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAg
IC8vIGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHNpemVfdCBM
CisvLyAgICAgdWludDMyX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVz
ZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklY
TUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVy
LXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8v
IEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVy
ZmxvdyIgZGF0YSBmb3IKQEAgLTEwNCwxNCArMTAzLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0
eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0
cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOyB9CisgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90
IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIzLDQ2ICsxMjIsNDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0
b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyhzaXplX3QgaSkgY29uc3QKKyAgICBi
b29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8
IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1h
dGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRz
IC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlj
a2x5KHNpemVfdCBpKSBjb25zdAorICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6
Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2ts
eShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4UXVp
Y2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZl
cnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBn
ZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAorICAgIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZSh1bnNpZ25lZCBpKSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVy
biB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVp
Y2tseShzaXplX3QgaSkgY29uc3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxs
cHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSh1
bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUg
dmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNl
dEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4o
dmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0SW5k
ZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1Zh
bHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc3LDE1ICsxNzYs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBF
bGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvTmF0aXZl
RnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7Ci0gICAgfQorICAgIHN0
YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJj
aW9uKEpTVmFsdWUganNWYWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKLSAgICB9CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0
aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9CiAKICAgICB2b2lkIHNvcnQoKQogICAg
IHsKQEAgLTIwNSwxOCArMTk4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAg
IGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
CisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
b2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBtX2xl
bmd0aAorICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1fbGVuZ3RoCisgICAgICAg
ICAgICAvLyBjaGVjayBvdmVyZmxvdworICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoID49
IG9mZnNldDsKICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6
IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlh
dGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJl
dHVybnMgZmFsc2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9u
LgotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3Qq
LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSA9IENvcHlUeXBl
OjpVbm9ic2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
b2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgp
OwogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZElt
cGwoKTsKQEAgLTMyMiw4ICszMTgsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3Iu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNw
ZWNpZmljVHlwZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgc2l6ZV90IG9iamVj
dE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9y
PiosCisgICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5
VHlwZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9p
bnQgVHlwZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAg
Ly8KQEAgLTM1Myw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQog
ICAgIHsKICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0g
cHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDMzNmYxYWVlM2Y3MS4uZDI1ODQwNjdlODNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0
Myw3ICsxNDMsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlC
dWZmZXJJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHNpemVfdCBvZmZz
ZXQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0
QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3Ro
T3B0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAK
LSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
CiAgICAgICAgIGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQu
dmFsdWUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFs
T2JqZWN0KiBnbG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlw
ZWQgYXJyYXkgb2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBp
ZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RW
YWx1ZSkpIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
OwogICAgICAgICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAg
ICAgIGlmIChpc1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSkpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHNpemVfdCBsZW5ndGggPSBmaXJz
dFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBsZW5ndGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgfQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJn
Q291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3
IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGgg
dmFsdWUgaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAg
ICAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMik7CiAgICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9i
YWxPYmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmll
dyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBs
ZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3Rv
cmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGEzZGRjMWY4MzZhNy4uNDUwMjM4NzkyZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKLSNp
bmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00OCw3ICs0Nyw3
IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5
VmlldygKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3QgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTY2LDcgKzY1LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB2
b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQo
c3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OSw3ICs3OCw3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAwLDE3ICs5OSwx
NyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBlbGVt
ZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3Qgc2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsK
LSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoLCBlbGVtZW50U2l6ZSkpIHsKKyAgICBpZiAoIUFycmF5QnVmZmVy
Vmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBz
aXplKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVy
IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgZWxlbWVudFNpemUp
KSB7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
Ynl0ZU9mZnNldCwgc2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBu
b3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ2LDcg
KzE0NSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNjAsOCArMTU5
LDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5n
ZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFk
YXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZz
ZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHNp
emVfdCBvdGhlck9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTIxOSw3ICsyMTgsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90
aGVyLT5leGlzdGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVs
ZW1lbnRTaXplICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlw
ZSA9PSBDb3B5VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAg
ICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0
VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOSw3ICsyMjgsNyBAQCBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAog
CiAgICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5
IHRvIGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2ts
eVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9y
Ojp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVy
LT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIz
OSwxMSArMjM4LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1l
ZGlhdGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsg
aS0tOykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxh
dGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2ts
eUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAoc2l6ZV90
IGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQog
ICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVy
QnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MSwxNCArMjUwLDE0IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5
cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
c2l6ZV90IG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6
ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwog
ICAgIGlmIChjaS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkg
ewotICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNp
bmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6
IHdlIGNhbiBqdXN0IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVy
LT5sZW5ndGgoKSk7CiAgICAgICAgIApAQCAtMzEzLDExICszMTIsOSBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24n
dCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1v
cmUKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZz
ZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKSkpOwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCBy
aWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2
YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8
fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRl
eCAxOTg2MzkwZDhiZDkuLmI2M2I2OGEyNWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCkBAIC02MCw3ICs2MCw2IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVu
Y3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY2xhc3MgQXJy
YXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3Mg
SW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMiw4ICsyMTEsMTAgQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAg
IGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQorICAgICAg
ICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7CisgICAgICAg
ICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OCw3ICsyODksNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25z
dDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFy
cmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ0LDE1ICszNDUsMTQgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0K
LQotICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKLSAgICBKU1ZhbHVlIHRyeUdl
dEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51
bGxwdHIpIGNvbnN0CisgICAgICAgIAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYg
KGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSw3MyArNDExLDM1IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAorICAgIGJvb2wgY2FuU2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAg
dm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAg
ICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKLQotICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nl
c3MKLSAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKLSAgICBib29sIHRyeVNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSop
OwotICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCisgICAgICAgIAorICAg
IGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAg
ICAgICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgotICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKKyAgICAgICAgICAgIHJldHVybiBjYW5TZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsKICAgICAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzogewotICAgICAgICAgICAg
aWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7Ci0gICAgICAgICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRl
eCh2bSwgaSwgdik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgICAgICBpZiAoaSA+
PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdp
dGhvdXRXcml0ZUJhcnJpZXIodik7Ci0gICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1
YmxpY0xlbmd0aCgpKQotICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3Ro
KGkgKyAxKTsKLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghdi5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgY29udmVydERvdWJs
ZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IHYuYXNOdW1iZXIoKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgewot
ICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdT
ZXRJbmRleCh2bSwgaSwgdik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlz
LCBpKSA9IHZhbHVlOwotICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5n
dGgoKSkKLSAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVf
RE9VQkxFX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdV
T1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICBpZiAo
aSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5n
VHlwZSh2bSwgaSwgdik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJl
dHVybiBpIDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKICAgICAgICAgY2FzZSBOb25BcnJh
eVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0
b3JbaV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKQorICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CisgICAg
ICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLQorICAgICAg
ICAKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUg
dikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CmluZGV4IDc2MGE5YTllMmVjNC4uOGZmYzVmOTM4MjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDE1ICs0NjUsMjEgQEAg
aW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQ
cm9maWxlKSBjb25zdAoraW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKLSNpZiBVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQotICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCi0gICAgICAgIGFycmF5UHJvZmlsZS0+
c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFycmF5
UHJvZmlsZSk7Ci0jZW5kaWYKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2RlZmluZSBDQVNFX1RZ
UEVEX0FSUkFZX1RZUEUobmFtZSkgXAorICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKKyAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOworICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJB
WV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQorI3VuZGVm
IENBU0VfVFlQRURfQVJSQVlfVFlQRQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CiAKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0Cit7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsK
ICNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKICAgICBjYXNlIG5hbWUgIyMg
QXJyYXlUeXBlIDoge1wKQEAgLTUwNiw1MCArNTEyLDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KLQotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldElu
ZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYgdm0sIHVuc2lnbmVkIGks
IEpTVmFsdWUgdikKLXsKLSAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJm
bHkoKS0+YXJyYXlTdG9yYWdlKCk7Ci0gICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gc3Rv
cmFnZS0+bV92ZWN0b3JbaV07Ci0gICAgSlNWYWx1ZSBvbGQgPSB4LmdldCgpOwotICAgIHguc2V0
KHZtLCB0aGlzLCB2KTsKLSAgICBpZiAoIW9sZCkgewotICAgICAgICArK3N0b3JhZ2UtPm1fbnVt
VmFsdWVzSW5WZWN0b3I7Ci0gICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgpKQotICAg
ICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICB9Ci19Ci0KLWlubGluZSBi
b29sIEpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGks
IEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCi17Ci0gICAgc3dpdGNoICh0
eXBlKCkpIHsKLSNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQotI2RlZmluZSBVUERBVEVfQVJS
QVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHsgXAotICAgICAgICBpZiAoKGkgPiBBcnJh
eVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2ZpbGUpXAot
ICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpO1wKLSAg
ICB9IHdoaWxlIChmYWxzZSkKLSNlbHNlCi0jZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGks
IGFycmF5UHJvZmlsZSkgZG8geyBcCi0gICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7XAot
ICAgIH0gd2hpbGUgKGZhbHNlKQotI2VuZGlmCi0jZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQ
RShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHsgXAotICAgICAgICBhdXRv
KiB0eXBlZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7XAotICAg
ICAgICBpZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2KSlcCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7XAotICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHko
aSwgdik7XAotICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpO1wK
LSAgICAgICAgcmV0dXJuIHRydWU7XAotICAgIH0KLSAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9U
WVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENB
U0VfVFlQRURfQVJSQVlfVFlQRQotI3VuZGVmIFVQREFURV9BUlJBWV9QUk9GSUxFCi0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQorICAgIAogaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDA5MTllNzIx
ODZkMy4uY2U3MzBmM2JmOTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCkBAIC04OTgsOCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1
ZSBnZXRCeVZhbFdpdGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsK
ICAgICBpZiAoYmFzZS0+aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZSk7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5
R2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKKyAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4
KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1
aWNrbHkoaW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0
cmluZyhiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhZ2VDb3VudC5oCmluZGV4IGI3ZDhjOWZjZjcyYi4uZThkYzFhMzBhZWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC0yNyw4ICsyNyw2
IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgotCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTgsNyArOTYs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0g
NjQgKiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdl
Q291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8g
cGFnZVNpemUpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3MDViYzM1
YzQ0NjMuLjgxMjVmMmIxYTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMC0xNCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjg0
MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3OTcK
KworICAgICAgICBVbnJldmlld2VkLgorCisgICAgICAgIFJldmVydCAiQWxsb3cgV0FTTSB0byB1
c2UgdXAgdG8gNEdCIgorCisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6CisgICAg
ICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAoV1RGOjpjb252ZXJ0U2FmZWx5KToKKyAg
ICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIxLTEwLTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIEFkQXR0cmlidXRpb25EYWVtb24g
cGxpc3Qgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBlZmFiNGFkM2Jj
OWYuLmZmMTU2NWYxMWRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0
LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2Vk
PENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3Vy
Y2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNl
KSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3Np
Z25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46Omlz
X3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAg
ICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJz
aW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAg
ICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAg
ICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0g
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNp
Z25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNl
IHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xp
bWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwg
U291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVl
PiB7Ci0gICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAg
ICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBX
aGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29t
ZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZh
bHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdn
ZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewot
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGhlIHVu
c2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQg
c28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1
ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4
KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMg
Ym9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHBy
ZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRy
dWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQor
ICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUg
c2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291
cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8
VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgY29u
c3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3Jl
YXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlz
IHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAt
MjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291
cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8
VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgY29u
c3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBn
cmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5s
aW5lIGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQordGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2Fm
ZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBjb252ZXJ0U2FmZWx5KFNv
dXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdl
dD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsMTMgKzk5Niw2IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93
cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhh
c092ZXJmbG93ZWQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxs
ZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKLXsKLSAgICBDaGVja2VkPFQsIFJlY29y
ZE92ZXJmbG93PiBzdW0gPSBhOwotICAgIHN1bSArPSBiOwotICAgIHJldHVybiAhc3VtLmhhc092
ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKLX0KLQogfQogCiB1c2luZyBXVEY6
OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDI0LDQgKzEwMTcsMyBAQCB1c2luZyBXVEY6OmRpZmZl
cmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1
Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKLXVzaW5nIFdURjo6aXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVz
ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCBiOTRkYmU4OTEwN2QuLjlj
OWY4MGUzZmQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0yNywxMyArMjcsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotLy8gVGhpcyBpcyB0byBnZXQgU0laRV9NQVgsIHdoaWNoIGluIHR1cm4gaXMg
dXNlZCBmb3IgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUwotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5j
bHVkZSA8Y3N0ZGludD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jZW5kaWYKLQogI2lm
bmRlZiBXVEZfUExBVEZPUk1fR1VBUkRfQUdBSU5TVF9JTkRJUkVDVF9JTkNMVVNJT04KICNlcnJv
ciAiUGxlYXNlICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4gaW5zdGVhZCBvZiB0aGlzIGZpbGUg
ZGlyZWN0bHkuIgogI2VuZGlmCkBAIC0xNDgsMTIgKzE0MSw2IEBACiAjZGVmaW5lIFVTRV9KU1ZB
TFVFMzJfNjQgMQogI2VuZGlmCiAKLSNpZiBTSVpFX01BWCA9PSBVSU5UNjRfTUFYCi0jZGVmaW5l
IFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMgMQotI2Vsc2UKLSNkZWZpbmUgVVNFX0xBUkdFX1RZUEVE
X0FSUkFZUyAwCi0jZW5kaWYKLQogI2lmIFVTRShKU1ZBTFVFNjQpCiAvKiBGSVhNRTogRW5hYmxl
IEJJR0lOVDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3ZSBlbnN1cmUgU3BlZWRvbWV0ZXIy
IGFuZCBKZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhlZC4gKi8KIC8qIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3NzcgKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYWEy
ZTg4MzRlZGEuLjQ0YjY5Nzg2ZTNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIx
LTEwLTE0ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2UgaXQg
YnJlYWsgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTc5NworCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgUmV2ZXJ0ICJBbGxv
dyBXQVNNIHRvIHVzZSB1cCB0byA0R0IiCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNo
YW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0
YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEFycmF5QnVmZmVyVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6
ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXpl
cjo6cmVhZEFycmF5QnVmZmVyVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFs
aXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxp
emVyOjpyZWFkQXJyYXlCdWZmZXJJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3SW1wbCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisgICAgICAgICogZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6
OmVucXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKwogMjAyMS0xMC0xNCAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVU5VU0VEX1BBUkFNIHRvIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCBiMThkOGZkNmEzOGQuLmNiN2U4NGQ0NTM4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAK
QEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZy
b21DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgaWYgKGJ1ZmZl
ck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHNp
emVfdCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgdW5zaWduZWQgY291
bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVz
dGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCog
c3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNv
dXJjZSwgdW5zaWduZQogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVm
ZmVyT2Zmc2V0OworICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNl
dDsKICAgICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwog
ICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4
IGQ1M2I5ZTY0NGViNi4uNmMxYzk0NDAyMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTE5Niw5ICsxOTYsOCBA
QCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkm
IGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAg
CiAgICAgLy8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBk
ZWNpYmVscy4KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6
ZSgpOwotICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVu
Z3RoKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGlu
YXRpb25MZW5ndGgpOworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZl
cigpLnNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBk
ZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAg
ICBjb25zdCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5E
ZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAg
ICAgY29uc3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyOCw5ICsy
MjcsOCBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxv
YXQzMkFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgCi0gICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJh
eS5sZW5ndGgoKTsKLSAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBz
aXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOworICAg
IHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9
IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOwogICAgIGlmIChs
ZW5ndGggPiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVm
ZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBm
ZnRTaXplOwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUzLDkgKzI1
MSw4IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4
QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3Ro
KCk7Ci0gICAgc2l6ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxl
bmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKKyAgICB1bnNpZ25l
ZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1p
bihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4g
MCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXpl
KCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsK
ICAgICAgICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDE4MjIxZTM1
YWE2Mi4uYTFhOGZhMjkyOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTk0LDcgKzk0LDYgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
WWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Myw5ICsz
NDIsOCBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzKQogICogVmVyc2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlm
aWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRh
J3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9y
IEltYWdlQml0bWFwIGNvbG9yIHNwYWNlLgotICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVu
Z3RoIChhbmQgb2Zmc2V0cykgb2YgQXJyYXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykg
ZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVy
c2lvbiA9IDEwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gOTsKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBOb25JbmRleFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtNDAxLDcgKzM5
OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAw
MDAwMDA7CiAgKiAgICB8IE9iamVjdFJlZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVy
ZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFy
cmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0
X3Q+IDxieXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2Up
CisgKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVP
ZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmpl
Y3RSZWZlcmVuY2UpCiAgKiAgICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50
MzJfdD4gPGZhY3RvcjpieXRle3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAog
ICogICAgfCBET01SZWN0CkBAIC00NjUsNyArNDYzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5j
ZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFy
cmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDY0X3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+Cisg
KiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXtsZW5n
dGh9PgogICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAg
ICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtMTAwMCwxMCAr
OTk4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVk
QXJyYXlCdWZmZXJWaWV3KHZtLCBvYmopOwotICAgICAgICB1aW50NjRfdCBieXRlT2Zmc2V0ID0g
YXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCk7Ci0gICAgICAgIHdyaXRlKGJ5dGVPZmZzZXQp
OwotICAgICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVu
Z3RoKCk7Ci0gICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICB3cml0ZShzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCkpKTsKKyAgICAgICAg
d3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgp
KSk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZl
clZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIp
IHsKICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlv
bkVycm9yOwpAQCAtMTEzNSwxMyArMTEzMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0
YXRpY19jYXN0PGRvdWJsZT4oYnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKSkpOwogICAgICAgICB3
cml0ZShidWZmZXItPmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgQ2hlY2tlZFVpbnQzMiBieXRl
TGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgaWYgKGJ5dGVMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
KTsKKyAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVy
LT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICB9CiAKICNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtMTI3MiwxMyArMTI2Myw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAg
ICAgICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5o
ZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgQ2hlY2tlZFVpbnQzMiBkYXRhTGVuZ3RoID0gZGF0
YS0+ZGF0YSgpLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkp
OwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzI1LDkgKzEzMTEsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgYnl0
ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgd3Jp
dGUoYnl0ZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB3
cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZl
clZpZXc+KHZtKSkgewpAQCAtMTUxNyw3ICsxNTAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3Jp
dGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KIAotICAgIHZvaWQgd3JpdGUodWlu
dDY0X3QgaSkKKyAgICB2b2lkIHdyaXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogICAgIHsKICAg
ICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KQEAgLTI0MDYsNyAr
MjM5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJv
b2wgcmVhZCh1aW50NjRfdCYgaSkKKyAgICBib29sIHJlYWQodW5zaWduZWQgbG9uZyBsb25nJiBp
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oaSk7CiAgICAgfQpAQCAt
MjU3MCwxMCArMjU1NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExlbmd0aFR5cGU+Ci0gICAgYm9vbCByZWFkQXJyYXlC
dWZmZXJJbXBsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIGJvb2wgcmVh
ZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQogICAgIHsKLSAg
ICAgICAgTGVuZ3RoVHlwZSBsZW5ndGg7CisgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICAg
ICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmIChtX3B0ciArIGxlbmd0aCA+IG1fZW5kKQpAQCAtMjU4NSwyMyArMjU2OSwxNSBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1
ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIGlm
IChtX3ZlcnNpb24gPCAxMCkKLSAgICAgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBs
PHVpbnQzMl90PihhcnJheUJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJ
bXBsPHVpbnQ2NF90PihhcnJheUJ1ZmZlcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIExlbmd0aFR5cGU+Ci0gICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbChWTSYgdm0s
IEpTVmFsdWUmIGFycmF5QnVmZmVyVmlldykKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXco
Vk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewogICAgICAgICBBcnJheUJ1
ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZmZXJWaWV3U3VidGFnOwogICAgICAgICBpZiAoIXJlYWRB
cnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFnKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OworICAgICAgICB1
aW50MzJfdCBieXRlT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWQoYnl0ZU9mZnNldCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0aDsKKyAg
ICAgICAgdWludDMyX3QgYnl0ZUxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVMZW5ndGgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogYXJyYXlCdWZm
ZXJPYmogPSBhc09iamVjdChyZWFkVGVybWluYWwoKSk7CkBAIC0yNjExLDcgKzI1ODcsNyBAQCBw
cml2YXRlOgogICAgICAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5cGVkQXJyYXlFbGVtZW50
U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpOwogICAgICAgICBpZiAoIWVsZW1lbnRTaXplKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBMZW5ndGhUeXBlIGxlbmd0aCA9IGJ5
dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUxl
bmd0aCAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobGVuZ3RoICogZWxlbWVudFNpemUgIT0g
Ynl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjY1OCwxMyArMjYz
NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1
ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCi0gICAgewotICAgICAg
ICBpZiAobV92ZXJzaW9uIDwgMTApCi0gICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVy
Vmlld0ltcGw8dWludDMyX3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOwotICAgICAgICByZXR1cm4g
cmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDY0X3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOwot
ICAgIH0KLQogICAgIGJvb2wgcmVhZChWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKQEAgLTMzNzYsNyArMzM0NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwogCi0gICAg
ICAgIGlmICghcmVhZChzZXJpYWxpemF0aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkg
fHwgIXJlYWQobG9naWNhbEhlaWdodCkgfHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92
ZXJzaW9uID4gOCAmJiAhcmVhZChjb2xvclNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlckltcGw8
dWludDMyX3Q+KGFycmF5QnVmZmVyKSkgeworICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlv
blN0YXRlKSB8fCAhcmVhZChsb2dpY2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8
ICFyZWFkKHJlc29sdXRpb25TY2FsZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JT
cGFjZSkpIHx8ICFyZWFkQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpKSB7CiAgICAgICAgICAgICBm
YWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IDdlNDlhOWU3MzIyNi4uZmI3NTdhNGQ3NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZv
aWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBpZiAoaGFzQXJyYXkpIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4obV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZvciAo
Y29uc3QgYXV0byAmYXJyYXlCdWZmZXJDb250ZW50cyA6ICptX2FycmF5QnVmZmVyQ29udGVudHNB
cnJheSkgewotICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJy
YXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwg
YXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpOwogICAgICAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVm
ZmVyQ29udGVudHMuZGF0YSgpKSwgYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpLCAx
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5OSwxMiArMTk5LDkgQEAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIAogICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0p
IHsKLSAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemU7CisgICAgICAgICAgICB1bnNpZ25l
ZCBidWZmZXJTaXplOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXpl
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIENoZWNrZWRT
aXplIGNoZWNrZWRCdWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgIGlmIChjaGVj
a2VkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVu
b3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMjE1LDcgKzIxMiw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVy
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBjaGVja2Vk
QnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpIH0p
OworICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5hcHBlbmQoeyBidWZmZXIs
IGJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSB9
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1Nl
bmRRdWV1ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4YzVmLi5hNjZiMTkxZDY4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNjgsOSArNjgsNyBAQCB2
b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAogICAg
IGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkgewot
ICAgICAgICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZvciB0aGUg
b3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgotICAgICAgICAvLyBXaXRob3V0IGl0
LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKSBjb3VsZCBiZSBjYWxsZWQgaW5zdGVhZC4K
LSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8c2l6
ZV90PigwVSksIDEpLCAwLCAwKTsKKyAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGUoMFUsIDEpLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGJs
b2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KFt0aGlzXShCbG9iTG9hZGVyJikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3Bw
CmluZGV4IDc1NDNmNDc1YTI3YS4uMjViZmYxNTNkMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw4ICs3NCw2IEBAIHN0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZl
clNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKaW5kZXggZDgzZTRhNDA0MGNjLi44NzBiZGM4MGYzNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDcgKzI3
LDYgQEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC02NCwxMCArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVhZFN0
YXR1cyA9IGZhbHNlOwotICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OwotICAg
ICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFu
bmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7Ci0gICAgICAgIG9mZnNldCA9
IGFjdHVhbE9mZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihv
ZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CiAgICAgICAg
IGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>