<?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>219076</bug_id>
          
          <creation_ts>2020-11-18 02:53:37 -0800</creation_ts>
          <short_desc>REGRESSION(r269940): caused seemingly-infinite build time regression</short_desc>
          <delta_ts>2021-01-06 08:37:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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=220364</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>
          
          <blocked>218693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>saam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708547</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-11-18 02:53:37 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/269940 broke the build:
caused seemingly-infinite build time regression

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708549</commentid>
    <comment_count>1</comment_count>
      <attachid>414435</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-11-18 02:53:50 -0800</bug_when>
    <thetext>Created attachment 414435
REVERT of r269940

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708550</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-18 02:55:53 -0800</bug_when>
    <thetext>Committed r269950: &lt;https://trac.webkit.org/changeset/269950&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414435.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708551</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-18 02:56:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71531369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708712</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-18 12:22:43 -0800</bug_when>
    <thetext>Committed r269974: &lt;https://trac.webkit.org/changeset/269974&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414435</attachid>
            <date>2020-11-18 02:53:50 -0800</date>
            <delta_ts>2020-11-18 02:55:53 -0800</delta_ts>
            <desc>REVERT of r269940</desc>
            <filename>bug-219076-20201118105349.patch</filename>
            <type>text/plain</type>
            <size>175534</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NjkwMmUwZmU3NjcyZTQxMWMyNDAwMjllNGU4MTIxY2M4MjUxNTRhLi5mOTYxNDg1MmE3NGVkNDg2
NDNkZWMyZjU3YWQ2ZjExNjI0OGFlM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0xMS0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk5NDAuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNzYKKworICAgICAg
ICBjYXVzZWQgc2VlbWluZ2x5LWluZmluaXRlIGJ1aWxkIHRpbWUgcmVncmVzc2lvbgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW0pTQ10gSW1wbGVtZW50IFdlYkFz
c2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODY5MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjY5OTQwCisKIDIwMjAtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5
IHdpdGggc2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGY5NDRmNzYzMTc4NTQ5MzNhNGRjZmU4N2QxNTY1N2E5OWJjMmI4
ZmMuLjQxZDQyN2NmZTVhZjUyZjIxMWNiNzBhOTM4MzA2ZDA4ODY4M2M4YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjAtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY5OTQwLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDc2CisKKyAgICAgICAg
Y2F1c2VkIHNlZW1pbmdseS1pbmZpbml0ZSBidWlsZCB0aW1lIHJlZ3Jlc3Npb24KKworICAgICAg
ICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltKU0NdIEltcGxlbWVudCBXZWJBc3Nl
bWJseS5NZW1vcnkgd2l0aCBzaGFyZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI2OTk0MAorCiAyMDIwLTExLTE3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZhaWxzIG9uIGludGVybmFsIHNpbXVsYXRvciBi
dWlsZHMgZHVlIHRvIG1pc3NpbmcgZW51bSBrQ1ZQaXhlbEZvcm1hdFR5cGVfQUdYXzQyMFlwQ2JD
cjhCaVBsYW5hclZpZGVvUmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMzhkNmNmMWNlMThkNWQwM2Q1M2Mw
MjVjZDk4YjRhNTJkYWNlN2Y1Li45MDNlNWZmMDE1NDgxNzJlMjg3NTI4MjVmNGU5NTcxMmE1MmZk
YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMTggIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjY5OTQwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5MDc2CisKKyAgICAgICAgY2F1c2VkIHNlZW1pbmdseS1pbmZpbml0ZSBidWlsZCB0
aW1lIHJlZ3Jlc3Npb24KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IltKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQiCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKyAgICAgICAg
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2OTk0MAorCiAyMDIwLTExLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBGaXggdGhlIGJ1aWxkIHdpdGggR0NDIDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZTA3MDNmNzg0Mzg3YjU4NDA5Mzg5M2FjNDA2ZDAxODE4YjQ1NWRjNS4u
ODIzMTFmMzgwZGYyMWVlYzM3NmNlZmYyODI2OTM2ZDE4ODZkNTdkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA4OSw3ICsxMDg5LDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3YXNtL1dhc21UaWVyVXBDb3VudC5o
CiAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAotICAgIHdhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5oCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjMDNjNzhjYjExODFmZjIyMzlhZTFiMTFkM2Y0NGM4
ZWE0ZmQ4MDkuLmMwZWVmMGJjMzBlMDJjZDg3NmM5MzEyZDcxZWQ2ZTAxMjdkM2U0NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTc0LDcgKzE1NzQsNyBAQAogCQlBRDAwNjU5
RTFFQ0FDODEyMDAwQ0E5MjYgLyogV2FzbUxpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQwMDY1OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21M
aW1pdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRDJGQ0JFMzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTcx
REI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCAqLzsgfTsKIAkJ
QUQyRkNCRTUxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTkxREI1OERB
NDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oICovOyB9OwotCQlBRDJGQ0JFNzFE
QjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgfTsK
IAkJQUQyRkNCRTkxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFE
MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggKi87IH07CiAJ
CUFEMkZDQkVCMURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFGMURCNThEQTQw
MEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCAqLzsgfTsKIAkJQUQyRkNCRUQxREI1OERB
RDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRQQ1Jhbmdlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50UENSYW5nZXMuaAppbmRleCA2NGIyZGU4
OTI0ZTg3MWQ5NGZiYWNkYTJmZDEwZDg4MjdhYjIwYzA0Li40NGY0ZWY5MTAzZDdlMjE2Mjk1OWRm
YTU2ODJlYTZjYjFiNTI4NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRQQ1Jhbmdlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFBDUmFuZ2VzLmgKQEAgLTM1LDEwICszNSw2IEBAIG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4g
IkMiIHsKICAgICB2b2lkIGxsaW50UENSYW5nZVN0YXJ0KCk7CiAgICAgdm9pZCBsbGludFBDUmFu
Z2VFbmQoKTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgdm9pZCB3YXNtTExJbnRQQ1Jh
bmdlU3RhcnQoKTsKLSAgICB2b2lkIHdhc21MTEludFBDUmFuZ2VFbmQoKTsKLSNlbmRpZgogfQog
CiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMTEludFBDKHZvaWQqIHBjKQpAQCAtNTAsMTcgKzQ2LDYg
QEAgQUxXQVlTX0lOTElORSBib29sIGlzTExJbnRQQyh2b2lkKiBwYykKICAgICByZXR1cm4gbGxp
bnRTdGFydCA8PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gbGxpbnRFbmQ7CiB9CiAKLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNXYXNtTExJbnRQQyh2b2lkKiBw
YykKLXsKLSAgICB1aW50cHRyX3QgcGNBc0ludCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBj
KTsKLSAgICB1aW50cHRyX3Qgc3RhcnQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90LCBDRnVuY3Rp
b25QdHJUYWc+KHdhc21MTEludFBDUmFuZ2VTdGFydCk7Ci0gICAgdWludHB0cl90IGVuZCA9IHVu
dGFnQ29kZVB0cjx1aW50cHRyX3QsIENGdW5jdGlvblB0clRhZz4od2FzbUxMSW50UENSYW5nZUVu
ZCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc3RhcnQgPCBlbmQpOwotICAgIHJldHVybiBzdGFydCA8
PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gZW5kOwotfQotI2VuZGlmCi0KICNpZiAhRU5BQkxFKENf
TE9PUCkKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIExMSW50UEMgPSBHUFJJbmZvOjpyZWdUNDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IDlkZmQ5YzdlN2ExNWUyYmE3ZWUwOWY0MGU2YmFmYzllYThiM2U2
YjAuLjIwMTYwNTA3ZWU0YzgxMzg0NzNjY2FhYWRhNmIzM2NiOTA2ZGQwZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTI0NjcsMTIgKzI0NjcsNyBAQCBtYWNybyB3YXNtU2NvcGUoKQogICAgICMgYnV0IHdlIGRvbid0
IHdhbnQgdG8gaW50ZXJmZXJlIHdpdGggdGhlIExMSW50IG9wY29kZXMKICAgICBpbmNsdWRlIFdl
YkFzc2VtYmx5CiBlbmQKLQotZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlU3RhcnQKLV93YXNtTExJ
bnRQQ1JhbmdlU3RhcnQ6CiB3YXNtU2NvcGUoKQotZ2xvYmFsIF93YXNtTExJbnRQQ1JhbmdlRW5k
Ci1fd2FzbUxMSW50UENSYW5nZUVuZDoKIAogZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCAzNTJjODA3NjVjMDA2NWQyNmM3OWU5ODkzY2Mx
NGFjN2E3ZmRiNTQ1Li44M2NhODk2NTJiNjY2N2RmZDBhNjNjNjEyNTMwOGI2ODRiMDdjMTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTQ1LDcg
KzQ1LDcgQEAgY29uc3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRzID0gTnVtYmVyT2ZXYXNtQXJndW1l
bnRHUFJzICsgTnVtYmVyT2ZXYXNtQXJndW1lbnRGUFIKICMgVGhlc2UgbXVzdCBtYXRjaCB0aGUg
ZGVmaW5pdGlvbiBpbiBXYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCiBjb25zdCB3YXNtSW5zdGFu
Y2UgPSBjc3IwCiBjb25zdCBtZW1vcnlCYXNlID0gY3NyMwotY29uc3QgYm91bmRzQ2hlY2tpbmdT
aXplID0gY3NyNAorY29uc3QgbWVtb3J5U2l6ZSA9IGNzcjQKIAogIyBUaGlzIG11c3QgbWF0Y2gg
dGhlIGRlZmluaXRpb24gaW4gTG93TGV2ZWxJbnRlcnByZXRlci5hc20KIGlmIFg4Nl82NApAQCAt
MTg3LDcgKzE4Nyw3IEBAIGVuZAogIyBXYXNtIHNwZWNpZmljIGhlbHBlcnMKIAogbWFjcm8gcHJl
c2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxs
eSBkb24ndCBzYXZlIG1lbW9yeUJhc2UgYW5kIGJvdW5kc0NoZWNraW5nU2l6ZSBoZXJlLiBTZWUg
dGhlIGNvbW1lbnQKKyAgICAjIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3Qgc2F2ZSBtZW1v
cnlCYXNlIGFuZCBtZW1vcnlTaXplIGhlcmUuIFNlZSB0aGUgY29tbWVudAogICAgICMgaW4gcmVz
dG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpIGJlbG93IGZvciB3aHkuCiAgICAgc3VicCBDYWxs
ZWVTYXZlU3BhY2VTdGFja0FsaWduZWQsIHNwCiAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCkBAIC0y
MDEsNyArMjAxLDcgQEAgbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogZW5k
CiAKIG1hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQotICAgICMgTk9URTogV2Ug
aW50ZW50aW9uYWxseSBkb24ndCByZXN0b3JlIG1lbW9yeUJhc2UgYW5kIGJvdW5kc0NoZWNraW5n
U2l6ZSBoZXJlLiBUaGVzZSBhcmUgc2F2ZWQKKyAgICAjIE5PVEU6IFdlIGludGVudGlvbmFsbHkg
ZG9uJ3QgcmVzdG9yZSBtZW1vcnlCYXNlIGFuZCBtZW1vcnlTaXplIGhlcmUuIFRoZXNlIGFyZSBz
YXZlZAogICAgICMgYW5kIHJlc3RvcmVkIHdoZW4gZW50ZXJpbmcgV2FzbSBieSB0aGUgSlNUb1dh
c20gd3JhcHBlciBhbmQgY2hhbmdlcyB0byB0aGVtIGFyZSBtZWFudAogICAgICMgdG8gYmUgb2Jz
ZXJ2YWJsZSB3aXRoaW4gdGhlIHNhbWUgV2FzbSBtb2R1bGUuCiAgICAgaWYgQVJNNjQgb3IgQVJN
NjRFCkBAIC0yNDAsOCArMjQwLDggQEAgZW5kCiAKIG1hY3JvIHJlbG9hZE1lbW9yeVJlZ2lzdGVy
c0Zyb21JbnN0YW5jZShpbnN0YW5jZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGxvYWRwIFdh
c206Okluc3RhbmNlOjptX2NhY2hlZE1lbW9yeVtpbnN0YW5jZV0sIG1lbW9yeUJhc2UKLSAgICBs
b2FkaSBXYXNtOjpJbnN0YW5jZTo6bV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemVbaW5zdGFuY2Vd
LCBib3VuZHNDaGVja2luZ1NpemUKLSAgICBjYWdlZFByaW1pdGl2ZShtZW1vcnlCYXNlLCBib3Vu
ZHNDaGVja2luZ1NpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICBsb2FkaSBXYXNtOjpJbnN0
YW5jZTo6bV9jYWNoZWRNZW1vcnlTaXplW2luc3RhbmNlXSwgbWVtb3J5U2l6ZQorICAgIGNhZ2Vk
UHJpbWl0aXZlKG1lbW9yeUJhc2UsIG1lbW9yeVNpemUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKIGVu
ZAogCiBtYWNybyB0aHJvd0V4Y2VwdGlvbihleGNlcHRpb24pCkBAIC04NTYsOSArODU2LDcgQEAg
d2FzbU9wKGNhbGxfaW5kaXJlY3Rfbm9fdGxzLCBXYXNtQ2FsbEluZGlyZWN0Tm9UbHMsIG1hY3Jv
KGN0eCkKIGVuZCkKIAogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwg
bWFjcm8oY3R4KQotICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFu
Y2VdLCB0MAotICAgIGxvYWRwIFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MAotICAgIGxv
YWRwIFdhc206Ok1lbW9yeUhhbmRsZTo6bV9zaXplW3QwXSwgdDAKKyAgICBsb2FkcCBXYXNtOjpJ
bnN0YW5jZTo6bV9jYWNoZWRNZW1vcnlTaXplW3dhc21JbnN0YW5jZV0sIHQwCiAgICAgdXJzaGlm
dHEgMTYsIHQwCiAgICAgcmV0dXJucShjdHgsIHQwKQogZW5kKQpAQCAtODc2LDcgKzg3NCw3IEBA
IGVuZCkKICMgdXNlcyBvZmZzZXQgYXMgc2NyYXRjaCBhbmQgcmV0dXJucyByZXN1bHQgb24gcG9p
bnRlcgogbWFjcm8gZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoY3R4LCBwb2ludGVyLCBvZmZz
ZXQsIHNpemUpCiAgICAgbGVhcCBzaXplIC0gMVtwb2ludGVyLCBvZmZzZXRdLCB0NQotICAgIGJw
YiB0NSwgYm91bmRzQ2hlY2tpbmdTaXplLCAuY29udGludWF0aW9uCisgICAgYnBiIHQ1LCBtZW1v
cnlTaXplLCAuY29udGludWF0aW9uCiAgICAgdGhyb3dFeGNlcHRpb24oT3V0T2ZCb3VuZHNNZW1v
cnlBY2Nlc3MpCiAuY29udGludWF0aW9uOgogICAgIGFkZHAgbWVtb3J5QmFzZSwgcG9pbnRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCmluZGV4IGFl
NGNmNjFhNTU5MjhjYWZlOTUyOWZiMjdlMWUwOTdkMTIwYjljYTkuLjZiZWE0Y2ZmMTQ5MWY5OTRh
YmMzZTgwNTZlNmI0M2M0MzE1MjVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogICAgIAogICAg
IC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgRE9NIHVud3JhcHBpbmcuIEl0IGNhbGxzIHRvVW5zaGFy
ZWRBcnJheUJ1ZmZlcigpLgogICAgIHN0YXRpYyBBcnJheUJ1ZmZlciogdG9XcmFwcGVkKFZNJiwg
SlNWYWx1ZSk7Ci0gICAgc3RhdGljIEFycmF5QnVmZmVyKiB0b1dyYXBwZWRBbGxvd1NoYXJlZChW
TSYsIEpTVmFsdWUpOwogICAgIAogcHJpdmF0ZToKICAgICBKU0FycmF5QnVmZmVyKFZNJiwgU3Ry
dWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKQEAgLTg3LDkgKzg2LDQgQEAgaW5saW5l
IEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZh
bHVlKQogICAgIHJldHVybiB0b1Vuc2hhcmVkQXJyYXlCdWZmZXIodm0sIHZhbHVlKTsKIH0KIAot
aW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjp0b1dyYXBwZWRBbGxvd1NoYXJlZChW
TSYgdm0sIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHRvUG9zc2libHlTaGFyZWRBcnJh
eUJ1ZmZlcih2bSwgdmFsdWUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGQ2ODQ4
NzBlNzdmODY1Zjg5MTg4OGU1ZDllMzE3MWYxNDllYmQ0NTUuLjNiMDZlMjhjOGMwMjM2ZDViYWYy
ZTdlNjQ4ZmZlYzVkMTNmZTYxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMjA0LDcgKzIwNCw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTW9kZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0FycmF5QnVmZmVyVmlldywgbV9tb2RlKTsgfQogICAgIAogICAgIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiB0b1dyYXBwZWQoVk0mLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gdG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0mLCBKU1ZhbHVlKTsK
IAogcHJpdmF0ZToKICAgICBlbnVtIFJlcXVlc3RlciB7IE11dGF0b3IsIENvbmN1cnJlbnRUaHJl
YWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXdJbmxpbmVzLmgKaW5kZXggOTg0ZjlhMjBiN2M1ZjMwOWFiOTk5OWUwNmY0ZjAx
MjA3ODZkYTBkMC4uNGZkN2VlZjY2YmRjMjgyMGI0MGVmNTRmZGU2ODlhNmY2NTQ2MGQxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXdJbmxpbmVzLmgKQEAgLTEyOSwxMiArMTI5LDQgQEAgaW5saW5lIFJlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZh
bHUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYgdm0sIEpTVmFs
dWUgdmFsdWUpCi17Ci0gICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWlj
Q2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiB2aWV3
LT5wb3NzaWJseVNoYXJlZEltcGwoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGNlYjQ4NTFhY2EyYzdlMWQyMTQ1MDUz
NDg2YmE1MjBiNTg0YzRjMjYuLmU4YzMxZDgwNzAwOTc3OTVhNGQwNGIwNDNlMzI5YTQ2YjYzODIz
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjg3LDggKzI4Nyw2IEBAIHB1YmxpYzoKIAogICAgIC8v
IFRoaXMgaXMgdGhlIGRlZmF1bHQgRE9NIHVud3JhcHBpbmcuIEl0IGNhbGxzIHRvVW5zaGFyZWRO
YXRpdmVUeXBlZFZpZXcoKS4KICAgICBzdGF0aWMgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiB0b1dyYXBwZWQoVk0mLCBKU1ZhbHVlKTsKLSAgICAvLyBbQWxsb3dTaGFyZWRdIGFu
bm90YXRpb24gYWxsb3dzIGFjY2VwdGluZyBUeXBlZEFycmF5IG9yaWdpbmF0ZWQgZnJvbSBTaGFy
ZWRBcnJheUJ1ZmZlci4KLSAgICBzdGF0aWMgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdU
eXBlPiB0b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYsIEpTVmFsdWUpOwogICAgIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgc3RydWN0IFR5cGVkQXJyYXlDbGFzc0luZm9zOwpAQCAtMzk0LDExICszOTIs
NCBAQCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0b1dyYXBwZWQoVgogICAgIHJldHVybiBKU0M6OnRvVW5zaGFyZWRO
YXRpdmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KLVJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gSlNDOjp0b1Bvc3NpYmx5U2hhcmVkTmF0aXZlVHlw
ZWRWaWV3PEFkYXB0b3I+KHZtLCB2YWx1ZSk7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDI2MTY3YzAwMWNi
NDFiYjVhYzk3YzdmYWU5YjFmNWJjOGNjYzI3MDAuLjk1ODk4OWM5MjNhNGZhY2JmNjU3NWNkZGY5
ZjEyZWQ1ZWFlMThmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
Y3BwCkBAIC0zNjUsOSArMzY1LDggQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAg
ICAgT3B0aW9uczo6dXNlUG9sbGluZ1RyYXBzKCkgPSB0cnVlOwogI2VuZGlmCiAKLSNpZiAhRU5B
QkxFKFdFQkFTU0VNQkxZX1NJR05BTElOR19NRU1PUlkpCisjaWYgIUVOQUJMRShXRUJBU1NFTUJM
WV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSA9
IGZhbHNlOwotICAgIE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkgPSBmYWxzZTsKICNl
bmRpZgogCiAjaWYgIUhBVkUoTUFDSF9FWENFUFRJT05TKQpAQCAtNjU5LDE1ICs2NTgsMTQgQEAg
dm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIH0KICNlbmRpZgogCi0jaWYg
QVNBTl9FTkFCTEVEICYmIE9TKExJTlVYKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU0lHTkFMSU5H
X01FTU9SWSkKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkoKSB8fCBPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7CisjaWYgQVNBTl9FTkFC
TEVEICYmIE9TKExJTlVYKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCisgICAg
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpIHsKICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBhc2FuT3B0aW9ucyA9IGdldGVudigiQVNBTl9PUFRJT05T
Iik7CiAgICAgICAgICAgICAgICAgYm9vbCBva1RvVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5ID0g
YXNhbk9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgJiYgKHN0cnN0cihhc2FuT3B0aW9ucywg
ImFsbG93X3VzZXJfc2Vndl9oYW5kbGVyPTEiKSB8fCBzdHJzdHIoYXNhbk9wdGlvbnMsICJoYW5k
bGVfc2Vndj0wIikpOwogICAgICAgICAgICAgICAgIGlmICghb2tUb1VzZVdlYkFzc2VtYmx5RmFz
dE1lbW9yeSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIldBUk5JTkc6IEFTQU4g
aW50ZXJmZXJlcyB3aXRoIEpTQyBzaWduYWwgaGFuZGxlcnM7IHVzZVdlYkFzc2VtYmx5RmFzdE1l
bW9yeSBhbmQgdXNlU2hhcmVkQXJyYXlCdWZmZXIgd2lsbCBiZSBkaXNhYmxlZC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXQVJOSU5HOiBBU0FOIGludGVyZmVyZXMgd2l0aCBK
U0Mgc2lnbmFsIGhhbmRsZXJzOyB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkgd2lsbCBiZSBkaXNh
YmxlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KCkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgT3B0aW9uczo6dXNlU2hhcmVk
QXJyYXlCdWZmZXIoKSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKaW5kZXggZThmNGNiZDcxMTAwYTIzYjg2ODk0OTM3ZGVkNGQxY2VlNDYzZjlhMy4u
ZTJjYzQzZjJjYWRkYmJiN2YwZTBhY2NiNjViZjMzMGMyMDQxNTcxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC02ODAsNyAr
NjgwLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VHlwZWRUbXA+IG1fbG9jYWxzOwogICAgIFZl
Y3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsg
Ly8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJl
c3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BS
IHsgSW52YWxpZEdQUlJlZyB9OwotICAgIEdQUlJlZyBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiB7
IEludmFsaWRHUFJSZWcgfTsKKyAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSIHsgSW52YWxpZEdQ
UlJlZyB9OwogICAgIEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZhbGlkR1BS
UmVnIH07CiAgICAgYm9vbCBtX21ha2VzQ2FsbHMgeyBmYWxzZSB9OwogCkBAIC03NzIsOCArNzcy
LDggQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0
aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAgbV9jb2RlLnBpblJlZ2lzdGVy
KG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAKICAgICBpZiAobW9kZSAhPSBNZW1vcnlNb2Rl
OjpTaWduYWxpbmcpIHsKLSAgICAgICAgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgPSBwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOwotICAgICAgICBtX2NvZGUucGluUmVnaXN0
ZXIobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOworICAgICAgICBtX21lbW9yeVNpemVHUFIgPSBw
aW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKyAgICAgICAgbV9jb2RlLnBpblJlZ2lzdGVyKG1fbWVt
b3J5U2l6ZUdQUik7CiAgICAgfQogCiAgICAgbV9jb2RlLnNldE51bUVudHJ5cG9pbnRzKDEpOwpA
QCAtOTE4LDcgKzkxOCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJs
eUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAgICAgIGNvbnN0
IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86Omdl
dCgpOwogICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0
KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICAgICAgY2xvYmJlcnMuc2V0KHBp
bm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgY2xvYmJlcnMu
c2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7CiAgICAgICAgIGlmICghaXNBUk02NCgpKQog
ICAgICAgICAgICAgY2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CiAKQEAgLTkzMywxMiArOTMzLDEyIEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3Rv
cmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcGlubmVkUmVnc10gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9y
eVBvaW50ZXI7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXpl
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5zaXplUmVn
aXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhw
YXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6
ZSgpKSwgcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOworICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5z
dGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy0+c2l6ZVJlZ2lz
dGVyKTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJh
bXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9y
eSk7CiAKLSAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0
aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwg
c2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0
aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLT5zaXpl
UmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOwogICAgICAgICB9KTsKIAogICAgICAgICBlbWl0UGF0
Y2hwb2ludChibG9jaywgcGF0Y2hwb2ludCwgVG1wKCksIGluc3RhbmNlKTsKQEAgLTExNjgsMTIg
KzExNjgsOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBhdXRvIHRlbXAxID0gZzY0KCk7
CiAgICAgYXV0byB0ZW1wMiA9IGc2NCgpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1Zh
bGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCksIEIzOjpXaWR0aDY0KSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oTWVtb3J5OjpvZmZzZXRPZkhh
bmRsZSgpLCBCMzo6V2lkdGg2NCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFk
ZHJGb3JtKE1lbW9yeUhhbmRsZTo6b2Zmc2V0T2ZTaXplKCksIEIzOjpXaWR0aDY0KSk7Ci0gICAg
YXBwZW5kKE1vdmUsIEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpKSwgdGVtcDEpOwotICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGVtcDEsIE1l
bW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSksIHRlbXAxKTsKLSAgICBhcHBlbmQoTW92ZSwgQXJnOjph
ZGRyKHRlbXAxLCBNZW1vcnlIYW5kbGU6Om9mZnNldE9mU2l6ZSgpKSwgdGVtcDEpOworICAgIFJF
TEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeVNpemUoKSwgQjM6OldpZHRoNjQpKTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRy
KGluc3RhbmNlVmFsdWUoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwg
dGVtcDEpOwogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3Rh
dGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDF1bGwgPDwgc2hpZnRWYWx1ZSwgIlRo
aXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwogICAgIGFw
cGVuZChNb3ZlLCBBcmc6OmltbSgxNiksIHRlbXAyKTsKQEAgLTEzNjcsMTYgKzEzNjMsMTUgQEAg
aW5saW5lIEFpcklSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBBaXJJUkdlbmVyYXRvcjo6ZW1p
dENoZWNrQW5kUHJlcGFyZVBvaW50ZXIKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2Fz
ZSBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzogewotICAgICAgICAvLyBJbiBib3VuZCBjaGVj
a2luZyBtb2RlLCB3aGlsZSBzaGFyZWQgd2FzbSBtZW1vcnkgcGFydGlhbGx5IHJlbGllcyBvbiBz
aWduYWwgaGFuZGxlciB0b28sIHdlIG5lZWQgdG8gcGVyZm9ybSBib3VuZCBjaGVja2luZwotICAg
ICAgICAvLyB0byBlbnN1cmUgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJl
bnQgbWVtb3J5IHNpemUuCi0gICAgICAgIEFTU0VSVChtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7
CisgICAgICAgIC8vIFdlJ3JlIG5vdCB1c2luZyBzaWduYWwgaGFuZGxpbmcgYXQgYWxsLCB3ZSBt
dXN0IHRoZXJlZm9yZSBjaGVjayB0aGF0IG5vIG1lbW9yeSBhY2Nlc3MgZXhjZWVkcyB0aGUgY3Vy
cmVudCBtZW1vcnkgc2l6ZS4KKyAgICAgICAgQVNTRVJUKG1fbWVtb3J5U2l6ZUdQUik7CiAgICAg
ICAgIEFTU0VSVChzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwogICAgICAgICBh
dXRvIHRlbXAgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihzaXplT2ZPcGVyYXRpb24pICsgb2Zmc2V0IC0gMSksIHRlbXApOwog
ICAgICAgICBhcHBlbmQoQWRkNjQsIHJlc3VsdCwgdGVtcCk7CiAKICAgICAgICAgZW1pdENoZWNr
KFsmXSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpy
ZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1wLCBUbXAobV9ib3VuZHND
aGVja2luZ1NpemVHUFIpKTsKKyAgICAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaDY0LCBudWxs
cHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCksIHRlbXAsIFRt
cChtX21lbW9yeVNpemVHUFIpKTsKICAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMt
PmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5
QWNjZXNzKTsKICAgICAgICAgfSk7CkBAIC0yMTU5LDcgKzIxNTQsNyBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLAogICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gZW1pdENhbGxQYXRjaHBvaW50
KG1fY3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3MpOwogICAgICAgICAvLyBX
ZSBuZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5
cyBib3VuZHMgY2hlY2tzCiAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFs
aW5nKQotICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQ
aW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyIH0pOwor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRS
ZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdpc3RlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleF0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewog
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2Fm
ZVBhdGNoYWJsZU5lYXJDYWxsKCk7CkBAIC0yMjgzLDEzICsyMjc4LDEzIEBAIGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hCiAgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5l
d0NvbnRleHRJbnN0YW5jZSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBv
cnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8gICBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAgICAg
ICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5l
d0NvbnRleHRJbnN0YW5jZSk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hl
Y2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
OworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRl
eHRJbnN0YW5jZSk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdl
Ojppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
cGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CiAKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3Rlcik7IC8vIEJvdW5kIGNoZWNraW5nIHNpemUuCisgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1l
bW9yeSBzaXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBi
YXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KIAotICAgICAgICAgICAgaml0LmNhZ2VDb25k
aXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7Cisg
ICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFz
ZU1lbW9yeSwgcGlubmVkUmVncy5zaXplUmVnaXN0ZXIsIHNjcmF0Y2hPclNpemUpOwogICAgICAg
ICB9KTsKIAogICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9p
bnQsIFRtcCgpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggOTZm
M2FhY2Y5NmI0MjIwMTE4ZWJjZmU4ZTFjMTg1YzJkN2YzZWNlMy4uMzBiM2M3NzIzMmYyZGVlNWY0
NTkzYTRiYzg5OTU2NTdmMTM5OGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHByaXZhdGU6CiAg
ICAgSW5zZXJ0aW9uU2V0IG1fY29uc3RhbnRJbnNlcnRpb25WYWx1ZXM7CiAgICAgVmFsdWUqIG1f
ZnJhbWVQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIEdQUlJlZyBtX21lbW9yeUJhc2VHUFIgeyBJ
bnZhbGlkR1BSUmVnIH07Ci0gICAgR1BSUmVnIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSIHsgSW52
YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CiAgICAgR1BSUmVnIG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUiB7IEludmFsaWRHUFJSZWcg
fTsKICAgICBib29sIG1fbWFrZXNDYWxscyB7IGZhbHNlIH07CiAKQEAgLTQwOCw4ICs0MDgsOCBA
QCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBp
bmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV93
YXNtQ29udGV4dEluc3RhbmNlR1BSKTsKIAogICAgIGlmIChtb2RlICE9IE1lbW9yeU1vZGU6OlNp
Z25hbGluZykgewotICAgICAgICBtX2JvdW5kc0NoZWNraW5nU2l6ZUdQUiA9IHBpbm5lZFJlZ3Mu
Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7Ci0gICAgICAgIG1fcHJvYy5waW5SZWdpc3Rlciht
X2JvdW5kc0NoZWNraW5nU2l6ZUdQUik7CisgICAgICAgIG1fbWVtb3J5U2l6ZUdQUiA9IHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAgICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlT
aXplR1BSKTsKICAgICB9CiAKICAgICBpZiAoaW5mby5tZW1vcnkpIHsKQEAgLTQxNyw3ICs0MTcs
NyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgc3dpdGNoICht
X21vZGUpIHsKICAgICAgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIG1fYm91bmRzQ2hlY2tpbmdT
aXplR1BSID09IHBpbm5lZEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwaW5u
ZWRHUFIsIG1fbWVtb3J5U2l6ZUdQUiA9PSBwaW5uZWRHUFIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6CiAgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwaW5uZWRHUFIsIEludmFsaWRHUFJSZWcgPT0gcGlubmVkR1BS
KTsKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3Nl
bWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvcgogICAgICAgICBj
b25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVkUmVnaXN0ZXJJbmZv
OjpnZXQoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcnM7CiAgICAgICAgIGNsb2JiZXJz
LnNldChwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgICAgIGNsb2JiZXJzLnNl
dChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CisgICAgICAgIGNsb2Ji
ZXJzLnNldChwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOwogICAgICAgICBpZiAoIWlzQVJNNjQo
KSkKICAgICAgICAgICAgIGNsb2JiZXJzLnNldChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwogCkBAIC01NjEsMTIgKzU2MSwxMiBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OnJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3Rv
cgogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3Bpbm5lZFJlZ3NdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MtPmJhc2VN
ZW1vcnlQb2ludGVyOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5n
U2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMu
Z3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7Cisg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6
ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2lu
Z1NpemUoKSksIHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCks
IEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVS
ZWdpc3Rlcik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VN
ZW1vcnkpOwogCi0gICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXIsIHNjcmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CisgICAgICAgICAgICBqaXQuY2FnZUNv
bmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy0+
c2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JTaXplKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAt
NzkzLDkgKzc5Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNz
aW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8TWVt
b3J5Kj4obnVsbHB0ciktPnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJl
bGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBWYWx1ZSogbWVtb3J5ID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGlu
c3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5
KCkpKTsKLSAgICBWYWx1ZSogaGFuZGxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIG1lbW9yeSwgc2FmZUNhc3Q8
aW50MzJfdD4oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgpKSk7Ci0gICAgVmFsdWUqIHNpemUgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0
LCBvcmlnaW4oKSwgaGFuZGxlLCBzYWZlQ2FzdDxpbnQzMl90PihNZW1vcnlIYW5kbGU6Om9mZnNl
dE9mU2l6ZSgpKSk7CisgICAgVmFsdWUqIHNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1
ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXpl
KCkpKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3Rh
dGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDF1bGwgPDwgc2hpZnRWYWx1ZSwgIlRo
aXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtOTU2
LDkgKzk1NCw5IEBAIGlubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJl
cGFyZVBvaW50ZXIoRXhwcmVzc2lvblR5cGUgcG9pbnRlciwKICAgICBzd2l0Y2ggKG1fbW9kZSkg
ewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKICAgICAgICAgLy8gV2Un
cmUgbm90IHVzaW5nIHNpZ25hbCBoYW5kbGluZyBhdCBhbGwsIHdlIG11c3QgdGhlcmVmb3JlIGNo
ZWNrIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRoZSBjdXJyZW50IG1lbW9yeSBzaXpl
LgotICAgICAgICBBU1NFUlQobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpOworICAgICAgICBBU1NF
UlQobV9tZW1vcnlTaXplR1BSKTsKICAgICAgICAgQVNTRVJUKHNpemVPZk9wZXJhdGlvbiArIG9m
ZnNldCA+IG9mZnNldCk7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8V2FzbUJv
dW5kc0NoZWNrVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIG1fYm91bmRzQ2hlY2tpbmdTaXplR1BS
LCBwb2ludGVyLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAxKTsKKyAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgbV9tZW1vcnlTaXplR1BSLCBwb2ludGVyLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAx
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNzEyLDcgKzE3MTAsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUsCiAKICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIg
dGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBib3VuZHMgY2hlY2tzCiAg
ICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBNZW1vcnlNb2RlOjpTaWduYWxpbmcpCi0gICAg
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQ
aW5uZWRSZWdpc3RlckluZm86OmdldCgpLnNpemVSZWdpc3RlciB9KTsKICAgICAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBmdW5j
dGlvbkluZGV4XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJDYWxsKCk7CkBAIC0x
ODMzLDE2ICsxODMxLDE2IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0CiAgICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4dEluc3RhbmNlLCBJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVtb3J5KTsKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29u
dGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpKTsKICAg
ICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UobmV3Q29udGV4dEluc3RhbmNl
KTsKLSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lz
dGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyICE9IGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKICAgICAgICAgICAgIC8v
ICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCi0g
ICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAh
PSBuZXdDb250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPckJvdW5k
c0NoZWNraW5nU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdp
c3RlcjsKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAhPSBuZXdD
b250ZXh0SW5zdGFuY2UpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBHaWdh
Y2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgw
KSA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOwogCi0gICAgICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5
IHNpemUuCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3
Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VN
ZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgogCi0gICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKKyAgICAg
ICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVt
b3J5LCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwgc2NyYXRjaE9yU2l6ZSk7CiAgICAgICAgIH0p
OwogICAgICAgICBkb0NvbnRleHRTd2l0Y2gtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2Ms
IEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggNjU3NTlhN2NjMDk1NGQ2YWI3NTllYjRhOGE4YzE1
MTk0Y2I5Y2FmMy4uOTQxZDAxNjM3Y2NjOTAyN2JiMzA5NGY5ZjJjY2NiMmU2Y2QzMWE5MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApAQCAtNDksOSArNDks
OSBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub1dhc20odW5zaQogICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlu
bmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBHUFJS
ZWc6OkludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChiYXNlTWVtb3J5ICE9IHNjcmF0Y2gpOwot
ICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IGJhc2VN
ZW1vcnkpOwotICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
ICE9IHNjcmF0Y2gpOwotICAgIEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0gcGlubmVkUmVncy5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKKyAgICBBU1NFUlQocGlubmVkUmVncy5zaXplUmVn
aXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
ICE9IHNjcmF0Y2gpOworICAgIEdQUlJlZyBzaXplUmVnQXNTY3JhdGNoID0gcGlubmVkUmVncy5z
aXplUmVnaXN0ZXI7CiAgICAgQVNTRVJUKHNpemVSZWdBc1NjcmF0Y2ggIT0gR1BSUmVnOjpJbnZh
bGlkR1BSUmVnKTsKIAogICAgIC8vIEIzJ3MgY2FsbCBjb2RlZ2VuIGVuc3VyZXMgdGhhdCB0aGUg
SlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4KQEAgLTY4LDExICs2OCwxMSBAQCBFeHBl
Y3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1
cmU+IHdhc21Ub1dhc20odW5zaQogICAgIC8vIEZJWE1FIHRoZSBmb2xsb3dpbmcgY29kZSBhc3N1
bWVzIHRoYXQgYWxsIFdhc206Okluc3RhbmNlIGhhdmUgdGhlIHNhbWUgcGlubmVkIHJlZ2lzdGVy
cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgIC8v
IFNldCB1cCB0aGUgY2FsbGVlJ3MgYmFzZU1lbW9yeSByZWdpc3RlciBhcyB3ZWxsIGFzIHRoZSBt
ZW1vcnkgc2l6ZSByZWdpc3RlcnMuCiAgICAgewotICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91
bmRzQ2hlY2tpbmdTaXplID0gIUdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2
ZSkgPyBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyIDogd2FzbUNhbGxpbmdD
b252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1sxXTsKKyAgICAgICAgR1BSUmVnIHNjcmF0
Y2hPclNpemUgPSAhR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyIDogd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVT
Y3JhdGNoR1BSc1sxXTsKIAotICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MoYmFzZU1l
bW9yeSwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkp
LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tp
bmcgc2l6ZS4KKyAgICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdh
c206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6
ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCiAgICAgICAgIGppdC5sb2FkUHRyKEpJVDo6QWRk
cmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSks
IGJhc2VNZW1vcnkpOyAvLyBXYXNtOjpNZW1vcnk6OlRhZ2dlZEFycmF5U3RvcmFnZVB0cjx2b2lk
PiAodm9pZCopLgotICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwg
c2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRpb25h
bGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lz
dGVyLCBzY3JhdGNoT3JTaXplKTsKICAgICB9CiAKICAgICAvLyBUYWlsIGNhbGwgaW50byB0aGUg
Y2FsbGVlIFdlYkFzc2VtYmx5IGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCAxMGI5NGJiNzRhNGE2
YjFkYmM4MjRlYzhkMDQ4OTJjMWU1MDUzNTRiLi4zZWEwMDg4OTAxYjZjMjdjZjY1YjBiNDc0ZGQ4
ZGM5NWM3ODE1MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBzdGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3Rh
bGxlZCB7IGZhbHNlIH07CiAKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfU0lHTkFMSU5HX01FTU9S
WSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAKIHN0YXRpYyBTaWduYWxB
Y3Rpb24gdHJhcEhhbmRsZXIoU2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lz
dGVycyYgY29udGV4dCkKIHsKQEAgLTYzLDQ3ICs2MywzNiBAQCBzdGF0aWMgU2lnbmFsQWN0aW9u
IHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMm
IGNvbgogICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVy
Ym9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0
aW5nSW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3Rh
cnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVu
ZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCgpKSk7Ci0gICAgZGF0YUxvZ0xuSWYoV2FzbUZh
dWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiV2FzbUxMSW50IG1lbW9yeSBzdGFy
dDogIiwgUmF3UG9pbnRlcih1bnRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZz4oTExJ
bnQ6Ondhc21MTEludFBDUmFuZ2VTdGFydCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcih1bnRhZ0Nv
ZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZz4oTExJbnQ6Ondhc21MTEludFBDUmFuZ2VFbmQp
KSk7Ci0gICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBjb2Rl
IG9yIFdhc20gTExJbnQgY29kZSBiZWZvcmUgd2UgY2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVy
d2lzZSwKKyAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgaW4gSklUIGNv
ZGUgYmVmb3JlIHdlIGNhbiBhcXVpcmUgYW55IGxvY2tzLiBPdGhlcndpc2UsCiAgICAgLy8gd2Ug
bWlnaHQgaGF2ZSBjcmFzaGVkIGluIGNvZGUgdGhhdCBpcyBhbHJlYWR5IGhvbGRpbmcgb25lIG9m
IHRoZSBsb2NrcyB3ZSB3YW50IHRvIGFxdWlyZS4KICAgICBhc3NlcnRJc05vdFRhZ2dlZChmYXVs
dGluZ0luc3RydWN0aW9uKTsKLSAgICBpZiAoaXNKSVRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSB8
fCBMTEludDo6aXNXYXNtTExJbnRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSkgewotICAgICAgICBi
b29sIGZhdWx0ZWRJbkFjdGl2ZUdyb3dhYmxlTWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKGlzSklU
UEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKKyAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVG
YXN0TWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5n
QWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwogICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiY2hlY2tpbmcgZmF1
bHRpbmcgYWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0FkZHJlc3MpLCAiIGlzIGluIGFu
IGFjdGl2ZSBmYXN0IG1lbW9yeSIpOwotICAgICAgICAgICAgZmF1bHRlZEluQWN0aXZlR3Jvd2Fi
bGVNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luR3Jvd2FibGVPckZhc3RNZW1vcnko
ZmF1bHRpbmdBZGRyZXNzKTsKKyAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkg
PSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJl
c3MpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVHcm93YWJsZU1lbW9y
eSkgeworICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewogICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
Zm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7Ci0KLSAgICAg
ICAgICAgIGF1dG8gZGlkRmF1bHRJbldhc20gPSBbXSh2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKExMSW50Ojppc1dhc21MTEludFBDKGZhdWx0aW5nSW5z
dHJ1Y3Rpb24pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBhdXRvJiBjYWxsZWVSZWdpc3RyeSA9IENhbGxlZVJlZ2lzdHJ5OjpzaW5nbGV0b24oKTsK
LSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNhbGxlZVJlZ2lzdHJ5Lmdl
dExvY2soKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYWxsZWUgOiBjYWxsZWVSZWdp
c3RyeS5hbGxDYWxsZWVzKGxvY2tlcikpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBbc3Rh
cnQsIGVuZF0gPSBjYWxsZWUtPnJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0
YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZh
dWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1h
dGNoIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYXV0byYgY2FsbGVlUmVnaXN0cnkgPSBDYWxsZWVSZWdp
c3RyeTo6c2luZ2xldG9uKCk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNh
bGxlZVJlZ2lzdHJ5LmdldExvY2soKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbGxlZSA6
IGNhbGxlZVJlZ2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgeworICAgICAgICAgICAgICAgIGF1
dG8gW3N0YXJ0LCBlbmRdID0gY2FsbGVlLT5yYW5nZSgpOworICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9u
IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7
CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1
bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5J
ZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBtYXRjaCIp
OworICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+
KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
PihXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFj
aGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBMTEludDo6Z2V0Q29k
ZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fdGhyb3dfZnJvbV9mYXVsdF9oYW5kbGVyX3RyYW1w
b2xpbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxl
ZDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKGRpZEZhdWx0SW5XYXNtKGZhdWx0aW5nSW5z
dHJ1Y3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9p
bnRlcjwxPihjb250ZXh0KSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKSk7Ci0gICAgICAgICAgICAgICAg
TWFjaGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBMTEludDo6Z2V0
Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fdGhyb3dfZnJvbV9mYXVsdF9oYW5kbGVyX3Ry
YW1wb2xpbmUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVk
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBTaWduYWxBY3Rp
b246Ok5vdEhhbmRsZWQ7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFlfU0lHTkFM
SU5HX01FTU9SWSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAK
IGJvb2wgZmFzdE1lbW9yeUVuYWJsZWQoKQogewpAQCAtMTEyLDEzICsxMDEsMTMgQEAgYm9vbCBm
YXN0TWVtb3J5RW5hYmxlZCgpCiAKIHZvaWQgZW5hYmxlRmFzdE1lbW9yeSgpCiB7Ci0jaWYgRU5B
QkxFKFdFQkFTU0VNQkxZX1NJR05BTElOR19NRU1PUlkpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
X0ZBU1RfTUVNT1JZKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2UsIFtdIHsKICAgICAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0TWVtb3J5KCkgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCisgICAg
ICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYWN0aXZhdGVTaWduYWxIYW5kbGVyc0ZvcihTaWduYWw6OkFj
Y2Vzc0ZhdWx0KTsKQEAgLTEzMCwyMCArMTE5LDIwIEBAIHZvaWQgZW5hYmxlRmFzdE1lbW9yeSgp
CiAKIHZvaWQgcHJlcGFyZUZhc3RNZW1vcnkoKQogewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9T
SUdOQUxJTkdfTUVNT1JZKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBb
XSB7CiAgICAgICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpICYm
ICFPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKQorICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGFkZFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpBY2Nlc3NGYXVsdCwgW10gKFNpZ25hbCBzaWdu
YWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiB1Y29udGV4dCkgewogICAg
ICAgICAgICAgcmV0dXJuIHRyYXBIYW5kbGVyKHNpZ25hbCwgc2lnSW5mbywgdWNvbnRleHQpOwog
ICAgICAgICB9KTsKICAgICB9KTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFlfU0lHTkFM
SU5HX01FTU9SWSkKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiB9
CiAgICAgCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtSW5zdGFuY2UuaAppbmRleCA5YTk4NTJjMjQyMjA4MjdiN2VhMGVlNzRkZWZhNDM0
NWM4ODEwZWViLi42MGU1NjE5MDJkNGMxOGY4MWVlMmYzN2NjNWJlN2Q2NTQ2NjdkZWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNzcsOCArNzcsOCBA
QCBwdWJsaWM6CiAgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldFRhYmxl
KHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCi0gICAgdm9pZCogY2FjaGVkTWVtb3J5KCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZEJvdW5kc0NoZWNr
aW5nU2l6ZSgpKTsgfQotICAgIHNpemVfdCBjYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZTsgfQorICAgIHZvaWQqIGNhY2hl
ZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5LmdldE1heUJlTnVsbChjYWNo
ZWRNZW1vcnlTaXplKCkpOyB9CisgICAgc2l6ZV90IGNhY2hlZE1lbW9yeVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZE1lbW9yeVNpemU7IH0KIAogICAgIHZvaWQgc2V0TWVtb3J5KFJlZjxN
ZW1vcnk+JiYgbWVtb3J5KQogICAgIHsKQEAgLTg5LDggKzg5LDggQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlQ2FjaGVkTWVtb3J5KCkKICAgICB7CiAgICAgICAgIGlmIChtX21lbW9yeSAhPSBu
dWxscHRyKSB7Ci0gICAgICAgICAgICBtX2NhY2hlZE1lbW9yeSA9IENhZ2VkUHRyPEdpZ2FjYWdl
OjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPihtZW1vcnkoKS0+bWVtb3J5KCksIG1lbW9y
eSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKSk7Ci0gICAgICAgICAgICBtX2NhY2hlZEJvdW5kc0No
ZWNraW5nU2l6ZSA9IG1lbW9yeSgpLT5ib3VuZHNDaGVja2luZ1NpemUoKTsKKyAgICAgICAgICAg
IG1fY2FjaGVkTWVtb3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFn
Q2FnZWRQdHI+KG1lbW9yeSgpLT5tZW1vcnkoKSwgbWVtb3J5KCktPnNpemUoKSk7CisgICAgICAg
ICAgICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVt
b3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkNhY2hlZE1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0
YW5jZSwgbV9jYWNoZWRNZW1vcnkpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5j
ZSwgbV9jYWNoZWRCb3VuZHNDaGVja2luZ1NpemUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFu
Y2UsIG1fY2FjaGVkTWVtb3J5U2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
UG9pbnRlclRvVG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5j
ZSwgbV9wb2ludGVyVG9Ub3BFbnRyeUZyYW1lKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCk7IH0KQEAgLTIwMSw3ICsy
MDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQqIG1fb3duZXIgeyBudWxscHRyIH07IC8vIEluIGEg
SlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3RhbmNlKi4KICAgICBDb250
ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CiAgICAgQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+IG1fY2FjaGVkTWVtb3J5OwotICAgIHNpemVfdCBtX2Nh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgbV9jYWNoZWRNZW1vcnlT
aXplIHsgMCB9OwogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2RlQmxv
Y2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCBjYmEzNzgyYzg0NWY1ODhjN2Ey
MjczY2U0NTlhYjc3NjVhM2UzOWQ0Li5hMjZlODFkNzEyNGYzMGFlMTNkODJiNzRjYjFkNDMwNmEz
NGUyNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApAQCAt
MzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgPGNzdHJpbmc+CkBA
IC0xMzQsNTUgKzEzMywxNiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjpsb2dXZWJBc3NlbWJseU1lbW9yeSgpLCAiRnJlZWQgdmlydHVhbDsgc3RhdGU6
ICIsICp0aGlzKTsKICAgICB9Ci0KLSAgICBNZW1vcnlSZXN1bHQgdHJ5QWxsb2NhdGVHcm93YWJs
ZUJvdW5kc0NoZWNraW5nTWVtb3J5KHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKLSAgICB7Ci0gICAg
ICAgIE1lbW9yeVJlc3VsdCByZXN1bHQgPSBbJl0gewotICAgICAgICAgICAgYXV0byBob2xkZXIg
PSBob2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgdm9pZCogcmVzdWx0ID0gR2lnYWNhZ2U6
OnRyeUFsbG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1hcHBl
ZENhcGFjaXR5KTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJl
dHVybiBNZW1vcnlSZXN1bHQobnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpTeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5KTsKLQotICAgICAgICAgICAgbV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMu
aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHJlc3VsdCksIG1h
cHBlZENhcGFjaXR5KSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBNZW1vcnlSZXN1bHQocmVzdWx0
LCBNZW1vcnlSZXN1bHQ6OlN1Y2Nlc3MpOwotICAgICAgICB9KCk7Ci0KLSAgICAgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkFsbG9jYXRlZCB2aXJ0dWFs
OiAiLCByZXN1bHQsICI7IHN0YXRlOiAiLCAqdGhpcyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLSAgICB2b2lkIGZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KHZv
aWQqIGJhc2VQdHIsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKLSAgICB7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIEdp
Z2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VQdHIsIG1h
cHBlZENhcGFjaXR5KTsKLSAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9y
aWVzLmVyYXNlKHN0ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGJhc2VQdHIp
LCBtYXBwZWRDYXBhY2l0eSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAq
dGhpcyk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0luR3Jvd2FibGVPckZhc3RNZW1vcnkodm9pZCog
YWRkcmVzcykKKyAgICAKKyAgICBib29sIGlzQWRkcmVzc0luRmFzdE1lbW9yeSh2b2lkKiBhZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYSBz
aWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRoYXQgd2UncmUgaW4gSklU
IGNvZGUgb3IgV2FzbUxMSW50IGNvZGUuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgY2FuIGJlIGNh
bGxlZCBmcm9tIGEgc2lnbmFsIGhhbmRsZXIsIGJ1dCBvbmx5IGFmdGVyIHdlIHByb3ZlZCB0aGF0
IHdlJ3JlIGluIEpJVCBjb2RlLgogICAgICAgICBhdXRvIGhvbGRlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CiAgICAgICAgIGZvciAodm9pZCogbWVtb3J5IDogbV9mYXN0TWVtb3JpZXMpIHsKICAgICAg
ICAgICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1lbW9yeSk7CiAgICAgICAg
ICAgICBpZiAoc3RhcnQgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDw9IHN0YXJ0ICsgTWVtb3J5Ojpm
YXN0TWFwcGVkQnl0ZXMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQotICAgICAgICB1aW50cHRyX3QgYWRkcmVzc1ZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oYWRkcmVzcyk7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OnVwcGVyX2JvdW5kKG1f
Z3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmJlZ2luKCksIG1fZ3Jvd2FibGVCb3VuZHND
aGVja2luZ01lbW9yaWVzLmVuZCgpLCBzdGQ6Om1ha2VfcGFpcihhZGRyZXNzVmFsdWUsIDApLAot
ICAgICAgICAgICAgW10oc3RkOjpwYWlyPHVpbnRwdHJfdCwgc2l6ZV90PiBhLCBzdGQ6OnBhaXI8
dWludHB0cl90LCBzaXplX3Q+IGIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKGEuZmlyc3Qg
KyBhLnNlY29uZCkgPCAoYi5maXJzdCArIGIuc2Vjb25kKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICBpZiAoaXRlcmF0b3IgIT0gbV9ncm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3JpZXMuZW5k
KCkpIHsKLSAgICAgICAgICAgIC8vIFNpbmNlIHdlIG5ldmVyIGhhdmUgb3ZlcmxhcHBlZCByYW5n
ZSBpbiBtX2dyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcmllcywganVzdCBjaGVja2luZyBvbmUg
bG93ZXItYm91bmQgcmFuZ2UgaXMgZW5vdWdoLgotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLT5m
aXJzdCA8PSBhZGRyZXNzVmFsdWUgJiYgYWRkcmVzc1ZhbHVlIDwgKGl0ZXJhdG9yLT5maXJzdCAr
IGl0ZXJhdG9yLT5zZWNvbmQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIzMiw3ICsxOTIsNiBAQCBw
cml2YXRlOgogICAgIExvY2sgbV9sb2NrOwogICAgIHVuc2lnbmVkIG1fbWF4RmFzdE1lbW9yeUNv
dW50IHsgMCB9OwogICAgIFZlY3Rvcjx2b2lkKj4gbV9mYXN0TWVtb3JpZXM7Ci0gICAgU3RkU2V0
PHN0ZDo6cGFpcjx1aW50cHRyX3QsIHNpemVfdD4+IG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01l
bW9yaWVzOwogICAgIHNpemVfdCBtX3BoeXNpY2FsQnl0ZXMgeyAwIH07CiB9OwogCkBAIC0yNzYs
NzMgKzIzNSwzMCBAQCBib29sIHRyeUFsbG9jYXRlKGNvbnN0IEZ1bmMmIGFsbG9jYXRlLCBjb25z
dCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVtb3J5OjpOb3RpZnlQcgogCiB9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAotCi1NZW1vcnlIYW5kbGU6Ok1lbW9yeUhhbmRsZSh2b2lkKiBtZW1vcnksIHNp
emVfdCBzaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdl
Q291bnQgbWF4aW11bSwgTWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGUg
bW9kZSkKLSAgICA6IG1fbWVtb3J5KG1lbW9yeSwgbWFwcGVkQ2FwYWNpdHkpCi0gICAgLCBtX3Np
emUoc2l6ZSkKLSAgICAsIG1fbWFwcGVkQ2FwYWNpdHkobWFwcGVkQ2FwYWNpdHkpCi0gICAgLCBt
X2luaXRpYWwoaW5pdGlhbCkKLSAgICAsIG1fbWF4aW11bShtYXhpbXVtKQotICAgICwgbV9zaGFy
aW5nTW9kZShzaGFyaW5nTW9kZSkKLSAgICAsIG1fbW9kZShtb2RlKQotewotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgaWYgKHNoYXJpbmdNb2RlID09IE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0
ICYmIG1vZGUgPT0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpCi0gICAgICAgIEFTU0VSVCht
YXBwZWRDYXBhY2l0eSA9PSBzaXplKTsKLSNlbmRpZgotfQotCi1NZW1vcnlIYW5kbGU6On5NZW1v
cnlIYW5kbGUoKQotewotICAgIGlmIChtX21lbW9yeSkgewotICAgICAgICBtZW1vcnlNYW5hZ2Vy
KCkuZnJlZVBoeXNpY2FsQnl0ZXMobV9zaXplKTsKLSAgICAgICAgc3dpdGNoIChtX21vZGUpIHsK
LSAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6Ci0gICAgICAgICAgICBpZiAobXBy
b3RlY3QobWVtb3J5KCksIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBS
T1RfV1JJVEUpKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAi
LCBzdHJlcnJvcihlcnJubyksICJcbiIpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtZW1vcnlNYW5hZ2Vy
KCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKLSAgICAgICAgICAgIHN3aXRjaCAo
bV9zaGFyaW5nTW9kZSkgewotICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6RGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBtZW1vcnkoKSwgbV9zaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogewotICAgICAgICAg
ICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnkoKSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFE
IHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3Qg
ZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwotICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdyb3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnko
bWVtb3J5KCksIG1fbWFwcGVkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLX0KLQogTWVtb3J5OjpNZW1vcnkoKQotICAgIDogbV9oYW5kbGUo
YWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUobnVsbHB0ciwgMCwgMCwgUGFnZUNvdW50KDApLCBQ
YWdlQ291bnQoMCksIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0LCBNZW1vcnlNb2RlOjpCb3Vu
ZHNDaGVja2luZykpKQogewogfQogCi1NZW1vcnk6Ok1lbW9yeShQYWdlQ291bnQgaW5pdGlhbCwg
UGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlLCBGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgRnVuY3Rpb248
dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3Vj
Y2Vzc0NhbGxiYWNrKQotICAgIDogbV9oYW5kbGUoYWRvcHRSZWYoKm5ldyBNZW1vcnlIYW5kbGUo
bnVsbHB0ciwgMCwgMCwgaW5pdGlhbCwgbWF4aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6
OkJvdW5kc0NoZWNraW5nKSkpCitNZW1vcnk6Ok1lbW9yeShQYWdlQ291bnQgaW5pdGlhbCwgUGFn
ZUNvdW50IG1heGltdW0sIEZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1l
bW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlU
b1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50
LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCisgICAgOiBtX2luaXRpYWwoaW5p
dGlhbCkKKyAgICAsIG1fbWF4aW11bShtYXhpbXVtKQogICAgICwgbV9ub3RpZnlNZW1vcnlQcmVz
c3VyZShXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSkKICAgICAsIG1fc3luY1RyeVRvUmVj
bGFpbU1lbW9yeShXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpKQogICAgICwgbV9ncm93
U3VjY2Vzc0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpCiB7CiAgICAgQVNT
RVJUKCFpbml0aWFsLmJ5dGVzKCkpOwotICAgIEFTU0VSVChtb2RlKCkgPT0gTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmcpOworICAgIEFTU0VSVChtX21vZGUgPT0gTWVtb3J5TW9kZTo6Qm91bmRz
Q2hlY2tpbmcpOwogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJNZW1vcnk6Ok1lbW9yeSBhbGxv
Y2F0aW5nICIsICp0aGlzKTsKICAgICBBU1NFUlQoIW1lbW9yeSgpKTsKIH0KIAotTWVtb3J5OjpN
ZW1vcnkoUmVmPE1lbW9yeUhhbmRsZT4mJiBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJl
c3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1Jl
Y2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93
U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCi0g
ICAgOiBtX2hhbmRsZShXVEZNb3ZlKGhhbmRsZSkpCitNZW1vcnk6Ok1lbW9yeSh2b2lkKiBtZW1v
cnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgc2l6ZV90IG1hcHBlZENh
cGFjaXR5LCBNZW1vcnlNb2RlIG1vZGUsIEZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYm
IG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYm
IHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2Vzcywg
UGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCisgICAgOiBtX21l
bW9yeShtZW1vcnksIGluaXRpYWwuYnl0ZXMoKSkKKyAgICAsIG1fc2l6ZShpbml0aWFsLmJ5dGVz
KCkpCisgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAsIG1fbWF4aW11bShtYXhpbXVtKQor
ICAgICwgbV9tYXBwZWRDYXBhY2l0eShtYXBwZWRDYXBhY2l0eSkKKyAgICAsIG1fbW9kZShtb2Rl
KQogICAgICwgbV9ub3RpZnlNZW1vcnlQcmVzc3VyZShXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNz
dXJlKSkKICAgICAsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeShXVEZNb3ZlKHN5bmNUcnlUb1Jl
Y2xhaW1NZW1vcnkpKQogICAgICwgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKFdURk1vdmUoZ3Jvd1N1
Y2Nlc3NDYWxsYmFjaykpCkBAIC0zNTUsMTIgKzI3MSw3IEBAIFJlZjxNZW1vcnk+IE1lbW9yeTo6
Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1vcnkoKSk7CiB9CiAKLVJlZjxN
ZW1vcnk+IE1lbW9yeTo6Y3JlYXRlKFJlZjxNZW1vcnlIYW5kbGU+JiYgaGFuZGxlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9y
eSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+
JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZW1v
cnkoV1RGTW92ZShoYW5kbGUpLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92
ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkp
OwotfQotCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlh
bCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1l
bW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3Vu
dCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKK1JlZlB0cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3Jl
YXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2
b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6
RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dT
dWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGluaXRpYWwpOwogICAgIFJFTEVBU0VfQVNT
RVJUKCFtYXhpbXVtIHx8IG1heGltdW0gPj0gaW5pdGlhbCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1
YXJhbnRlZWQgYnkgb3VyIGNhbGxlci4KQEAgLTM3NCw3ICsyODUsNyBAQCBSZWZQdHI8TWVtb3J5
PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IE1lbW9yeVNoYQogICAgIGlmIChtYXhpbXVtICYmICFtYXhpbXVtQnl0ZXMpIHsKICAgICAgICAg
Ly8gVXNlciBzcGVjaWZpZWQgYSB6ZXJvIG1heGltdW0sIGluaXRpYWwgc2l6ZSBtdXN0IGFsc28g
YmUgemVyby4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluaXRpYWxCeXRlcyk7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2Rl
LCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFsLCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9y
eVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93
U3VjY2Vzc0NhbGxiYWNrKSkpOwogICAgIH0KICAgICAKICAgICBib29sIGRvbmUgPSB0cnlBbGxv
Y2F0ZSgKQEAgLTM5NSw1NiArMzA2LDQ4IEBAIFJlZlB0cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3Jl
YXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhCiAgICAg
fQogICAgIAogICAgIGlmIChmYXN0TWVtb3J5KSB7CisgICAgICAgIAogICAgICAgICBpZiAobXBy
b3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRlcywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMo
KSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkgewogICAgICAgICAgICAgZGF0YUxvZygibXBy
b3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBN
ZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhhbmRsZShmYXN0TWVtb3J5LCBpbml0
aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIGluaXRpYWwsIG1heGltdW0sIHNo
YXJpbmdNb2RlLCBNZW1vcnlNb2RlOjpTaWduYWxpbmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQ
cmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1
Y2Nlc3NDYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShmYXN0
TWVtb3J5LCBpbml0aWFsLCBtYXhpbXVtLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBNZW1v
cnlNb2RlOjpTaWduYWxpbmcsIFdURk1vdmUobm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3Zl
KHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKSk7
CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpjcmFzaElmV2ViQXNzZW1i
bHlDYW50RmFzdE1lbW9yeSgpKSkKICAgICAgICAgd2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1l
bW9yeSgpOwogCiAgICAgaWYgKCFpbml0aWFsQnl0ZXMpCi0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIHNoYXJpbmdNb2RlLCBXVEZNb3ZlKG5vdGlm
eU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92
ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOwotCi0gICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgewot
ICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQ6IHsKLSAgICAgICAgdm9pZCogc2xv
d01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBpbml0aWFsQnl0ZXMpOwotICAgICAgICBpZiAoIXNsb3dNZW1vcnkpIHsK
LSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlUGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0
ZXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIE1lbW9yeTo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKHNsb3dNZW1vcnks
IGluaXRpYWxCeXRlcywgaW5pdGlhbEJ5dGVzLCBpbml0aWFsLCBtYXhpbXVtLCBzaGFyaW5nTW9k
ZSwgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSwgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVz
c3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nl
c3NDYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lbW9yeShpbml0aWFs
LCBtYXhpbXVtLCBXVEZNb3ZlKG5vdGlmeU1lbW9yeVByZXNzdXJlKSwgV1RGTW92ZShzeW5jVHJ5
VG9SZWNsYWltTWVtb3J5KSwgV1RGTW92ZShncm93U3VjY2Vzc0NhbGxiYWNrKSkpOworICAgIAor
ICAgIHZvaWQqIHNsb3dNZW1vcnkgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFs
UGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgaW5pdGlhbEJ5dGVzKTsKKyAgICBpZiAoIXNsb3dN
ZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVzKGluaXRp
YWxCeXRlcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBjYXNlIE1lbW9y
eVNoYXJpbmdNb2RlOjpTaGFyZWQ6IHsKLSAgICAgICAgY2hhciogc2xvd01lbW9yeSA9IG51bGxw
dHI7Ci0gICAgICAgIHRyeUFsbG9jYXRlKAotICAgICAgICAgICAgWyZdICgpIC0+IE1lbW9yeVJl
c3VsdDo6S2luZCB7Ci0gICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtZW1vcnlNYW5hZ2Vy
KCkudHJ5QWxsb2NhdGVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1heGltdW1CeXRlcyk7
Ci0gICAgICAgICAgICAgICAgc2xvd01lbW9yeSA9IGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0
LmJhc2VQdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQua2luZDsKLSAgICAgICAg
ICAgIH0sIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKLSAg
ICAgICAgaWYgKCFzbG93TWVtb3J5KSB7Ci0gICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJl
ZVBoeXNpY2FsQnl0ZXMoaW5pdGlhbEJ5dGVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnkoc2xvd01lbW9yeSwg
aW5pdGlhbCwgbWF4aW11bSwgaW5pdGlhbEJ5dGVzLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2lu
ZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsKK30KIAotICAgICAgICBp
ZiAobXByb3RlY3Qoc2xvd01lbW9yeSArIGluaXRpYWxCeXRlcywgbWF4aW11bUJ5dGVzIC0gaW5p
dGlhbEJ5dGVzLCBQUk9UX05PTkUpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBm
YWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworTWVtb3J5Ojp+TWVtb3J5KCkKK3sKKyAgICBpZiAobV9tZW1v
cnkpIHsKKyAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQaHlzaWNhbEJ5dGVzKG1fc2l6ZSk7
CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgTWVtb3J5TW9kZTo6U2ln
bmFsaW5nOgorICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgpLCBNZW1vcnk6OmZhc3RN
YXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgeworICAgICAgICAgICAgICAg
IGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVtb3J5KG1lbW9yeSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNr
aW5nOgorICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgbWVtb3J5KCksIG1fc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBNZW1vcnk6OmNyZWF0ZShhZG9wdFJlZigqbmV3IE1lbW9yeUhh
bmRsZShzbG93TWVtb3J5LCBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcywgaW5pdGlhbCwgbWF4
aW11bSwgc2hhcmluZ01vZGUsIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSksIFdURk1vdmUo
bm90aWZ5TWVtb3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBX
VEZNb3ZlKGdyb3dTdWNjZXNzQ2FsbGJhY2spKTsKICAgICB9Ci0gICAgfQotICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU1lbW9yeTo6
fk1lbW9yeSgpID0gZGVmYXVsdDsKLQogc2l6ZV90IE1lbW9yeTo6ZmFzdE1hcHBlZFJlZHpvbmVC
eXRlcygpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oUGFnZUNvdW50OjpwYWdl
U2l6ZSkgKiBPcHRpb25zOjp3ZWJBc3NlbWJseUZhc3RNZW1vcnlSZWR6b25lUGFnZXMoKTsKQEAg
LTQ1Niw3NiArMzU5LDE4IEBAIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpCiAgICAg
cmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IDMyKSArIGZhc3RNYXBwZWRSZWR6b25l
Qnl0ZXMoKTsKIH0KIAotYm9vbCBNZW1vcnk6OmFkZHJlc3NJc0luR3Jvd2FibGVPckZhc3RNZW1v
cnkodm9pZCogYWRkcmVzcykKLXsKLSAgICByZXR1cm4gbWVtb3J5TWFuYWdlcigpLmlzSW5Hcm93
YWJsZU9yRmFzdE1lbW9yeShhZGRyZXNzKTsKLX0KLQotRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1v
cnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3dTaGFyZWQoUGFnZUNvdW50IGRlbHRhKQor
Ym9vbCBNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKiBhZGRyZXNzKQog
ewotICAgIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQ7Ci0gICAgV2FzbTo6UGFnZUNvdW50
IG5ld1BhZ2VDb3VudDsKLSAgICBhdXRvIHJlc3VsdCA9IChbJl0oKSAtPiBFeHBlY3RlZDxQYWdl
Q291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2hhbmRsZS0+bG9jaygpKTsKLQotICAgICAgICBvbGRQYWdlQ291bnQgPSBzaXpl
SW5QYWdlcygpOwotICAgICAgICBuZXdQYWdlQ291bnQgPSBvbGRQYWdlQ291bnQgKyBkZWx0YTsK
LSAgICAgICAgaWYgKCFuZXdQYWdlQ291bnQgfHwgIW5ld1BhZ2VDb3VudC5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWRH
cm93U2l6ZSk7Ci0gICAgICAgIGlmIChuZXdQYWdlQ291bnQuYnl0ZXMoKSA+IE1BWF9BUlJBWV9C
VUZGRVJfU0laRSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJl
YXNvbjo6T3V0T2ZNZW1vcnkpOwotCi0gICAgICAgIGlmICghZGVsdGEucGFnZUNvdW50KCkpCi0g
ICAgICAgICAgICByZXR1cm4gb2xkUGFnZUNvdW50OwotCi0gICAgICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJNZW1vcnk6Omdyb3coIiwgZGVsdGEsICIpIHRvICIsIG5ld1BhZ2VDb3VudCwgIiBm
cm9tICIsICp0aGlzKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNvdW50ID4gUGFn
ZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7Ci0KLSAgICAgICAgaWYgKG1heGltdW0oKSAmJiBu
ZXdQYWdlQ291bnQgPiBtYXhpbXVtKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoR3Jvd0ZhaWxSZWFzb246OldvdWxkRXhjZWVkTWF4aW11bSk7Ci0KLSAgICAgICAgc2l6ZV90
IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5dGVzKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGRlc2lyZWRTaXplIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGRlc2lyZWRTaXplID4gc2l6ZSgpKTsKLQotICAgICAgICAvLyBJZiB0aGUgbWVt
b3J5IGlzIE1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQsIHdlIGFscmVhZHkgYWxsb2NhdGVkIGVu
b3VnaCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgZXZlbiBpZiB0aGUgbWVtb3J5IGlzIGJvdW5kLWNo
ZWNraW5nIG1vZGUuIFdlIHBlcmZvcm0gbXByb3RlY3QgdG8gZXh0ZW5kLgotICAgICAgICBzaXpl
X3QgZXh0cmFCeXRlcyA9IGRlc2lyZWRTaXplIC0gc2l6ZSgpOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChleHRyYUJ5dGVzKTsKLSAgICAgICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFs
bG9jYXRlKAotICAgICAgICAgICAgWyZdICgpIC0+IE1lbW9yeVJlc3VsdDo6S2luZCB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVBoeXNpY2FsQnl0
ZXMoZXh0cmFCeXRlcyk7Ci0gICAgICAgICAgICB9LCBbXShXYXNtOjpNZW1vcnk6Ok5vdGlmeVBy
ZXNzdXJlKSB7IH0sIFtdKE1lbW9yeTo6U3luY1RyeVRvUmVjbGFpbSkgeyB9KTsKLSAgICAgICAg
aWYgKCFhbGxvY2F0aW9uU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1lbW9yeSgpKTsKLQotICAgICAgICAvLyBTaWduYWxpbmcgbWVtb3J5IG11c3QgaGF2ZSBiZWVu
IHByZS1hbGxvY2F0ZWQgdmlydHVhbGx5LgotICAgICAgICB1aW50OF90KiBzdGFydEFkZHJlc3Mg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOwotCi0gICAgICAgIGRh
dGFMb2dMbklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdzICIsIFJhd1Bv
aW50ZXIobWVtb3J5KCkpLCAiIGFzIHJlYWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIo
c3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVz
KSwgIikiKTsKLSAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywg
UFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0
IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2hhbmRsZS0+Z3Jv
d1RvU2l6ZShkZXNpcmVkU2l6ZSk7Ci0gICAgICAgIHJldHVybiBvbGRQYWdlQ291bnQ7Ci0gICAg
fSgpKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgICBtX2dyb3dTdWNjZXNzQ2FsbGJhY2soR3Jv
d1N1Y2Nlc3NUYWcsIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkuaXNBZGRyZXNzSW5GYXN0TWVtb3J5KGFk
ZHJlc3MpOwogfQogCiBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+
IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiB7CisgICAgY29uc3QgV2FzbTo6UGFnZUNv
dW50IG9sZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CisKICAgICBpZiAoIWRlbHRhLmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpJbnZh
bGlkRGVsdGEpOwotCi0gICAgaWYgKHNoYXJpbmdNb2RlKCkgPT0gTWVtb3J5U2hhcmluZ01vZGU6
OlNoYXJlZCkKLSAgICAgICAgcmV0dXJuIGdyb3dTaGFyZWQoZGVsdGEpOwotCi0gICAgY29uc3Qg
V2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CisgICAgCiAgICAg
Y29uc3QgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCA9IG9sZFBhZ2VDb3VudCArIGRlbHRh
OwogICAgIGlmICghbmV3UGFnZUNvdW50IHx8ICFuZXdQYWdlQ291bnQuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246OkludmFsaWRHcm93U2l6
ZSk7CkBAIC01NDYsNTggKzM5MSw1MiBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jv
d0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAgIHJldHVy
biBzdWNjZXNzKCk7CiAKICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWVtb3J5Ojpncm93KCIs
IGRlbHRhLCAiKSB0byAiLCBuZXdQYWdlQ291bnQsICIgZnJvbSAiLCAqdGhpcyk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQobmV3UGFnZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMoc2l6ZSgpKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQobmV3UGFnZUNvdW50ID4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMo
bV9zaXplKSk7CiAKICAgICBpZiAobWF4aW11bSgpICYmIG5ld1BhZ2VDb3VudCA+IG1heGltdW0o
KSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpXb3VsZEV4
Y2VlZE1heGltdW0pOwogCiAgICAgc2l6ZV90IGRlc2lyZWRTaXplID0gbmV3UGFnZUNvdW50LmJ5
dGVzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPD0gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKTsKLSAgICBSRUxFQVNFX0FTU0VSVChkZXNpcmVkU2l6ZSA+IHNpemUoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZGVzaXJlZFNpemUgPiBtX3NpemUpOworICAgIHNpemVfdCBleHRyYUJ5
dGVzID0gZGVzaXJlZFNpemUgLSBtX3NpemU7CisgICAgUkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRl
cyk7CisgICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VzcyA9IHRyeUFsbG9jYXRlKAorICAgICAgICBb
Jl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKKyAgICAgICAgICAgIHJldHVybiBtZW1vcnlN
YW5hZ2VyKCkudHJ5QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGV4dHJhQnl0ZXMpOworICAgICAgICB9
LCBtX25vdGlmeU1lbW9yeVByZXNzdXJlLCBtX3N5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOworICAg
IGlmICghYWxsb2NhdGlvblN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChH
cm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOworCiAgICAgc3dpdGNoIChtb2RlKCkpIHsKICAg
ICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOiB7Ci0gICAgICAgIGJvb2wgYWxsb2Nh
dGlvblN1Y2Nlc3MgPSB0cnlBbGxvY2F0ZSgKLSAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlS
ZXN1bHQ6OktpbmQgewotICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5
QWxsb2NhdGVQaHlzaWNhbEJ5dGVzKGRlc2lyZWRTaXplKTsKLSAgICAgICAgICAgIH0sIG1fbm90
aWZ5TWVtb3J5UHJlc3N1cmUsIG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7Ci0gICAgICAgIGlm
ICghYWxsb2NhdGlvblN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
R3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsKLQogICAgICAgICBSRUxFQVNFX0FTU0VSVCht
YXhpbXVtKCkuYnl0ZXMoKSAhPSAwKTsKIAogICAgICAgICB2b2lkKiBuZXdNZW1vcnkgPSBHaWdh
Y2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
ZGVzaXJlZFNpemUpOwogICAgICAgICBpZiAoIW5ld01lbW9yeSkKICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnkpOwogCi0gICAgICAg
IG1lbWNweShuZXdNZW1vcnksIG1lbW9yeSgpLCBzaXplKCkpOwotICAgICAgICBhdXRvIG5ld0hh
bmRsZSA9IGFkb3B0UmVmKCpuZXcgTWVtb3J5SGFuZGxlKG5ld01lbW9yeSwgZGVzaXJlZFNpemUs
IGRlc2lyZWRTaXplLCBpbml0aWFsKCksIG1heGltdW0oKSwgc2hhcmluZ01vZGUoKSwgTWVtb3J5
TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKLSAgICAgICAgbV9oYW5kbGUgPSBXVEZNb3ZlKG5ld0hh
bmRsZSk7Ci0KKyAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCksIG1fc2l6ZSk7Cisg
ICAgICAgIGlmIChtX21lbW9yeSkKKyAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBh
Z2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOworICAgICAgICBtX21l
bW9yeSA9IENhZ2VkTWVtb3J5KG5ld01lbW9yeSwgZGVzaXJlZFNpemUpOworICAgICAgICBtX21h
cHBlZENhcGFjaXR5ID0gZGVzaXJlZFNpemU7CisgICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXpl
OwogICAgICAgICBBU1NFUlQobWVtb3J5KCkgPT0gbmV3TWVtb3J5KTsKICAgICAgICAgcmV0dXJu
IHN1Y2Nlc3MoKTsKICAgICB9CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6IHsKLSAg
ICAgICAgc2l6ZV90IGV4dHJhQnl0ZXMgPSBkZXNpcmVkU2l6ZSAtIHNpemUoKTsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXh0cmFCeXRlcyk7Ci0gICAgICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nl
c3MgPSB0cnlBbGxvY2F0ZSgKLSAgICAgICAgICAgIFsmXSAoKSAtPiBNZW1vcnlSZXN1bHQ6Oktp
bmQgewotICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcnlNYW5hZ2VyKCkudHJ5QWxsb2NhdGVQ
aHlzaWNhbEJ5dGVzKGV4dHJhQnl0ZXMpOwotICAgICAgICAgICAgfSwgbV9ub3RpZnlNZW1vcnlQ
cmVzc3VyZSwgbV9zeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKLSAgICAgICAgaWYgKCFhbGxvY2F0
aW9uU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChHcm93RmFpbFJl
YXNvbjo6T3V0T2ZNZW1vcnkpOwotCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeSgpKTsK
LQogICAgICAgICAvLyBTaWduYWxpbmcgbWVtb3J5IG11c3QgaGF2ZSBiZWVuIHByZS1hbGxvY2F0
ZWQgdmlydHVhbGx5LgotICAgICAgICB1aW50OF90KiBzdGFydEFkZHJlc3MgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4obWVtb3J5KCkpICsgc2l6ZSgpOworICAgICAgICB1aW50OF90KiBzdGFydEFk
ZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVtb3J5KCkpICsgbV9zaXplOwogICAgICAg
ICAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVt
b3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkoKSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBb
IiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVz
cyArIGV4dHJhQnl0ZXMpLCAiKSIpOwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNz
LCBleHRyYUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewogICAgICAgICAgICAgZGF0
YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotCi0gICAgICAg
IG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKKyAgICAgICAgbV9tZW1vcnkucmVj
YWdlKG1fc2l6ZSwgZGVzaXJlZFNpemUpOworICAgICAgICBtX3NpemUgPSBkZXNpcmVkU2l6ZTsK
ICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAgICAgfQpAQCAtNjIwLDggKzQ1OSw3
IEBAIHZvaWQgTWVtb3J5OjpyZWdpc3Rlckluc3RhbmNlKEluc3RhbmNlKiBpbnN0YW5jZSkKIAog
dm9pZCBNZW1vcnk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBhdXRvIGhh
bmRsZSA9IG1faGFuZGxlLmNvcHlSZWYoKTsKLSAgICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBS
YXdQb2ludGVyKGhhbmRsZS0+bWVtb3J5KCkpLCAiLCBzaXplICIsIGhhbmRsZS0+c2l6ZSgpLCAi
QiBjYXBhY2l0eSAiLCBoYW5kbGUtPm1hcHBlZENhcGFjaXR5KCksICJCLCBpbml0aWFsICIsIGhh
bmRsZS0+aW5pdGlhbCgpLCAiIG1heGltdW0gIiwgaGFuZGxlLT5tYXhpbXVtKCksICIgbW9kZSAi
LCBtYWtlU3RyaW5nKGhhbmRsZS0+bW9kZSgpKSwgIiBzaGFyaW5nTW9kZSAiLCBtYWtlU3RyaW5n
KGhhbmRsZS0+c2hhcmluZ01vZGUoKSkpOworICAgIG91dC5wcmludCgiTWVtb3J5IGF0ICIsIFJh
d1BvaW50ZXIobWVtb3J5KCkpLCAiLCBzaXplICIsIG1fc2l6ZSwgIkIgY2FwYWNpdHkgIiwgbV9t
YXBwZWRDYXBhY2l0eSwgIkIsIGluaXRpYWwgIiwgbV9pbml0aWFsLCAiIG1heGltdW0gIiwgbV9t
YXhpbXVtLCAiIG1vZGUgIiwgbWFrZVN0cmluZyhtX21vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKaW5kZXggYTYyZmU2
MDgxYWE2ZTI4N2Y2MDVhNDg1YzkzNTI0MWRhNGY0MjkyZi4uOTY3MDgzOGYxNzExZjgyZTdiYjRl
MTViZjhiNWRkM2I4NDgyNmI1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuaApAQCAtNDQsODAgKzQ0LDM5IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCiBuYW1lc3BhY2UgV2FzbSB7
CiAKIGNsYXNzIEluc3RhbmNlOwogCi1jbGFzcyBNZW1vcnlIYW5kbGUgZmluYWwgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVtb3J5SGFuZGxlPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTWVtb3J5SGFuZGxlKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBm
cmllbmQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotcHVibGljOgotICAgIE1lbW9yeUhhbmRsZSh2
b2lkKiwgc2l6ZV90IHNpemUsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSwgUGFnZUNvdW50IGluaXRp
YWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGFyaW5nTW9kZSwgTWVtb3J5TW9kZSk7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgfk1lbW9yeUhhbmRsZSgpOwotCi0gICAgdm9pZCogbWVtb3J5
KCkgY29uc3QgeyBBU1NFUlQobV9tZW1vcnkuZ2V0TWF5QmVOdWxsKG1fbWFwcGVkQ2FwYWNpdHkp
ID09IG1fbWVtb3J5LmdldFVuc2FmZSgpKTsgcmV0dXJuIG1fbWVtb3J5LmdldE1heUJlTnVsbCht
X21hcHBlZENhcGFjaXR5KTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgc2l6ZV90IG1hcHBlZENhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXBw
ZWRDYXBhY2l0eTsgfQotICAgIFBhZ2VDb3VudCBpbml0aWFsKCkgY29uc3QgeyByZXR1cm4gbV9p
bml0aWFsOyB9Ci0gICAgUGFnZUNvdW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGlt
dW07IH0KLSAgICBNZW1vcnlTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmluZ01vZGU7IH0KLSAgICBNZW1vcnlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBt
X21vZGU7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihNZW1vcnlIYW5kbGUsIG1fc2l6ZSk7IH0KLSAgICBMb2NrJiBsb2NrKCkg
eyByZXR1cm4gbV9sb2NrOyB9Ci0KLSAgICB2b2lkIGdyb3dUb1NpemUoc2l6ZV90IHNpemUpCi0g
ICAgewotICAgICAgICBtX3NpemUgPSBzaXplOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB1c2lu
ZyBDYWdlZE1lbW9yeSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0Nh
Z2VkUHRyPjsKLSAgICBDYWdlZE1lbW9yeSBtX21lbW9yeTsKLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotICAgIHNpemVfdCBtX21hcHBlZENhcGFjaXR5IHsgMCB9OwotICAgIFBhZ2VDb3VudCBt
X2luaXRpYWw7Ci0gICAgUGFnZUNvdW50IG1fbWF4aW11bTsKLSAgICBNZW1vcnlTaGFyaW5nTW9k
ZSBtX3NoYXJpbmdNb2RlIHsgTWVtb3J5U2hhcmluZ01vZGU6OkRlZmF1bHQgfTsKLSAgICBNZW1v
cnlNb2RlIG1fbW9kZSB7IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nIH07Ci0gICAgTG9jayBt
X2xvY2s7Ci19OwotCi1jbGFzcyBNZW1vcnkgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1v
cnk+IHsKK2NsYXNzIE1lbW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1lbW9yeSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgZnJpZW5kIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB2b2lkIGR1
bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OwogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICEhbV9oYW5kbGUtPm1lbW9yeSgpOyB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9tZW1vcnk7IH0KICAgICAKICAgICBl
bnVtIE5vdGlmeVByZXNzdXJlIHsgTm90aWZ5UHJlc3N1cmVUYWcgfTsKICAgICBlbnVtIFN5bmNU
cnlUb1JlY2xhaW0geyBTeW5jVHJ5VG9SZWNsYWltVGFnIH07CiAgICAgZW51bSBHcm93U3VjY2Vz
cyB7IEdyb3dTdWNjZXNzVGFnIH07CiAKICAgICBzdGF0aWMgUmVmPE1lbW9yeT4gY3JlYXRlKCk7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxNZW1vcnk+IGNyZWF0ZShSZWY8TWVt
b3J5SGFuZGxlPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlm
eU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYg
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQ
YWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxNZW1vcnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1h
eGltdW0sIE1lbW9yeVNoYXJpbmdNb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1
cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRv
UmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdy
b3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7
CisgICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IHRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwg
UGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYg
bm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWlt
KT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nl
c3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIH5NZW1vcnkoKTsKKyAgICB+TWVtb3J5KCk7CiAKICAgICBzdGF0
aWMgc2l6ZV90IGZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKTsKICAgICBzdGF0aWMgc2l6ZV90IGZh
c3RNYXBwZWRCeXRlcygpOyAvLyBJbmNsdWRlcyByZWR6b25lLgotICAgIHN0YXRpYyBib29sIGFk
ZHJlc3NJc0luR3Jvd2FibGVPckZhc3RNZW1vcnkodm9pZCopOworICAgIHN0YXRpYyBib29sIGFk
ZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKik7CisKKyAgICB2b2lkKiBtZW1vcnkoKSBj
b25zdCB7IEFTU0VSVChtX21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKSA9PSBtX21lbW9yeS5n
ZXRVbnNhZmUoKSk7IHJldHVybiBtX21lbW9yeS5nZXRNYXlCZU51bGwoc2l6ZSgpKTsgfQorICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgUGFnZUNvdW50IHNp
emVJblBhZ2VzKCkgY29uc3QgeyByZXR1cm4gUGFnZUNvdW50Ojpmcm9tQnl0ZXMobV9zaXplKTsg
fQogCi0gICAgdm9pZCogbWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1lbW9yeSgp
OyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS0+c2l6ZSgpOyB9
Ci0gICAgUGFnZUNvdW50IHNpemVJblBhZ2VzKCkgY29uc3QgeyByZXR1cm4gUGFnZUNvdW50Ojpm
cm9tQnl0ZXMoc2l6ZSgpKTsgfQotICAgIHNpemVfdCBib3VuZHNDaGVja2luZ1NpemUoKSBjb25z
dCB7IHJldHVybiBtX2hhbmRsZS0+bWFwcGVkQ2FwYWNpdHkoKTsgfQotICAgIFBhZ2VDb3VudCBp
bml0aWFsKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPmluaXRpYWwoKTsgfQotICAgIFBhZ2VD
b3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUtPm1heGltdW0oKTsgfQotICAg
IE1lbW9yeUhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KKyAgICBQ
YWdlQ291bnQgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbDsgfQorICAgIFBhZ2VD
b3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CiAKLSAgICBNZW1vcnlT
aGFyaW5nTW9kZSBzaGFyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLT5zaGFyaW5n
TW9kZSgpOyB9Ci0gICAgTWVtb3J5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUt
Pm1vZGUoKTsgfQorICAgIE1lbW9yeU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fQogCiAgICAgZW51bSBjbGFzcyBHcm93RmFpbFJlYXNvbiB7CiAgICAgICAgIEludmFsaWREZWx0
YSwKQEAgLTEzMCwxNiArODksMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjaGVjaygpIHsgIEFT
U0VSVCghZGVsZXRpb25IYXNCZWd1bigpKTsgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1faGFuZGxlKTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoTWVtb3J5LCBtX21lbW9yeSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnksIG1fc2l6ZSk7IH0KIAog
cHJpdmF0ZToKICAgICBNZW1vcnkoKTsKLSAgICBNZW1vcnkoUmVmPE1lbW9yeUhhbmRsZT4mJiwg
V1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3Vy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xh
aW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdl
Q291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOwotICAgIE1lbW9yeShQYWdlQ291bnQgaW5p
dGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYXJpbmdNb2RlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RG
OjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jv
d1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgTWVtb3J5KHZvaWQqIG1lbW9yeSwgUGFnZUNvdW50IGlu
aXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIE1lbW9yeU1v
ZGUsIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJl
c3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9S
ZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwg
UGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBNZW1vcnkoUGFnZUNvdW50
IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJl
c3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1Ry
eVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFj
ayk7CiAKLSAgICBFeHBlY3RlZDxQYWdlQ291bnQsIEdyb3dGYWlsUmVhc29uPiBncm93U2hhcmVk
KFBhZ2VDb3VudCk7Ci0KLSAgICBSZWY8TWVtb3J5SGFuZGxlPiBtX2hhbmRsZTsKKyAgICB1c2lu
ZyBDYWdlZE1lbW9yeSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0Nh
Z2VkUHRyPjsKKyAgICBDYWdlZE1lbW9yeSBtX21lbW9yeTsKKyAgICBzaXplX3QgbV9zaXplIHsg
MCB9OworICAgIFBhZ2VDb3VudCBtX2luaXRpYWw7CisgICAgUGFnZUNvdW50IG1fbWF4aW11bTsK
KyAgICBzaXplX3QgbV9tYXBwZWRDYXBhY2l0eSB7IDAgfTsKKyAgICBNZW1vcnlNb2RlIG1fbW9k
ZSB7IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nIH07CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lk
KE5vdGlmeVByZXNzdXJlKT4gbV9ub3RpZnlNZW1vcnlQcmVzc3VyZTsKICAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+IG1fc3luY1RyeVRvUmVjbGFpbU1lbW9yeTsKICAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4g
bV9ncm93U3VjY2Vzc0NhbGxiYWNrOwpAQCAtMTU1LDcgKzExOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBNZW1vcnkgewogcHVibGljOgogICAgIHN0YXRpYyBz
aXplX3QgbWF4RmFzdE1lbW9yeUNvdW50KCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBib29s
IGFkZHJlc3NJc0luR3Jvd2FibGVPckZhc3RNZW1vcnkodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgc3RhdGljIGJvb2wgYWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KHZvaWQqKSB7IHJl
dHVybiBmYWxzZTsgfQogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCmlu
ZGV4IGYyYzZmYTUwODk4OGMwYzQ5MDgwMzcxODMyMTY4NzFlODU0MGNmZTEuLjZiNGMyZDFmZDcz
ODRkN2RjYTMwMzE4ZDcyYzFmNTYxMTlmNWY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcApAQCAtNDIsMTkgKzQyLDE5
IEBAIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKQog
ICAgICAgICBpZiAoIUNvbnRleHQ6OnVzZUZhc3RUTFMoKSkKICAgICAgICAgICAgICsrbnVtYmVy
T2ZQaW5uZWRSZWdpc3RlcnM7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciA9IEdQ
UkluZm86OnJlZ0NTMzsKLSAgICAgICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
ID0gR1BSSW5mbzo6cmVnQ1M0OworICAgICAgICBHUFJSZWcgc2l6ZVJlZ2lzdGVyID0gR1BSSW5m
bzo6cmVnQ1M0OwogICAgICAgICBHUFJSZWcgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIgPSBJ
bnZhbGlkR1BSUmVnOwogICAgICAgICBpZiAoIUNvbnRleHQ6OnVzZUZhc3RUTFMoKSkKICAgICAg
ICAgICAgIHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyID0gR1BSSW5mbzo6cmVnQ1MwOwogCi0g
ICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIsIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRl
cik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3Qoc2l6ZVJlZ2lz
dGVyLCBiYXNlTWVtb3J5UG9pbnRlciwgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIpOwogICAg
IH0pOwogCiAgICAgcmV0dXJuIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5nZXQoKTsKIH0KIAot
UGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oR1BSUmVnIGJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29u
dGV4dEluc3RhbmNlUG9pbnRlcikKLSAgICA6IGJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKGJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKQorUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdp
c3RlckluZm8oR1BSUmVnIHNpemVSZWdpc3RlciwgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyLCBH
UFJSZWcgd2FzbUNvbnRleHRJbnN0YW5jZVBvaW50ZXIpCisgICAgOiBzaXplUmVnaXN0ZXIoc2l6
ZVJlZ2lzdGVyKQogICAgICwgYmFzZU1lbW9yeVBvaW50ZXIoYmFzZU1lbW9yeVBvaW50ZXIpCiAg
ICAgLCB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcih3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRl
cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJ
bmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmgKaW5kZXggMjNhODY1MzBiYWUxMGZkZjdlMGQ0MmUzNWFiOTA3N2JiNzNkZjY1Zi4u
NGI4ZWY4ZThiYzdhYzdlZmM5YTc5OTQ5NGUyNjg5MWZhOGRkNjI5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKQEAgLTM5LDcg
KzM5LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIHN0cnVjdCBQaW5u
ZWRTaXplUmVnaXN0ZXJJbmZvIHsKLSAgICBHUFJSZWcgYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXI7CisgICAgR1BSUmVnIHNpemVSZWdpc3RlcjsKICAgICB1bnNpZ25lZCBzaXplT2Zmc2V0Owog
fTsKIApAQCAtNTYsMTEgKzU2LDExIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHdhc21Db250ZXh0
SW5zdGFuY2VQb2ludGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICByZXN1bHQuc2V0
KHdhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKTsKICAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5
TW9kZTo6U2lnbmFsaW5nKQotICAgICAgICAgICAgcmVzdWx0LnNldChib3VuZHNDaGVja2luZ1Np
emVSZWdpc3Rlcik7CisgICAgICAgICAgICByZXN1bHQuc2V0KHNpemVSZWdpc3Rlcik7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgR1BSUmVnIGJvdW5kc0NoZWNraW5nU2l6
ZVJlZ2lzdGVyOworICAgIEdQUlJlZyBzaXplUmVnaXN0ZXI7CiAgICAgR1BSUmVnIGJhc2VNZW1v
cnlQb2ludGVyOwogICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5TW9kZS5jcHAKaW5kZXggOWFk
OGY4MGI2YWEyMmJmZjAzMmJkZDQ2ZDE3ODZlZmNkZWYzY2M0Mi4uYjFiYzk4NWRkNzZiYmZmYjVk
MmJiNWEzZDEwOGMwNjdhNDczNzcyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeU1vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlNb2RlLmNwcApAQCAtNDIsMTYgKzQyLDYgQEAgY29uc3QgY2hhciogbWFrZVN0
cmluZyhNZW1vcnlNb2RlIG1vZGUpCiAgICAgcmV0dXJuICIiOwogfQogCi1jb25zdCBjaGFyKiBt
YWtlU3RyaW5nKE1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKQotewotICAgIHN3aXRjaCAo
c2hhcmluZ01vZGUpIHsKLSAgICBjYXNlIE1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0OiByZXR1
cm4gIkRlZmF1bHQiOwotICAgIGNhc2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogcmV0dXJu
ICJTaGFyZWQiOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAiIjsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnlNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVt
b3J5TW9kZS5oCmluZGV4IDUxYjIxMzM2Yzg5NDZiZGViODdjZjEzOTVhZDk5NzUzMTM1MTU4Mjgu
LmMwMzg3NDZkNjFkNDJhOTUzY2NmNGI1ZDBmYjIwNzVlOTI2NTQxZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlNb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeU1vZGUuaApAQCAtNDAsMTMgKzQwLDYgQEAgZW51
bSBjbGFzcyBNZW1vcnlNb2RlIDogdWludDhfdCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBO
dW1iZXJPZk1lbW9yeU1vZGVzID0gMjsKIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG1h
a2VTdHJpbmcoTWVtb3J5TW9kZSk7CiAKLWVudW0gY2xhc3MgTWVtb3J5U2hhcmluZ01vZGUgOiB1
aW50OF90IHsKLSAgICBEZWZhdWx0LAotICAgIFNoYXJlZCwKLX07Ci0KLUpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5U2hhcmluZ01vZGUpOwotCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4IGJlOTQ4NzRhNWE0
YjQ1N2QyMzJlZmQ4OGQ3NzlkMWJiM2Q5YjNmZDEuLmQ4ZDE1MjE0ZDQwZjBhODVjMzFmMmEyYjI5
MmY4MzVkM2YzNjlkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2Fz
bS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlv
bj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAogCiAgICAg
aWYgKCEhaW5mby5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRS
ZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hl
Y2tpbmdTaXplID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1sw
XTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24o
KS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOwogCiAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0
VExTKCkpCiAgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoYmFzZU1lbW9y
eSk7CkBAIC0yMjksMTUgKzIyOSwxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlv
bj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAogICAgICAg
ICBHUFJSZWcgY3VycmVudEluc3RhbmNlR1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gYmFz
ZU1lbW9yeSA6IHdhc21Db250ZXh0SW5zdGFuY2VHUFI7CiAgICAgICAgIGlmIChpc0FSTTY0RSgp
KSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcp
Ci0gICAgICAgICAgICAgICAgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gcGlubmVkUmVn
cy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcjsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tp
bmdTaXplKTsKKyAgICAgICAgICAgICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVkUmVncy5zaXpl
UmVnaXN0ZXI7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlT
aXplKCkpLCBzY3JhdGNoT3JTaXplKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChtb2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNt
OjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJl
Z3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
KTsKICAgICAgICAgfQogCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9y
eSgpKSwgYmFzZU1lbW9yeSk7Ci0gICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUsIHNj
cmF0Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CisgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JTaXplLCBzY3JhdGNo
T3JTaXplKTsKICAgICB9CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJl
YWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IGU0OWZjNjkyNWE5
OTVlNWUwYWY1OWJlZjNlNjAyMGZiZDQwM2JhMGEuLjY2OTYxYzIzMmE0ZWE0ZTQ3NGY2NzczOTMy
MzJjZDFlYTJlYzRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjp0cnlDcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3Nl
bWJseU1lbW9yeTo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVt
b3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5t
ZW1vcnkuaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLCBXYXNt
OjpNZW1vcnlTaGFyaW5nTW9kZTo6RGVmYXVsdCwKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpN
ZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9u
Lm1lbW9yeS5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCiAg
ICAgICAgICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0u
aGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAg
ICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29s
bGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZt
LCBqc01lbW9yeV0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBv
bGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdy
b3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1v
cnkuY3BwCmluZGV4IGY3YWM2NDQ5ODIxYmYxMDdhMTRmNzQ4ZDAxMmQxZjI5YzdiNzNlOGQuLmRm
YjAyNzAzMTYzMmUwM2JlM2YzOWI1OGY5OGIzNmU4MmY3MjYyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJy
YXlCdWZmZXIuaCIKLSNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNzMsMzQgKzcyLDE3IEBAIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNz
ZW1ibHlNZW1vcnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSlNBcnJh
eUJ1ZmZlciogSlNXZWJBc3NlbWJseU1lbW9yeTo6YnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCitKU0FycmF5QnVmZmVyKiBKU1dlYkFzc2VtYmx5TWVtb3J5OjpidWZmZXIoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIGF1dG8qIHdyYXBwZXIgPSBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7Ci0gICAg
aWYgKHdyYXBwZXIpIHsKLSAgICAgICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdh
c206Ok1lbW9yeVNoYXJpbmdNb2RlOjpEZWZhdWx0KQotICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CisgICAgaWYgKG1fYnVmZmVyV3JhcHBlcikKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyV3Jh
cHBlci5nZXQoKTsKIAotICAgICAgICBBU1NFUlQobV9tZW1vcnktPnNoYXJpbmdNb2RlKCkgPT0g
V2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCk7Ci0gICAgICAgIC8vIElmIFNoYXJlZEFy
cmF5QnVmZmVyJ3MgdW5kZXJseWluZyBtZW1vcnkgaXMgbm90IGdyb3duLCB3ZSBjb250aW51ZSB1
c2luZyBjYWNoZWQgd3JhcHBlci4KLSAgICAgICAgaWYgKHdyYXBwZXItPmltcGwoKS0+Ynl0ZUxl
bmd0aCgpID09IG1lbW9yeSgpLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwot
ICAgIH0KLQotICAgIFJlZjxXYXNtOjpNZW1vcnlIYW5kbGU+IHByb3RlY3RlZEhhbmRsZSA9IG1f
bWVtb3J5LT5oYW5kbGUoKTsKLSAgICBhdXRvIGRlc3RydWN0b3IgPSBjcmVhdGVTaGFyZWRUYXNr
PHZvaWQodm9pZCopPihbcHJvdGVjdGVkSGFuZGxlID0gV1RGTW92ZShwcm90ZWN0ZWRIYW5kbGUp
XSAodm9pZCopIHsgfSk7CisgICAgLy8gV2UgY2FuJ3QgdXNlIGEgcmVmIGhlcmUgc2luY2UgaXQg
ZG9lc24ndCBoYXZlIGEgY29weSBjb25zdHJ1Y3Rvci4uLgorICAgIFJlZjxXYXNtOjpNZW1vcnk+
IHByb3RlY3RlZE1lbW9yeSA9IG1fbWVtb3J5LmdldCgpOworICAgIGF1dG8gZGVzdHJ1Y3RvciA9
IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCh2b2lkKik+KFtwcm90ZWN0ZWRNZW1vcnkgPSBXVEZNb3Zl
KHByb3RlY3RlZE1lbW9yeSldICh2b2lkKikgeyB9KTsKICAgICBtX2J1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGVGcm9tQnl0ZXMobWVtb3J5KCkubWVtb3J5KCksIG1lbW9yeSgpLnNpemUoKSwg
V1RGTW92ZShkZXN0cnVjdG9yKSk7CiAgICAgbV9idWZmZXItPm1ha2VXYXNtTWVtb3J5KCk7Ci0g
ICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9yeVNoYXJpbmdNb2Rl
OjpTaGFyZWQpCi0gICAgICAgIG1fYnVmZmVyLT5tYWtlU2hhcmVkKCk7Ci0gICAgYXV0byogYXJy
YXlCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUobV9idWZmZXItPnNoYXJpbmdNb2RlKCkpLCBtX2J1ZmZlci5nZXQoKSk7
Ci0gICAgaWYgKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdhc206Ok1lbW9yeVNoYXJpbmdN
b2RlOjpTaGFyZWQpIHsKLSAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZ2xvYmFsT2Jq
ZWN0LCBhcnJheUJ1ZmZlcik7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKLSAgICB9Ci0gICAgbV9idWZmZXJXcmFwcGVyLnNldCh2bSwgdGhpcywgYXJyYXlC
dWZmZXIpOworICAgIG1fYnVmZmVyV3JhcHBlci5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgbV9idWZmZXIuZ2V0KCkpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChtX2J1ZmZlcldyYXBwZXIpOwogICAgIHJldHVybiBtX2J1ZmZlcldyYXBwZXIuZ2V0KCk7
CiB9CkBAIC0xMzUsOCArMTE3LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpncm93U3Vj
Y2Vzc0NhbGxiYWNrKFZNJiB2bSwgV2FzbTo6UGFnZUNvdW50IG9sZFBhZ2VDb3UKIHsKICAgICAv
LyBXZSBuZWVkIHRvIGNsZWFyIG91dCB0aGUgb2xkIGFycmF5IGJ1ZmZlciBiZWNhdXNlIGl0IG1p
Z2h0IG5vdyBiZSBwb2ludGluZyB0byBzdGFsZSBtZW1vcnkuCiAgICAgaWYgKG1fYnVmZmVyKSB7
Ci0gICAgICAgIGlmIChtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNtOjpNZW1vcnlTaGFy
aW5nTW9kZTo6RGVmYXVsdCkKLSAgICAgICAgICAgIG1fYnVmZmVyLT5kZXRhY2godm0pOworICAg
ICAgICBtX2J1ZmZlci0+ZGV0YWNoKHZtKTsKICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwog
ICAgICAgICBtX2J1ZmZlcldyYXBwZXIuY2xlYXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKaW5kZXggZTQ5NDkw
MzY5MmU1OTU0MWNmYTc5MDMzNzZhNDUzMmYwNTYzYTQ0OS4uYWI5YzQ3NDZiM2NmYTI1MGQ1MWVi
Y2RmNDJiM2E1ZmRiOWFiNTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksMTYgKzQ5LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLndlYkFzc2VtYmx5TWVtb3J5U3BhY2U8bW9kZT4oKTsK
ICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNXZWJBc3NlbWJseU1lbW9y
eSogdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgSlNXZWJBc3NlbWJseU1lbW9yeSogdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBT
dHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRvcHQoUmVmPFdhc206Ok1lbW9yeT4mJik7Cisg
ICAgdm9pZCBhZG9wdChSZWY8V2FzbTo6TWVtb3J5PiYmKTsKICAgICBXYXNtOjpNZW1vcnkmIG1l
bW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5LmdldCgpOyB9Ci0gICAgSlNBcnJheUJ1ZmZlciogYnVm
ZmVyKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqKTsKICAgICBXYXNtOjpQYWdlQ291bnQgZ3JvdyhWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgdWludDMyX3QgZGVsdGEpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ3Jv
d1N1Y2Nlc3NDYWxsYmFjayhWTSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206
OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpOworICAgIHZvaWQgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayhW
TSYsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdl
Q291bnQpOwogCiBwcml2YXRlOgogICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mLCBTdHJ1Y3R1
cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHAKaW5kZXggNzhkYTZkYzNmNGVhZWFkM2M4MDBhZTQyZWMwZTY4ODE3NjVl
NDZlNS4uOTkyNzZjMmQ5ZTYyN2FkMjE1M2RkZmNhNDljNzc4ZTBjNzljODNjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAKQEAgLTM1NywyMCArMzU3LDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAKICAgICBp
ZiAoISFtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1v
cnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICBHUFJSZWcgc2NyYXRj
aE9yQm91bmRzQ2hlY2tpbmdTaXplID0gc3RhY2tMaW1pdEdQUjsKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2hPclNpemUgPSBzdGFja0xpbWl0R1BSOwogICAgICAgICBhdXRvIG1vZGUgPSBpbnN0YW5j
ZSgpLT5tZW1vcnlNb2RlKCk7CiAKICAgICAgICAgaWYgKGlzQVJNNjRFKCkpIHsKICAgICAgICAg
ICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAg
ICAgICBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0No
ZWNraW5nU2l6ZSgpKSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKKyAgICAgICAgICAg
ICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5z
dGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgc2NyYXRjaE9yU2l6ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpT
aWduYWxpbmcpCi0gICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNr
aW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7CisgICAg
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXpl
LCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSwgc2Ny
YXRjaE9yU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gV2UgdXNlIHRoaXMgY2FsbGVlIHRvIGluZGlj
YXRlIGhvdyB0byB1bndpbmQgcGFzdCB0aGVzZSB0eXBlcyBvZiBmcmFtZXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3IuY3BwCmluZGV4IDI1NmViMGZmYzM0YWI3MzViYzUzMjg3Yzc1ZjZiMDdlYzZi
OGY3Y2UuLjUwY2NjYTI0MWZkNWJlOTc5NTZkZjA4OGI5NGE4ZDhhYjBmZjBkMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC01Niw2ICs1Niw4IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmIChjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSAhPSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIldlYkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50
Il9zKSkpOwogCiAgICAgSlNPYmplY3QqIG1lbW9yeURlc2NyaXB0b3I7CiAgICAgewpAQCAtMTAw
LDIzICsxMDIsMTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlNZW1vcnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgfQogICAgIH0K
IAotICAgIFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5
U2hhcmluZ01vZGU6OkRlZmF1bHQ7Ci0gICAgSlNWYWx1ZSBzaGFyZWRWYWx1ZSA9IG1lbW9yeURl
c2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
aGFyZWQiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBib29sIHNoYXJlZCA9IHNoYXJlZFZhbHVlLnRvQm9vbGVhbihnbG9iYWxP
YmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaWYgKHNoYXJlZCkgewotICAgICAgICBpZiAoIW1heGltdW1QYWdlQ291bnQp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsICInbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRlZmluZWQgaWYgJ3NoYXJlZCcg
aXMgdHJ1ZSJfcyk7Ci0gICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIo
KSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIlNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgYW5kIFNoYXJlZEFycmF5QnVmZmVy
IGFyZSBub3QgZW5hYmxlZCJfcyk7Ci0gICAgICAgIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5
U2hhcmluZ01vZGU6OlNoYXJlZDsKLSAgICB9Ci0KICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2Vi
QXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3Qt
PndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSZWZQdHI8V2FzbTo6TWVtb3J5
PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNvdW50LCBtYXhp
bXVtUGFnZUNvdW50LCBzaGFyaW5nTW9kZSwKKyAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1v
cnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFn
ZUNvdW50LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2
bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICBb
JnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bSwganNNZW1vcnldIChX
YXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50LCBX
YXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5LT5ncm93U3VjY2Vzc0NhbGxi
YWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuY3BwCmluZGV4IDdlMjA4YzMxMDFjMjM3MTYzMjI5Y2M1NzkyN2FlYTZiOGYwYjI1ZTAuLmFi
NGEyYmZlZWVmYTY4NDE3YzM4Y2MxOTU0ZTVlOTdmNjJmNjAwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2IKIAogICAg
IEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShnbG9iYWxPYmplY3QsIHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsgCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0KSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDlkZDJlN2JmNTIxODdmYjM0NWVlZjBlN2Y0
ZmEyNjM0NWIyZWE0NjAuLjMxYzIxZTNjNDM3MDJjOTlmYjZmODA5NTRkMGM1ZTQ3N2Q3MGRmN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU2Niw5ICs1NjYsOCBAQCBKU1ZhbHVlIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIH07CiAKICAgICBhdXRvIGZvckVhY2hTZWdtZW50ID0gWyZdIChhdXRvIGZuKSB7Ci0gICAg
ICAgIGF1dG8gd2FzbU1lbW9yeSA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkubWVtb3J5KCk7Ci0g
ICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHdhc21N
ZW1vcnktPm1lbW9yeSgpKTsKLSAgICAgICAgdWludDY0X3Qgc2l6ZUluQnl0ZXMgPSB3YXNtTWVt
b3J5LT5zaXplKCk7CisgICAgICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVtb3J5KCkpOworICAgICAg
ICB1aW50NjRfdCBzaXplSW5CeXRlcyA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuY2FjaGVkTWVt
b3J5U2l6ZSgpOwogCiAgICAgICAgIGZvciAoY29uc3QgV2FzbTo6U2VnbWVudDo6UHRyJiBzZWdt
ZW50IDogZGF0YSkgewogICAgICAgICAgICAgdWludDMyX3Qgb2Zmc2V0ID0gc2VnbWVudC0+b2Zm
c2V0LmlzR2xvYmFsSW1wb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDcwMDFiZWJk
OTY0Y2VlYTI3OTEyZGEyZGRiY2JjNDgwOWQ0NThmOTQuLmE4ZDEzM2JjNDk1N2VjZTRmNzYxMTFm
Y2EzYTliYWI2NzNmZWY5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtNjkwLDcgKzY5
MCw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgSEFWRShNQUNISU5F
X0NPTlRFWFQpCi0jZGVmaW5lIEVOQUJMRV9XRUJBU1NFTUJMWV9TSUdOQUxJTkdfTUVNT1JZIDEK
KyNkZWZpbmUgRU5BQkxFX1dFQkFTU0VNQkxZX0ZBU1RfTUVNT1JZIDEKICNlbmRpZgogCiAvKiBD
b3VudHMgdXNlcyBvZiB3cml0ZSBiYXJyaWVycyB1c2luZyBzYW1wbGluZyBjb3VudGVycy4gQmUg
c3VyZSB0byBhbHNvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhY2Q0OWI2OWRhYzUyM2ZmNTk2MTM1
NjViYmYyNmIwN2RlZDZiMjA3Li5mMmMzYjY0ZTY0ZTE3OTI4ODRlNzg3MWExMDc5MWQ4N2E2YWM4
ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE1NzYsNyArMTU3Niw2IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaAogICAgIHdvcmtlcnMv
V29ya2VyVGhyZWFkLmgKLSAgICB3b3JrZXJzL1dvcmtlclRocmVhZFR5cGUuaAogICAgIHdvcmtl
cnMvV29ya2VyVHlwZS5oCiAKICAgICB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCmluZGV4IGE2MWNiMDRlNGRi
OTU1Nzk1MjU5NDM4NzFhZWZhNDQzNjE1ZTM1YzguLjlhYzg4ZWJmZDc3NzhiZDdkMWQzMTJmYzc2
MDhmMWVjOWFhMTFkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0aWFsaXpl
Vk0oKQogICAgIEFTU0VSVCghbV9nbG9iYWxPYmplY3QpOwogICAgIG1fdm0gPSBKU0M6OlZNOjpj
cmVhdGUoKTsKICAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsKLSAgICBKU1ZNQ2xpZW50
RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIFdvcmtlclRocmVhZFR5cGU6Oldvcmts
ZXQpOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSk7CiAK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7CiAgICAgbV9nbG9iYWxP
YmplY3Quc2V0KCptX3ZtLCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q6OmNyZWF0ZSgq
bV92bSwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1f
dm0sIEpTQzo6anNOdWxsKCkpLCBub3JtYWxXb3JsZCgqbV92bSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiOGM2N2EwMTBi
NWRmYmVkNDFhMTM3N2I1YjY0N2VlYzQ4YTllNWQ3Li5lM2Y2MTU1Mzg3OWE2NmIyMDczNDdiMTM0
ODhlZTIxMGE3MWNiZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDI2LDcgKzUwMjYsNiBAQAogCQlFMzk2MjhDMTIzOTU3
NDMxMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1v
dGlvbk1hbmFnZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0E3NzY2NzFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVy
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2
NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkw
RDggLyogRE9NSklUSURMVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFM0FGRDdB
RDI1NUY1MEVCMDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBRkQ3QUIyNTVGNTBEQzAwRTVFMzBFIC8q
IFdvcmtlclRocmVhZFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0IyRjBFRDFEN0Y0Q0EzMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3
MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQjJGMEVFMUQ3RjRDQTkwMEIwQzlEMSAv
KiBMb2FkYWJsZVNjcmlwdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNCMkYwRTgxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNCMkYwRjAxRDdGNENCNTAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTQxRDdG
MzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjA3Miw3ICsxNjA3MSw2IEBACiAJ
CUUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNBRTZDRDEyMjUyRjI3MDAwQzcwQjUwIC8qIEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbGxEZXNj
ZW5kYW50c0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FG
QTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZURPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUzQUZEN0FCMjU1RjUwREMwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRocmVhZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNs
YXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFE
N0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0IyRjBFNzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3Jp
cHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVTY3JpcHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MDQ5LDcgKzE5MDQ3LDYgQEAKIAkJCQky
RUE3NjgwMzBGRTcxMjY0MDBBQjlDOEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggKi8s
CiAJCQkJMkU0MzQ2NDIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJ
CQkJMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAotCQkJCUUz
QUZEN0FCMjU1RjUwREMwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8sCiAJCQkJNTFG
MTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLywKIAkJCQk1MUYxNzRGQTFG
MzU4OEQ3MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5pZGwgKi8sCiAJCQkpOwpAQCAtMzUxOTgsNyAr
MzUxOTUsNiBAQAogCQkJCTJFNDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyRDE0RkEwOUQ1MDA3
NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICov
LAotCQkJCUUzQUZEN0FEMjU1RjUwRUIwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTRBMEM2ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdl
RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBD
NzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJERUEzMjAyMTdFQzU1
RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lE
TFR5cGVzLmgKaW5kZXggYjEwNWEyNGJjNWEwNWRmYmZlZDY2YTgxNWFjYzMxZTNmOWJmYzEzNi4u
N2U4NTU5MDVmOTA5Nzk3N2IzMzVkMzQwNTc2MWQyYWUxNzY3NzYxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9JRExUeXBlcy5oCkBAIC0xNTEsMTAgKzE1MSw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3IgOiBJRExTdHJpbmc8
QXRvCiAgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBJRExBbGxvd1NoYXJlZEFkYXB0b3IgOiBUIHsKLSAgICB1c2luZyBJbm5lclR5cGUg
PSBUOwotfTsKLQogc3RydWN0IElETE9iamVjdCA6IElETFR5cGU8SlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4+IHsKICAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0PjsKIApAQCAtMzI3LDE3ICszMjMsNCBAQCBzdHJ1Y3QgSXNJRExGbG9hdGluZ1BvaW50
IDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc0Jhc2VPZlRlbQog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJc0lETFR5cGVkQXJyYXkgOiBwdWJsaWMgc3Rk
OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMVHlwZWRB
cnJheSwgVD46OnZhbHVlPiB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXNJ
RExBcnJheUJ1ZmZlciA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6
aXNfYmFzZV9vZjxJRExBcnJheUJ1ZmZlciwgVD46OnZhbHVlPiB7IH07Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXNJRExBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgc3RkOjppbnRl
Z3JhbF9jb25zdGFudDxib29sLCBzdGQ6OmlzX2Jhc2Vfb2Y8SURMQXJyYXlCdWZmZXJWaWV3LCBU
Pjo6dmFsdWU+IHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0lETEFycmF5
QnVmZmVyQWxsb3dTaGFyZWQgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBz
dGQ6OmlzX2Jhc2Vfb2Y8SURMQWxsb3dTaGFyZWRBZGFwdG9yPElETEFycmF5QnVmZmVyPiwgVD46
OnZhbHVlPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXNJRExBcnJheUJ1
ZmZlclZpZXdBbGxvd1NoYXJlZCA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2ws
IHN0ZDo6aXNfYmFzZV9vZjxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURMQXJyYXlCdWZmZXJWaWV3
PiwgVD46OnZhbHVlPiB7IH07Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGQzNWJlZDMwZmY0NWRhYmQ2ZDY3MzI0
ZDM0YWI0N2ZjM2Y3Y2RkYjguLjljZTYzYTBhN2ZjNmExZDYyMzc1OTA1ODk1NTc2MDAyMjQ4MDA4
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTg4LDcgKzg4
LDcgQEAgSlNDOjpWTSYgY29tbW9uVk1TbG93KCkKIAogICAgIHZtLnNldEdsb2JhbENvbnN0UmVk
ZWNsYXJhdGlvblNob3VsZFRocm93KGdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93
KCkpOwogCi0gICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZCgmdm0sIFdvcmtlclRo
cmVhZFR5cGU6Ok1haW4pOworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoJnZt
KTsKIAogICAgIHJldHVybiB2bTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgKaW5kZXggYjZlNDA4MzgzM2QzN2Q0MjBi
YjExMGU3MTlhZWFmM2E0MjA3M2M0NC4uODlhNzZiNDVkN2QzZDBkNTJlNTA0YmQ3NTAwZTk4OTE2
ZGY0OGFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0QnVmZmVyU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0QnVmZmVyU291cmNlLmgKQEAgLTEwOSw4ICsxMDksNyBAQCBpbmxpbmUgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiB0b1Vuc2hhcmVkQXJyYXlCdWZmZXJWaWV3KEpTQzo6Vk0mIHZt
LCBKU0M6OgogCiBuYW1lc3BhY2UgRGV0YWlsIHsKIAotZW51bSBjbGFzcyBCdWZmZXJTb3VyY2VD
b252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGUgeyBBbGxvdywgRGlzYWxsb3cgfTsKLXRlbXBsYXRlPHR5
cGVuYW1lIEJ1ZmZlclNvdXJjZVR5cGUsIEJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVk
TW9kZSBtb2RlPgordGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyU291cmNlVHlwZT4KIHN0cnVjdCBC
dWZmZXJTb3VyY2VDb252ZXJ0ZXIgewogICAgIHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUg
Q29udmVydGVyPEJ1ZmZlclNvdXJjZVR5cGU+OjpXcmFwcGVyVHlwZTsKICAgICB1c2luZyBSZXR1
cm5UeXBlID0gdHlwZW5hbWUgQ29udmVydGVyPEJ1ZmZlclNvdXJjZVR5cGU+OjpSZXR1cm5UeXBl
OwpAQCAtMTIwLDExICsxMTksNyBAQCBzdHJ1Y3QgQnVmZmVyU291cmNlQ29udmVydGVyIHsKICAg
ICB7CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAg
UmV0dXJuVHlwZSBvYmplY3QgeyB9OwotICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gQnVm
ZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpBbGxvdykKLSAgICAgICAgICAgIG9i
amVjdCA9IFdyYXBwZXJUeXBlOjp0b1dyYXBwZWRBbGxvd1NoYXJlZCh2bSwgdmFsdWUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBvYmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZt
LCB2YWx1ZSk7CisgICAgICAgIFJldHVyblR5cGUgb2JqZWN0ID0gV3JhcHBlclR5cGU6OnRvV3Jh
cHBlZCh2bSwgdmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9iamVjdCkpCiAgICAgICAg
ICAgICBleGNlcHRpb25UaHJvd2VyKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKQEAgLTE0MCw3ICsxMzUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBD
b252ZXJ0ZXI8SURMQXJyYXlCdWZmZXI+IDogRGVmYXVsdENvbnZlcnRlcjxJRExBcnJheUJ1ZmZl
cj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhj
ZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0
aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAg
ewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlC
dWZmZXIsIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNh
bGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxF
eGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRh
aWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExBcnJheUJ1ZmZlcj46OmNvbnZlcnQobGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNl
cHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMTYyLDcgKzE1Nyw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjxJRExEYXRhVmlldz4gOiBEZWZhdWx0Q29udmVydGVyPElETERh
dGFWaWV3PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1
bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBF
eGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExE
YXRhVmlldywgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6OkRp
c2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJk
PEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJuIERl
dGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETERhdGFWaWV3Pjo6Y29udmVydChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2Vw
dGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0xODQsNyArMTc5LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPElETEludDhBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETElu
dDhBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZh
dWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
RXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkp
CiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURM
SW50OEFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6
RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndh
cmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4g
RGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50OEFycmF5Pjo6Y29udmVydChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4
Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0yMDYsNyArMjAxLDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEludDE2QXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJ
RExJbnQxNkFycmF5PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9
IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93
ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRl
cjxJRExJbnQxNkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVk
TW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6
OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICBy
ZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMSW50MTZBcnJheT46OmNvbnZl
cnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJv
d2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAtMjI4LDcgKzIyMyw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExJbnQzMkFycmF5PiA6IERlZmF1bHRDb252
ZXJ0ZXI8SURMSW50MzJBcnJheT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRo
cm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBj
b252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRp
b25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VD
b252ZXJ0ZXI8SURMSW50MzJBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxv
d1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAg
ICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEludDMyQXJyYXk+
Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0
aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0KIH07CiAKQEAgLTI1MCw3ICsy
NDUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVWludDhBcnJheT4gOiBEZWZh
dWx0Q29udmVydGVyPElETFVpbnQ4QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNl
cHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVy
blR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0g
RXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVy
U291cmNlQ29udmVydGVyPElETFVpbnQ4QXJyYXksIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVy
dGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2Vy
KSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50
OEFycmF5Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJk
PEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0y
NzgsNyArMjczLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVpbnQxNkFycmF5
PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVWludDE2QXJyYXk+IHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3Rh
dGljIFJldHVyblR5cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25U
aHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFp
bDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQxNkFycmF5LCBEZXRhaWw6OkJ1ZmZlclNv
dXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+Ojpjb252ZXJ0KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0
aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXI8SURMVWludDE2QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBz
dGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAgIH0K
IH07CiAKQEAgLTMwMCw3ICsyOTUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURM
VWludDMyQXJyYXk+IDogRGVmYXVsdENvbnZlcnRlcjxJRExVaW50MzJBcnJheT4gewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dl
cj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYm
IGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAgICBy
ZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMVWludDMyQXJyYXksIERldGFp
bDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZl
cnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJv
d2VyPihleGNlcHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNv
dXJjZUNvbnZlcnRlcjxJRExVaW50MzJBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2Vy
KSk7CiAgICAgfQogfTsKIApAQCAtMzIyLDcgKzMxNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxJRExVaW50OENsYW1wZWRBcnJheT4gOiBEZWZhdWx0Q29udmVydGVyPElETFVpbnQ4
Q2xhCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNl
cHRpb25UaHJvd2VyPgogICAgIHN0YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRp
b25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExVaW50OENs
YW1wZWRBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXJBbGxvd1NoYXJlZE1vZGU6
OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3
YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKKyAgICAgICAgcmV0dXJu
IERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETFVpbnQ4Q2xhbXBlZEFycmF5Pjo6Y29u
dmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRo
cm93ZXI+KGV4Y2VwdGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC0zNDQsNyArMzM5LDcg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEZsb2F0MzJBcnJheT4gOiBEZWZhdWx0
Q29udmVydGVyPElETEZsb2F0MzJBcnJheT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRp
b25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CiAgICAgc3RhdGljIFJldHVyblR5
cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhj
ZXB0aW9uVGhyb3dlcigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291
cmNlQ29udmVydGVyPElETEZsb2F0MzJBcnJheSwgRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0
ZXJBbGxvd1NoYXJlZE1vZGU6OkRpc2FsbG93Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2VwdGlvblRocm93ZXIp
KTsKKyAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyPElETEZsb2F0
MzJBcnJheT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2Fy
ZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7CiAgICAgfQogfTsKIApAQCAt
MzY2LDcgKzM2MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExGbG9hdDY0QXJy
YXk+IDogRGVmYXVsdENvbnZlcnRlcjxJRExGbG9hdDY0QXJyYXk+CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgogICAgIHN0
YXRpYyBSZXR1cm5UeXBlIGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9u
VGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZXRh
aWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlcjxJRExGbG9hdDY0QXJyYXksIERldGFpbDo6QnVmZmVy
U291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRNb2RlOjpEaXNhbGxvdz46OmNvbnZlcnQobGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9yd2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNl
cHRpb25UaHJvd2VyKSk7CisgICAgICAgIHJldHVybiBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZl
cnRlcjxJRExGbG9hdDY0QXJyYXk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBzdGQ6OmZvcndhcmQ8RXhjZXB0aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOwogICAg
IH0KIH07CiAKQEAgLTM4OCw3ICszODMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8
SURMQXJyYXlCdWZmZXJWaWV3PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhy
b3dlcj4KICAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dl
ciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewotICAgICAg
ICByZXR1cm4gRGV0YWlsOjpCdWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3
LCBEZXRhaWw6OkJ1ZmZlclNvdXJjZUNvbnZlcnRlckFsbG93U2hhcmVkTW9kZTo6RGlzYWxsb3c+
Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBzdGQ6OmZvcndhcmQ8RXhjZXB0
aW9uVGhyb3dlcj4oZXhjZXB0aW9uVGhyb3dlcikpOworICAgICAgICByZXR1cm4gRGV0YWlsOjpC
dWZmZXJTb3VyY2VDb252ZXJ0ZXI8SURMQXJyYXlCdWZmZXJWaWV3Pjo6Y29udmVydChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RkOjpmb3J3YXJkPEV4Y2VwdGlvblRocm93ZXI+KGV4Y2Vw
dGlvblRocm93ZXIpKTsKICAgICB9CiB9OwogCkBAIC00MDMsMTcgKzM5OCw0IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEpTQ29udmVydGVyPElETEFycmF5QnVmZmVyVmlldz4gewogICAgIH0KIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQ29udmVydGVyPElETEFsbG93U2hhcmVkQWRh
cHRvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPFQ+IHsKLSAgICB1c2luZyBDb252ZXJ0ZXJUeXBl
ID0gQ29udmVydGVyPFQ+OwotICAgIHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgQ29udmVy
dGVyVHlwZTo6V3JhcHBlclR5cGU7Ci0gICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIENv
bnZlcnRlclR5cGU6OlJldHVyblR5cGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRp
b25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+Ci0gICAgc3RhdGljIFJldHVyblR5
cGUgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhj
ZXB0aW9uVGhyb3dlcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIERldGFpbDo6QnVmZmVyU291
cmNlQ29udmVydGVyPFQsIERldGFpbDo6QnVmZmVyU291cmNlQ29udmVydGVyQWxsb3dTaGFyZWRN
b2RlOjpBbGxvdz46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0ZDo6Zm9y
d2FyZDxFeGNlcHRpb25UaHJvd2VyPihleGNlcHRpb25UaHJvd2VyKSk7Ci0gICAgfQotfTsKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0VW5pb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydFVuaW9uLmgKaW5kZXggZjhjNzAxYmUxOTA2MGM0OWQ2N2E1ZjAwZmJmOWE2NzI4
NWVmZWZhMy4uMWY4MjQzM2Y5MmM3MWExMWFiZTc3ODY5OTE0MzZiN2I4M2Q1NWI0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC0yMjUs
OSArMjI1LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExV
bmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFUKICAgICAgICAgLy8gNy4gSWYgVHlw
ZShWKSBpcyBPYmplY3QgYW5kIFYgaGFzIGFuIFtbQXJyYXlCdWZmZXJEYXRhXV0gaW50ZXJuYWwg
c2xvdCwgdGhlbjoKICAgICAgICAgLy8gICAgIDEuIElmIHR5cGVzIGluY2x1ZGVzIEFycmF5QnVm
ZmVyLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgViB0byBBcnJheUJ1ZmZl
ci4KICAgICAgICAgLy8gICAgIDIuIElmIHR5cGVzIGluY2x1ZGVzIG9iamVjdCwgdGhlbiByZXR1
cm4gdGhlIElETCB2YWx1ZSB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgVi4KLSAg
ICAgICAgY29uc3RleHByIGJvb2wgaGFzQXJyYXlCdWZmZXJUeXBlID0gYnJpZ2FuZDo6YW55PFR5
cGVMaXN0LCBJc0lETEFycmF5QnVmZmVyPGJyaWdhbmQ6Ol8xPj46OnZhbHVlOworICAgICAgICBj
b25zdGV4cHIgYm9vbCBoYXNBcnJheUJ1ZmZlclR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3Qs
IHN0ZDo6aXNfc2FtZTxJRExBcnJheUJ1ZmZlciwgYnJpZ2FuZDo6XzE+Pjo6dmFsdWU7CiAgICAg
ICAgIGlmIChoYXNBcnJheUJ1ZmZlclR5cGUgfHwgaGFzT2JqZWN0VHlwZSkgewotICAgICAgICAg
ICAgYXV0byBhcnJheUJ1ZmZlciA9IChicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMQXJyYXlC
dWZmZXJBbGxvd1NoYXJlZDxicmlnYW5kOjpfMT4+Ojp2YWx1ZSkgPyBKU0M6OkpTQXJyYXlCdWZm
ZXI6OnRvV3JhcHBlZEFsbG93U2hhcmVkKHZtLCB2YWx1ZSkgOiBKU0M6OkpTQXJyYXlCdWZmZXI6
OnRvV3JhcHBlZCh2bSwgdmFsdWUpOworICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEpT
Qzo6SlNBcnJheUJ1ZmZlcjo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAo
YXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQXJyYXlCdWZmZXJUeXBlKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29uZGl0aW9uYWxSZXR1cm5lcjxSZXR1cm5UeXBl
LCBoYXNBcnJheUJ1ZmZlclR5cGU+OjpnZXQoV1RGTW92ZShhcnJheUJ1ZmZlcikpLnZhbHVlKCk7
CkBAIC0yMzUsOSArMjM1LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZl
cnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFUKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0ZXhwciBib29sIGhhc0FycmF5QnVmZmVyVmll
d1R5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMQXJyYXlCdWZmZXJWaWV3PGJyaWdh
bmQ6Ol8xPj46OnZhbHVlOworICAgICAgICBjb25zdGV4cHIgYm9vbCBoYXNBcnJheUJ1ZmZlclZp
ZXdUeXBlID0gYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBzdGQ6OmlzX3NhbWU8SURMQXJyYXlCdWZm
ZXJWaWV3LCBicmlnYW5kOjpfMT4+Ojp2YWx1ZTsKICAgICAgICAgaWYgKGhhc0FycmF5QnVmZmVy
Vmlld1R5cGUgfHwgaGFzT2JqZWN0VHlwZSkgewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZl
clZpZXcgPSAoYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEFycmF5QnVmZmVyVmlld0FsbG93
U2hhcmVkPGJyaWdhbmQ6Ol8xPj46OnZhbHVlKSA/IEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnRv
V3JhcHBlZEFsbG93U2hhcmVkKHZtLCB2YWx1ZSkgOiBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojp0
b1dyYXBwZWQodm0sIHZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0g
SlNDOjpKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKHZtLCB2YWx1ZSk7CiAgICAgICAgICAg
ICBpZiAoYXJyYXlCdWZmZXJWaWV3KSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0FycmF5QnVm
ZmVyVmlld1R5cGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb25kaXRpb25hbFJldHVy
bmVyPFJldHVyblR5cGUsIGhhc0FycmF5QnVmZmVyVmlld1R5cGU+OjpnZXQoV1RGTW92ZShhcnJh
eUJ1ZmZlclZpZXcpKS52YWx1ZSgpOwpAQCAtNDA1LDEzICs0MDUsNCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IHsKICAgICB9CiB9
OwogCi0vLyBCdWZmZXJTb3VyY2Ugc3BlY2lhbGl6YXRpb24uIEluIFdlYktpdCwgQnVmZmVyU291
cmNlIGlzIGRlZmluZWQgYXMgSURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1
ZmZlcj4gYXMgYSBoYWNrLCBhbmQgaXQgaXMgbm90IGNvbXBhdGlibGUgdG8KLS8vIGFubm90YXRp
b24gZGVzY3JpYmVkIGluIFdlYklETC4KLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExB
bGxvd1NoYXJlZEFkYXB0b3I8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1
ZmZlcj4+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJ
RExBcnJheUJ1ZmZlcj4+IHsKLSAgICBzdGF0aWMgYXV0byBjb252ZXJ0KEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgLT4gZGVjbHR5
cGUoYXV0bykKLSAgICB7Ci0gICAgICAgIHJldHVybiBDb252ZXJ0ZXI8SURMVW5pb248SURMQWxs
b3dTaGFyZWRBZGFwdG9yPElETEFycmF5QnVmZmVyVmlldz4sIElETEFsbG93U2hhcmVkQWRhcHRv
cjxJRExBcnJheUJ1ZmZlcj4+Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
Ci0gICAgfQotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggN2JiOGE2
ZDlkMzJjZmRkMDZhNTAzYWNmOTk5M2ZiMzIyZWVjNjliOC4uMmQ5OWJlNjQxM2MzMGMxNDA4ZjUz
NmJjMThhMjFlYzg0MWE5Nzc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03NSw3ICs3NSw2IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNTZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Nl
dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNUeXBlZEFycmF5cy5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTV2ViQXNzZW1ibHlNZW1vcnkuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5TW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oPgpAQCAtMTgzLDkgKzE4Miw2IEBAIGVudW0gU2VyaWFsaXphdGlv
blRhZyB7CiAjZW5kaWYKICAgICBCaWdJbnRUYWcgPSA0NywKICAgICBCaWdJbnRPYmplY3RUYWcg
PSA0OCwKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgV2FzbU1lbW9yeVRhZyA9IDQ5LAot
I2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM2MSw2ICszNTcsNyBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICog
ICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFy
cmF5QnVmZmVyCiAgKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0
YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZm
ZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVmZmVyVHJhbnNmZXJUYWcgPHZh
bHVlOnVpbnQzMl90PgogICogICAgfCBDcnlwdG9LZXlUYWcgPHdyYXBwZWRLZXlMZW5ndGg6dWlu
dDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3cmFwcGVkS2V5TGVuZ3RofT4KICAqICAgIHwgRE9NUG9pbnQK
ICAqICAgIHwgRE9NUmVjdApAQCAtMzcwLDcgKzM2Nyw2IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IFJUQ0NlcnRpZmlj
YXRlVGFnCiAgKiAgICB8IEltYWdlQml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50OF90PiA8bG9n
aWNhbFdpZHRoOmludDMyX3Q+IDxsb2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNvbHV0aW9uU2Nh
bGU6ZG91YmxlPiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4p
CiAgKiAgICB8IE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KLSAq
ICAgIHwgV2FzbU1lbW9yeVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgogICogSW5zaWRlIGNlcnRp
ZmljYXRlLCBkYXRhIGlzIHNlcmlhbGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAg
KgpAQCAtNDIzLDggKzQxOSw2IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4
Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKgogICogQXJyYXlCdWZmZXIgOi0KICAqICAgIEFycmF5
QnVmZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+Ci0gKiAg
ICBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KLSAqICAgIFNoYXJlZEFy
cmF5QnVmZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqCiAgKiBDcnlwdG9LZXlITUFDIDotCiAg
KiAgICA8a2V5U2l6ZTp1aW50MzJfdD4gPGtleURhdGE6Ynl0ZXtrZXlTaXplfT4gQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllclRhZyAvLyBBbGdvcml0aG0gdGFnIGlubmVyIGhhc2ggZnVuY3Rpb24u
CkBAIC01ODIsNyArNTc2LDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKLSAgICAgICAg
ICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2Vy
aWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFy
ZWRCdWZmZXJzKQogICAgIHsKQEAgLTU5Miw3ICs1ODUsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywKLSAgICAgICAg
ICAgIHdhc21NZW1vcnlIYW5kbGVzLAogI2VuZGlmCiAgICAgICAgICAgICBibG9iVVJMcywgb3V0
LCBjb250ZXh0LCBzaGFyZWRCdWZmZXJzKTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2Vy
aWFsaXplKHZhbHVlKTsKQEAgLTYyMyw3ICs2MTUsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9k
dWxlcywKLSAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRs
ZXMsCiAjZW5kaWYKICAgICAgICAgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWlu
dDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250
ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQogICAgICAgICA6IENsb25lQmFzZShsZXhpY2FsR2xv
YmFsT2JqZWN0KQpAQCAtNjM0LDcgKzYyNSw2IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9zaGFy
ZWRCdWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCi0gICAgICAgICwgbV93YXNtTWVtb3J5SGFu
ZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykKICNlbmRpZgogICAgIHsKICAgICAgICAgd3JpdGUoQ3Vy
cmVudFZlcnNpb24pOwpAQCAtMTI0MCw3ICsxMjMwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5
IGR1bW15TW9kdWxlczsKLSAgICAgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVt
bXlNZW1vcnlIYW5kbGVzOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250
ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICAgICAgICAgICAgICBDbG9uZVNlcmlh
bGl6ZXIgcmF3S2V5U2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2Fn
ZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgeyB9LApAQCAtMTI0OSw3ICsxMjM4LDYgQEAgcHJp
dmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAg
ICAgZHVtbXlNb2R1bGVzLAotICAgICAgICAgICAgICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMs
CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgZHVtbXlCbG9iVVJMcywgc2VyaWFsaXplZEtl
eSwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAg
ICAgICAgICAgICAgICAgcmF3S2V5U2VyaWFsaXplci53cml0ZShrZXkpOwpAQCAtMTI4NiwyMSAr
MTI3NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKEpT
V2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1l
bW9yeSo+KHZtLCBvYmopKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1lbW9yeS0+bWVtb3J5KCku
c2hhcmluZ01vZGUoKSAhPSBKU0M6Oldhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRh
Q2xvbmVFcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQgIT0gU2VyaWFsaXphdGlvbkNv
bnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleCA9IG1fd2FzbU1lbW9yeUhhbmRsZXMuc2l6ZSgpOwotICAgICAgICAgICAgICAg
IG1fd2FzbU1lbW9yeUhhbmRsZXMuYXBwZW5kKG1ha2VSZWYobWVtb3J5LT5tZW1vcnkoKS5oYW5k
bGUoKSkpOwotICAgICAgICAgICAgICAgIHdyaXRlKFdhc21NZW1vcnlUYWcpOwotICAgICAgICAg
ICAgICAgIHdyaXRlKGluZGV4KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KICNlbmRpZgogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNET01Qb2lu
dFJlYWRPbmx5Pih2bSkpIHsKICAgICAgICAgICAgICAgICBkdW1wRE9NUG9pbnQob2JqKTsKQEAg
LTE2ODUsNyArMTY1OCw2IEBAIHByaXZhdGU6CiAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
JiBtX3NoYXJlZEJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1
bGVBcnJheSYgbV93YXNtTW9kdWxlczsKLSAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIG1fd2Fz
bU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKIH07CiAKQEAgLTE5NjUsNyArMTkzNyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlC
dWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZmZXJzCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKLSAgICAgICAgLCBXYXNt
TWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCiAjZW5kaWYKICAgICAgICAgKQog
ICAgIHsKQEAgLTE5NzcsNyArMTk0OCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAgICAgICAgICwgd2FzbU1vZHVsZXMKLSAgICAgICAgICAgICwgd2Fz
bU1lbW9yeUhhbmRsZXMKICNlbmRpZgogICAgICAgICAgICAgKTsKICAgICAgICAgaWYgKCFkZXNl
cmlhbGl6ZXIuaXNWYWxpZCgpKQpAQCAtMjAzMSw3ICsyMDAxLDYgQEAgcHJpdmF0ZToKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdh
c21Nb2R1bGVzID0gbnVsbHB0cgotICAgICAgICAsIFdhc21NZW1vcnlIYW5kbGVBcnJheSogd2Fz
bU1lbW9yeUhhbmRsZXMgPSBudWxscHRyCiAjZW5kaWYKICAgICAgICAgKQogICAgICAgICA6IENs
b25lQmFzZShsZXhpY2FsR2xvYmFsT2JqZWN0KQpAQCAtMjA1Miw3ICsyMDIxLDYgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1
bGVzKHdhc21Nb2R1bGVzKQotICAgICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1lbW9y
eUhhbmRsZXMpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIGlmICghcmVhZChtX3ZlcnNpb24pKQpA
QCAtMjA2NSw3ICsyMDMzLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzCi0gICAgICAgICwg
V2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3YXNtTWVtb3J5SGFuZGxlcwogI2VuZGlmCiAgICAgICAg
ICkKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTIwODksNyAr
MjA1Niw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9kdWxlcykKLSAgICAgICAgLCBtX3dhc21NZW1vcnlI
YW5kbGVzKHdhc21NZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAgICAgewogICAgICAgICBpZiAoIXJl
YWQobV92ZXJzaW9uKSkKQEAgLTMzMzMsMzMgKzMyOTksNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgV2FzbU1lbW9yeVRh
ZzogewotICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7Ci0gICAgICAgICAgICBib29sIGluZGV4
U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwotICAgICAgICAgICAgaWYgKCFpbmRleFN1
Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93YXNt
TWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgZmFpbCgpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBS
ZWZQdHI8V2FzbTo6TWVtb3J5SGFuZGxlPiBoYW5kbGUgPSBtX3dhc21NZW1vcnlIYW5kbGVzLT5h
dChpbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZSkgewotICAgICAgICAgICAgICAgIGZh
aWwoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYXV0byYgdm0gPSBtX2xleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgICAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KiByZXN1bHQgPSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6
OnRyeUNyZWF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QsIHZtLCBtX2dsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNZW1vcnlTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUg
Y2xvbmluZyBhIEpTV2ViQXNzZW1ibHlNZW1vcnksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhhdAot
ICAgICAgICAgICAgLy8gbW9kdWxlIHRvIG5vdCBoYXZlIGJlZW4gYSB2YWxpZCBtb2R1bGUuIFRo
ZXJlZm9yZSwgY3JlYXRlU3R1YiBzaG91bGQKLSAgICAgICAgICAgIC8vIG5vdCB0cm93LgotICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBS
ZWY8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShoYW5kbGUucmVs
ZWFzZU5vbk51bGwoKSwKLSAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpOb3Rp
ZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
OyB9LAotICAgICAgICAgICAgICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6OlN5bmNUcnlUb1JlY2xh
aW0pIHsgdm0uaGVhcC5jb2xsZWN0U3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAotICAg
ICAgICAgICAgICAgIFsmdm0sIHJlc3VsdF0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdh
c206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQp
IHsgcmVzdWx0LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VD
b3VudCk7IH0pOwotICAgICAgICAgICAgcmVzdWx0LT5hZG9wdChXVEZNb3ZlKG1lbW9yeSkpOwot
ICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
Y2FzZSBBcnJheUJ1ZmZlclRhZzogewogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlcjsKQEAgLTM1MDAsNyArMzQzOSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5KiBtX3dhc21Nb2R1bGVzOwot
ICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSogbV93YXNtTWVtb3J5SGFuZGxlczsKICNlbmRpZgog
CiAgICAgU3RyaW5nIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwoY29uc3QgU3RyaW5nJiBibG9iVVJM
KQpAQCAtMzcyMyw3ICszNjYxLDYgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1v
ZHVsZUFycmF5PiB3YXNtTW9kdWxlc0FycmF5Ci0gICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdh
c21NZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1lbW9yeUhhbmRsZXNBcnJheQogI2VuZGlmCiAgICAg
ICAgICkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCkBAIC0zNzM1LDcgKzM2NzIsNiBA
QCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWlu
dDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICwgbV93YXNtTW9kdWxlc0FycmF5KFdURk1vdmUod2FzbU1vZHVsZXNBcnJheSkpCi0g
ICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkoV1RGTW92ZSh3YXNtTWVtb3J5SGFuZGxlc0Fy
cmF5KSkKICNlbmRpZgogewogICAgIC8vIFNpbmNlIHRoaXMgU2VyaWFsaXplZFNjcmlwdFZhbHVl
IGlzIG1lYW50IHRvIGJlIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMsIGl0cyBTdHJpbmcgZGF0YSBt
ZW1iZXJzCkBAIC0zNzc0LDEwICszNzEwLDYgQEAgc2l6ZV90IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIC8vIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBXZWJBc3NlbWJseSBNb2R1bGUgbWVtb3J5IGVz
dGltYXRpb24geWV0LgotICAgIGlmIChtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkpIHsKLSAgICAg
ICAgZm9yIChhdXRvJiBjb250ZW50IDogKm1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheSkKLSAgICAg
ICAgICAgIGNvc3QgKz0gY29udGVudC0+c2l6ZSgpOwotICAgIH0KICNlbmRpZgogCiAgICAgZm9y
IChhdXRvJiB1cmxzIDogbV9ibG9iVVJMcykKQEAgLTM4NjgsNyArMzgwMCw2IEBAIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0JiBsZXhpCiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVt
bXlBcnJheUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVB
cnJheSBkdW1teU1vZHVsZXM7Ci0gICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5IGR1bW15TWVtb3J5
SGFuZGxlczsKICNlbmRpZgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBkdW1teVNoYXJl
ZEJ1ZmZlcnM7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJmxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJheUJ1
ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLApAQCAtMzg3NywxMyArMzgwOCwxMSBAQCBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCYgbGV4aQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICBkdW1teU1vZHVsZXMsCi0gICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKICNlbmRpZgogICAg
ICAgICBibG9iVVJMcywgYnVmZmVyLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVt
bXlTaGFyZWRCdWZmZXJzKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGR1bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2VyaWFs
aXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJXYXNt
OjpNZW1vcnkgc2VyaWFsaXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdl
IGNvbnRleHQiKTsKICNlbmRpZgogCiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKQEAgLTM5MzAsNyArMzg1OSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIHRyYW5zZmVyYWJsZSA6IHRy
YW5zZmVyTGlzdCkgewogICAgICAgICBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlT
aGFyZWRBcnJheUJ1ZmZlcih2bSwgdHJhbnNmZXJhYmxlLmdldCgpKSkgewotICAgICAgICAgICAg
aWYgKGFycmF5QnVmZmVyLT5pc0RldGFjaGVkKCkgfHwgYXJyYXlCdWZmZXItPmlzU2hhcmVkKCkp
CisgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzRGV0YWNoZWQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICAgICAgICAgIGlm
IChhcnJheUJ1ZmZlci0+aXNMb2NrZWQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTM5NzUsNyArMzkwNCw2IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShKU0dsb2JhbE9iCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKLSAgICBXYXNt
TWVtb3J5SGFuZGxlQXJyYXkgd2FzbU1lbW9yeUhhbmRsZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVu
aXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVT
ZXJpYWxpemVyOjpzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBtZXNzYWdl
UG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLApAQCAtMzk4Myw4ICszOTExLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgIHdhc21Nb2R1bGVzLAotICAgICAg
ICB3YXNtTWVtb3J5SGFuZGxlcywKKyAgICAgICAgd2FzbU1vZHVsZXMsIAogI2VuZGlmCiAgICAg
ICAgIGJsb2JVUkxzLCBidWZmZXIsIGNvbnRleHQsICpzaGFyZWRCdWZmZXJzKTsKIApAQCAtNDAw
OSw3ICszOTM2LDYgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2FzbU1vZHVsZUFy
cmF5Pih3YXNtTW9kdWxlcykKLSAgICAgICAgICAgICAgICAsIGNvbnRleHQgPT0gU2VyaWFsaXph
dGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlID8gbWFrZVVuaXF1ZTxXYXNtTWVtb3J5SGFu
ZGxlQXJyYXk+KHdhc21NZW1vcnlIYW5kbGVzKSA6IG51bGxwdHIKICNlbmRpZgogICAgICAgICAg
ICAgICAgICkpOwogfQpAQCAtNDA2Nyw3ICszOTkzLDYgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LAogICAgICAgICAsIG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LmdldCgpLCBtX2RhdGEsIGJs
b2JVUkxzLCBibG9iRmlsZVBhdGhzLCBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCkK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlc0FycmF5Lmdl
dCgpCi0gICAgICAgICwgbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5LmdldCgpCiAjZW5kaWYKICAg
ICAgICAgKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1v
ZGU6OlRocm93aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCAwY2RiNDAxOGM4NDdmYTAwZmVkN2Y1ZmIwZmNiY2EzNTM5
ODM1MjUxLi5kMmEwYzRhMGI4M2RhZTg5MmRiNzk1MDZlZDMxNmRlYjM4YTE2NTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApA
QCAtNDEsNyArNDEsNiBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU1Zh
bHVlUmVmOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiBjbGFzcyBNb2R1bGU7Ci1jbGFzcyBNZW1vcnlIYW5kbGU7CiB9IH0KICNlbmRp
ZgogCkBAIC02Miw3ICs2MSw2IEBAIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkNvbnRleHQgeyBE
ZWZhdWx0LCBXb3JrZXJQb3N0TWVzc2FnZSwgV2luZG93UG9zdE1lc3NhZ2UKIHVzaW5nIEFycmF5
QnVmZmVyQ29udGVudHNBcnJheSA9IFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+Owog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIHVzaW5nIFdhc21Nb2R1bGVBcnJheSA9IFZlY3RvcjxS
ZWZQdHI8SlNDOjpXYXNtOjpNb2R1bGU+PjsKLXVzaW5nIFdhc21NZW1vcnlIYW5kbGVBcnJheSA9
IFZlY3RvcjxSZWZQdHI8SlNDOjpXYXNtOjpNZW1vcnlIYW5kbGU+PjsKICNlbmRpZgogCiBERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUp
OwpAQCAtMTI0LDcgKzEyMiw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gPSBudWxs
cHRyCi0gICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gPSBu
dWxscHRyCiAjZW5kaWYKICAgICAgICAgKTsKIApAQCAtMTM5LDcgKzEzNiw2IEBAIHByaXZhdGU6
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdh
c21Nb2R1bGVBcnJheT4gbV93YXNtTW9kdWxlc0FycmF5OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
YXNtTWVtb3J5SGFuZGxlQXJyYXk+IG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheTsKICNlbmRpZgog
ICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYlVSTHM7CiAgICAgc2l6ZV90IG1fbWVtb3J5Q29zdCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50
RGF0YS5jcHAKaW5kZXggYTE0M2YzMDRiNGFjOTk1ZTdlMTJhNGI4ODcxNGNiMzRlNjhhMTZmNy4u
MDc2NjA4MzgwNzRlMjZlYmY0MzFkNTFhOWFmMzEwMTljNTlhMDc2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjpnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxE
T01XcmFwcGVyV29ybGQ+PiYgd29ybGRzKQogICAgIH0KIH0KIAotdm9pZCBKU1ZNQ2xpZW50RGF0
YTo6aW5pdE5vcm1hbFdvcmxkKFZNKiB2bSwgV29ya2VyVGhyZWFkVHlwZSB0eXBlKQordm9pZCBK
U1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKFZNKiB2bSkKIHsKICAgICBKU1ZNQ2xpZW50
RGF0YSogY2xpZW50RGF0YSA9IG5ldyBKU1ZNQ2xpZW50RGF0YSgqdm0pOwogICAgIHZtLT5jbGll
bnREYXRhID0gY2xpZW50RGF0YTsgLy8gflZNIGRlbGV0ZXMgdGhpcyBwb2ludGVyLgpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0s
IFdvcmtlclRocmVhZFR5cGUgdHlwZSkKICAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWlu
dChtYWtlVW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwog
CiAgICAgY2xpZW50RGF0YS0+bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRl
KCp2bSwgRE9NV3JhcHBlcldvcmxkOjpUeXBlOjpOb3JtYWwpOwotICAgIHZtLT5tX3R5cGVkQXJy
YXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcih0
eXBlID09IFdvcmtlclRocmVhZFR5cGU6OkRlZGljYXRlZFdvcmtlciB8fCB0eXBlID09IFdvcmtl
clRocmVhZFR5cGU6OldvcmtsZXQpKTsKKyAgICB2bS0+bV90eXBlZEFycmF5Q29udHJvbGxlciA9
IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVKU0NsaWVudERhdGEuaAppbmRleCAwZGE1MzMyNzA1MDgwYzQ5MTI3YzM0NGFhMDIxOTMyNWRj
NjZjNzQ0Li5iODQ0MGU4NzcwZTQ3MjkxZjdlZTIwNjMxOTllYTA1YzNjNGJiMGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCkBAIC0y
NCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0J1aWx0aW5zLmgiCi0jaW5j
bHVkZSAiV29ya2VyVGhyZWFkVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00MSw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgfkpTVk1DbGllbnREYXRhKCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgaW5pdE5vcm1hbFdvcmxkKEpTQzo6Vk0qLCBXb3JrZXJUaHJlYWRUeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbml0Tm9ybWFsV29ybGQoSlNDOjpWTSopOwogCiAg
ICAgRE9NV3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZCgpIHsgcmV0dXJuICptX25vcm1hbFdvcmxk
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
VHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCmluZGV4IDZkMDE2Yzg2YWM3OTFlNTUwYTIxNDIwMGRl
M2JkOWIzZWI4MTc0YjYuLmMxOGZhOGUzNjQ4YTQ2NmJlYTJjMWY4Yzg5M2QxNTNmMDk4NzQwZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5
cGVkQXJyYXlDb250cm9sbGVyLmNwcApAQCAtMzQsMTAgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OldlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlcihib29sIGFsbG93QXRvbWljc1dhaXQpCi0gICAgOiBtX2FsbG93QXRvbWljc1dh
aXQoYWxsb3dBdG9taWNzV2FpdCkKLXsKLX0KK1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCiBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXI6On5XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7
CiAKQEAgLTUzLDcgKzUwLDcgQEAgdm9pZCBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OnJl
Z2lzdGVyV3JhcHBlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogYm9vbCBXZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OmlzQXRvbWljc1dhaXRBbGxvd2VkT25DdXJyZW50VGhy
ZWFkKCkKIHsKLSAgICByZXR1cm4gbV9hbGxvd0F0b21pY3NXYWl0OworICAgIHJldHVybiAhaXNN
YWluVGhyZWFkKCk7CiB9CiAKIGJvb2wgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpKU0Fy
cmF5QnVmZmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvciwgY29u
c3QgY2hhcioqIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggNTExOWFkMWYzYTJlZWQxMTAz
ODVmNWEyNTQwM2FhMmY1N2EwYmM5Yy4uZmFhYzIyNjIyMTJlNTM2OGIwOGFjMjkwZmQ4MDliYTY4
NGMyZGM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5
cGVkQXJyYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIgOiBwdWJsaWMgSlND
OjpUeXBlZEFycmF5Q29udHJvbGxlciB7CiBwdWJsaWM6Ci0gICAgV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyKGJvb2wgYWxsb3dBdG9taWNzV2FpdCk7CisgICAgV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyKCk7CiAgICAgdmlydHVhbCB+V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7
CiAgICAgCiAgICAgSlNDOjpKU0FycmF5QnVmZmVyKiB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlciopIG92ZXJyaWRlOwpAQCAt
NTMsNyArNTMsNiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBKU0FycmF5QnVmZmVyT3duZXIg
bV9vd25lcjsKLSAgICBib29sIG1fYWxsb3dBdG9taWNzV2FpdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggZTc5YzFkOWU0YjZjMWNmNmM5Y2M2NzAzYjkyZjRmMDRiMTcz
ZTczYi4uYzE5ZWJlNWUwNzljZWRmYzhmZTRkYjk0NGJhZDk2ZmEyNTk1OTZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTY5OTksNyArNjk5OSw2IEBAIHN1YiBJc0Fubm90YXRlZFR5cGUKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmd9OwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAg
ICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmd9OwotICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntBbGxvd1NoYXJlZH07CiB9CiAKIHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCkBAIC03MDExLDcg
KzcwMTAsNiBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogICAgIHJldHVybiAiSURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmd9OwogICAgIHJldHVybiAiSURMQXRvbVN0cmluZ0FkYXB0
b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAgICByZXR1
cm4gIklETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvciIgaWYgJHR5cGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKLSAgICByZXR1cm4g
IklETEFsbG93U2hhcmVkQWRhcHRvciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Fs
bG93U2hhcmVkfTsKIH0KIAogc3ViIEdldEJhc2VJRExUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDRlMDNlOWZhNGFh
MzFiNGNlOGJlZGNjZDBiOGMwMjlkNDMyZjU5ZmEuLmM4ZWNmZjM4NmMyM2NmNjI4NGU5YWFlNzA0
YzRjNmFmNjg0YjIwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy5qc29uCkBAIC0yNCw3ICsyNCw4IEBACiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJ0eXBlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAg
ICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNBbGxv
d1NoYXJlZCIKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAidW5z
dXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgICJBcHBsZUNvcHlyaWdodCI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJhdHRyaWJ1dGUi
LCAib3BlcmF0aW9uIl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZjg4MTE1MDE2ZWY4NjliODZjODNjYTcxODgy
ZWI4ZDM4MDA2OWMzNi4uODQyNWUzMDEwZjY1MzZiYzIyMDRjMThlOTA1YTIzMWIyMzlkMGI3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKQEAgLTE2MDIsNyArMTYwMiw2IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3RyYWlsaW5nX2Rhc2hfaHlwaGVu
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZG91YmxlX2xlYWRpbmdfdW5k
ZXJzY29yZV9mdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl90cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXyk7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9lbmNvZGVJbnRvKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nKTsKIAogLy8gQXR0cmlidXRlcwpAQCAtMjMzNCw3
ICsyMzMzLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQogICAgIHsgImxlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAogICAgIHsgIl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3Jl
X2Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRyYWlsaW5nX3VuZGVyc2Nv
cmVfZnVuY3Rpb25fIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90cmFpbGluZ191bmRlcnNj
b3JlX2Z1bmN0aW9uXyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJlbmNvZGVJbnRvIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJbnRvKSwgKGludHB0cl90KSAoMSkgfSB9
LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZyks
IChpbnRwdHJfdCkgKDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7ICJDT05E
SVRJT05BTF9DT05TVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMCkgfSB9LApAQCAtOTQ5
OSwyNiArOTQ5Nyw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl90cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uCiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3RyYWls
aW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICJ0cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXyIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5jb2Rl
SW50b0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gY29udmVydDxJRExBbGxvd1NoYXJlZEFk
YXB0b3I8SURMVWludDhBcnJheT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiZGVzdGluYXRpb24iLCAiVGVzdE9iamVjdCIsICJlbmNvZGVJbnRv
IiwgIlVpbnQ4QXJyYXkiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5lbmNvZGVJbnRvKGRlc3RpbmF0
aW9uLnJlbGVhc2VOb25OdWxsKCkpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5jb2RlSW50bywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2VuY29kZUludG9Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImVuY29k
ZUludG8iKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZGEzYWNiMzEx
NGQ4OGRhMTFkZGZlOGVkMzQwZDA4NzI1MThmODNlOS4uNDI3MGVmMjU5MjA4MDQ1YzcxZjI0MDFl
Y2MwMDJhNzM1OTc2OGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNDY3LDggKzQ2Nyw2IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdW5kZWZpbmVkIF9sZWFkaW5nX3VuZGVy
c2NvcmVfZnVuY3Rpb24oKTsgLy8gTk9URTogV2ViSURMIHJlbW92ZXMgdGhlIGxlYWRpbmcgdW5k
ZXJzY29yZSBzbyB0aGlzIGlzIGludGVycHJldGVkIGFzICJsZWFkaW5nX3VuZGVyc2NvcmVfZnVu
Y3Rpb24iCiAgICAgdW5kZWZpbmVkIF9fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlv
bigpOyAvLyBOT1RFOiBXZWJJREwgcmVtb3ZlcyB0aGUgbGVhZGluZyB1bmRlcnNjb3JlIHNvIHRo
aXMgaXMgaW50ZXJwcmV0ZWQgYXMgIl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9u
IgogICAgIHVuZGVmaW5lZCB0cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXygpOwotCi0gICAg
Ym9vbGVhbiBlbmNvZGVJbnRvKFtBbGxvd1NoYXJlZF0gVWludDhBcnJheSBkZXN0aW5hdGlvbik7
CiB9OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnRzIHNob3VsZCBub3QgZ2VuZXJhdGUgYW55
IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAppbmRleCAyMTRhZDdlM2IwNjNlYTE3
Yzc5OTEwNjE5YTBhYTQyN2FkN2Q1MWExLi5kYjM0Y2IyZThhNjU0ZTgwNjI5ZTNlNjQzNDdlNDVi
YzA3YzU1NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwKQEAgLTQxLDUgKzQxLDUg
QEAgZGljdGlvbmFyeSBUZXh0RGVjb2RlT3B0aW9ucyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBlbmNvZGluZzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmYXRh
bDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpZ25vcmVCT007Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIFtBbGxvd1NoYXJlZF0gQnVm
ZmVyU291cmNlPyBpbnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIEJ1ZmZlclNv
dXJjZT8gaW5wdXQsIG9wdGlvbmFsIFRleHREZWNvZGVPcHRpb25zIG9wdGlvbnMpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwKaW5kZXgg
ZDNlYjdlZGNjNzhiNTgyMmIyYmJkYzRiY2U0NWQ2OWIzZThiNDdhMy4uNDNjMTllN2E2NDQ5NmQy
YTVmNTAxMDg3Yzk1Yjc2MTAwZmY0Y2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwKQEAgLTMyLDYgKzMyLDYgQEAKICAgICBjb25zdHJ1
Y3RvcihET01TdHJpbmcgbGFiZWwsIGJvb2xlYW4gZmF0YWwsIGJvb2xlYW4gaWdub3JlQk9NKTsK
IAogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gRE9NU3RyaW5nIGVuY29kaW5nKCk7Ci0gICAgW1By
aXZhdGVJZGVudGlmaWVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRlY29kZShbQWxs
b3dTaGFyZWRdIEJ1ZmZlclNvdXJjZSBzb3VyY2UpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwg
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBkZWNvZGUoQnVmZmVyU291cmNlIHNvdXJjZSk7
CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGZs
dXNoKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5pZGwKaW5kZXggNmJjYjg5NWU4YjBk
YTUyMmI4YjViNGM1YzIwNmI3YmY2Y2NlN2FkMS4uMDVkODI2ZDgyYjI5OTNmODE5ODk2MTBjMGVh
ZDE5NGIwYzZjNGI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVy
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuaWRsCkBAIC0zOSw1ICsz
OSw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBlbmNvZGluZzsKIAogICAg
IFtOZXdPYmplY3RdIFVpbnQ4QXJyYXkgZW5jb2RlKG9wdGlvbmFsIFVTVlN0cmluZyBpbnB1dCA9
ICIiKTsKLSAgICBUZXh0RW5jb2RlckVuY29kZUludG9SZXN1bHQgZW5jb2RlSW50byhVU1ZTdHJp
bmcgc291cmNlLCBbQWxsb3dTaGFyZWRdIFVpbnQ4QXJyYXkgZGVzdGluYXRpb24pOworICAgIFRl
eHRFbmNvZGVyRW5jb2RlSW50b1Jlc3VsdCBlbmNvZGVJbnRvKFVTVlN0cmluZyBzb3VyY2UsIFVp
bnQ4QXJyYXkgZGVzdGluYXRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggN2RiNDlmZTRiMzM2NmNh
NjY4M2Y0YjU3MWQxYjc1Yjk5YzVhNDExNy4uZWYxZDhiY2FkYTI1YmMyNWYxNTE3ZTc4ODllMjQx
YzNlNDllM2RhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmPERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0
IFdvcmtlclAKIH0KIAogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIG9yaWdpbiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBj
b25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdv
cmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6OkRlZGljYXRlZFdvcmtlciwgcGFyYW1z
LCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9u
UHJveHksIHNvY2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyR2xvYmFsU2NvcGUocGFyYW1zLCBX
VEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJv
eHksIHNvY2tldFByb3ZpZGVyKQogICAgICwgbV9uYW1lKHBhcmFtcy5uYW1lKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA2ZjBmNjJk
NzgzYzk0ODFkYmFiMWVmOWUzOGU1NzlmNDBhYTFkMjAxLi41MDJlYzdkNzc2MzU1Zjk2ZTBkZThk
YzhjNDM5MTU4MWY5MDZmNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtNTksOCArNTksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2VyR2xvYmFsU2NvcGUpOwogCi1X
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBl
LCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBv
cmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3Jp
Z2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSh0eXBlLCBKU0M6OlZNOjpjcmVhdGUoKSwgJnRocmVhZCkKK1dvcmtlckdsb2JhbFNjb3Bl
OjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29u
bmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCisgICAgOiBXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNOjpjcmVhdGUoKSwgJnRocmVhZCkKICAgICAs
IG1fdXJsKHBhcmFtcy5zY3JpcHRVUkwpCiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1zLmlkZW50
aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudChwYXJhbXMudXNlckFnZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDdhYjA5ZjZhZjMzZTQ1YjIyMzcz
ODZhMzA2MzEwMWI5ZTU2ZjNkMTcuLmQ5MjIxZGI5ZjU4NjdhMmMwYjI4OWMzMzhkM2Q0NDIwZjgz
NjQ2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAg
LTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3ZWJHTEVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX3dlYkdMRW5hYmxlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV29ya2VyR2xvYmFs
U2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwor
ICAgIFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIAog
ICAgIHZvaWQgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXgg
MjM4NGE1YThjN2QyYTMwMmVlZTVjYjQwNWUxMDVlMDI1Yzk4NDNjYy4uZjQ0OWFjMDJiZTgwY2Y0
OGZiODI5MmM0MjlhYjJjMmU2YjNmYjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM3LDggKzM3LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogCi1Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBSZWY8SlNDOjpW
TT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQpCi0gICAgOiBtX3NjcmlwdCht
YWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHR5cGUsIFdURk1vdmUo
dm0pLCB0aGlzKSkKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJl
YWQpCisgICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI+KFdURk1vdmUodm0pLCB0aGlzKSkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKICAgICAs
IG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI+KCp0aGlzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA2YzI0NGEwYzQyN2VlMWM4YzY1ZmRjYzc2NTk1MmY4
NzdmZDliMTZiLi5mMGM5MGMyMjE5YmZlNDkyNmM4Mjg3MTM2NmMzODkwOWM2MWY3NDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWRUeXBl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgUmVmPEpTQzo6Vk0+JiYsIFdvcmtl
ck9yV29ya2xldFRocmVhZCopOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFJlZjxK
U0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqKTsKIAogICAgIC8vIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuCiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjZDRlYzI0NjgyNTI1YWFiYzY0MmQ4NzdhMGRh
MDExZWJkZTExNDMxLi40MDFkNWYyZjQwYjdiN2JkZThlNjMzNjYyYWQzMWZiMWNkM2YyODYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTUwLDE3ICs1MCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSB0
eXBlLCBSZWY8Vk0+JiYgdm0sIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBnbG9iYWxTY29w
ZSkKK1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIoUmVmPFZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogZ2xv
YmFsU2NvcGUpCiAgICAgOiBtX3ZtKFdURk1vdmUodm0pKQogICAgICwgbV9nbG9iYWxTY29wZShn
bG9iYWxTY29wZSkKICAgICAsIG1fZ2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQogewogICAgIG1f
dm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdlIGhhdmUg
Z29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJtYW5lbnRs
eS4KLSAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIHR5cGUp
OworICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSk7CiB9CiAK
LVdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSogZ2xvYmFsU2NvcGUpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKHR5
cGUsIEpTQzo6Vk06OmNyZWF0ZSgpLCBnbG9iYWxTY29wZSkKK1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKQorICAgIDogV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcihKU0M6OlZNOjpjcmVhdGUoKSwgZ2xvYmFsU2NvcGUpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggYzQ5MzAxYWVkM2RkMDg5ZGE3OTczMjc2MGNhZjJmN2I2NGRiMTFiNi4u
ZWU1Nzk3YmRjMDZiMmE4NzUwYzg4MjEwZTcwMmNiNTM2MDhlNGU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJXb3JrZXJU
aHJlYWRUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC01Miw4ICs1MSw4IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2VyVGhyZWFkVHlwZSwgUmVmPEpTQzo6
Vk0+JiYsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7Ci0gICAgZXhwbGljaXQgV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJUaHJlYWRUeXBlLCBXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSopOworICAgIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIoUmVm
PEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgZXhwbGljaXQg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSopOwogICAgIH5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CiAKICAgICB2b2lk
IHJlbGVhc2VIZWFwQWNjZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
VHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODMwNjViZWExYzYzZjkxNzU2
MjMxYTI3ZTQ0OGI5ZGEyYjlkYzllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkVHlwZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgV29ya2VyVGhyZWFkVHlwZSA6IHVp
bnQ4X3QgewotICAgIE1haW4sCi0gICAgV29ya2xldCwKLSAgICBEZWRpY2F0ZWRXb3JrZXIsCi0g
ICAgU2VydmljZVdvcmtlciwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggOGQ3M2ZmMzU1YmExMGI4YjEyNTAxYTk2OTUzYmY0ZjQwODE1NWEz
Yi4uY2U1NzlmN2M1MzE4NDAzNzIxYzFhMzNjYjkwNTFhOGU0NTA1ZmRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgU2VydmljZVdvcmsKIH0K
IAogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJl
YWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyKQotICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2Vy
dmljZVdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BP
cmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyR2xv
YmFsU2NvcGUocGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmln
aW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQogICAgICwgbV9jb250ZXh0RGF0
YShjcm9zc1RocmVhZENvcHkoZGF0YSkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9yKCkuc2VydmljZVdv
cmtlcigpLCBXVEZNb3ZlKG1fY29udGV4dERhdGEucmVnaXN0cmF0aW9uKSkpCiAgICAgLCBtX2Ns
aWVudHMoU2VydmljZVdvcmtlckNsaWVudHM6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2IwMDk5MzE1YzY0MzQ4MDhm
YmFkNmZiMDMxNWM0MzQ3YzJkY2EzOC4uZDAyODM0MjBhZDczMTdhZmE5OTdhMGU0OGUyYTg3NTU1
Y2I3MjRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3Jr
bGV0R2xvYmFsU2NvcGUpOwogc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBnTnVtYmVyT2ZX
b3JrbGV0R2xvYmFsU2NvcGVzIHsgMCB9OwogCiBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRH
bG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRUaHJlYWQmIHRocmVhZCwgY29uc3QgV29ya2xldFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShX
b3JrZXJUaHJlYWRUeXBlOjpXb3JrbGV0LCBKU0M6OlZNOjpjcmVhdGUoKSwgJnRocmVhZCkKKyAg
ICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6Vk06OmNyZWF0ZSgpLCAmdGhyZWFk
KQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAg
ICwgbV91cmwocGFyYW1ldGVycy53aW5kb3dVUkwpCiAgICAgLCBtX2pzUnVudGltZUZsYWdzKHBh
cmFtZXRlcnMuanNSdW50aW1lRmxhZ3MpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldFRocmVhZCYgdGhyZWFkLCBj
b25zdCBXb3JrCiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNjcmlwdFNvdXJjZUNvZGUmJiBj
b2RlKQotICAgIDogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6
V29ya2xldCwgV1RGTW92ZSh2bSksIG51bGxwdHIpCisgICAgOiBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShXVEZNb3ZlKHZtKSwgbnVsbHB0cikKICAgICAsIG1fZG9jdW1lbnQobWFrZVdlYWtQ
dHIoZG9jdW1lbnQpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVu
aXF1ZSgpKQogICAgICwgbV91cmwoY29kZS51cmwoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MjI0YmRmMDVlMDBiODk1
MGQ4ZDAwYmEwOTViYTBiYmZjMDZlZGM2Li5iNjU3ZDc2ZGM4ZTU2YTg2ZDE1OWMxYTFhODVkMWNk
ZDNlYTVmZjQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMTggIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjY5OTQwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5MDc2CisKKyAgICAgICAgY2F1c2VkIHNlZW1pbmdseS1pbmZpbml0ZSBidWlsZCB0
aW1lIHJlZ3Jlc3Npb24KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IltKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQiCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMKKyAgICAgICAg
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2OTk0MAorCiAyMDIwLTExLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZWxl
YXNlIGFzc2VydGlvbiBmYWlsdXJlIGluIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPjo6
b3BlcmF0b3IqIHZpYSBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGU5MWMyZGVmYTk5MmZhNTZmYThiZWZmYTIwMGYy
YmZmMDhhZGI0MDYuLjA4MmYwNmZmNDFhODk3NzhkOGQ4ODdjMDA2MTFlMDUzNTAwNTcyYTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTExLTE4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI2OTk0MC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTA3NgorCisgICAgICAgIGNhdXNlZCBzZWVtaW5nbHktaW5m
aW5pdGUgYnVpbGQgdGltZSByZWdyZXNzaW9uCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0
OgorCisgICAgICAgICJbSlNDXSBJbXBsZW1lbnQgV2ViQXNzZW1ibHkuTWVtb3J5IHdpdGggc2hh
cmVkIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
NjkzCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjk5NDAKKwog
MjAyMC0xMS0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJh
cHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24td2l0aC10aGUt
amF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVxdWlyZXMtc3VjY2Vzcy5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIvaW50ZWdyYXRpb24t
d2l0aC10aGUtamF2YXNjcmlwdC1hZ2VudC1mb3JtYWxpc20vcmVxdWlyZXMtc3VjY2Vzcy5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1NTlmMGZlNDIyOTZmNmFjYTRhMGZhMDUyNzYyOTEz
ZTY4Yzc0ZDM4Li4wYjk4NjBjY2M1MzQ0ZjUyZGQ3ODQ1MjEwYjlkNDIzYzI1YzE0Mjg5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yL2ludGVncmF0aW9uLXdpdGgt
dGhlLWphdmFzY3JpcHQtYWdlbnQtZm9ybWFsaXNtL3JlcXVpcmVzLXN1Y2Nlc3MuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL3Byb2Nlc3NpbmctbW9kZWwtMi9pbnRl
Z3JhdGlvbi13aXRoLXRoZS1qYXZhc2NyaXB0LWFnZW50LWZvcm1hbGlzbS9yZXF1aXJlcy1zdWNj
ZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1QQVNTIFtbQ2Fu
QmxvY2tdXSBpbiBhIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlCitGQUlMIFtbQ2FuQmxvY2td
XSBpbiBhIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIFR5cGVkIGFycmF5IGZvciB3YWl0L25v
dGlmeSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9j
b25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0
cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55LWV4cGVjdGVkLnR4dAppbmRleCA1NzA1ZjMyNzdi
NjE5NmE5MDk1YjZlMjNlZDEyNjBkYWNjZmQzYzY3Li42NTUxYmUwNmJiMGNhZjZhZTMwNmE2NDJi
YzViMTlhZDE3YTUyZDM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50
YXRpdmUuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50
YXRpdmUuYW55LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotUEFTUyBTaGFyZWQgbWVt
b3J5IHdpdGhvdXQgbWF4aW11bQotUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlw
dG9yICh3aXRoIHNoYXJlZCkKLVBBU1MgU2hhcmVkIG1lbW9yeQorRkFJTCBTaGFyZWQgbWVtb3J5
IHdpdGhvdXQgbWF4aW11bSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeSh7ICJpbml0aWFsIjogMTAsICJzaGFyZWQiOiB0cnVlIH0pIiBkaWQg
bm90IHRocm93CitGQUlMIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGgg
c2hhcmVkKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJy
YXkgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFs
dWVPZiIsICJzaGFyZWQiXSBsZW5ndGggNSwgZ290IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVl
T2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiXSBsZW5ndGggNAorRkFJTCBTaGFyZWQg
bWVtb3J5IGFzc2VydF9lcXVhbHM6IHVuZGVmaW5lZDogY29uc3RydWN0b3IgZXhwZWN0ZWQgdHJ1
ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRl
bnRhdGl2ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVk
LnRlbnRhdGl2ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1NzA1ZjMyNzdiNjE5NmE5
MDk1YjZlMjNlZDEyNjBkYWNjZmQzYzY3Li42NTUxYmUwNmJiMGNhZjZhZTMwNmE2NDJiYzViMTlh
ZDE3YTUyZDM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVu
dGF0aXZlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1QQVNTIFNo
YXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtCi1QQVNTIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9y
IGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKQotUEFTUyBTaGFyZWQgbWVtb3J5CitGQUlMIFNoYXJl
ZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUg
fSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRv
ciAod2l0aCBzaGFyZWQpIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBl
Y3RlZCBhcnJheSBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4
aW11bSB2YWx1ZU9mIiwgInNoYXJlZCJdIGxlbmd0aCA1LCBnb3QgWyJpbml0aWFsIiwgImluaXRp
YWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiJdIGxlbmd0aCA0CitGQUlM
IFNoYXJlZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczogdW5kZWZpbmVkOiBjb25zdHJ1Y3RvciBleHBl
Y3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CmluZGV4
IDQ0MzZjOTY4YjQyY2M2MjY4NGFiMjIyOTYxMGM1NjAxOWQ4YzczMjUuLjVmNmQ1ZTcxNGRhNDI4
M2UzNWE1OTI3YWFmMzM5OGMxYmMyZmUwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Iu
YW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQK
QEAgLTIyLDUgKzIyLDUgQEAgUEFTUyBQcm94eSBkZXNjcmlwdG9yCiBQQVNTIE9yZGVyIG9mIGV2
YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IKIFBBU1MgWmVybyBpbml0aWFsCiBQQVNTIE5vbi16ZXJv
IGluaXRpYWwKLVBBU1MgU3RyYXkgYXJndW1lbnQKK0ZBSUwgU3RyYXkgYXJndW1lbnQgV2ViQXNz
ZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0
b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNDQzNmM5NjhiNDJjYzYyNjg0YWIyMjI5
NjEwYzU2MDE5ZDhjNzMyNS4uNWY2ZDVlNzE0ZGE0MjgzZTM1YTU5MjdhYWYzMzk4YzFiYzJmZTBk
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0yMiw1ICsy
Miw1IEBAIFBBU1MgUHJveHkgZGVzY3JpcHRvcgogUEFTUyBPcmRlciBvZiBldmFsdWF0aW9uIGZv
ciBkZXNjcmlwdG9yCiBQQVNTIFplcm8gaW5pdGlhbAogUEFTUyBOb24temVybyBpbml0aWFsCi1Q
QVNTIFN0cmF5IGFyZ3VtZW50CitGQUlMIFN0cmF5IGFyZ3VtZW50IFdlYkFzc2VtYmx5Lk1lbW9y
eSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQKaW5kZXggYTVkZTYw
ZGQ2MjgwNjYzMjUwN2NmZmFhNTY1YTJkYWQ4OWI3Y2YwZS4uNDAwOWY2YWViMmY4ZTcwYzE4YjAw
M2YwNmY4YzA3NWFmMjQ0NDc2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL21lbW9yeS9ncm93LmFueS1leHBlY3RlZC50eHQKQEAgLTE3LDUgKzE3LDUgQEAgUEFT
UyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6IDY4NzE5NDc2NzM2CiBQQVNTIE91dC1vZi1yYW5nZSBh
cmd1bWVudDogIjB4MTAwMDAwMDAwIgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJndW1lbnQ6IG9iamVj
dCAiW29iamVjdCBPYmplY3RdIgogUEFTUyBTdHJheSBhcmd1bWVudAotUEFTUyBHcm93aW5nIHNo
YXJlZCBtZW1vcnkgZG9lcyBub3QgZGV0YWNoIG9sZCBidWZmZXIKK0ZBSUwgR3Jvd2luZyBzaGFy
ZWQgbWVtb3J5IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyIGFzc2VydF9lcXVhbHM6IEJ1ZmZl
ciBiZWZvcmUgZ3Jvd2luZzogY29uc3RydWN0b3IgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
Z3Jvdy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCBhNWRlNjBkZDYyODA2NjMyNTA3Y2Zm
YWE1NjVhMmRhZDg5YjdjZjBlLi40MDA5ZjZhZWIyZjhlNzBjMThiMDAzZjA2ZjhjMDc1YWYyNDQ0
NzYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9ncm93LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xNyw1ICsxNyw1IEBAIFBBU1Mg
T3V0LW9mLXJhbmdlIGFyZ3VtZW50OiA2ODcxOTQ3NjczNgogUEFTUyBPdXQtb2YtcmFuZ2UgYXJn
dW1lbnQ6ICIweDEwMDAwMDAwMCIKIFBBU1MgT3V0LW9mLXJhbmdlIGFyZ3VtZW50OiBvYmplY3Qg
IltvYmplY3QgT2JqZWN0XSIKIFBBU1MgU3RyYXkgYXJndW1lbnQKLVBBU1MgR3Jvd2luZyBzaGFy
ZWQgbWVtb3J5IGRvZXMgbm90IGRldGFjaCBvbGQgYnVmZmVyCitGQUlMIEdyb3dpbmcgc2hhcmVk
IG1lbW9yeSBkb2VzIG5vdCBkZXRhY2ggb2xkIGJ1ZmZlciBhc3NlcnRfZXF1YWxzOiBCdWZmZXIg
YmVmb3JlIGdyb3dpbmc6IGNvbnN0cnVjdG9yIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvYnVmZmVyLWludGVyZmFjZS9hdWRpb2J1
ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2J1ZmZl
ci1pbnRlcmZhY2UvYXVkaW9idWZmZXItY29weS1jaGFubmVsLWV4cGVjdGVkLnR4dAppbmRleCAz
NzkzNGZlY2YzNjk0MTRhZmVmZmE3NjVmNDU5ZGFjOGUwNGYxOWM4Li4wOGQ1MGY4YjUxZmU3NDBh
NzYwMDEyODZlNDk5ZGJkYjA1ZWJlYjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
YnVmZmVyLWludGVyZmFjZS9hdWRpb2J1ZmZlci1jb3B5LWNoYW5uZWwtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9idWZmZXItaW50ZXJmYWNlL2F1ZGlvYnVmZmVyLWNvcHkt
Y2hhbm5lbC1leHBlY3RlZC50eHQKQEAgLTE5LDkgKzE5LDkgQEAgUEFTUyAgIDQ6IGJ1ZmZlci5j
b3B5RnJvbUNoYW5uZWwoeCwgMykgdGhyZXcgSW5kZXhTaXplRXJyb3I6ICJOb3QgYSB2YWxpZCBj
aGFubmUKIFBBU1MgICA1OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgsIDAsIC0xKSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA2OiBidWZmZXIuY29weUZyb21DaGFubmVsKHgs
IDAsIDE2KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KIFBBU1MgICA3OiBidWZmZXIuY29w
eUZyb21DaGFubmVsKHgsIDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hh
bm5lbE51bWJlci4iLgotUEFTUyAgIDg6IGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoU2hhcmVkQXJy
YXlCdWZmZXIgdmlldywgMCkgdGhyZXcgVHlwZUVycm9yOiAiQXJndW1lbnQgMSAoJ2Rlc3RpbmF0
aW9uJykgdG8gQXVkaW9CdWZmZXIuY29weUZyb21DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ug
b2YgRmxvYXQzMkFycmF5Ii4KLVBBU1MgICA5OiBidWZmZXIuY29weUZyb21DaGFubmVsKFNoYXJl
ZEFycmF5QnVmZmVyIHZpZXcsIDAsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdk
ZXN0aW5hdGlvbicpIHRvIEF1ZGlvQnVmZmVyLmNvcHlGcm9tQ2hhbm5lbCBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIEZsb2F0MzJBcnJheSIuCi1QQVNTIDwgW2NvcHlGcm9tLWV4Y2VwdGlvbnNdIEFs
bCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDExIGFzc2VydGlvbnMpCitGQUlMIFggODogYnVm
ZmVyLmNvcHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwKSBkaWQgbm90IHRo
cm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitG
QUlMIFggOTogYnVmZmVyLmNvcHlGcm9tQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAw
LCAwKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCitGQUlMIDwgW2NvcHlGcm9tLWV4Y2VwdGlvbnNdIDIgb3V0IG9mIDExIGFz
c2VydGlvbnMgd2VyZSBmYWlsZWQuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxz
ZQogUEFTUyA+IFtjb3B5VG8tZXhjZXB0aW9uc10KIFBBU1MgICBBdWRpb0J1ZmZlci5wcm90b3R5
cGUuY29weVRvQ2hhbm5lbCBkb2VzIGV4aXN0LgogUEFTUyAgIDA6IGJ1ZmZlci5jb3B5VG9DaGFu
bmVsKG51bGwsIDApIHRocmV3IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdzb3VyY2UnKSB0byBB
dWRpb0J1ZmZlci5jb3B5VG9DaGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFy
cmF5Ii4KQEAgLTMxLDkgKzMxLDkgQEAgUEFTUyAgIDM6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgs
IDMpIHRocmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lbE4KIFBBU1MgICA0
OiBidWZmZXIuY29weVRvQ2hhbm5lbCh4LCAwLCAtMSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24uCiBQQVNTICAgNTogYnVmZmVyLmNvcHlUb0NoYW5uZWwoeCwgMCwgMTYpIGRpZCBub3QgdGhy
b3cgYW4gZXhjZXB0aW9uLgogUEFTUyAgIDY6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKHgsIDMpIHRo
cmV3IEluZGV4U2l6ZUVycm9yOiAiTm90IGEgdmFsaWQgY2hhbm5lbE51bWJlci4iLgotUEFTUyAg
IDc6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcsIDApIHRocmV3
IFR5cGVFcnJvcjogIkFyZ3VtZW50IDEgKCdzb3VyY2UnKSB0byBBdWRpb0J1ZmZlci5jb3B5VG9D
aGFubmVsIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRmxvYXQzMkFycmF5Ii4KLVBBU1MgICA4OiBi
dWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJheUJ1ZmZlciB2aWV3LCAwLCAwKSB0aHJldyBU
eXBlRXJyb3I6ICJBcmd1bWVudCAxICgnc291cmNlJykgdG8gQXVkaW9CdWZmZXIuY29weVRvQ2hh
bm5lbCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEZsb2F0MzJBcnJheSIuCi1QQVNTIDwgW2NvcHlU
by1leGNlcHRpb25zXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAxMCBhc3NlcnRpb25z
KQorRkFJTCBYIDc6IGJ1ZmZlci5jb3B5VG9DaGFubmVsKFNoYXJlZEFycmF5QnVmZmVyIHZpZXcs
IDApIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1
ZSBnb3QgZmFsc2UKK0ZBSUwgWCA4OiBidWZmZXIuY29weVRvQ2hhbm5lbChTaGFyZWRBcnJheUJ1
ZmZlciB2aWV3LCAwLCAwKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gYXNzZXJ0X3RydWU6
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIDwgW2NvcHlUby1leGNlcHRpb25zXSAyIG91
dCBvZiAxMCBhc3NlcnRpb25zIHdlcmUgZmFpbGVkLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1
ZSBnb3QgZmFsc2UKIFBBU1MgPiBbY29weUZyb20tdmFsaWRhdGVdCiBQQVNTICAgYnVmZmVyLmNv
cHlGcm9tQ2hhbm5lbChkc3Q4LCAwKSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFsxLDIsMyw0
LDUsNiw3LDhdLgogUEFTUyAgIGJ1ZmZlci5jb3B5RnJvbUNoYW5uZWwoZHN0OCwgMSkgaXMgaWRl
bnRpY2FsIHRvIHRoZSBhcnJheSBbMiwzLDQsNSw2LDcsOCw5XS4KQEAgLTYwLDUgKzYwLDUgQEAg
UEFTUyAgIGJ1ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEwLCAwLCA1KSBpcyBpZGVudGljYWwgdG8g
dGhlIGFycmF5IFstMSwtMSwtMSwtMSwKIFBBU1MgICBidWZmZXIuY29weVRvQ2hhbm5lbChzcmMx
MCwgMSwgNSkgaXMgaWRlbnRpY2FsIHRvIHRoZSBhcnJheSBbLTEsLTEsLTEsLTEsLTEsMSwyLDMs
NCw1LDYsNyw4LDksMTAsLTEuLi5dLgogUEFTUyAgIGJ1ZmZlci5jb3B5VG9DaGFubmVsKHNyYzEw
LCAyLCA1KSBpcyBpZGVudGljYWwgdG8gdGhlIGFycmF5IFstMSwtMSwtMSwtMSwtMSwxLDIsMyw0
LDUsNiw3LDgsOSwxMCwtMS4uLl0uCiBQQVNTIDwgW2NvcHlUby12YWxpZGF0ZV0gQWxsIGFzc2Vy
dGlvbnMgcGFzc2VkLiAodG90YWwgMTAgYXNzZXJ0aW9ucykKLVBBU1MgIyBBVURJVCBUQVNLIFJV
Tk5FUiBGSU5JU0hFRDogNSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgorRkFJTCAjIEFVRElUIFRB
U0sgUlVOTkVSIEZJTklTSEVEOiAyIG91dCBvZiA1IHRhc2tzIHdlcmUgZmFpbGVkLiBhc3NlcnRf
dHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZhaWwtd29ya2VyLmpz
IGIvTGF5b3V0VGVzdHMvanMvZG9tL3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFs
LWZhaWwtd29ya2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5YmIy
ZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcmVzb3VyY2Vz
L3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvanMvZG9t
L3Jlc291cmNlcy93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLXdvcmtlci5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ2OGI1NzZkN2ZhZGRmYTBiYTdiM2NmYzYxMzIzMDM0NDg0
NWFiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9kb20vcmVzb3VyY2VzL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtd29ya2Vy
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
bWVzc2FnZSkgewotICAgIHZhciBtZW1vcnkgPSBtZXNzYWdlLmRhdGE7Ci0gICAgdmFyIHZpZXcg
PSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTsKLSAgICB2aWV3WzBdID0gNDM7Ci0gICAg
dmlld1sxXSA9IDQyOwotICAgIG1lbW9yeS5ncm93KDEpOwotICAgIHZpZXdbMl0gPSA0NDsKLSAg
ICBzZWxmLnBvc3RNZXNzYWdlKCJET05FIik7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LW5vcm1hbC1mYWlsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZhaWwtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGVmZDZhOGVmNGI1YjhjNjJhMDc0ZmM5
MzViMzI0MGZhYmEwYjI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktbm9ybWFsLWZhaWwt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCBzZW5kaW5n
IFdlYkFzc2VtYmx5Lk1lbW9yeSB2aWEgcG9zdE1lc3NhZ2UgdG8gYSB3b3JrZXIgYW5kIGZhaWwu
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHdvcmtlci5wb3N0TWVzc2Fn
ZShtZW1vcnkpIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvcjogVGhlIG9iamVjdCBjYW4g
bm90IGJlIGNsb25lZC4uCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2VtYmx5LW1l
bW9yeS1ub3JtYWwtZmFpbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2VtYmx5LW1l
bW9yeS1ub3JtYWwtZmFpbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmM5
NzI3ZGI4YmQ2NjFkZjA5ZTljZGJkMmY5ODllYjliNmM5ZmIyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS93ZWJhc3NlbWJs
eS1tZW1vcnktbm9ybWFsLWZhaWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBzZW5kaW5nIFdl
YkFzc2VtYmx5Lk1lbW9yeSB2aWEgcG9zdE1lc3NhZ2UgdG8gYSB3b3JrZXIgYW5kIGZhaWwuIik7
Ci0KLWlmICh0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgd2luZG93
Lm1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAy
IH0pOwotICAgIHdpbmRvdy53b3JrZXIgPSBuZXcgV29ya2VyKCIuL3Jlc291cmNlcy93ZWJhc3Nl
bWJseS1tZW1vcnktbm9ybWFsLWZhaWwtd29ya2VyLmpzIik7Ci0gICAgc2hvdWxkVGhyb3coYHdv
cmtlci5wb3N0TWVzc2FnZShtZW1vcnkpYCk7Ci19Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1z
aGFyZWQtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2VtYmx5
LW1lbW9yeS1zaGFyZWQtYmFzaWMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZDU1Yzc4OTA5NWYxNmQ0MDNlYzBiMTg5ZDY5NGU3ZjVlMzk3NjFjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDE2ICswLDAgQEAKLVRlc3Qgc2VuZGluZyBzaGFyZWQgV2ViQXNzZW1ibHkuTWVt
b3J5IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVBBU1Mgdmlld1swXSBpcyA0MgotUEFTUyBtZXNzYWdlLmRhdGEgaXMgIkRPTkUi
Ci1QQVNTIHZpZXdbMF0gaXMgNDMKLVBBU1Mgdmlld1sxXSBpcyA0MgotUEFTUyB2aWV3WzJdIGlz
IDQ0Ci1QQVNTIGJ1ZmZlci5ieXRlTGVuZ3RoIGlzIDY1NTM2Ci1QQVNTIG1lbW9yeS5idWZmZXIu
Ynl0ZUxlbmd0aCBpcyAxMzEwNzIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNzZW1i
bHktbWVtb3J5LXNoYXJlZC1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3dlYmFzc2Vt
Ymx5LW1lbW9yeS1zaGFyZWQtYmFzaWMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTVmOTcwZDAwNGZmMTY5ZmFkOTZhM2JmZjA0NTRhYzk1MTk0OWIyMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vd2Vi
YXNzZW1ibHktbWVtb3J5LXNoYXJlZC1iYXNpYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHNl
bmRpbmcgc2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSB2aWEgcG9zdE1lc3NhZ2UgdG8gYSB3b3Jr
ZXIuIik7Ci0KLWlmICh0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAg
anNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IDEsIG1heGltdW06IDIsIHNoYXJlZDogdHJ1ZSB9KTsKLSAgICBidWZmZXIg
PSBtZW1vcnkuYnVmZmVyOwotICAgIHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOwotICAg
IHZpZXdbMF0gPSA0MjsKLSAgICBzaG91bGRCZShgdmlld1swXWAsIGA0MmApOwotICAgIHdvcmtl
ciA9IG5ldyBXb3JrZXIoIi4vcmVzb3VyY2VzL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtd29y
a2VyLmpzIik7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG1zZykgewotICAgICAg
ICBtZXNzYWdlID0gbXNnOwotICAgICAgICBzaG91bGRCZShgbWVzc2FnZS5kYXRhYCwgYCJET05F
ImApOwotICAgICAgICBzaG91bGRCZShgdmlld1swXWAsIGA0M2ApOwotICAgICAgICBzaG91bGRC
ZShgdmlld1sxXWAsIGA0MmApOwotICAgICAgICBzaG91bGRCZShgdmlld1syXWAsIGA0NGApOwot
ICAgICAgICBzaG91bGRCZShgYnVmZmVyLmJ5dGVMZW5ndGhgLCBgNjU1MzZgKTsKLSAgICAgICAg
c2hvdWxkQmUoYG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aGAsIGAxMzEwNzJgKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2UobWVtb3J5KTsK
LX0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3ZjNhMGJmY2Y2Nzg5M2IzODNmY2Yz
OTRjOTdiNjg3YmM1ZTVhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWls
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3Qgc2VuZGlu
ZyBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5J3MgU2hhcmVkQXJyYXlCdWZmZXIgdmlhIHBvc3RN
ZXNzYWdlIHRvIGEgd29ya2VyIHdpdGggdHJhbnNmZXItbGlzdCBhbmQgZmFpbC4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKG1lbW9yeS5i
dWZmZXIsIFttZW1vcnkuYnVmZmVyXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yOiBU
aGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
d2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20v
d2ViYXNzZW1ibHktbWVtb3J5LXNoYXJlZC1mYWlsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI2MWNhMTFiYWVmZDNmNWU2NTIzMzE4OTQyMmQzYTU5OTg4ZGUyZDkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMv
ZG9tL3dlYmFzc2VtYmx5LW1lbW9yeS1zaGFyZWQtZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMjEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IHNlbmRpbmcgc2hhcmVkIFdlYkFzc2VtYmx5Lk1lbW9yeSdzIFNoYXJlZEFycmF5QnVmZmVy
IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlciB3aXRoIHRyYW5zZmVyLWxpc3QgYW5kIGZhaWwu
Iik7Ci0KLWlmICh0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgd2lu
ZG93Lm1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhpbXVt
OiAyLCBzaGFyZWQ6IHRydWUgfSk7Ci0gICAgd2luZG93LndvcmtlciA9IG5ldyBXb3JrZXIoIi4v
cmVzb3VyY2VzL3dlYmFzc2VtYmx5LW1lbW9yeS1ub3JtYWwtZmFpbC13b3JrZXIuanMiKTsKLSAg
ICBzaG91bGRUaHJvdyhgd29ya2VyLnBvc3RNZXNzYWdlKG1lbW9yeS5idWZmZXIsIFttZW1vcnku
YnVmZmVyXSlgKTsKLX0KLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGM1Y2Y4NTMwNmNiODYxMGMxZjhl
ZWM0Y2NhNzA2Mzk4MjY3YjQ5MWYuLjI0OTYxZTUyYzlhOWU2ZGY3ZTczZjQzMDM5NGYwMGYzYWJl
YjdjZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00
NjAwLDkgKzQ2MDAsMyBAQCB3ZWJraXQub3JnL2IvMjE4MDQwIHN2Zy9jbGlwLXBhdGgvY2xpcC1w
YXRoLWludmFsaWQuc3ZnIFsgUGFzcyBDcmFzaCBdCiAjIFdpbmRvd3MgZG9lc24ndCBzdXBwb3J0
IGNvbG9yIGZvbnRzLgogd2Via2l0Lm9yZy9iLzIxODM0NiBmYXN0L3RleHQvY2FudmFzLWNvbG9y
LWZvbnRzIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTgzNDYgaHR0
cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCi0j
IFdlYkFzc2VtYmx5IGlzIG5vdCBlbmFibGVkCi1qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LXNo
YXJlZC1iYXNpYy5odG1sIFsgU2tpcCBdCi1qcy9kb20vd2ViYXNzZW1ibHktbWVtb3J5LW5vcm1h
bC1mYWlsLmh0bWwgWyBTa2lwIF0KLWpzL2RvbS93ZWJhc3NlbWJseS1tZW1vcnktc2hhcmVkLWZh
aWwuaHRtbCBbIFNraXAgXQotc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1
cmVkLWNsb25lLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLW1lbW9yeS1zdHJ1
Y3R1cmVkLWNsb25lLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzlmMWViMTBk
NDk0NzQ5ZWRkNmZlYWQyYWI4MjdlMTA5N2MyYTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw0MCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3Qgc3RydWN0dXJlZCBjbG9uZSBwZXJt
dXRhdGlvbnMgaW4gSW5kZXhlZERCIHdpdGggc2hhcmVkIG1lbW9yaWVzLiIpOwotCi1pbmRleGVk
REJUZXN0KHByZXBhcmVEYXRhYmFzZSwgc3RhcnRUZXN0cyk7Ci1mdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQotewotICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGRlYnVn
KCJUaGlzIGluZGV4IGlzIG5vdCB1c2VkLCBidXQgZXZhbHVhdGluZyBrZXkgcGF0aCBvbiBlYWNo
IHB1dCgpIGNhbGwgd2lsbCBleGVyY2lzZSAoZGUpc2VyaWFsaXphdGlvbjoiKTsKLSAgICBldmFs
QW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2R1bW15S2V5UGF0aCcpIik7
Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHN0YXJ0VGVzdHMoKQotewotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOwotCi0gICAgYXdhaXQgdGVzdFNoYXJlZFdlYkFz
c2VtYmx5TWVtb3J5KCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RT
aGFyZWRXZWJBc3NlbWJseU1lbW9yeSgpCi17Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgZGVidWcoIlRlc3Qgc2hhcmVkIFdlYkFzc2VtYmx5
Lk1lbW9yeSIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlTmFtZScsICdyZWFkd3JpdGUnKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gcmVqZWN0OwotICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gcmVqZWN0OwotICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gcmVzb2x2ZTsKLQot
ICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMSwgbWF4
aW11bTogMSwgc2hhcmVkOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRUaHJvdyhgc3RvcmUucHV0
KG1lbW9yeSwgJ2tleScpYCk7Ci0gICAgfSk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1
cmVkLWNsb25lLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg0
ZGRhZjM1MzFkM2IzNmVhMWFlNDBkYjA1MWY5NjRmMmEwMDI1Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9zaGFyZWQtbWVtb3J5LXN0cnVjdHVyZWQtY2xvbmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMjIgKzAsMCBAQAotVGVzdCBzdHJ1Y3R1cmVkIGNsb25lIHBlcm11dGF0aW9ucyBp
biBJbmRleGVkREIgd2l0aCBzaGFyZWQgbWVtb3JpZXMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1pbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4
ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0lu
ZGV4ZWREQjsKLQotaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKLWluZGV4ZWREQi5v
cGVuKGRibmFtZSkKLXN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1U
aGlzIGluZGV4IGlzIG5vdCB1c2VkLCBidXQgZXZhbHVhdGluZyBrZXkgcGF0aCBvbiBlYWNoIHB1
dCgpIGNhbGwgd2lsbCBleGVyY2lzZSAoZGUpc2VyaWFsaXphdGlvbjoKLXN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleE5hbWUnLCAnZHVtbXlLZXlQYXRoJykKLQotUnVubmluZyB0ZXN0cy4uLgotVGVz
dCBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5Ci10cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZU5hbWUnLCAncmVhZHdyaXRlJykKLXN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpCi1QQVNTIHN0b3JlLnB1dChtZW1vcnksICdrZXknKSB0aHJldyBleGNl
cHRpb24gRGF0YUNsb25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NoYXJlZC1tZW1vcnktc3RydWN0dXJl
ZC1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2hhcmVkLW1lbW9y
eS1zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIz
ZDMzMGVkMGY0MmIxYTIxZTVhNTk3YmY0N2VjM2ZhODM0ZTY4MWUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2hhcmVkLW1lbW9yeS1zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC1tZW1vcnktc3RydWN0dXJlZC1jbG9uZS5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGE1ZTRmMzIyMTMxMmQ2MmU3NTdkOTMwOWFhZDQyYjA2MGEyOTAxNzQuLjA0ZGNkMWYwYWRiOGY4
OTZkODFiNWY4ZWI2MDYwZWY0N2RmZjhkMGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMTggIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjY5OTQwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MDc2CisKKyAgICAgICAgY2F1c2VkIHNlZW1pbmdseS1pbmZpbml0
ZSBidWlsZCB0aW1lIHJlZ3Jlc3Npb24KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisK
KyAgICAgICAgIltKU0NdIEltcGxlbWVudCBXZWJBc3NlbWJseS5NZW1vcnkgd2l0aCBzaGFyZWQi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTMK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2OTk0MAorCiAyMDIw
LTExLTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gSW1wbGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC1zaGFyZWQuanMgYi9KU1Rlc3Rz
L3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDk4OTBhN2FhZDU3ZTY0ODI0ZDExNGJiMmEzMTE4MDYzMjQ0MDE2Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3dh
c20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLXNoYXJlZC5qcworKysgL2Rldi9udWxsCkBAIC0x
LDM0ICswLDAgQEAKLWltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCi1pbXBvcnQg
KiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwotCi1jb25zdCBwYWdlU2l6ZSA9IDY0ICog
MTAyNDsKLWNvbnN0IG51bVBhZ2VzID0gMTA7Ci0KLWNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxk
ZXIoKSkKLSAgICAuVHlwZSgpLkVuZCgpCi0gICAgLkltcG9ydCgpCi0gICAgICAgIC5NZW1vcnko
ImEiLCAiYiIsIHtpbml0aWFsOiBudW1QYWdlc30pCi0gICAgLkVuZCgpCi0gICAgLkZ1bmN0aW9u
KCkuRW5kKCkKLSAgICAuRXhwb3J0KCkuRnVuY3Rpb24oImZvbyIpLkVuZCgpCi0gICAgLkNvZGUo
KQotICAgICAgICAuRnVuY3Rpb24oImZvbyIsIHtwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiJ9
KQotICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAuSTMyTG9hZCgyLCAwKQot
ICAgICAgICAgICAgLlJldHVybigpCi0gICAgICAgIC5FbmQoKQotICAgIC5FbmQoKTsKLQotY29u
c3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwotY29uc3QgbW9kdWxlID0gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwotY29uc3QgZm9vID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiBu
dW1QYWdlcywgbWF4aW11bTogbnVtUGFnZXMgKiAyLCBzaGFyZWQ6IHRydWV9KX19KS5leHBvcnRz
LmZvbzsKLQotZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgewotICAgIGxldCBz
dGFja0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2Yo
Indhc20tIikgIT09IC0xKTsKLSAgICByZXR1cm4gc3RhY2tGcmFtZXMubGVuZ3RoOwotfQotCi1m
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIGNvbnN0IGUgPSBhc3NlcnQudGhy
b3dzKCgpID0+IGZvbyhudW1QYWdlcyAqIHBhZ2VTaXplICsgMSksIFdlYkFzc2VtYmx5LlJ1bnRp
bWVFcnJvciwgIk91dCBvZiBib3VuZHMgbWVtb3J5IGFjY2VzcyIpOwotICAgIGFzc2VydC5lcSh3
YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSwgMik7Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vZnVuY3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1zaGFyZWQuanMgYi9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvdHJhcC1zdG9yZS1zaGFyZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ4Y2E5YTg5NjM4MzkxYmYwNGVlZGNiYjZiN2QzZmM1NDFlODE0ZGEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0
aW9uLXRlc3RzL3RyYXAtc3RvcmUtc2hhcmVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAs
MCBAQAotaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKLWltcG9ydCAqIGFzIGFz
c2VydCBmcm9tICcuLi9hc3NlcnQuanMnCi0KLWNvbnN0IHBhZ2VTaXplID0gNjQgKiAxMDI0Owot
Y29uc3QgbnVtUGFnZXMgPSAxMDsKLQotewotICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxk
ZXIoKSkKLSAgICAgICAgLlR5cGUoKS5FbmQoKQotICAgICAgICAuSW1wb3J0KCkKLSAgICAgICAg
ICAgIC5NZW1vcnkoImEiLCAiYiIsIHtpbml0aWFsOiBudW1QYWdlc30pCi0gICAgICAgIC5FbmQo
KQotICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQotICAgICAgICAuRXhwb3J0KCkuRnVuY3Rpb24o
ImZvbyIpLkVuZCgpCi0gICAgICAgIC5Db2RlKCkKLSAgICAgICAgICAgIC5GdW5jdGlvbigiZm9v
Iiwge3BhcmFtczogWyJpMzIiLCAiaTMyIl19KQotICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgx
KQotICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgICAgICAgIC5JMzJTdG9y
ZSgyLCAwKQotICAgICAgICAgICAgLkVuZCgpCi0gICAgICAgIC5FbmQoKTsKLQotICAgIGNvbnN0
IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKLSAgICBjb25zdCBtb2R1bGUgPSBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7Ci0gICAgY29uc3QgZm9vID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0
aWFsOiBudW1QYWdlcywgbWF4aW11bTogbnVtUGFnZXMgKiAyLCBzaGFyZWQ6IHRydWV9KX19KS5l
eHBvcnRzLmZvbzsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKLSAgICAg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oaSwgbnVtUGFnZXMgKiBwYWdlU2l6ZSArIDEpLCBX
ZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKTsK
LX0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCmluZGV4IDcwZWJkZTI4NjIzMmUxODFmNWVk
Y2M1MjlhZDIwZTRmNmExNTA5MzUuLjUyMDU5OTI3MGM1MGJkYzhlYzJhNWUxYTUxOTVlMWNjY2Iw
OWM5NDggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMKKysr
IGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwpAQCAtMTI0LDcgKzEyNCw3IEBA
IGZ1bmN0aW9uIGJpbmFyeVNob3VsZE5vdFBhcnNlKGJ1aWxkZXIpIHsKIAogewogICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSgyMCksIFR5cGVFcnJvciwgIldl
YkFzc2VtYmx5Lk1lbW9yeSBleHBlY3RzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmpl
Y3QiKTsgCi0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDoxfSwge30pOworICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7fSwge30pLCBUeXBl
RXJyb3IsICAiV2ViQXNzZW1ibHkuTWVtb3J5IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQi
KTsKIH0KIAogZnVuY3Rpb24gdGVzdChmKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3Ry
ZXNzL3NoYXJlZC1tZW1vcnktZXJyb3JzLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQt
bWVtb3J5LWVycm9ycy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY0YmZmYjcz
ZWE5MDhhODc5YjA0ODdiY2I3Nzc5ZjlmNzE3MzQwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NoYXJlZC1tZW1vcnkt
ZXJyb3JzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotaW1wb3J0ICogYXMgYXNz
ZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7Ci0KLWFzc2VydC50aHJvd3MoKCkgPT4gewotICAgIG5l
dyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBzaGFyZWQ6IHRydWUgfSk7Ci19LCBU
eXBlRXJyb3IsIGAnbWF4aW11bScgcGFnZSBjb3VudCBtdXN0IGJlIGRlZmluZWQgaWYgJ3NoYXJl
ZCcgaXMgdHJ1ZWApOwotCi1hc3NlcnQudGhyb3dzKCgpID0+IHsKLSAgICBsZXQgbWVtb3J5ID0g
bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDEsIG1heGltdW06IDIsIHNoYXJlZDog
dHJ1ZSB9KTsKLSAgICBtZW1vcnkuZ3JvdygzKTsKLX0sIFJhbmdlRXJyb3IsIGBXZWJBc3NlbWJs
eS5NZW1vcnkuZ3JvdyB3b3VsZCBleGNlZWQgdGhlIG1lbW9yeSdzIGRlY2xhcmVkIG1heGltdW0g
c2l6ZWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1v
cnktYnVmZmVyLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaGFyZWQtd2FzbS1tZW1vcnktYnVm
ZmVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODk2MTNjOTA5MjU1NzA0NTZl
OTUwODQ1MWU1ZTFjMDNkZTE2ZWMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2hhcmVkLXdhc20tbWVtb3J5LWJ1ZmZl
ci5qcworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLWltcG9ydCAqIGFzIGFzc2VydCBm
cm9tICcuLi9hc3NlcnQuanMnCi0KLWxldCBwYWdlU2l6ZSA9IDY0IDw8IDEwOwotbGV0IG1lbW9y
eSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoewotICAgIGluaXRpYWw6IDEsCi0gICAgbWF4aW11
bTogNSwKLSAgICBzaGFyZWQ6IHRydWUsCi19KTsKLWxldCBidWZmZXIxID0gbWVtb3J5LmJ1ZmZl
cjsKLWFzc2VydC5lcShidWZmZXIxLmJ5dGVMZW5ndGgsIHBhZ2VTaXplICogMSk7Ci1hc3NlcnQu
ZXEoYnVmZmVyMSwgbWVtb3J5LmJ1ZmZlcik7Ci0KLW1lbW9yeS5ncm93KDEpOwotbGV0IGJ1ZmZl
cjIgPSBtZW1vcnkuYnVmZmVyOwotYXNzZXJ0LmVxKGJ1ZmZlcjEuYnl0ZUxlbmd0aCwgcGFnZVNp
emUgKiAxKTsKLWFzc2VydC5lcShidWZmZXIyLmJ5dGVMZW5ndGgsIHBhZ2VTaXplICogMik7Ci1h
c3NlcnQuZmFsc3koYnVmZmVyMSA9PT0gYnVmZmVyMik7Ci0KLWxldCBieXRlczEgPSBuZXcgVWlu
dDhBcnJheShidWZmZXIxKTsKLWxldCBieXRlczIgPSBuZXcgVWludDhBcnJheShidWZmZXIyKTsK
LWJ5dGVzMVswXSA9IDQyOwotYXNzZXJ0LmVxKGJ5dGVzMlswXSwgNDIpOwotYnl0ZXMyWzBdID0g
NDM7Ci1hc3NlcnQuZXEoYnl0ZXMxWzBdLCA0Myk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>