<?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>312063</bug_id>
          
          <creation_ts>2026-04-11 16:51:13 -0700</creation_ts>
          <short_desc>REGRESSION(310871@main): Revert as ASan bot issue gets workarounded</short_desc>
          <delta_ts>2026-04-11 16:54:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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>311875</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2199298</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2026-04-11 16:51:13 -0700</bug_when>
    <thetext>https://commits.webkit.org/310871@main introduced a regression:
Revert as ASan bot issue gets workarounded

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>2199300</commentid>
    <comment_count>1</comment_count>
      <attachid>479025</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2026-04-11 16:51:18 -0700</bug_when>
    <thetext>Created attachment 479025
REVERT of 310871@main

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>2199302</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-11 16:53:57 -0700</bug_when>
    <thetext>Committed 311015@main (ca8836a851a2): &lt;https://commits.webkit.org/311015@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479025.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2199303</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-11 16:54:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/174576578&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479025</attachid>
            <date>2026-04-11 16:51:18 -0700</date>
            <delta_ts>2026-04-11 16:53:57 -0700</delta_ts>
            <desc>REVERT of 310871@main</desc>
            <filename>bug-312063-20260411235118.patch</filename>
            <type>text/plain</type>
            <size>208247</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAwYmI3NDk1ZDVkNzkwMGM3MDU2OTRjNmJmYmY4YzNiODlkNmFhZGUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTYXQsIDExIEFwciAyMDI2IDIzOjUxOjE2ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDMxMDg3MUBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxMjA2MwoKUmV2ZXJ0IGFzIEFTYW4gYm90IGlzc3VlIGdldHMg
d29ya2Fyb3VuZGVkCgpSZXZlcnRlZCBjaGFuZ2VzZXQ6CgoiVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IDMxMDgxN0BtYWluIChmZTQxMGU2ZTdiY2YpIgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzExODc1Cmh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnLzMxMDg3MUBtYWlu
Ci0tLQogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogIHwgIDMw
ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgfCAgIDUg
KwogLi4uL2IzL0IzQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgICAgICAgICAgIHwgIDMyICsr
CiAuLi4vYjMvQjNBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggICAgICAgICAgICAgfCAgIDcgKwog
Li4uL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwICAgIHwgMzI5ICsrKysr
KysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwICAgICAgIHwg
ICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaCAgICAgICAgICAgICB8ICAg
MSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAgICAgfCA0NDkg
KysrKysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggICAg
ICAgICAgIHwgICA0ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAg
ICAgICB8ICAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaCAgICAg
ICAgfCAgIDUgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3Bw
IHwgIDI3ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCAgICAgICB8
ICAyMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgICAgICAgICAgfCAg
MzEgKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggICAgICAgICAgICB8ICAx
MSArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmggICAgIHwgIDEz
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcCAgICAgICB8ICAgOSAr
CiAuLi4vYjMvQjNXYXNtQXJyYXlFbGVtZW50VmFsdWUuY3BwICAgICAgICAgICAgfCAgMzcgKysK
IC4uLi9iMy9CM1dhc21BcnJheUVsZW1lbnRWYWx1ZS5oICAgICAgICAgICAgICB8ICA3MiArKysK
IC4uLi9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUdldFZhbHVlLmNwcCB8ICA0OSArKwog
Li4uL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5R2V0VmFsdWUuaCAgIHwgIDYxICsrKwog
Li4uL2IzL0IzV2FzbUFycmF5TGVuZ3RoVmFsdWUuY3BwICAgICAgICAgICAgIHwgIDM3ICsrCiAu
Li4vYjMvQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5oICAgICAgICAgICAgICAgfCAgNjggKysrCiAu
Li4vSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlOZXdWYWx1ZS5jcHAgfCAgNDQgKysKIC4u
Li9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheU5ld1ZhbHVlLmggICB8IDEwNyArKysrCiAu
Li4vSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlTZXRWYWx1ZS5jcHAgfCAgNDkgKysKIC4u
Li9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheVNldFZhbHVlLmggICB8ICA2MiArKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCB8ICAgNyArLQogLi4u
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggIHwgICAyICstCiAuLi4v
d2FzbS9XYXNtT01HSVJHZW5lcmF0b3IuY3BwICAgICAgICAgICAgICAgfCA0OTggKysrKy0tLS0t
LS0tLS0tLS0tCiAuLi4vc3RyZXNzL3dhc20tYXJyYXktb21nLWFycmF5LWxlbmd0aC1jc2UuanMg
fCAxNzAgKysrKysrCiAuLi4vd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWctYXJyYXktbmV3Lmpz
ICAgfCAzMDIgKysrKysrKysrKysKIEpTVGVzdHMvd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWct
Y3NlLmpzICAgICB8IDE3MSArKysrKysKIC4uLi9zdHJlc3Mvd2FzbS1hcnJheS1vbWctZWxlbWVu
dC10eXBlcy5qcyAgICB8IDI5NSArKysrKysrKysrKwogLi4uL3N0cmVzcy93YXNtLWFycmF5LW9t
Zy1wYWNrZWQtdHlwZXMuanMgICAgIHwgMTQ5ICsrKysrKwogMzUgZmlsZXMgY2hhbmdlZCwgMjY2
MiBpbnNlcnRpb25zKCspLCA0OTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5RWxlbWVudFZhbHVlLmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUVsZW1lbnRW
YWx1ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2Fz
bUFycmF5R2V0VmFsdWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2FzbUFycmF5R2V0VmFsdWUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUxlbmd0aFZhbHVlLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUxlbmd0aFZhbHVlLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlO
ZXdWYWx1ZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNXYXNtQXJyYXlOZXdWYWx1ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzV2FzbUFycmF5U2V0VmFsdWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5U2V0VmFsdWUuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IEpTVGVzdHMvd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWctYXJyYXktbGVuZ3RoLWNz
ZS5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1v
bWctYXJyYXktbmV3LmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3N0cmVzcy93
YXNtLWFycmF5LW9tZy1jc2UuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vc3Ry
ZXNzL3dhc20tYXJyYXktb21nLWVsZW1lbnQtdHlwZXMuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBK
U1Rlc3RzL3dhc20vc3RyZXNzL3dhc20tYXJyYXktb21nLXBhY2tlZC10eXBlcy5qcwoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDE1OTI1MWM3MzkyLi45Y2JiNGJmNGMzYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTA1LDYgKzIxMDUsMTEgQEAKIAkJRTM5
NTJDMTkyRjFEREY1NzAwRjVCRUU4IC8qIEIzV2FzbVN0cnVjdE5ld1ZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkMxNDJGMURERjU3MDBG
NUJFRTggLyogQjNXYXNtU3RydWN0TmV3VmFsdWUuaCAqLzsgfTsKIAkJRTM5NTJDMUEyRjFEREY1
NzAwRjVCRUU4IC8qIEIzV2FzbVN0cnVjdEZpZWxkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyQzEwMkYxRERGNTcwMEY1QkVFOCAvKiBC
M1dhc21TdHJ1Y3RGaWVsZFZhbHVlLmggKi87IH07CiAJCUUzOTUyQzFCMkYxRERGNTcwMEY1QkVF
OCAvKiBCM1dhc21TdHJ1Y3RTZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NTJDMTYyRjFEREY1NzAwRjVCRUU4IC8qIEIzV2FzbVN0cnVj
dFNldFZhbHVlLmggKi87IH07CisJCUUzQTExQzAwMkYyQTAwMDAwMEY1QkVFOCAvKiBCM1dhc21B
cnJheUVsZW1lbnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNBMTFDMDEyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFycmF5RWxlbWVudFZh
bHVlLmggKi87IH07CisJCUUzQTExQzAyMkYyQTAwMDAwMEY1QkVFOCAvKiBCM1dhc21BcnJheUdl
dFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0ExMUMwMzJGMkEwMDAwMDBGNUJFRTggLyogQjNXYXNtQXJyYXlHZXRWYWx1ZS5oICovOyB9Owor
CQlFMjRBNkZEQkNGMTE0Qzc4OTcyRTU3OTkgLyogQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzZBNzY4MzI1NEY2
NDg0RDkyNUVBN0ZFIC8qIEIzV2FzbUFycmF5TGVuZ3RoVmFsdWUuaCAqLzsgfTsKKwkJRTNBMTFD
MDQyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFycmF5TmV3VmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTExQzA1MkYyQTAwMDAwMEY1QkVF
OCAvKiBCM1dhc21BcnJheU5ld1ZhbHVlLmggKi87IH07CisJCUUzQTExQzA2MkYyQTAwMDAwMEY1
QkVFOCAvKiBCM1dhc21BcnJheVNldFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ExMUMwNzJGMkEwMDAwMDBGNUJFRTggLyogQjNXYXNtQXJy
YXlTZXRWYWx1ZS5oICovOyB9OwogCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50bERh
dGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
ICovOyB9OwogCQlFMzlCRjM5OTIyQTIyODhCMDBCRDE4M0UgLyogU3ltYm9sVGFibGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlCRjM5
ODIyQTIyODhCMDBCRDE4M0UgLyogU3ltYm9sVGFibGVJbmxpbmVzLmggKi87IH07CiAJCUUzOUQ0
NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4
MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgfTsKQEAgLTYwMzYsNiArNjA0MSwxNiBAQAog
CQlFMzk1MkMxNTJGMURERjU3MDBGNUJFRTggLyogQjNXYXNtU3RydWN0TmV3VmFsdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtU3RydWN0TmV3VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNX
YXNtU3RydWN0TmV3VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk1
MkMxNjJGMURERjU3MDBGNUJFRTggLyogQjNXYXNtU3RydWN0U2V0VmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNXYXNtU3RydWN0U2V0VmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbVN0cnVjdFNldFZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTUyQzE3MkYxRERGNTcwMEY1
QkVFOCAvKiBCM1dhc21TdHJ1Y3RTZXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dh
c21TdHJ1Y3RTZXRWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21TdHJ1Y3RTZXRWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTExQzAxMkYyQTAwMDAwMEY1QkVFOCAv
KiBCM1dhc21BcnJheUVsZW1lbnRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21BcnJheUVs
ZW1lbnRWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQXJyYXlFbGVtZW50VmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMTFDMDgyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2Fz
bUFycmF5RWxlbWVudFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUFycmF5RWxl
bWVudFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUFycmF5RWxlbWVudFZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMTFDMDMyRjJBMDAwMDAwRjVCRUU4IC8qIEIz
V2FzbUFycmF5R2V0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQXJyYXlHZXRWYWx1ZS5o
OyBwYXRoID0gYjMvQjNXYXNtQXJyYXlHZXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0ExMUMwOTJGMkEwMDAwMDBGNUJFRTggLyogQjNXYXNtQXJyYXlHZXRWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21BcnJheUdldFZhbHVlLmNwcDsgcGF0aCA9IGIz
L0IzV2FzbUFycmF5R2V0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
NkE3NjgzMjU0RjY0ODREOTI1RUE3RkUgLyogQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM1dhc21BcnJheUxlbmd0aFZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BcnJh
eUxlbmd0aFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0NDFGMkZGQ0JF
QjRGQ0Y5NTdCMzYwNiAvKiBCM1dhc21BcnJheUxlbmd0aFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzV2FzbUFycmF5TGVuZ3RoVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQXJyYXlM
ZW5ndGhWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTExQzA1MkYy
QTAwMDAwMEY1QkVFOCAvKiBCM1dhc21BcnJheU5ld1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
V2FzbUFycmF5TmV3VmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUFycmF5TmV3VmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMTFDMEEyRjJBMDAwMDAwRjVCRUU4IC8qIEIz
V2FzbUFycmF5TmV3VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQXJyYXlOZXdW
YWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21BcnJheU5ld1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMTFDMDcyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFycmF5
U2V0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQXJyYXlTZXRWYWx1ZS5oOyBwYXRoID0g
YjMvQjNXYXNtQXJyYXlTZXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0ExMUMwQjJGMkEwMDAwMDBGNUJFRTggLyogQjNXYXNtQXJyYXlTZXRWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCM1dhc21BcnJheVNldFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUFy
cmF5U2V0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOUJGMzk4MjJBMjI4OEIwMEJEMTgzRSAvKiBTeW1ib2xUYWJs
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sVGFibGVJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUQ4QjJDMjMwMjFFMUUw
MDI2NTg1MiAvKiBXYXNtT3BlcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT3Bl
cmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDE5LDYgKzcwMzQs
MTYgQEAKIAkJCQkwRjJCQkQ5NTFDNUZGM0Y1MDAyM0VGMjMgLyogQjNWYXJpYWJsZVZhbHVlLmgg
Ki8sCiAJCQkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5j
cHAgKi8sCiAJCQkJNTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1
ZS5oICovLAorCQkJCUUzQTExQzA4MkYyQTAwMDAwMEY1QkVFOCAvKiBCM1dhc21BcnJheUVsZW1l
bnRWYWx1ZS5jcHAgKi8sCisJCQkJRTNBMTFDMDEyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFy
cmF5RWxlbWVudFZhbHVlLmggKi8sCisJCQkJRTNBMTFDMDkyRjJBMDAwMDAwRjVCRUU4IC8qIEIz
V2FzbUFycmF5R2V0VmFsdWUuY3BwICovLAorCQkJCUUzQTExQzAzMkYyQTAwMDAwMEY1QkVFOCAv
KiBCM1dhc21BcnJheUdldFZhbHVlLmggKi8sCisJCQkJNDQ0MUYyRkZDQkVCNEZDRjk1N0IzNjA2
IC8qIEIzV2FzbUFycmF5TGVuZ3RoVmFsdWUuY3BwICovLAorCQkJCTM2QTc2ODMyNTRGNjQ4NEQ5
MjVFQTdGRSAvKiBCM1dhc21BcnJheUxlbmd0aFZhbHVlLmggKi8sCisJCQkJRTNBMTFDMEEyRjJB
MDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFycmF5TmV3VmFsdWUuY3BwICovLAorCQkJCUUzQTExQzA1
MkYyQTAwMDAwMEY1QkVFOCAvKiBCM1dhc21BcnJheU5ld1ZhbHVlLmggKi8sCisJCQkJRTNBMTFD
MEIyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFycmF5U2V0VmFsdWUuY3BwICovLAorCQkJCUUz
QTExQzA3MkYyQTAwMDAwMEY1QkVFOCAvKiBCM1dhc21BcnJheVNldFZhbHVlLmggKi8sCiAJCQkJ
NTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICov
LAogCQkJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggKi8sCiAJCQkJRTNDNkJCODUyRjIwQzRDQjAwMkU4RDg0IC8qIEIzV2FzbVJlZlR5cGVDaGVj
a1ZhbHVlLmNwcCAqLywKQEAgLTExMDQ1LDYgKzExMDcwLDExIEBACiAJCQkJMEZGNEI0Q0IxRTg4
OUQ3RTAwREJCRTg2IC8qIEIzVmFyaWFibGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQkJEOUExQzVGRjNGNTAwMjNFRjIzIC8qIEIzVmFyaWFibGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTNENDQ0REMxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTNBMTFDMDAyRjJBMDAwMDAwRjVCRUU4IC8qIEIzV2FzbUFy
cmF5RWxlbWVudFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0ExMUMwMjJGMkEwMDAwMDBG
NUJFRTggLyogQjNXYXNtQXJyYXlHZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTI0QTZG
REJDRjExNEM3ODk3MkU1Nzk5IC8qIEIzV2FzbUFycmF5TGVuZ3RoVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzQTExQzA0MkYyQTAwMDAwMEY1QkVFOCAvKiBCM1dhc21BcnJheU5ld1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0ExMUMwNjJGMkEwMDAwMDBGNUJFRTggLyogQjNXYXNt
QXJyYXlTZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdF
NEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQzZC
Qjg3MkYyMEM0Q0IwMDJFOEQ4NCAvKiBCM1dhc21SZWZUeXBlQ2hlY2tWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTM5NTJDMUEyRjFEREY1NzAwRjVCRUU4IC8qIEIzV2FzbVN0cnVjdEZpZWxk
VmFsdWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ3
ODY3NTE2MjIyZi4uYmM1NDM0MjhkODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBA
IC0xOTEsNiArMTkxLDExIEBAIGIzL0IzVmFyaWFibGVMaXZlbmVzcy5jcHAKIGIzL0IzVmFyaWFi
bGVWYWx1ZS5jcHAKIGIzL0IzV2FzbUFkZHJlc3NWYWx1ZS5jcHAKIGIzL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuY3BwCitiMy9CM1dhc21BcnJheUVsZW1lbnRWYWx1ZS5jcHAKK2IzL0IzV2FzbUFy
cmF5R2V0VmFsdWUuY3BwCitiMy9CM1dhc21BcnJheUxlbmd0aFZhbHVlLmNwcAorYjMvQjNXYXNt
QXJyYXlOZXdWYWx1ZS5jcHAKK2IzL0IzV2FzbUFycmF5U2V0VmFsdWUuY3BwCiBiMy9CM1dhc21T
dHJ1Y3RGaWVsZFZhbHVlLmNwcAogYjMvQjNXYXNtU3RydWN0R2V0VmFsdWUuY3BwCiBiMy9CM1dh
c21TdHJ1Y3ROZXdWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Fic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggNDA5OWVjNTAxYTlhLi40YjYyYjdj
YWJkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Fic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Fic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0zMyw2ICszMyw5IEBACiAjaW5jbHVkZSAiQjNNZW1vcnlW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUdldFZhbHVlLmgiCisjaW5jbHVkZSAi
QjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFycmF5U2V0VmFsdWUu
aCIKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb25jYXRLZXlBdG9t
U3RyaW5nQ2FjaGUuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKQEAgLTY1LDYgKzY4LDgg
QEAKIAogbmFtZXNwYWNlIEpTQzo6QjMgewogCitXVEZfTUFLRV9UWk9ORV9BTExPQ0FURURfSU1Q
TChBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKKwogQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeSgpCiAgICAgOiByb290KG51bGxwdHIsICJqc2NSb290IikKIApA
QCAtMTY4LDYgKzE3MywyMSBAQCB2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
V2FzbVN0cnVjdFNldChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbAogICAgIG1faGVhcEZv
cldhc21TdHJ1Y3RTZXQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCit2
b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlV2FzbUFycmF5R2V0KGNvbnN0IEFi
c3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQoreworICAgIG1faGVhcEZvcldhc21BcnJh
eUdldC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7Cit9CisKK3ZvaWQgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVXYXNtQXJyYXlTZXQoY29uc3QgQWJzdHJhY3RIZWFw
KiBoZWFwLCBWYWx1ZSogdmFsdWUpCit7CisgICAgbV9oZWFwRm9yV2FzbUFycmF5U2V0LmFwcGVu
ZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZVdhc21BcnJheUxlbmd0aChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IFZhbHVlKiB2YWx1ZSkKK3sKKyAgICBtX2hlYXBGb3JXYXNtQXJyYXlMZW5ndGguYXBwZW5kKEhl
YXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOworfQorCiB2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUluc3RydWN0aW9ucygpCiB7CiAgICAgcm9vdC5j
b21wdXRlKCk7CkBAIC0yMTMsNiArMjMzLDE4IEBAIHZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKCkKICAgICAgICAgYXV0byog
d2FzbVN0cnVjdFNldCA9IGVudHJ5LnZhbHVlLT5hczxXYXNtU3RydWN0U2V0VmFsdWU+KCk7CiAg
ICAgICAgIHdhc21TdHJ1Y3RTZXQtPnNldFJhbmdlKHJhbmdlRm9yKGVudHJ5LmhlYXApKTsKICAg
ICB9CisgICAgZm9yIChIZWFwRm9yVmFsdWUgZW50cnkgOiBtX2hlYXBGb3JXYXNtQXJyYXlHZXQp
IHsKKyAgICAgICAgYXV0byogd2FzbUFycmF5R2V0ID0gZW50cnkudmFsdWUtPmFzPFdhc21BcnJh
eUdldFZhbHVlPigpOworICAgICAgICB3YXNtQXJyYXlHZXQtPnNldFJhbmdlKHJhbmdlRm9yKGVu
dHJ5LmhlYXApKTsKKyAgICB9CisgICAgZm9yIChIZWFwRm9yVmFsdWUgZW50cnkgOiBtX2hlYXBG
b3JXYXNtQXJyYXlTZXQpIHsKKyAgICAgICAgYXV0byogd2FzbUFycmF5U2V0ID0gZW50cnkudmFs
dWUtPmFzPFdhc21BcnJheVNldFZhbHVlPigpOworICAgICAgICB3YXNtQXJyYXlTZXQtPnNldFJh
bmdlKHJhbmdlRm9yKGVudHJ5LmhlYXApKTsKKyAgICB9CisgICAgZm9yIChIZWFwRm9yVmFsdWUg
ZW50cnkgOiBtX2hlYXBGb3JXYXNtQXJyYXlMZW5ndGgpIHsKKyAgICAgICAgYXV0byogd2FzbUFy
cmF5TGVuZ3RoID0gZW50cnkudmFsdWUtPmFzPFdhc21BcnJheUxlbmd0aFZhbHVlPigpOworICAg
ICAgICB3YXNtQXJyYXlMZW5ndGgtPnNldFJhbmdlKHJhbmdlRm9yKGVudHJ5LmhlYXApKTsKKyAg
ICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0Fic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Fic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCAzNjkzYTgwYWUwMTAu
LmFjOGMxNjlkMTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Fi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtMjYzLDYgKzI2Myw3IEBAIG5hbWVzcGFjZSBKU0M6
OkIzIHsKIAogY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7CisgICAgV1RGX01BS0VfVFpPTkVfQUxM
T0NBVEVEKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOwogcHVibGljOgogICAgIEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkoKTsKICAgICB+QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOwpAQCAtMzQ5LDYg
KzM1MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY29yYXRlRmVuY2VkQWNjZXNzKGNvbnN0IEFi
c3RyYWN0SGVhcCosIFZhbHVlKik7CiAgICAgdm9pZCBkZWNvcmF0ZVdhc21TdHJ1Y3RHZXQoY29u
c3QgQWJzdHJhY3RIZWFwKiwgVmFsdWUqKTsKICAgICB2b2lkIGRlY29yYXRlV2FzbVN0cnVjdFNl
dChjb25zdCBBYnN0cmFjdEhlYXAqLCBWYWx1ZSopOworICAgIHZvaWQgZGVjb3JhdGVXYXNtQXJy
YXlHZXQoY29uc3QgQWJzdHJhY3RIZWFwKiwgVmFsdWUqKTsKKyAgICB2b2lkIGRlY29yYXRlV2Fz
bUFycmF5U2V0KGNvbnN0IEFic3RyYWN0SGVhcCosIFZhbHVlKik7CisgICAgdm9pZCBkZWNvcmF0
ZVdhc21BcnJheUxlbmd0aChjb25zdCBBYnN0cmFjdEhlYXAqLCBWYWx1ZSopOwogCiAgICAgdm9p
ZCBjb21wdXRlUmFuZ2VzQW5kRGVjb3JhdGVJbnN0cnVjdGlvbnMoKTsKIApAQCAtMzc5LDYgKzM4
Myw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEhlYXBGb3JWYWx1ZT4gbV9oZWFwRm9yRmVuY2Vk
QWNjZXNzOwogICAgIFZlY3RvcjxIZWFwRm9yVmFsdWU+IG1faGVhcEZvcldhc21TdHJ1Y3RHZXQ7
CiAgICAgVmVjdG9yPEhlYXBGb3JWYWx1ZT4gbV9oZWFwRm9yV2FzbVN0cnVjdFNldDsKKyAgICBW
ZWN0b3I8SGVhcEZvclZhbHVlPiBtX2hlYXBGb3JXYXNtQXJyYXlHZXQ7CisgICAgVmVjdG9yPEhl
YXBGb3JWYWx1ZT4gbV9oZWFwRm9yV2FzbUFycmF5U2V0OworICAgIFZlY3RvcjxIZWFwRm9yVmFs
dWU+IG1faGVhcEZvcldhc21BcnJheUxlbmd0aDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0
ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAppbmRleCBhZDM2ZWJmMjFhZWIuLmUwMjY3ODk1MDI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcApAQCAtMzgsNyArMzgsMTEgQEAKICNpbmNsdWRl
ICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1B1cmVDU0UuaCIKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzVmFsdWVLZXlJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlFbGVtZW50VmFs
dWUuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUdldFZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNt
QXJyYXlTZXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbVN0cnVjdEZpZWxkVmFsdWUuaCIKICNp
bmNsdWRlICJCM1dhc21TdHJ1Y3RHZXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbVN0cnVjdFNl
dFZhbHVlLmgiCkBAIC02Nyw2ICs3MSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CiAKIHVzaW5nIE1lbW9yeU1hdGNoZXMgPSBWZWN0b3I8TWVtb3J5VmFsdWUqLCAx
PjsKIHVzaW5nIFdhc21TdHJ1Y3RNYXRjaGVzID0gVmVjdG9yPFdhc21TdHJ1Y3RGaWVsZFZhbHVl
KiwgMT47Cit1c2luZyBXYXNtQXJyYXlNYXRjaGVzID0gVmVjdG9yPFdhc21BcnJheUVsZW1lbnRW
YWx1ZSosIDE+OwogCiBjbGFzcyBNZW1vcnlWYWx1ZU1hcCB7CiBwdWJsaWM6CkBAIC0xOTUsNiAr
MjAwLDY0IEBAIHByaXZhdGU6CiAgICAgVW5jaGVja2VkS2V5SGFzaE1hcDxXYXNtU3RydWN0Rmll
bGRLZXksIE1hdGNoZXM+IG1fbWFwOwogfTsKIAordXNpbmcgV2FzbUFycmF5RWxlbWVudEtleSA9
IHN0ZDo6dHVwbGU8VmFsdWUqLCBWYWx1ZSo+OyAvLyAoYXJyYXlQdHIsIGluZGV4VmFsdWUpCisK
K2NsYXNzIFdhc21BcnJheVZhbHVlTWFwIHsKK3B1YmxpYzoKKyAgICBXYXNtQXJyYXlWYWx1ZU1h
cCgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgYWRkKFdhc21BcnJheUVsZW1lbnRWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBXYXNtQXJyYXlFbGVtZW50S2V5IGtleSh2YWx1ZS0+Y2hpbGQo
MCksIHZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgIE1hdGNoZXMmIG1hdGNoZXMgPSBtX21hcC5h
ZGQoa2V5LCBNYXRjaGVzKCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKG1hdGNoZXMu
Y29udGFpbnModmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtYXRjaGVzLmFw
cGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAg
ICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBt
X21hcC5yZW1vdmVJZigKKyAgICAgICAgICAgIFsmXShVbmNoZWNrZWRLZXlIYXNoTWFwPFdhc21B
cnJheUVsZW1lbnRLZXksIE1hdGNoZXM+OjpLZXlWYWx1ZVBhaXJUeXBlJiBlbnRyeSkgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAg
ICAgICAgICAgICAgICAgIFsmXShWYWx1ZSogdmFsdWUpIC0+IGJvb2wgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGVsZW0gPSB2YWx1ZS0+YXM8V2FzbUFycmF5RWxlbWVudFZh
bHVlPigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKGVsZW0p
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS5pc0VtcHR5KCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
ICAgIFdhc21BcnJheUVsZW1lbnRWYWx1ZSogZmluZChWYWx1ZSogYXJyYXlQdHIsIFZhbHVlKiBp
bmRleFZhbHVlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9tYXAuZmluZChXYXNtQXJyYXlFbGVtZW50S2V5KGFycmF5UHRyLCBpbmRleFZhbHVl
KSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIGZvciAoYXV0byogY2FuZGlkYXRlIDogaXRlci0+dmFsdWUpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBjYW5kaWRhdGVFbGVtID0gY2FuZGlkYXRlLT5hczxXYXNt
QXJyYXlFbGVtZW50VmFsdWU+KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnVuY3RvcihjYW5k
aWRhdGVFbGVtKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUVsZW07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBv
dXQucHJpbnQoInsiX3MpOworICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX21hcCkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgIigi
LCBwb2ludGVyRHVtcChzdGQ6OmdldDwwPihlbnRyeS5rZXkpKSwgIiwiLCBwb2ludGVyRHVtcChz
dGQ6OmdldDwxPihlbnRyeS5rZXkpKSwgIik9PiJfcywgcG9pbnRlckxpc3REdW1wKGVudHJ5LnZh
bHVlKSk7CisgICAgICAgIG91dC5wcmludCgifSJfcyk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFVuY2hlY2tlZEtleUhhc2hNYXA8V2FzbUFycmF5RWxlbWVudEtleSwgTWF0Y2hlcz4gbV9tYXA7
Cit9OworCiBzdHJ1Y3QgSW1wdXJlQmxvY2tEYXRhIHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKICAgICB7CkBAIC0yMDIsNiArMjY1LDcgQEAgc3RydWN0IEltcHVyZUJs
b2NrRGF0YSB7CiAgICAgICAgICAgICAie3JlYWRzID0gIiwgcmVhZHMsICIsIHdyaXRlcyA9ICIs
IHdyaXRlcywKICAgICAgICAgICAgICIsIG1lbW9yeVN0b3Jlc0F0SGVhZCA9ICIsIG1lbW9yeVN0
b3Jlc0F0SGVhZCwgIiwgbWVtb3J5VmFsdWVzQXRUYWlsID0gIiwgbWVtb3J5VmFsdWVzQXRUYWls
LAogICAgICAgICAgICAgIiwgd2FzbVN0cnVjdFN0b3Jlc0F0SGVhZCA9ICIsIHdhc21TdHJ1Y3RT
dG9yZXNBdEhlYWQsICIsIHdhc21TdHJ1Y3RWYWx1ZXNBdFRhaWwgPSAiLCB3YXNtU3RydWN0VmFs
dWVzQXRUYWlsLAorICAgICAgICAgICAgIiwgd2FzbUFycmF5U3RvcmVzQXRIZWFkID0gIiwgd2Fz
bUFycmF5U3RvcmVzQXRIZWFkLCAiLCB3YXNtQXJyYXlWYWx1ZXNBdFRhaWwgPSAiLCB3YXNtQXJy
YXlWYWx1ZXNBdFRhaWwsCiAgICAgICAgICAgICAifSIpOwogICAgIH0KIApAQCAtMjE2LDYgKzI4
MCw5IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEgewogICAgIFdhc21TdHJ1Y3RWYWx1ZU1hcCB3
YXNtU3RydWN0U3RvcmVzQXRIZWFkOwogICAgIFdhc21TdHJ1Y3RWYWx1ZU1hcCB3YXNtU3RydWN0
VmFsdWVzQXRUYWlsOwogCisgICAgV2FzbUFycmF5VmFsdWVNYXAgd2FzbUFycmF5U3RvcmVzQXRI
ZWFkOworICAgIFdhc21BcnJheVZhbHVlTWFwIHdhc21BcnJheVZhbHVlc0F0VGFpbDsKKwogICAg
IC8vIFRoaXMgTWFwcyB4LT55IGluICJ5ID0gV2FzbUFkZHJlc3MoQHgpIgogICAgIFVuY2hlY2tl
ZEtleUhhc2hNYXA8VmFsdWUqLCBWYWx1ZSo+IG1fY2FuZGlkYXRlV2FzbUFkZHJlc3Nlc0F0VGFp
bDsKIH07CkBAIC0yNDQsNiArMzExLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIEVmZmVj
dHMgZWZmZWN0cyA9IHZhbHVlLT5lZmZlY3RzKCk7CiAgICAgICAgICAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgICAgICAgICBX
YXNtU3RydWN0RmllbGRWYWx1ZSogd2FzbVN0cnVjdEZpZWxkID0gdmFsdWUtPmFzPFdhc21TdHJ1
Y3RGaWVsZFZhbHVlPigpOworICAgICAgICAgICAgICAgIFdhc21BcnJheUVsZW1lbnRWYWx1ZSog
d2FzbUFycmF5RWxlbSA9IHZhbHVlLT5hczxXYXNtQXJyYXlFbGVtZW50VmFsdWU+KCk7CiAKICAg
ICAgICAgICAgICAgICBpZiAobWVtb3J5KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1v
cnktPmlzU3RvcmUoKQpAQCAtMjU5LDYgKzMyNywxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiAhZGF0YS5mZW5jZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
d2FzbVN0cnVjdFN0b3Jlc0F0SGVhZC5hZGQod2FzbVN0cnVjdEZpZWxkKTsKICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHdhc21BcnJheUVsZW0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHdhc21BcnJheUVsZW0tPm9wY29kZSgpID09IFdhc21BcnJheVNldAorICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEucmVhZHMub3ZlcmxhcHMod2FzbUFycmF5RWxl
bS0+cmFuZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVy
bGFwcyh3YXNtQXJyYXlFbGVtLT5yYW5nZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
IWRhdGEuZmVuY2UpCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLndhc21BcnJheVN0b3Jl
c0F0SGVhZC5hZGQod2FzbUFycmF5RWxlbSk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKQEAgLTI3MCw2ICszNDUs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWls
LmFkZChtZW1vcnkpOwogICAgICAgICAgICAgICAgIGlmICh3YXNtU3RydWN0RmllbGQpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEud2FzbVN0cnVjdFZhbHVlc0F0VGFpbC5hZGQod2FzbVN0cnVj
dEZpZWxkKTsKKyAgICAgICAgICAgICAgICBpZiAod2FzbUFycmF5RWxlbSkKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS53YXNtQXJyYXlWYWx1ZXNBdFRhaWwuYWRkKHdhc21BcnJheUVsZW0pOwog
CiAgICAgICAgICAgICAgICAgaWYgKFdhc21BZGRyZXNzVmFsdWUqIHdhc21BZGRyZXNzID0gdmFs
dWUtPmFzPFdhc21BZGRyZXNzVmFsdWU+KCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEubV9j
YW5kaWRhdGVXYXNtQWRkcmVzc2VzQXRUYWlsLmFkZCh3YXNtQWRkcmVzcy0+Y2hpbGQoMCksIHdh
c21BZGRyZXNzKTsKQEAgLTMzMCw2ICs0MDcsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCisgICAgICAgIC8vIElmIGEgV2FzbUFycmF5TGVuZ3RoIGlzIGRv
bWluYXRlZCBieSB0aGUgc2FtZSBrZXkncyBXYXNtQXJyYXlMZW5ndGgsCisgICAgICAgIC8vIHRy
YXBzLWJpdCBkb2VzIG5vdCBtYXR0ZXIgc2luY2UgZG9taW5hdGluZyBXYXNtQXJyYXlMZW5ndGgg
YWxyZWFkeSBlbnN1cmVkIHRoYXQKKyAgICAgICAgLy8gdHJhcHMgY2hlY2sgaXMgYWxyZWFkeSBk
b25lLiBQdXJlQ1NFIGFscmVhZHkgaGFuZGxlcyBzYW1lLXZhcmlhbnQgbWF0Y2hlcyBhYm92ZTsK
KyAgICAgICAgLy8gdGhpcyBxdWVyaWVzIGZvciB0aGUgb3Bwb3NpdGUgdHJhcHMtYml0IHZhcmlh
bnQgdmlhIFZhbHVlS2V5IGxvb2t1cC4KKyAgICAgICAgaWYgKG1fdmFsdWUtPm9wY29kZSgpID09
IFdhc21BcnJheUxlbmd0aCkgeworICAgICAgICAgICAgS2luZCBhbHRLaW5kID0gbV92YWx1ZS0+
a2luZCgpOworICAgICAgICAgICAgYWx0S2luZC5zZXRUcmFwcyghYWx0S2luZC50cmFwcygpKTsK
KyAgICAgICAgICAgIFZhbHVlS2V5IGFsdEtleShhbHRLaW5kLCBtX3ZhbHVlLT50eXBlKCksIG1f
dmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIGlmIChWYWx1ZSogbWF0Y2ggPSBtX3B1cmVD
U0UuZmluZE1hdGNoKGFsdEtleSwgbV9ibG9jaywgbV9kb21pbmF0b3JzKSkgeworICAgICAgICAg
ICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobWF0Y2gpOworICAgICAgICAgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKFdhc21BZGRyZXNzVmFsdWUqIHdhc21BZGRy
ZXNzID0gbV92YWx1ZS0+YXM8V2FzbUFkZHJlc3NWYWx1ZT4oKSkgewogICAgICAgICAgICAgcHJv
Y2Vzc1dhc21BZGRyZXNzVmFsdWUod2FzbUFkZHJlc3MpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzQ1LDYgKzQzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgV2FzbVN0cnVjdEdldFZhbHVl
KiBzdHJ1Y3RHZXQgPSBtX3ZhbHVlLT5hczxXYXNtU3RydWN0R2V0VmFsdWU+KCk7CiAgICAgICAg
IFdhc21TdHJ1Y3RTZXRWYWx1ZSogc3RydWN0U2V0ID0gbV92YWx1ZS0+YXM8V2FzbVN0cnVjdFNl
dFZhbHVlPigpOworICAgICAgICBXYXNtQXJyYXlHZXRWYWx1ZSogYXJyYXlHZXQgPSBtX3ZhbHVl
LT5hczxXYXNtQXJyYXlHZXRWYWx1ZT4oKTsKKyAgICAgICAgV2FzbUFycmF5U2V0VmFsdWUqIGFy
cmF5U2V0ID0gbV92YWx1ZS0+YXM8V2FzbUFycmF5U2V0VmFsdWU+KCk7CiAKICAgICAgICAgLy8g
QmVmb3JlIGNsb2JiZXIgLSB0cnkgdG8gZWxpbWluYXRlIHJlZHVuZGFudCBvcGVyYXRpb25zCiAg
ICAgICAgIGlmIChtZW1vcnkgJiYgcHJvY2Vzc01lbW9yeUJlZm9yZUNsb2JiZXIobWVtb3J5KSkK
QEAgLTM1Myw2ICs0NDcsOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoc3RydWN0U2V0ICYmIHBy
b2Nlc3NXYXNtU3RydWN0U2V0QmVmb3JlQ2xvYmJlcihzdHJ1Y3RTZXQpKQogICAgICAgICAgICAg
cmV0dXJuOwogCisgICAgICAgIGlmIChhcnJheVNldCAmJiBwcm9jZXNzV2FzbUFycmF5U2V0QmVm
b3JlQ2xvYmJlcihhcnJheVNldCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8g
Q2xvYmJlciBiYXNlZCBvbiB3cml0ZXMgLSB0aGlzIGhhbmRsZXMgYm90aCBNZW1vcnlWYWx1ZSBh
bmQgV2FzbVN0cnVjdCBvcGVyYXRpb25zCiAgICAgICAgIGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0g
ZWZmZWN0cy53cml0ZXMpCiAgICAgICAgICAgICBjbG9iYmVyKG1fZGF0YSwgd3JpdGVzKTsKQEAg
LTM2Nyw2ICs0NjQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHN0cnVjdFNldCkKICAgICAg
ICAgICAgIHByb2Nlc3NXYXNtU3RydWN0U2V0QWZ0ZXJDbG9iYmVyKHN0cnVjdFNldCk7CiAKKyAg
ICAgICAgaWYgKGFycmF5R2V0KQorICAgICAgICAgICAgcHJvY2Vzc1dhc21BcnJheUdldEFmdGVy
Q2xvYmJlcihhcnJheUdldCk7CisKKyAgICAgICAgaWYgKGFycmF5U2V0KQorICAgICAgICAgICAg
cHJvY2Vzc1dhc21BcnJheVNldEFmdGVyQ2xvYmJlcihhcnJheVNldCk7CisKICAgICAgICAgLy8g
VGhlIHJlYWRzIGluZm8gc2hvdWxkIGJlIHVwZGF0ZWQgZXZlbiB0aGUgYmxvY2sgaXMgcHJvY2Vz
c2VkCiAgICAgICAgIC8vIHNpbmNlIHRoZSBkb21pbmF0ZWQgc3RvcmUgbm9kZXMgbWF5IGRlcGVu
ZGVudCBvbiB0aGUgZGF0YQogICAgICAgICAvLyByZWFkIGZyb20gdGhlIHByb2Nlc3NlZCBibG9j
ay4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIG5lZWQgdG8KQEAgLTQzNiw2ICs1MzksMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLT5y
YW5nZSgpLm92ZXJsYXBzKHdyaXRlcyk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICBkYXRh
Lndhc21BcnJheVZhbHVlc0F0VGFpbC5yZW1vdmVJZigKKyAgICAgICAgICAgIFsmXShXYXNtQXJy
YXlFbGVtZW50VmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgZWxlbWVudCBp
cyBpbW11dGFibGUgKG9ubHkgYXBwbGllcyB0byBHZXQpLCBjbG9iYmVyaW5nIG5ldmVyIGNoYW5n
ZXMgdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBhcnJheUdldCA9IHZhbHVl
LT5hczxXYXNtQXJyYXlHZXRWYWx1ZT4oKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJy
YXlHZXQtPm11dGFiaWxpdHkoKSA9PSBNdXRhYmlsaXR5OjpJbW11dGFibGUpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS0+cmFuZ2UoKS5vdmVybGFwcyh3cml0ZXMpOworICAgICAgICAg
ICAgfSk7CiAgICAgfQogCiAgICAgdm9pZCBwcm9jZXNzTWVtb3J5QWZ0ZXJDbG9iYmVyKE1lbW9y
eVZhbHVlKiBtZW1vcnkpCkBAIC0xMTQwLDYgKzEyNTMsMjIyIEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgcHJvY2Vzc1dhc21BcnJheUdldEFmdGVy
Q2xvYmJlcihXYXNtQXJyYXlHZXRWYWx1ZSogYXJyYXlHZXQpCisgICAgeworICAgICAgICBWYWx1
ZSogYXJyYXlQdHIgPSBhcnJheUdldC0+Y2hpbGQoMCk7CisgICAgICAgIFZhbHVlKiBpbmRleFZh
bHVlID0gYXJyYXlHZXQtPmNoaWxkKDEpOworICAgICAgICBIZWFwUmFuZ2UgcmFuZ2UgPSBhcnJh
eUdldC0+cmFuZ2UoKTsKKworICAgICAgICBkYXRhTG9nTG5JZihCM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UsICIgICAgUHJvY2Vzc2luZyBXYXNtQXJyYXlH
ZXQ6ICIsICphcnJheUdldCk7CisgICAgICAgIFdhc21BcnJheU1hdGNoZXMgbWF0Y2hlcyA9IGZp
bmRXYXNtQXJyYXlWYWx1ZShhcnJheVB0ciwgaW5kZXhWYWx1ZSwgcmFuZ2UsIFsmXShXYXNtQXJy
YXlFbGVtZW50VmFsdWUqKSB7IHJldHVybiB0cnVlOyB9KTsKKyAgICAgICAgaWYgKHJlcGxhY2VX
YXNtQXJyYXlWYWx1ZShtYXRjaGVzLCBhcnJheUdldCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fZGF0YS53YXNtQXJyYXlWYWx1ZXNBdFRhaWwuYWRkKGFycmF5R2V0KTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CisgICAgV2FzbUFycmF5TWF0Y2hlcyBm
aW5kV2FzbUFycmF5VmFsdWUoVmFsdWUqIGFycmF5UHRyLCBWYWx1ZSogaW5kZXhWYWx1ZSwgSGVh
cFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKKyAgICB7CisgICAgICAgIC8vIENo
ZWNrIGxvY2FsIGJsb2NrIGZpcnN0CisgICAgICAgIGlmIChhdXRvKiBtYXRjaCA9IG1fZGF0YS53
YXNtQXJyYXlWYWx1ZXNBdFRhaWwuZmluZChhcnJheVB0ciwgaW5kZXhWYWx1ZSwgZmlsdGVyKSkg
eworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9u
c0ludGVybmFsOjp2ZXJib3NlLCAiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LiIpOwor
ICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2ggfTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICht
X2RhdGEud3JpdGVzLm92ZXJsYXBzKHJhbmdlKSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuSWYo
QjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlLCAiICAgIEdp
dmluZyB1cCBiZWNhdXNlIG9mIHdyaXRlcy4iKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIH0KKworICAgICAgICBCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OworICAgICAgICB3b3Jr
bGlzdC5wdXNoQWxsKG1fYmxvY2stPnByZWRlY2Vzc29ycygpKTsKKworICAgICAgICBXYXNtQXJy
YXlNYXRjaGVzIG1hdGNoZXM7CisKKyAgICAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0g
d29ya2xpc3QucG9wKCkpIHsKKyAgICAgICAgICAgIEltcHVyZUJsb2NrRGF0YSYgZGF0YSA9IG1f
aW1wdXJlQmxvY2tEYXRhW2Jsb2NrXTsKKworICAgICAgICAgICAgYXV0byogbWF0Y2ggPSBkYXRh
Lndhc21BcnJheVZhbHVlc0F0VGFpbC5maW5kKGFycmF5UHRyLCBpbmRleFZhbHVlLCBmaWx0ZXIp
OworICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoICE9IG1fdmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaCk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkYXRhLndyaXRlcy5vdmVybGFwcyhy
YW5nZSkpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihCM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UsICIgICAgR2l2aW5nIHVwIGJlY2F1c2Ugb2Yg
d3JpdGVzLiIpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICghYmxvY2stPm51bVByZWRlY2Vzc29ycygpKSB7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFs
Ojp2ZXJib3NlLCAiICAgIEdpdmluZyB1cCBiZWNhdXNlIGl0J3MgbGl2ZSBhdCByb290LiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHdvcmtsaXN0LnB1c2hBbGwoYmxvY2stPnByZWRlY2Vzc29ycygpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGRhdGFMb2dMbklmKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bDo6dmVyYm9zZSwgIiAgICBHb3QgbWF0Y2hlczogIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMp
KTsKKyAgICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfQorCisgICAgYm9vbCByZXBsYWNlV2Fz
bUFycmF5VmFsdWUoY29uc3QgV2FzbUFycmF5TWF0Y2hlcyYgbWF0Y2hlcywgV2FzbUFycmF5R2V0
VmFsdWUqIGFycmF5R2V0KQorICAgIHsKKyAgICAgICAgaWYgKG1hdGNoZXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGRhdGFMb2dMbklmKEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSwgIkVsaW1pbmF0aW5nICIs
ICptX3ZhbHVlLCAiIGR1ZSB0byAiLCBwb2ludGVyTGlzdER1bXAobWF0Y2hlcykpOworCisgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FM
IGNvbnN0IFdhc206OkFycmF5VHlwZSogYXJyYXlUeXBlID0gYXJyYXlHZXQtPmFycmF5VHlwZSgp
OworICAgICAgICBhdXRvIGVsZW1lbnRUeXBlID0gYXJyYXlUeXBlLT5lbGVtZW50VHlwZSgpLnR5
cGU7CisKKyAgICAgICAgYXV0byByZXBsYWNlID0gWyZdKFZhbHVlKiBkb21pbmF0aW5nTWF0Y2gs
IFZlY3RvcjxWYWx1ZSosIDE2PiYgZXh0cmFWYWx1ZXMpIC0+IFZhbHVlKiB7CisgICAgICAgICAg
ICBpZiAoYXV0byogYXJyYXlTZXQgPSBkb21pbmF0aW5nTWF0Y2gtPmFzPFdhc21BcnJheVNldFZh
bHVlPigpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIHN0b3JlZFZhbHVlID0gYXJyYXlTZXQt
PmNoaWxkKDIpOworICAgICAgICAgICAgICAgIFZhbHVlKiBmb3J3YXJkZWRWYWx1ZSA9IHN0b3Jl
ZFZhbHVlOworCisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHBhY2tlZCB0eXBlczogbWFzayB0
aGUgc3RvcmVkIHZhbHVlIHRvIG1hdGNoIHRoZSBlbGVtZW50IHNpemUKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudFR5cGUuaXM8V2FzbTo6UGFja2VkVHlwZT4oKSkgeworICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBtYXNrID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChl
bGVtZW50VHlwZS5hczxXYXNtOjpQYWNrZWRUeXBlPigpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgV2FzbTo6UGFja2VkVHlwZTo6STg6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXNr
ID0gMHhmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIFdhc206OlBhY2tlZFR5cGU6OkkxNjoKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2sgPSAweGZmZmY7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbWFza1ZhbHVlID0gbV9w
cm9jLmFkZDxDb25zdDMyVmFsdWU+KGFycmF5R2V0LT5vcmlnaW4oKSwgbWFzayk7CisgICAgICAg
ICAgICAgICAgICAgIGZvcndhcmRlZFZhbHVlID0gbV9wcm9jLmFkZDxWYWx1ZT4oQml0QW5kLCBh
cnJheUdldC0+b3JpZ2luKCksIHN0b3JlZFZhbHVlLCBtYXNrVmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICBleHRyYVZhbHVlcy5hcHBlbmQobWFza1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXh0cmFWYWx1ZXMuYXBwZW5kKGZvcndhcmRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJl
c3Npb25zSW50ZXJuYWw6OnZlcmJvc2UsICIgICAgRm9yd2FyZGluZyBmcm9tIFdhc21BcnJheVNl
dCB3aXRoIHZhbHVlOiAiLCAqZm9yd2FyZGVkVmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVy
biBmb3J3YXJkZWRWYWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGRv
bWluYXRpbmdNYXRjaDsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAobWF0Y2hlcy5zaXplKCkg
PT0gMSkgeworICAgICAgICAgICAgYXV0byogZG9taW5hdGluZ01hdGNoID0gbWF0Y2hlc1swXTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9taW5hdG9ycy5kb21pbmF0ZXMoZG9taW5h
dGluZ01hdGNoLT5vd25lciwgbV9ibG9jaykpOworCisgICAgICAgICAgICBWZWN0b3I8VmFsdWUq
LCAxNj4gZXh0cmFWYWx1ZXM7CisgICAgICAgICAgICBhdXRvKiB2YWx1ZSA9IHJlcGxhY2UoZG9t
aW5hdGluZ01hdGNoLCBleHRyYVZhbHVlcyk7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBleHRyYVZhbHVlIDogZXh0cmFWYWx1ZXMpCisgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0VmFsdWUobV9pbmRleCwgZXh0cmFWYWx1ZSk7
CisgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgVmFyaWFibGUqIHZhcmlh
YmxlID0gbV9wcm9jLmFkZFZhcmlhYmxlKG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgIFZhcmlh
YmxlVmFsdWUqIGdldCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYXJpYWJsZVZhbHVlPihtX2lu
ZGV4LCBHZXQsIG1fdmFsdWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7CisgICAgICAgIG1fdmFsdWUt
PnJlcGxhY2VXaXRoSWRlbnRpdHkoZ2V0KTsKKworICAgICAgICBmb3IgKGF1dG8qIG1hdGNoIDog
bWF0Y2hlcykgeworICAgICAgICAgICAgVmVjdG9yPFZhbHVlKj4mIHNldHMgPSBtX3NldHMuYWRk
KG1hdGNoLCBWZWN0b3I8VmFsdWUqPigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBW
ZWN0b3I8VmFsdWUqLCAxNj4gZXh0cmFWYWx1ZXM7CisgICAgICAgICAgICBhdXRvKiB2YWx1ZSA9
IHJlcGxhY2UobWF0Y2gsIGV4dHJhVmFsdWVzKTsKKyAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7
CisgICAgICAgICAgICBzZXRzLmFwcGVuZFZlY3RvcihleHRyYVZhbHVlcyk7CisgICAgICAgICAg
ICBWYWx1ZSogc2V0ID0gbV9wcm9jLmFkZDxWYXJpYWJsZVZhbHVlPihTZXQsIG1fdmFsdWUtPm9y
aWdpbigpLCB2YXJpYWJsZSwgdmFsdWUpOworICAgICAgICAgICAgc2V0cy5hcHBlbmQoc2V0KTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgcHJv
Y2Vzc1dhc21BcnJheVNldEJlZm9yZUNsb2JiZXIoV2FzbUFycmF5U2V0VmFsdWUqIGFycmF5U2V0
KQorICAgIHsKKyAgICAgICAgVmFsdWUqIGFycmF5UHRyID0gYXJyYXlTZXQtPmNoaWxkKDApOwor
ICAgICAgICBWYWx1ZSogaW5kZXhWYWx1ZSA9IGFycmF5U2V0LT5jaGlsZCgxKTsKKyAgICAgICAg
VmFsdWUqIHZhbHVlID0gYXJyYXlTZXQtPmNoaWxkKDIpOworCisgICAgICAgIGRhdGFMb2dMbklm
KEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSwgIiAgICBQ
cm9jZXNzaW5nIFdhc21BcnJheVNldCAoYmVmb3JlIGNsb2JiZXIpOiAiLCAqYXJyYXlTZXQpOwor
CisgICAgICAgIFdhc21BcnJheU1hdGNoZXMgbWF0Y2hlcyA9IGZpbmRXYXNtQXJyYXlWYWx1ZShh
cnJheVB0ciwgaW5kZXhWYWx1ZSwgYXJyYXlTZXQtPnJhbmdlKCksIFsmXShXYXNtQXJyYXlFbGVt
ZW50VmFsdWUqIGNhbmRpZGF0ZSkgeworICAgICAgICAgICAgLy8gU2V0KEBhcnIsIEBpZHgsIEB6
KSBhZnRlciBTZXQoQGFyciwgQGlkeCwgQHopIC0+IHJlZHVuZGFudAorICAgICAgICAgICAgaWYg
KGF1dG8qIGNhbmRpZGF0ZVNldCA9IGNhbmRpZGF0ZS0+YXM8V2FzbUFycmF5U2V0VmFsdWU+KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVNldC0+Y2hpbGQoMikgPT0gdmFsdWU7
CisKKyAgICAgICAgICAgIC8vIEdldChAYXJyLCBAaWR4KSBmb2xsb3dlZCBieSBTZXQoQGFyciwg
QGlkeCwgQGdldF9yZXN1bHQpIC0+IG5vLW9wCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlk
YXRlR2V0ID0gY2FuZGlkYXRlLT5hczxXYXNtQXJyYXlHZXRWYWx1ZT4oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY2FuZGlkYXRlR2V0ID09IHZhbHVlOworCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0pOworICAgICAgICBpZiAobWF0Y2hlcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhOb3Ao
KTsKKyAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgdm9pZCBwcm9jZXNzV2FzbUFycmF5U2V0QWZ0ZXJDbG9iYmVyKFdhc21BcnJheVNl
dFZhbHVlKiBhcnJheVNldCkKKyAgICB7CisgICAgICAgIFZhbHVlKiBhcnJheVB0ciA9IGFycmF5
U2V0LT5jaGlsZCgwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4VmFsdWUgPSBhcnJheVNldC0+Y2hp
bGQoMSk7CisgICAgICAgIEhlYXBSYW5nZSByYW5nZSA9IGFycmF5U2V0LT5yYW5nZSgpOworCisg
ICAgICAgIGRhdGFMb2dMbklmKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bDo6dmVyYm9zZSwgIiAgICBQcm9jZXNzaW5nIFdhc21BcnJheVNldCAoYWZ0ZXIgY2xvYmJlcik6
ICIsICphcnJheVNldCk7CisKKyAgICAgICAgaWYgKCFhcnJheVNldC0+dHJhcHMoKSAmJiBmaW5k
V2FzbUFycmF5U2V0QWZ0ZXJDbG9iYmVyKGFycmF5UHRyLCBpbmRleFZhbHVlLCByYW5nZSkpIHsK
KyAgICAgICAgICAgIGRhdGFMb2dMbklmKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJ
bnRlcm5hbDo6dmVyYm9zZSwgIiAgICBGb3J3YXJkIGVsaW1pbmF0aW9uIC0gcmVwbGFjaW5nIHdp
dGggbm9wIik7CisgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aE5vcCgpOworICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIG1fZGF0YS53YXNtQXJyYXlWYWx1ZXNBdFRhaWwuYWRkKGFycmF5U2V0KTsKKyAg
ICB9CisKKyAgICBib29sIGZpbmRXYXNtQXJyYXlTZXRBZnRlckNsb2JiZXIoVmFsdWUqIGFycmF5
UHRyLCBWYWx1ZSogaW5kZXhWYWx1ZSwgSGVhcFJhbmdlIHJhbmdlKQorICAgIHsKKyAgICAgICAg
ZGF0YUxvZ0xuSWYoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJi
b3NlLCAqbV92YWx1ZSwgIjogbG9va2luZyBmb3J3YXJkIGZvciBXYXNtQXJyYXlTZXQuLi4iKTsK
KworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gbV9pbmRleCArIDE7IGluZGV4IDwgbV9i
bG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX2Js
b2NrLT5hdChpbmRleCk7CisKKyAgICAgICAgICAgIGlmIChhdXRvKiBjYW5kaWRhdGVTZXQgPSB2
YWx1ZS0+YXM8V2FzbUFycmF5U2V0VmFsdWU+KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2Fu
ZGlkYXRlU2V0LT5jaGlsZCgwKSA9PSBhcnJheVB0ciAmJiBjYW5kaWRhdGVTZXQtPmNoaWxkKDEp
ID09IGluZGV4VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSB2YWx1ZS0+ZWZmZWN0cygp
OworICAgICAgICAgICAgaWYgKGVmZmVjdHMucmVhZHMub3ZlcmxhcHMocmFuZ2UpIHx8IGVmZmVj
dHMud3JpdGVzLm92ZXJsYXBzKHJhbmdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fYmxvY2stPm51bVN1Y2Nlc3NvcnMoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBCbG9ja1dvcmtsaXN0IHdvcmtsaXN0
OworICAgICAgICB3b3JrbGlzdC5wdXNoQWxsKG1fYmxvY2stPnN1Y2Nlc3NvckJsb2NrcygpKTsK
KworICAgICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewor
ICAgICAgICAgICAgSW1wdXJlQmxvY2tEYXRhJiBkYXRhID0gbV9pbXB1cmVCbG9ja0RhdGFbYmxv
Y2tdOworCisgICAgICAgICAgICBWYWx1ZSogbWF0Y2ggPSBkYXRhLndhc21BcnJheVN0b3Jlc0F0
SGVhZC5maW5kKGFycmF5UHRyLCBpbmRleFZhbHVlLCBbJl0oVmFsdWUqKSB7IHJldHVybiB0cnVl
OyB9KTsKKyAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaCAhPSBtX3ZhbHVlKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoZGF0YS53cml0ZXMub3Zlcmxh
cHMocmFuZ2UpIHx8IGRhdGEucmVhZHMub3ZlcmxhcHMocmFuZ2UpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKCFibG9jay0+bnVtU3VjY2Vzc29ycygp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgd29ya2xpc3Qu
cHVzaEFsbChibG9jay0+c3VjY2Vzc29yQmxvY2tzKCkpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAKICAgICBEb21p
bmF0b3JzJiBtX2RvbWluYXRvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5j
cHAKaW5kZXggMzQ4MDdmMzNlYzRhLi5iYjE2MmE5MzY5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmF0ZS5jcHAKQEAgLTU1LDcgKzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKFByb2NlZHVyZSYgcHJvY2Vk
dXJlKQogewogICAgIENvbXBpbGVyVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoIlRvdGFsIEIzK0Fp
ciJfcywgInByZXBhcmVGb3JHZW5lcmF0aW9uIl9zKTsKLQogICAgIGdlbmVyYXRlVG9BaXIocHJv
Y2VkdXJlKTsKICAgICBBaXI6OnByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2NlZHVyZS5jb2RlKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCmluZGV4IDRiYWE3NzhkZjJlZi4uMmJjZWI1
ZjllYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNLaW5kLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCkBAIC0xMzQsNiArMTM0LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIEF0b21pY1hjaGc6CiAgICAgICAgIGNhc2UgV2FzbVN0cnVj
dEdldDoKICAgICAgICAgY2FzZSBXYXNtU3RydWN0U2V0OgorICAgICAgICBjYXNlIFdhc21BcnJh
eUxlbmd0aDoKICAgICAgICAgY2FzZSBXYXNtUmVmQ2FzdDoKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJN
YWNyb3MuY3BwCmluZGV4IDgzMzIwYTMxNTcwNS4uODA4YWQwNmI0NDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZS5oIgorI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmgiCiAjaW5j
bHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIK
ICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2lu
Y2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSAiQjNVc2VDb3VudHMuaCIKICNpbmNs
dWRlICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzV2FzbUFycmF5R2V0VmFsdWUuaCIK
KyNpbmNsdWRlICJCM1dhc21BcnJheUxlbmd0aFZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQXJy
YXlOZXdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFycmF5U2V0VmFsdWUuaCIKICNpbmNsdWRl
ICJCM1dhc21SZWZUeXBlQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbVN0cnVjdEdldFZh
bHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtU3RydWN0TmV3VmFsdWUuaCIKQEAgLTU2LDYgKzYxLDgg
QEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUFycmF5LmgiCisj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlTdHJ1Y3QuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFya2Vk
U3BhY2UuaCIKQEAgLTg5LDcgKzk2LDYgQEAgcHVibGljOgogICAgIGJvb2wgcnVuKCkKICAgICB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFzUXVpcmtzKCkpOwotICAgICAgICAK
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAg
bV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAt
MTM4LDE0ICsxNDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
KiBtdWx0aXBsaWVkQmFjayA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBNdWwsIG1fb3JpZ2luLCBkaXZSZXN1bHQsIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlKiByZXN1bHQgPSBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgU3ViLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG11bHRpcGxp
ZWRCYWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogbm9ybWFsUmVz
dWx0ID0gbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBtX29y
aWdpbiwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBub3JtYWxNb2RDYXNlLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhtX2Js
b2NrKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBtX29yaWdpbiwgRnJlcXVlbnRlZEJsb2NrKG1fYmxv
Y2spKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgVXBzaWxvblZhbHVlKiB6ZXJvUmVzdWx0
ID0gemVyb0RlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcHJvYywgbV9vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgemVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1ZSwgMCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB6ZXJvRGVuQ2Fz
ZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOworICAgICAgICAgICAg
ICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1
bXAsIG1fb3JpZ2luLCBGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2lu
ZGV4LCBQaGksIG1fdmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsUmVzdWx0LT5zZXRQaGkocGhpKTsKQEAgLTIyNCw4ICsyMjgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmlnaHRPayA9IGJlZm9yZS0+YXBwZW5k
TmV3PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgbV9vcmlnaW4sIHJpZ2h0SXNJbnQsIHJpZ2h0SXNQ
b3NpdGl2ZSk7CiAKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGJvdGhPayA9IGJlZm9yZS0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgbV9vcmlnaW4sIGxlZnRPaywgcmlnaHRP
ayk7Ci0gICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEJyYW5jaCwgbV9vcmlnaW4sIGJvdGhPayk7Ci0gICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+
c2V0U3VjY2Vzc29ycygKKyAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUobV9wcm9jLCBCcmFuY2gsIG1fb3JpZ2luLCBib3RoT2ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICBGcmVxdWVudGVkQmxvY2soZmFzdENhc2UsIEZyZXF1ZW5jeUNsYXNzOjpOb3Jt
YWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHNsb3dDYXNlLCBG
cmVxdWVuY3lDbGFzczo6UmFyZSkpOwogCkBAIC0yNDAsOCArMjQzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlbUxlc3NUaGFuUmlnaHQgPSBmYXN0Q2FzZS0+YXBw
ZW5kTmV3PFZhbHVlPihtX3Byb2MsIExlc3NUaGFuLCBtX29yaWdpbiwgcmVtYWluZGVyLCByaWdo
dCk7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBmYXN0VmFsaWQgPSBmYXN0Q2FzZS0+YXBw
ZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgbV9vcmlnaW4sIHJlbU5vbk5lZywgcmVtTGVz
c1RoYW5SaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogZmFzdFJlc3Vs
dCA9IGZhc3RDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCBy
ZW1haW5kZXIpOwotICAgICAgICAgICAgICAgICAgICBmYXN0Q2FzZS0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEJyYW5jaCwgbV9vcmlnaW4sIGZhc3RWYWxpZCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGZhc3RDYXNlLT5zZXRTdWNjZXNzb3JzKAorICAgICAgICAgICAgICAgICAgICBmYXN0Q2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgZmFzdFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2ssIEZy
ZXF1ZW5jeUNsYXNzOjpOb3JtYWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHNsb3dDYXNlLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOwogCkBAIC0yNTMsOCArMjU1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICByaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSog
c2xvd1Vwc2lsb24gPSBzbG93Q2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBt
X29yaWdpbiwgc2xvd1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgSnVtcCwgbV9vcmlnaW4pOwotICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOworICAg
ICAgICAgICAgICAgICAgICBzbG93Q2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywg
SnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgLy8gQ29udGludWF0aW9uOiBwaGkgbWVyZ2luZyBmYXN0IGFuZCBzbG93IHJlc3Vs
dHMKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHBoaSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4obV9pbmRleCwgUGhpLCBEb3VibGUsIG1fb3JpZ2luKTsKQEAgLTM1MSwzMiArMzUy
LDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+c2V0U3VjY2Vzc29y
cyhGcmVxdWVudGVkQmxvY2soaXNFcXVhbCksIEZyZXF1ZW50ZWRCbG9jayhub3RFcXVhbCkpOwog
CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBsZXNzVGhhblZhbHVlID0gbm90RXF1YWwtPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBMZXNzVGhhbiwgbV9vcmlnaW4sIGEsIGIpOwotICAgICAg
ICAgICAgICAgICAgICBub3RFcXVhbC0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJyYW5jaCwg
bV9vcmlnaW4sIGxlc3NUaGFuVmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBub3RFcXVhbC0+
c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soaXNMZXNzVGhhbiksIEZyZXF1ZW50ZWRCbG9j
ayhub3RMZXNzVGhhbikpOworICAgICAgICAgICAgICAgICAgICBub3RFcXVhbC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgbGVzc1RoYW5WYWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhpc0xlc3NUaGFuKSwgRnJlcXVl
bnRlZEJsb2NrKG5vdExlc3NUaGFuKSk7CiAKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGdy
ZWF0ZXJUaGFuVmFsdWUgPSBub3RMZXNzVGhhbi0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdy
ZWF0ZXJUaGFuLCBtX29yaWdpbiwgYSwgYik7Ci0gICAgICAgICAgICAgICAgICAgIG5vdExlc3NU
aGFuLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgZ3JlYXRlclRo
YW5WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vdExlc3NUaGFuLT5zZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jayhpc0dyZWF0ZXJUaGFuKSwgRnJlcXVlbnRlZEJsb2NrKGlzTmFOKSk7
CisgICAgICAgICAgICAgICAgICAgIG5vdExlc3NUaGFuLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
bV9wcm9jLCBCcmFuY2gsIG1fb3JpZ2luLCBncmVhdGVyVGhhblZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGlzR3JlYXRlclRoYW4pLCBGcmVxdWVudGVkQmxv
Y2soaXNOYU4pKTsKIAogICAgICAgICAgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIGlzTGVzc1Ro
YW5SZXN1bHQgPSBpc0xlc3NUaGFuLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcHJvYywgbV9vcmlnaW4sIGlzTWF4ID8gYiA6IGEpOwotICAgICAg
ICAgICAgICAgICAgICBpc0xlc3NUaGFuLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgSnVtcCwg
bV9vcmlnaW4pOwotICAgICAgICAgICAgICAgICAgICBpc0xlc3NUaGFuLT5zZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgIGlzTGVzc1Ro
YW4tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG1fb3JpZ2luLCBGcmVxdWVu
dGVkQmxvY2sobV9ibG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSog
aXNHcmVhdGVyVGhhblJlc3VsdCA9IGlzR3JlYXRlclRoYW4tPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAogICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm9jLCBtX29yaWdpbiwgaXNNYXggPyBh
IDogYik7Ci0gICAgICAgICAgICAgICAgICAgIGlzR3JlYXRlclRoYW4tPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIGlzR3JlYXRl
clRoYW4tPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKKyAgICAgICAg
ICAgICAgICAgICAgaXNHcmVhdGVyVGhhbi0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywg
SnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgVXBzaWxvblZhbHVlKiBpc0VxdWFsUmVzdWx0ID0gaXNFcXVhbC0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Byb2MsIG1fb3JpZ2lu
LCBpc0VxdWFsLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgaXNNYXggPyBCaXRBbmQgOiBCaXRP
ciwgbV9vcmlnaW4sIGEsIGIpKTsKLSAgICAgICAgICAgICAgICAgICAgaXNFcXVhbC0+YXBwZW5k
TmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG1fb3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAg
aXNFcXVhbC0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOworICAgICAg
ICAgICAgICAgICAgICBpc0VxdWFsLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1w
LCBtX29yaWdpbiwgRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKIAogICAgICAgICAgICAgICAg
ICAgICBVcHNpbG9uVmFsdWUqIGlzTmFOUmVzdWx0ID0gaXNOYU4tPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KAogICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm9jLCBtX29yaWdpbiwgaXNOYU4t
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG1fb3JpZ2luLCBhLCBiKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlzTmFOLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgSnVtcCwgbV9vcmln
aW4pOwotICAgICAgICAgICAgICAgICAgICBpc05hTi0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2sobV9ibG9jaykpOworICAgICAgICAgICAgICAgICAgICBpc05hTi0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
KSk7CiAKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHBoaSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBQaGksIG1fdmFs
dWUtPnR5cGUoKSwgbV9vcmlnaW4pOwpAQCAtMzk5LDggKzM5Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJlZm9yZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQu
c3BsaXRGb3J3YXJkKG1fYmxvY2ssIG1faW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBiZWZv
cmUtPnJlcGxhY2VMYXN0V2l0aE5ldzxWYWx1ZT4obV9wcm9jLCBOb3AsIG1fb3JpZ2luKTsKICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IGNhbGxEaXZNb2RIZWxwZXIoYmVmb3Jl
LCBEaXYsIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJlZm9yZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG1fb3JpZ2lu
KTsKLSAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRC
bG9jayhtX2Jsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
KSk7CiAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocmVz
dWx0KTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB9CkBAIC03ODksODEgKzc4NSwyNDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBhbGxvY2F0b3JPZmZzZXQgPSBhbGxvY2F0b3JzQmFzZU9mZnNldCArIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHNpemVDbGFzcyAqIHNpemVvZihBbGxvY2F0b3IpKTsKICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIGFsbG9jYXRvciA9IGJlZm9yZS0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luLCBpbnN0YW5jZSwgYWxs
b2NhdG9yT2Zmc2V0KTsKIAotICAgICAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBiZWZvcmUtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgcG9p
bnRlclR5cGUoKSwgbV9vcmlnaW4pOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBlbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFs
bG9jYXRvciB1c2VzIHRoZSBzY3JhdGNoIHJlZ2lzdGVycyBvbiBBUk0uCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb0Nsb2JiZXJl
ZEdQUnMoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcldpdGhDbG9iYmVyKGFsbG9jYXRvcik7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycysrOwotICAg
ICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVS
ZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBjZWxs
ID0gZW1pdFdhc21HQ0FsbG9jYXRpb25QYXRjaHBvaW50KGJlZm9yZSwgYWxsb2NhdG9yLCBmYXN0
UGF0aENvbnRpbnVhdGlvbiwgc2xvd1BhdGgpOworICAgICAgICAgICAgICAgICAgICBlbWl0V2Fz
bUdDQ2VsbEluaXQoZmFzdFBhdGhDb250aW51YXRpb24sIGNlbGwsIHN0cnVjdHVyZUlELCBKU1dl
YkFzc2VtYmx5U3RydWN0Ojp0eXBlSW5mb0Jsb2IoKS5ibG9iKCkpOwogCi0gICAgICAgICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGp1bXBUb1Ns
b3dQYXRoOworICAgICAgICAgICAgICAgICAgICBmYXN0VXBzaWxvbiA9IGZhc3RQYXRoQ29udGlu
dWF0aW9uLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCBjZWxsKTsK
KyAgICAgICAgICAgICAgICAgICAgZmFzdFBhdGhDb250aW51YXRpb24tPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShtX3Byb2MsIEp1bXAsIG1fb3JpZ2luLCBGcmVxdWVudGVkQmxvY2sobV9ibG9jaykp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qg
cmVkaXJlY3QgdGhlIEp1bXAgYWRkZWQgYnkgc3BsaXRGb3J3YXJkIHRvIHNsb3dQYXRoCisgICAg
ICAgICAgICAgICAgICAgIGJlZm9yZS0+c2V0U3VjY2Vzc29ycyhzbG93UGF0aCk7CisgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BS
ID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogc2xvd1Vw
c2lsb24gPSBlbWl0V2FzbUdDU2xvd1BhdGgoc2xvd1BhdGgsIG1fYmxvY2ssIGluc3RhbmNlLCB0
eXBlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJU
YWc+KFdhc206Om9wZXJhdGlvbldhc21TdHJ1Y3ROZXdFbXB0eSksIFdhc206OkV4Y2VwdGlvblR5
cGU6OkJhZFN0cnVjdE5ldyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBh
IHBhdGNocG9pbnQgdG8gZW1pdCB0aGUgYWxsb2NhdGlvbiBwYXRoIGJlY2F1c2Ugd2hlbmV2ZXIg
d2UgbWVzcyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0aW9uIHBhdGhz
LCB3ZSBhbHJlYWR5IHJlYXNvbiBhYm91dCB0aGVtIGF0IHRoZSBtYWNoaW5lIGNvZGUgbGV2ZWwu
IFdlIGtub3cKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4YWN0bHkgd2hhdCBpbnN0cnVj
dGlvbiBzZXF1ZW5jZSB3ZSB3YW50LiBXZSdyZSBjb25maWRlbnQgdGhhdCBubyBjb21waWxlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3B0aW1pemF0aW9uIGNvdWxkIG1ha2UgdGhpcyBj
b2RlIGJldHRlci4gU28sIGl0J3MgYmVzdCB0byBoYXZlIHRoZSBjb2RlIGluCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxvY2F0ZSgpLiBUaGF0IHdh
eSwgdGhlIHNhbWUgb3B0aW1pemVkIHBhdGggaXMgc2hhcmVkIGJ5Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBhbGwgb2YgdGhlIGNvbXBpbGVyIHRpZXJzLgotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmVtaXRBbGxvY2F0ZVdpdGhOb25OdWxsQWxsb2NhdG9yKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgSklUQWxsb2NhdG9yOjp2YXJpYWJsZU5v
bk51bGwoKSwgYWxsb2NhdG9yR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3dQYXRoLCBDQ2FsbEhlbHBlcnM6OlNsb3dBbGxvY2F0
aW9uUmVzdWx0OjpVbmRlZmluZWRCZWhhdmlvcik7CisgICAgICAgICAgICAgICAgVmFsdWUqIHBo
aSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUGhpLCBwb2ludGVyVHlw
ZSgpLCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgaWYgKGZhc3RVcHNpbG9uKQorICAgICAg
ICAgICAgICAgICAgICBmYXN0VXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgICAgICAgICAgICAg
c2xvd1Vwc2lsb24tPnNldFBoaShwaGkpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAganVtcFRvU3VjY2VzczsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghcGFyYW1zLmZhbGxzVGhyb3VnaFRvU3VjY2Vzc29yKDApKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIG1f
dmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocGhpKTsKKyAgICAgICAgICAgICAgICBiZWZvcmUt
PnVwZGF0ZVByZWRlY2Vzc29yc0FmdGVyKCk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0g
cGFyYW1zLnN1Y2Nlc3NvckxhYmVscygpOworICAgICAgICAgICAgY2FzZSBXYXNtQXJyYXlMZW5n
dGg6IHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYXJyYXlQdHIgPSBtX3ZhbHVlLT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICBib29sIGNhblRyYXAgPSBtX3ZhbHVlLT5raW5kKCkudHJhcHMo
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3dQ
YXRoLmxpbmtUbygqbGFiZWxzWzFdLCAmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoanVtcFRvU3VjY2Vzcy5pc1NldCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wVG9TdWNjZXNzLmxpbmtUbygqbGFiZWxzWzBdLCAmaml0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICBCMzo6S2luZCBsb2FkS2luZCA9IGNhblRyYXAgPyB0cmFwcGluZyhMb2FkKSA6IEIzOjpLaW5k
KExvYWQpOworICAgICAgICAgICAgICAgIGF1dG8qIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxNZW1vcnlWYWx1ZT4obV9pbmRleCwgbG9hZEtpbmQsIEludDMyLCBtX29yaWdpbiwgYXJy
YXlQdHIsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlBcnJheTo6b2Zmc2V0T2ZTaXpl
KCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnNldFJlYWRzTXV0YWJpbGl0eShNdXRhYmls
aXR5OjpJbW11dGFibGUpOworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRl
bnRpdHkocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGJl
Zm9yZS0+c2V0U3VjY2Vzc29ycyh7IGZhc3RQYXRoQ29udGludWF0aW9uLCBGcmVxdWVuY3lDbGFz
czo6Tm9ybWFsIH0sIHsgc2xvd1BhdGgsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlIH0pOworICAgICAg
ICAgICAgY2FzZSBXYXNtQXJyYXlHZXQ6IHsKKyAgICAgICAgICAgICAgICBXYXNtQXJyYXlHZXRW
YWx1ZSogYXJyYXlHZXQgPSBtX3ZhbHVlLT5hczxXYXNtQXJyYXlHZXRWYWx1ZT4oKTsKKyAgICAg
ICAgICAgICAgICBWYWx1ZSogYXJyYXlQdHIgPSBhcnJheUdldC0+Y2hpbGQoMCk7CisgICAgICAg
ICAgICAgICAgVmFsdWUqIGluZGV4VmFsdWUgPSBhcnJheUdldC0+Y2hpbGQoMSk7CisgICAgICAg
ICAgICAgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGNvbnN0IFdhc206OkFycmF5VHlwZSog
YXJyYXlUeXBlID0gYXJyYXlHZXQtPmFycmF5VHlwZSgpOworICAgICAgICAgICAgICAgIGF1dG8g
ZWxlbWVudFR5cGUgPSBhcnJheVR5cGUtPmVsZW1lbnRUeXBlKCkudHlwZTsKKyAgICAgICAgICAg
ICAgICBIZWFwUmFuZ2UgcmFuZ2UgPSBhcnJheUdldC0+cmFuZ2UoKTsKKyAgICAgICAgICAgICAg
ICBNdXRhYmlsaXR5IG11dGFiaWxpdHkgPSBhcnJheUdldC0+bXV0YWJpbGl0eSgpOwogCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEhlYWRlciBpbml0aWFsaXphdGlvbiBoYXBwZW5zIGluIGZhc3RQ
YXRoQ29udGludWF0aW9uLCBub3QgaW4gZmFzdFBhdGgKLSAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIGNlbGwgPSBwYXRjaHBvaW50OwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogdHlwZUlu
Zm8gPSBmYXN0UGF0aENvbnRpbnVhdGlvbi0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9j
LCBtX29yaWdpbiwgSlNXZWJBc3NlbWJseVN0cnVjdDo6dHlwZUluZm9CbG9iKCkuYmxvYigpKTsK
LSAgICAgICAgICAgICAgICAgICAgZmFzdFBhdGhDb250aW51YXRpb24tPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgbV9vcmlnaW4sIHN0cnVjdHVyZUlELCBjZWxsLCBzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZmFzdFBhdGhDb250aW51YXRpb24tPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBTdG9yZSwgbV9vcmlnaW4sIHR5cGVJbmZvLCBjZWxsLCBzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSkpOworICAgICAgICAgICAg
ICAgIFZhbHVlKiBpbmRleGVkQWRkcmVzcyA9IHdhc21BcnJheUluZGV4ZWRBZGRyZXNzKGFycmF5
UHRyLCBlbGVtZW50VHlwZSwgaW5kZXhWYWx1ZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgZmFz
dFVwc2lsb24gPSBmYXN0UGF0aENvbnRpbnVhdGlvbi0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4o
bV9wcm9jLCBtX29yaWdpbiwgY2VsbCk7Ci0gICAgICAgICAgICAgICAgICAgIGZhc3RQYXRoQ29u
dGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgSnVtcCwgbV9vcmlnaW4pOwotICAg
ICAgICAgICAgICAgICAgICBmYXN0UGF0aENvbnRpbnVhdGlvbi0+c2V0U3VjY2Vzc29ycyhtX2Js
b2NrKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogcmVzdWx0OworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50VHlwZS5pczxXYXNtOjpQYWNrZWRUeXBlPigpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoZWxlbWVudFR5cGUuYXM8V2FzbTo6UGFja2VkVHlwZT4oKSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFdhc206OlBhY2tlZFR5cGU6Okk4OgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZhbHVlPihtX2lu
ZGV4LCBMb2FkOFosIEludDMyLCBtX29yaWdpbiwgaW5kZXhlZEFkZHJlc3MsIDAsIHJhbmdlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IFdhc206OlBhY2tlZFR5cGU6OkkxNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxNZW1vcnlWYWx1ZT4obV9pbmRleCwgTG9hZDE2WiwgSW50
MzIsIG1fb3JpZ2luLCBpbmRleGVkQWRkcmVzcywgMCwgcmFuZ2UpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gSnVzdCByZWRpcmVjdCB0aGUgSnVtcCBhZGRlZCBieSBzcGxp
dEZvcndhcmQgdG8gc2xvd1BhdGgKLSAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT5zZXRTdWNj
ZXNzb3JzKHNsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRUeXBl
LmlzPFdhc206OlR5cGU+KCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHVucGFja2VkID0g
ZWxlbWVudFR5cGUudW5wYWNrZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgVHlwZSBiM1R5cGU7
CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodW5wYWNrZWQua2luZCkgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJMzI6CisgICAgICAgICAgICAgICAgICAg
ICAgICBiM1R5cGUgPSBJbnQzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJNjQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICBiM1R5cGUgPSBJbnQ2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGMzI6CisgICAgICAg
ICAgICAgICAgICAgICAgICBiM1R5cGUgPSBGbG9hdDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGNjQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBiM1R5cGUgPSBEb3VibGU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6
VjEyODoKKyAgICAgICAgICAgICAgICAgICAgICAgIGIzVHlwZSA9IFYxMjg7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFJlZmVyZW5jZSB0eXBlcyBzdG9yZWQgYXMgSW50NjQgKHBv
aW50ZXItc2l6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBiM1R5cGUgPSBJbnQ2NDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxNZW1vcnlWYWx1
ZT4obV9pbmRleCwgTG9hZCwgYjNUeXBlLCBtX29yaWdpbiwgaW5kZXhlZEFkZHJlc3MsIDAsIHJh
bmdlKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBWYWx1ZSogc2xvd0Z1
bmN0aW9uQWRkcmVzcyA9IHNsb3dQYXRoLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9j
LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oV2FzbTo6b3BlcmF0aW9u
V2FzbVN0cnVjdE5ld0VtcHR5KSk7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIHR5cGVJbmRleFZh
bHVlID0gc2xvd1BhdGgtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4s
IHR5cGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIHNsb3dSZXN1bHQgPSBzbG93UGF0
aC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50NjQsIG1fb3JpZ2luLCBFZmZlY3Rz
Ojpmb3JDYWxsKCksIHNsb3dGdW5jdGlvbkFkZHJlc3MsIGluc3RhbmNlLCB0eXBlSW5kZXhWYWx1
ZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5hczxNZW1vcnlWYWx1ZT4oKS0+c2V0UmVhZHNN
dXRhYmlsaXR5KG11dGFiaWxpdHkpOworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNl
IFdhc21BcnJheVNldDogeworICAgICAgICAgICAgICAgIFdhc21BcnJheVNldFZhbHVlKiBhcnJh
eVNldCA9IG1fdmFsdWUtPmFzPFdhc21BcnJheVNldFZhbHVlPigpOworICAgICAgICAgICAgICAg
IFZhbHVlKiBhcnJheVB0ciA9IGFycmF5U2V0LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBW
YWx1ZSogaW5kZXhWYWx1ZSA9IGFycmF5U2V0LT5jaGlsZCgxKTsKKyAgICAgICAgICAgICAgICBW
YWx1ZSogdmFsdWUgPSBhcnJheVNldC0+Y2hpbGQoMik7CisgICAgICAgICAgICAgICAgU1VQUFJF
U1NfVU5DT1VOVEVEX0xPQ0FMIGNvbnN0IFdhc206OkFycmF5VHlwZSogYXJyYXlUeXBlID0gYXJy
YXlTZXQtPmFycmF5VHlwZSgpOworICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudFR5cGUgPSBh
cnJheVR5cGUtPmVsZW1lbnRUeXBlKCkudHlwZTsKKyAgICAgICAgICAgICAgICBIZWFwUmFuZ2Ug
cmFuZ2UgPSBhcnJheVNldC0+cmFuZ2UoKTsKIAotICAgICAgICAgICAgICAgIC8vIE51bGwgY2hl
Y2sgZm9yIHNsb3cgcGF0aCByZXN1bHQKLSAgICAgICAgICAgICAgICBWYWx1ZSogaXNOdWxsID0g
c2xvd1BhdGgtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgbV9vcmlnaW4sIHNsb3dS
ZXN1bHQsIHNsb3dQYXRoLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG1fb3JpZ2lu
LCBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSk7Ci0gICAgICAgICAgICAgICAgQ2hlY2tWYWx1
ZSogY2hlY2sgPSBzbG93UGF0aC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ss
IG1fb3JpZ2luLCBpc051bGwpOwotICAgICAgICAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3Io
Wz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PHVpbnQzMl90PihXYXNtOjpFeGNlcHRpb25UeXBlOjpCYWRTdHJ1Y3ROZXcp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm5lYXJD
YWxsVGh1bmsoQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KFdhc206OlRodW5rczo6
c2luZ2xldG9uKCkuc3R1YihXYXNtOjp0aHJvd0V4Y2VwdGlvbkZyb21PTUdUaHVua0dlbmVyYXRv
cikuY29kZSgpKSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgVmFsdWUq
IGluZGV4ZWRBZGRyZXNzID0gd2FzbUFycmF5SW5kZXhlZEFkZHJlc3MoYXJyYXlQdHIsIGVsZW1l
bnRUeXBlLCBpbmRleFZhbHVlKTsKIAotICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogc2xv
d1Vwc2lsb24gPSBzbG93UGF0aC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBtX29y
aWdpbiwgc2xvd1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAgICAgICAgc2xvd1BhdGgt
PnNldFN1Y2Nlc3NvcnMobV9ibG9jayk7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRUeXBl
LmlzPFdhc206OlBhY2tlZFR5cGU+KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChl
bGVtZW50VHlwZS5hczxXYXNtOjpQYWNrZWRUeXBlPigpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgV2FzbTo6UGFja2VkVHlwZTo6STg6CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnQ8TWVtb3J5VmFsdWU+KG1faW5kZXgsIFN0b3JlOCwgbV9vcmlnaW4s
IHZhbHVlLCBpbmRleGVkQWRkcmVzcywgMCwgcmFuZ2UpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6UGFja2VkVHlwZTo6STE2
OgorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZh
bHVlPihtX2luZGV4LCBTdG9yZTE2LCBtX29yaWdpbiwgdmFsdWUsIGluZGV4ZWRBZGRyZXNzLCAw
LCByYW5nZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnQ8TWVtb3J5VmFsdWU+KG1faW5kZXgsIFN0b3JlLCBtX29yaWdp
biwgdmFsdWUsIGluZGV4ZWRBZGRyZXNzLCAwLCByYW5nZSk7CiAKLSAgICAgICAgICAgICAgICBW
YWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBQaGksIHBv
aW50ZXJUeXBlKCksIG1fb3JpZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAoZmFzdFVwc2lsb24p
Ci0gICAgICAgICAgICAgICAgICAgIGZhc3RVcHNpbG9uLT5zZXRQaGkocGhpKTsKKyAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aE5vcCgpOworICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNhc2UgV2FzbUFycmF5TmV3OiB7CisgICAgICAgICAgICAgICAgV2FzbUFycmF5
TmV3VmFsdWUqIGFycmF5TmV3ID0gbV92YWx1ZS0+YXM8V2FzbUFycmF5TmV3VmFsdWU+KCk7Cisg
ICAgICAgICAgICAgICAgVmFsdWUqIGluc3RhbmNlID0gYXJyYXlOZXctPmluc3RhbmNlKCk7Cisg
ICAgICAgICAgICAgICAgVmFsdWUqIHN0cnVjdHVyZUlEID0gYXJyYXlOZXctPnN0cnVjdHVyZUlE
KCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIHNpemUgPSBhcnJheU5ldy0+c2l6ZSgpOworICAg
ICAgICAgICAgICAgIFNVUFBSRVNTX1VOQ09VTlRFRF9MT0NBTCBjb25zdCBXYXNtOjpBcnJheVR5
cGUqIGFycmF5VHlwZSA9IGFycmF5TmV3LT5hcnJheVR5cGUoKTsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCB0eXBlSW5kZXggPSBhcnJheU5ldy0+dHlwZUluZGV4KCk7CisgICAgICAgICAgICAg
ICAgYXV0byBydHQgPSBhcnJheU5ldy0+cnR0KCk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBh
bGxvY2F0b3JzQmFzZU9mZnNldCA9IGFycmF5TmV3LT5hbGxvY2F0b3JzQmFzZU9mZnNldCgpOwor
CisgICAgICAgICAgICAgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gYXJyYXlUeXBlLT5lbGVtZW50
VHlwZSgpLnR5cGUuZWxlbWVudFNpemUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaGFzT25l
Qml0U2V0KGVsZW1lbnRTaXplKSk7CisKKyAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCEo
TWFya2VkU3BhY2U6OnNpemVTdGVwICYgKE1hcmtlZFNwYWNlOjpzaXplU3RlcCAtIDEpKSwgIk1h
cmtlZFNwYWNlOjpzaXplU3RlcCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHN0ZXBTaGlmdCA9IGdldExTQlNldChNYXJrZWRTcGFjZTo6c2l6ZVN0
ZXApOworICAgICAgICAgICAgICAgIHNpemVfdCBsYXJnZUN1dG9mZkNsYXNzID0gTWFya2VkU3Bh
Y2U6OmxhcmdlQ3V0b2ZmID4+IHN0ZXBTaGlmdDsKKworICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGJlZm9yZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuc3BsaXRGb3J3YXJkKG1fYmxvY2ssIG1f
aW5kZXgsICZtX2luc2VydGlvblNldCk7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogc2xv
d1BhdGggPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShtX2Jsb2NrKTsKKyAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0QWxsb2MgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmlu
c2VydEJlZm9yZShtX2Jsb2NrKTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBmYXN0SW5p
dCA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOworICAgICAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIG1lcmdlQmxvY2sgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2Vy
dEJlZm9yZShtX2Jsb2NrKTsKKworICAgICAgICAgICAgICAgIGJlZm9yZS0+cmVwbGFjZUxhc3RX
aXRoTmV3PFZhbHVlPihtX3Byb2MsIE5vcCwgbV9vcmlnaW4pOworCisgICAgICAgICAgICAgICAg
YXV0byogZXh0U2l6ZSA9IGJlZm9yZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwg
SW50NjQsIG1fb3JpZ2luLCBzaXplKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBzaGlmdGVkID0g
YmVmb3JlLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgU2hsLCBwb2ludGVyVHlwZSgpLCBtX29y
aWdpbiwgZXh0U2l6ZSwgYmVmb3JlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG1f
b3JpZ2luLCBnZXRMU0JTZXQoZWxlbWVudFNpemUpKSk7CisgICAgICAgICAgICAgICAgYXV0byog
c2l6ZUluQnl0ZXMgPSBiZWZvcmUtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIHBvaW50
ZXJUeXBlKCksIG1fb3JpZ2luLCBzaGlmdGVkLCBiZWZvcmUtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihtX3Byb2MsIG1fb3JpZ2luLCBKU1dlYkFzc2VtYmx5QXJyYXk6OmFsbG9jYXRpb25NZXRh
ZGF0YVNpemUoZWxlbWVudFNpemUpKSk7CisKKyAgICAgICAgICAgICAgICBhdXRvKiByb3VuZGVk
ID0gYmVmb3JlLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBwb2ludGVyVHlwZSgpLCBt
X29yaWdpbiwgc2l6ZUluQnl0ZXMsIGJlZm9yZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1f
cHJvYywgbV9vcmlnaW4sIE1hcmtlZFNwYWNlOjpzaXplU3RlcCAtIDEpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvKiBzaXplQ2xhc3NJbmRleCA9IGJlZm9yZS0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIFpTaHIsIHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luLCByb3VuZGVkLCBiZWZvcmUtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIHN0ZXBTaGlmdCkpOworCisgICAg
ICAgICAgICAgICAgYXV0byogaXNMYXJnZSA9IGJlZm9yZS0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEFib3ZlLCBtX29yaWdpbiwgc2l6ZUNsYXNzSW5kZXgsIGJlZm9yZS0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIGxhcmdlQ3V0b2ZmQ2xhc3MpKTsKKyAgICAg
ICAgICAgICAgICBiZWZvcmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEIzOjpCcmFu
Y2gsIG1fb3JpZ2luLCBpc0xhcmdlLAorICAgICAgICAgICAgICAgICAgICB7IHNsb3dQYXRoLCBG
cmVxdWVuY3lDbGFzczo6UmFyZSB9LCB7IGZhc3RBbGxvYywgRnJlcXVlbmN5Q2xhc3M6Ok5vcm1h
bCB9KTsKKworICAgICAgICAgICAgICAgIGF1dG8qIHNpemVDbGFzc09mZnNldCA9IGZhc3RBbGxv
Yy0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE11bCwgcG9pbnRlclR5cGUoKSwgbV9vcmlnaW4s
IHNpemVDbGFzc0luZGV4LCBmYXN0QWxsb2MtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3By
b2MsIG1fb3JpZ2luLCBzaXplb2YoQWxsb2NhdG9yKSkpOworICAgICAgICAgICAgICAgIGF1dG8q
IGFsbG9jYXRvckJhc2VBZGRyID0gZmFzdEFsbG9jLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
QWRkLCBwb2ludGVyVHlwZSgpLCBtX29yaWdpbiwgaW5zdGFuY2UsIGZhc3RBbGxvYy0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIGFsbG9jYXRvcnNCYXNlT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgYXV0byogYWxsb2NhdG9yQWRkciA9IGZhc3RBbGxvYy0+YXBw
ZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgcG9pbnRlclR5cGUoKSwgbV9vcmlnaW4sIGFsbG9j
YXRvckJhc2VBZGRyLCBzaXplQ2xhc3NPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1dG8qIGFs
bG9jYXRvciA9IGZhc3RBbGxvYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQs
IHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luLCBhbGxvY2F0b3JBZGRyLCAwKTsKKyAgICAgICAgICAg
ICAgICBhbGxvY2F0b3ItPnNldENvbnRyb2xEZXBlbmRlbnQoZmFsc2UpOworCisgICAgICAgICAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gZW1pdFdhc21HQ0FsbG9jYXRpb25Q
YXRjaHBvaW50KGZhc3RBbGxvYywgYWxsb2NhdG9yLCBmYXN0SW5pdCwgc2xvd1BhdGgpOworCisg
ICAgICAgICAgICAgICAgYXV0byogY2VsbCA9IHBhdGNocG9pbnQ7CisgICAgICAgICAgICAgICAg
ZW1pdFdhc21HQ0NlbGxJbml0KGZhc3RJbml0LCBjZWxsLCBzdHJ1Y3R1cmVJRCwgSlNXZWJBc3Nl
bWJseUFycmF5Ojp0eXBlSW5mb0Jsb2IoKS5ibG9iKCkpOworCisgICAgICAgICAgICAgICAgYXV0
byogZmFzdFVwc2lsb24gPSBmYXN0SW5pdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9j
LCBtX29yaWdpbiwgY2VsbCk7CisgICAgICAgICAgICAgICAgZmFzdEluaXQtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG1fb3JpZ2luLCBtZXJnZUJsb2NrKTsKKworICAgICAg
ICAgICAgICAgIGF1dG8qIHNsb3dVcHNpbG9uID0gZW1pdFdhc21HQ1Nsb3dQYXRoKHNsb3dQYXRo
LCBtZXJnZUJsb2NrLCBpbnN0YW5jZSwgdHlwZUluZGV4LAorICAgICAgICAgICAgICAgICAgICB0
YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihXYXNtOjpvcGVyYXRpb25XYXNtQXJyYXlOZXdF
bXB0eSksIFdhc206OkV4Y2VwdGlvblR5cGU6OkJhZEFycmF5TmV3LCBzaXplKTsKKworICAgICAg
ICAgICAgICAgIGF1dG8qIHBoaSA9IG1lcmdlQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBQaGksIHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICBmYXN0VXBz
aWxvbi0+c2V0UGhpKHBoaSk7CiAgICAgICAgICAgICAgICAgc2xvd1Vwc2lsb24tPnNldFBoaShw
aGkpOworICAgICAgICAgICAgICAgIG1lcmdlQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBTdG9yZSwgbV9vcmlnaW4sIHNpemUsIHBoaSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNXZWJBc3NlbWJseUFycmF5OjpvZmZzZXRPZlNpemUoKSkpOworCisgICAgICAgICAgICAgICAg
aWYgKGFycmF5TmV3LT5oYXNJbml0VmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRv
KiBpbml0VmFsdWUgPSBhcnJheU5ldy0+aW5pdFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
IFdhc206OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlID0gYXJyYXlUeXBlLT5lbGVtZW50VHlwZSgp
LnR5cGU7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBwYXlsb2FkQmFzZSBkaXJl
Y3RseSBpbiBtZXJnZUJsb2NrIHJhdGhlciB0aGFuIHVzaW5nIHdhc21BcnJheVBheWxvYWQoKSwK
KyAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3YXNtQXJyYXlQYXlsb2FkKCkgaW5zZXJ0
cyBpbnRvIG1fYmxvY2sgKHRoZSBsb29wIGV4aXQpLCBidXQgcGF5bG9hZEJhc2UKKyAgICAgICAg
ICAgICAgICAgICAgLy8gaXMgdXNlZCBpbnNpZGUgdGhlIGxvb3AgYm9keS4gbV9ibG9jayBkb2Vz
bid0IGRvbWluYXRlIHRoZSBsb29wIGJvZHkuCisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBw
YXlsb2FkQmFzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpTV2ViQXNzZW1ibHlBcnJheTo6
bmVlZHNWMTI4QWxpZ25tZW50TWFzayhzdG9yYWdlVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBheWxvYWRCYXNlID0gbWVyZ2VCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEJpdEFuZCwgcG9pbnRlclR5cGUoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVyZ2VCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgcG9pbnRlclR5
cGUoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoaSwgbWVy
Z2VCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIEpTV2Vi
QXNzZW1ibHlBcnJheTo6b2Zmc2V0T2ZEYXRhKCkgKyAxNSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lcmdlQmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG1f
b3JpZ2luLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTE2KSkpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZEJhc2UgPSBtZXJnZUJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBwb2ludGVyVHlwZSgpLCBtX29yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaGksIG1lcmdlQmxvY2stPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCBKU1dlYkFzc2VtYmx5QXJyYXk6OmFs
aWduZWRPZmZzZXRPZkRhdGEoZWxlbWVudFNpemUpKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAvLyBGaWxsIGxvb3AKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaGVhZGVyID0gbV9ibG9ja0lu
c2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBib2R5ID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9i
bG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGV4dFNpemVNZXJnZSA9IG1l
cmdlQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIEludDY0LCBtX29yaWdp
biwgc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIGluaXRpYWxS
ZW1haW5pbmdVcHNpbG9uID0gbWVyZ2VCbG9jay0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9w
cm9jLCBtX29yaWdpbiwgZXh0U2l6ZU1lcmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1l
cmdlQmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG1fb3JpZ2luLCBo
ZWFkZXIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29wIGhlYWRlcgorICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byogcmVtYWluaW5nID0gaGVhZGVyLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgUGhpLCBwb2ludGVyVHlwZSgpLCBtX29yaWdpbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbml0aWFsUmVtYWluaW5nVXBzaWxvbi0+c2V0UGhpKHJlbWFpbmluZyk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGlzWmVybyA9IGhlYWRlci0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBtX29yaWdpbiwgcmVtYWluaW5nLCBoZWFkZXItPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCAwKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBoZWFkZXItPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEJyYW5jaCwg
bV9vcmlnaW4sIGlzWmVybywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1fYmxvY2ss
IEZyZXF1ZW5jeUNsYXNzOjpOb3JtYWwgfSwgeyBib2R5LCBGcmVxdWVuY3lDbGFzczo6Tm9ybWFs
IH0pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29wIGJvZHkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8qIGRlY3JlbWVudGVkID0gYm9keS0+YXBwZW5kTmV3PFZhbHVlPiht
X3Byb2MsIFN1YiwgcG9pbnRlclR5cGUoKSwgbV9vcmlnaW4sIHJlbWFpbmluZywgYm9keS0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIDEpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byogb2Zmc2V0ID0gYm9keS0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIE11bCwgcG9pbnRlclR5cGUoKSwgbV9vcmlnaW4sIGRlY3JlbWVudGVkLCBib2R5LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBtX29yaWdpbiwgZWxlbWVudFNpemUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGFkZHIgPSBib2R5LT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgQWRkLCBwb2ludGVyVHlwZSgpLCBtX29yaWdpbiwgcGF5bG9hZEJhc2UsIG9mZnNl
dCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlVHlwZS5pczxXYXNtOjpQ
YWNrZWRUeXBlPigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdG9y
YWdlVHlwZS5hczxXYXNtOjpQYWNrZWRUeXBlPigpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBXYXNtOjpQYWNrZWRUeXBlOjpJODoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9keS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlOCwgbV9v
cmlnaW4sIGluaXRWYWx1ZSwgYWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6UGFja2VkVHlw
ZTo6STE2OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUxNiwgbV9vcmlnaW4sIGluaXRWYWx1ZSwgYWRkcik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvZHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBT
dG9yZSwgbV9vcmlnaW4sIGluaXRWYWx1ZSwgYWRkcik7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8qIGxvb3BVcHNpbG9uID0gYm9keS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9w
cm9jLCBtX29yaWdpbiwgZGVjcmVtZW50ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9v
cFVwc2lsb24tPnNldFBoaShyZW1haW5pbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9k
eS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgbV9vcmlnaW4sIGhlYWRlcik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgbWVyZ2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVt
cCwgbV9vcmlnaW4sIG1fYmxvY2spOwogCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShwaGkpOwogICAgICAgICAgICAgICAgIGJlZm9yZS0+dXBkYXRlUHJlZGVj
ZXNzb3JzQWZ0ZXIoKTsKQEAgLTk4MiwxOSArMTE0NiwxNiBAQCBwcml2YXRlOgogICAgICAgICBV
cHNpbG9uVmFsdWUqIG5vcm1hbFJlc3VsdCA9IG5vcm1hbERpdkNhc2UtPmFwcGVuZE5ldzxVcHNp
bG9uVmFsdWU+KAogICAgICAgICAgICAgbV9wcm9jLCBtX29yaWdpbiwKICAgICAgICAgICAgIGlu
bmVyUmVzdWx0KTsKLSAgICAgICAgbm9ybWFsRGl2Q2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEp1bXAsIG1fb3JpZ2luKTsKLSAgICAgICAgbm9ybWFsRGl2Q2FzZS0+c2V0U3VjY2Vzc29y
cyhGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOworICAgICAgICBub3JtYWxEaXZDYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBtX29yaWdpbiwgRnJlcXVlbnRlZEJsb2Nr
KG1fYmxvY2spKTsKIAotICAgICAgICBzaGFkeURlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBCcmFuY2gsIG1fb3JpZ2luLCBkZW4pOwotICAgICAgICBzaGFkeURlbkNhc2UtPnNldFN1
Y2Nlc3NvcnMoCisgICAgICAgIHNoYWR5RGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1f
cHJvYywgQnJhbmNoLCBtX29yaWdpbiwgZGVuLAogICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2Nr
KG5lZzFEZW5DYXNlLCBGcmVxdWVuY3lDbGFzczo6Tm9ybWFsKSwKICAgICAgICAgICAgIEZyZXF1
ZW50ZWRCbG9jayh6ZXJvRGVuQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKIAogICAgICAg
ICBVcHNpbG9uVmFsdWUqIHplcm9SZXN1bHQgPSB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2ls
b25WYWx1ZT4oCiAgICAgICAgICAgICBtX3Byb2MsIG1fb3JpZ2luLAogICAgICAgICAgICAgemVy
b0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1ZSwgMCkpOwotICAgICAg
ICB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG1fb3JpZ2luKTsK
LSAgICAgICAgemVyb0RlbkNhc2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxv
Y2spKTsKKyAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2Ms
IEp1bXAsIG1fb3JpZ2luLCBGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOwogCiAgICAgICAgIGlu
dDY0X3QgYmFkTnVtZXJhdG9yQ29uc3QgPSAwOwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5
cGUoKS5raW5kKCkpIHsKQEAgLTEwMjMsOCArMTE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZh
bHVlKiBpbnRNaW5SZXN1bHQgPSBub25DaGlsbE9wY29kZSA9PSBEaXYgPyBiYWROdW1lcmF0b3Ig
OiBpbnRNaW5DYXNlLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG1fdmFsdWUsIDApOwogICAg
ICAgICBVcHNpbG9uVmFsdWUqIGludE1pblJlc3VsdFVwc2lsb24gPSBpbnRNaW5DYXNlLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKICAgICAgICAgICAgIG1fcHJvYywgbV9vcmlnaW4sIGludE1p
blJlc3VsdCk7Ci0gICAgICAgIGludE1pbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBK
dW1wLCBtX29yaWdpbik7Ci0gICAgICAgIGludE1pbkNhc2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVl
bnRlZEJsb2NrKG1fYmxvY2spKTsKKyAgICAgICAgaW50TWluQ2FzZS0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKG1fcHJvYywgSnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7
CiAKICAgICAgICAgVmFsdWUqIHBoaSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCiAg
ICAgICAgICAgICBtX2luZGV4LCBQaGksIG1fdmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOwpAQCAt
MTE1NCwxMSArMTMxNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYmVmb3JlID0gbmV4
dENoZWNrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBiZWZvcmUtPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAgICBpZiAoYWxsQ29uc2Vj
dXRpdmUpCi0gICAgICAgICAgICAgICAgYmVmb3JlLT5zZXRTdWNjZXNzb3JzKGNhc2VzW2VuZCAt
IDFdLnRhcmdldCgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBiZWZvcmUt
PnNldFN1Y2Nlc3NvcnMoZmFsbFRocm91Z2gpOworICAgICAgICAgICAgYmVmb3JlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBtX29yaWdpbiwgYWxsQ29uc2VjdXRpdmUgPyBj
YXNlc1tlbmQgLSAxXS50YXJnZXQoKSA6IGZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xNTA2LDYgKzE2NjIsMTA1IEBAIHByaXZhdGU6CiAgICAgfQog
I2VuZGlmCiAKKyAgICBQYXRjaHBvaW50VmFsdWUqIGVtaXRXYXNtR0NBbGxvY2F0aW9uUGF0Y2hw
b2ludChCYXNpY0Jsb2NrKiBhbGxvY0Jsb2NrLCBWYWx1ZSogYWxsb2NhdG9yLCBCYXNpY0Jsb2Nr
KiBmYXN0SW5pdCwgQmFzaWNCbG9jayogc2xvd1BhdGgpCisgICAgeworICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSBhbGxvY0Jsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihtX3Byb2MsIHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luKTsKKyAgICAgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICAgICAgLy8gZW1pdEFsbG9jYXRlV2l0aE5vbk51bGxBbGxvY2F0b3Ig
dXNlcyB0aGUgc2NyYXRjaCByZWdpc3RlcnMgb24gQVJNLgorICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9DbG9iYmVyZWRHUFJzKCkpOworICAgICAgICB9
CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXJXaXRoQ2xvYmJlcihhbGxvY2F0b3IpOworICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMrKzsKKyAgICAgICAgcGF0Y2hw
b2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9
OworCisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2hJZihqaXQsIGlz
QVJNNjQoKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGp1bXBUb1Nsb3dQ
YXRoOworCisgICAgICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0gcGFyYW1zWzFdLmdwcigp
OworCisgICAgICAgICAgICAvLyBXZSB1c2UgYSBwYXRjaHBvaW50IHRvIGVtaXQgdGhlIGFsbG9j
YXRpb24gcGF0aCBiZWNhdXNlIHdoZW5ldmVyIHdlIG1lc3Mgd2l0aAorICAgICAgICAgICAgLy8g
YWxsb2NhdGlvbiBwYXRocywgd2UgYWxyZWFkeSByZWFzb24gYWJvdXQgdGhlbSBhdCB0aGUgbWFj
aGluZSBjb2RlIGxldmVsLiBXZSBrbm93CisgICAgICAgICAgICAvLyBleGFjdGx5IHdoYXQgaW5z
dHJ1Y3Rpb24gc2VxdWVuY2Ugd2Ugd2FudC4gV2UncmUgY29uZmlkZW50IHRoYXQgbm8gY29tcGls
ZXIKKyAgICAgICAgICAgIC8vIG9wdGltaXphdGlvbiBjb3VsZCBtYWtlIHRoaXMgY29kZSBiZXR0
ZXIuIFNvLCBpdCdzIGJlc3QgdG8gaGF2ZSB0aGUgY29kZSBpbgorICAgICAgICAgICAgLy8gQXNz
ZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGUoKS4gVGhhdCB3YXksIHRoZSBzYW1lIG9wdGltaXpl
ZCBwYXRoIGlzIHNoYXJlZCBieQorICAgICAgICAgICAgLy8gYWxsIG9mIHRoZSBjb21waWxlciB0
aWVycy4KKyAgICAgICAgICAgIGppdC5lbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFsbG9jYXRvcigK
KyAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIEpJVEFsbG9jYXRvcjo6dmFyaWFibGVO
b25OdWxsKCksIGFsbG9jYXRvckdQUiwgcGFyYW1zLmdwU2NyYXRjaCgwKSwKKyAgICAgICAgICAg
ICAgICBqdW1wVG9TbG93UGF0aCwgQ0NhbGxIZWxwZXJzOjpTbG93QWxsb2NhdGlvblJlc3VsdDo6
VW5kZWZpbmVkQmVoYXZpb3IpOworCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAganVt
cFRvU3VjY2VzczsKKyAgICAgICAgICAgIGlmICghcGFyYW1zLmZhbGxzVGhyb3VnaFRvU3VjY2Vz
c29yKDApKQorICAgICAgICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MgPSBqaXQuanVtcCgpOworCisg
ICAgICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVscGVyczo6TGFiZWw+PiBsYWJlbHMgPSBwYXJh
bXMuc3VjY2Vzc29yTGFiZWxzKCk7CisKKyAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aChb
PV0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICBqdW1wVG9TbG93UGF0aC5s
aW5rVG8oKmxhYmVsc1sxXSwgJmppdCk7CisgICAgICAgICAgICAgICAgaWYgKGp1bXBUb1N1Y2Nl
c3MuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRvU3VjY2Vzcy5saW5rVG8oKmxh
YmVsc1swXSwgJmppdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
YWxsb2NCbG9jay0+c2V0U3VjY2Vzc29ycyh7IGZhc3RJbml0LCBGcmVxdWVuY3lDbGFzczo6Tm9y
bWFsIH0sIHsgc2xvd1BhdGgsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlIH0pOworICAgICAgICByZXR1
cm4gcGF0Y2hwb2ludDsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRXYXNtR0NDZWxsSW5pdChCYXNp
Y0Jsb2NrKiBpbml0QmxvY2ssIFZhbHVlKiBjZWxsLCBWYWx1ZSogc3RydWN0dXJlSUQsIHVpbnQz
Ml90IHR5cGVJbmZvQmxvYikKKyAgICB7CisgICAgICAgIFZhbHVlKiB0eXBlSW5mbyA9IGluaXRC
bG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBtX29yaWdpbiwgdHlwZUluZm9C
bG9iKTsKKyAgICAgICAgaW5pdEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
U3RvcmUsIG1fb3JpZ2luLCBzdHJ1Y3R1cmVJRCwgY2VsbCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisgICAgICAgIGluaXRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlLCBtX29yaWdpbiwgdHlwZUluZm8sIGNlbGws
IHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgp
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2xvd0Z1bmN0aW9uVHlwZT4KKyAg
ICBVcHNpbG9uVmFsdWUqIGVtaXRXYXNtR0NTbG93UGF0aChCYXNpY0Jsb2NrKiBzbG93UGF0aEJs
b2NrLCBCYXNpY0Jsb2NrKiBtZXJnZUJsb2NrLCBWYWx1ZSogaW5zdGFuY2UsIHVpbnQzMl90IHR5
cGVJbmRleCwKKyAgICAgICAgU2xvd0Z1bmN0aW9uVHlwZSBzbG93RnVuY3Rpb24sIFdhc206OkV4
Y2VwdGlvblR5cGUgZXhuVHlwZSwgVmFsdWUqIGV4dHJhQXJnID0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIFZhbHVlKiBzbG93RnVuY3Rpb25BZGRyZXNzID0gc2xvd1BhdGhCbG9jay0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIHNsb3dGdW5jdGlvbik7CisgICAg
ICAgIFZhbHVlKiB0eXBlSW5kZXhWYWx1ZSA9IHNsb3dQYXRoQmxvY2stPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIHR5cGVJbmRleCk7CisgICAgICAgIFZhbHVlKiBz
bG93UmVzdWx0OworICAgICAgICBpZiAoZXh0cmFBcmcpCisgICAgICAgICAgICBzbG93UmVzdWx0
ID0gc2xvd1BhdGhCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50NjQsIG1f
b3JpZ2luLCBFZmZlY3RzOjpmb3JDYWxsKCksIHNsb3dGdW5jdGlvbkFkZHJlc3MsIGluc3RhbmNl
LCB0eXBlSW5kZXhWYWx1ZSwgZXh0cmFBcmcpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
bG93UmVzdWx0ID0gc2xvd1BhdGhCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywg
SW50NjQsIG1fb3JpZ2luLCBFZmZlY3RzOjpmb3JDYWxsKCksIHNsb3dGdW5jdGlvbkFkZHJlc3Ms
IGluc3RhbmNlLCB0eXBlSW5kZXhWYWx1ZSk7CisKKyAgICAgICAgVmFsdWUqIGlzTnVsbCA9IHNs
b3dQYXRoQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgbV9vcmlnaW4sIHNs
b3dSZXN1bHQsIHNsb3dQYXRoQmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywg
bV9vcmlnaW4sIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKKyAgICAgICAgQ2hlY2tWYWx1
ZSogY2hlY2sgPSBzbG93UGF0aEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBD
aGVjaywgbV9vcmlnaW4sIGlzTnVsbCk7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1d
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Cisg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZXhuVHlwZSkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAg
ICAgaml0Lm5lYXJDYWxsVGh1bmsoQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KFdh
c206OlRodW5rczo6c2luZ2xldG9uKCkuc3R1YihXYXNtOjp0aHJvd0V4Y2VwdGlvbkZyb21PTUdU
aHVua0dlbmVyYXRvcikuY29kZSgpKSk7CisgICAgICAgIH0pOworCisgICAgICAgIFVwc2lsb25W
YWx1ZSogc2xvd1Vwc2lsb24gPSBzbG93UGF0aEJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVl
PihtX3Byb2MsIG1fb3JpZ2luLCBzbG93UmVzdWx0KTsKKyAgICAgICAgc2xvd1BhdGhCbG9jay0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRC
bG9jayhtZXJnZUJsb2NrKSk7CisgICAgICAgIHJldHVybiBzbG93VXBzaWxvbjsKKyAgICB9CisK
KyAgICBWYWx1ZSogd2FzbUFycmF5UGF5bG9hZChWYWx1ZSogYXJyYXlQdHIsIGNvbnN0IFdhc206
OlN0b3JhZ2VUeXBlJiBlbGVtZW50VHlwZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBlbGVtZW50
U2l6ZSA9IGVsZW1lbnRUeXBlLmVsZW1lbnRTaXplKCk7CisgICAgICAgIGlmIChKU1dlYkFzc2Vt
Ymx5QXJyYXk6Om5lZWRzVjEyOEFsaWdubWVudE1hc2soZWxlbWVudFR5cGUpKSB7CisgICAgICAg
ICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBCaXRBbmQs
IHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQWRkLCBwb2ludGVyVHlwZSgpLCBtX29yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgYXJyYXlQdHIsIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0
clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgSlNXZWJBc3NlbWJseUFycmF5OjpvZmZzZXRPZkRh
dGEoKSArIDE1KSksCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0
UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTE2KSkp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+
KG1faW5kZXgsIEFkZCwgcG9pbnRlclR5cGUoKSwgbV9vcmlnaW4sIGFycmF5UHRyLCBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIEpTV2ViQXNz
ZW1ibHlBcnJheTo6YWxpZ25lZE9mZnNldE9mRGF0YShlbGVtZW50U2l6ZSkpKTsKKyAgICB9CisK
KyAgICBWYWx1ZSogd2FzbUFycmF5SW5kZXhlZEFkZHJlc3MoVmFsdWUqIGFycmF5UHRyLCBjb25z
dCBXYXNtOjpTdG9yYWdlVHlwZSYgZWxlbWVudFR5cGUsIFZhbHVlKiBpbmRleFZhbHVlKQorICAg
IHsKKyAgICAgICAgYXV0byogcGF5bG9hZEJhc2UgPSB3YXNtQXJyYXlQYXlsb2FkKGFycmF5UHRy
LCBlbGVtZW50VHlwZSk7CisgICAgICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGVsZW1lbnRUeXBl
LmVsZW1lbnRTaXplKCk7CisgICAgICAgIFZhbHVlKiBleHRJbmRleCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgWkV4dDMyLCBJbnQ2NCwgbV9vcmlnaW4sIGluZGV4VmFs
dWUpOworICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4
LCBBZGQsIHBvaW50ZXJUeXBlKCksIG1fb3JpZ2luLAorICAgICAgICAgICAgcGF5bG9hZEJhc2Us
CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE11bCwg
cG9pbnRlclR5cGUoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgZXh0SW5kZXgsIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgZWxlbWVu
dFNpemUpKSk7CisgICAgfQorCiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgQmxvY2tJbnNl
cnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRp
b25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCmluZGV4IGY1MTIxNjE0YzhmOS4u
ZjYzMmM2NmIwNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMzYyLDYg
KzM2MiwxMCBAQCBlbnVtIE9wY29kZSA6IHVpbnQ4X3QgewogICAgIC8vIHRvIGJlIGFibGUgdG8g
cGVyZm9ybSBzdWNoIG9wdGltaXphdGlvbnMuCiAgICAgV2FzbUJvdW5kc0NoZWNrLAogCisgICAg
V2FzbUFycmF5R2V0LAorICAgIFdhc21BcnJheVNldCwKKyAgICBXYXNtQXJyYXlOZXcsCisgICAg
V2FzbUFycmF5TGVuZ3RoLAogICAgIFdhc21TdHJ1Y3RHZXQsCiAgICAgV2FzbVN0cnVjdFNldCwK
ICAgICBXYXNtU3RydWN0TmV3LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5j
cHAKaW5kZXggZDk5ODg0NDVlYmU3Li45YTQxNjJiMTVhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtNTQsNiArNTQsNyBAQCBQcm9jZWR1cmU6OlByb2Nl
ZHVyZShib29sIHVzZXNTSU1EKQogICAgIDogbV9jZmcobmV3IENGRygqdGhpcykpCiAgICAgLCBt
X2xhc3RQaGFzZU5hbWUoImluaXRpYWwiKQogICAgICwgbV9ieXByb2R1Y3RzKG1ha2VVbmlxdWU8
T3BhcXVlQnlwcm9kdWN0cz4oKSkKKyAgICAsIG1faGVhcHMobWFrZVVuaXF1ZVJlZjxBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5PigpKQogewogICAgIGlmICh1c2VzU0lNRCkKICAgICAgICAgc2V0VXNl
c3NTSU1EKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4IDMyMjhj
OWQyNjgyNS4uYzI4NTVhMWQ4OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUg
IkIzQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIkIzT3JpZ2luLmgiCiAjaW5j
bHVkZSAiQjNQQ1RvT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgi
CkBAIC0zMDcsNiArMzA4LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW9uR3JhcGhQYXNzZXMo
UmVmPEpTT046OkFycmF5PiYmKTsKICAgICB2b2lkIGFwcGVuZElvbkdyYXBoUGFzcyhBU0NJSUxp
dGVyYWwpOwogCisgICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVhcHMoKSB7IHJldHVybiBt
X2hlYXBzLmdldCgpOyB9CisgICAgY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVhcHMo
KSBjb25zdCB7IHJldHVybiBtX2hlYXBzLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogCkBAIC0zMjYsNiArMzMwLDcgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9w
YXF1ZUJ5cHJvZHVjdHM+IG1fYnlwcm9kdWN0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWlyOjpD
b2RlPiBtX2NvZGU7CisgICAgVW5pcXVlUmVmPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IG1faGVh
cHM7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBt
X29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENU
b09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggYTEwNmM5YmMxNWZkLi5kNTIzMjg1ZjM1YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTQ0
LDYgKzQ0LDggQEAKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgogI2luY2x1ZGUgIkIzVmFs
dWVLZXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJC
M1dhc21BcnJheUxlbmd0aFZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlOZXdWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzV2FzbVJlZlR5cGVDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNt
U3RydWN0R2V0VmFsdWUuaCIKICNpbmNsdWRlICJCM1dhc21TdHJ1Y3RTZXRWYWx1ZS5oIgpAQCAt
Mzk0Niw2ICszOTQ4LDMxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgV2FzbUFycmF5TGVuZ3RoOiB7CisgICAgICAgICAgICAvLyBXYXNt
QXJyYXlOZXcgYWx3YXlzIHJldHVybnMgYSBub24tbnVsbCBhcnJheSBvZiB0aGUgcmVxdWVzdGVk
IHNpemUsCisgICAgICAgICAgICAvLyBzbyBhcnJheS5sZW4oYXJyYXkubmV3KGluc3RhbmNlLCBz
dHJ1Y3R1cmVJRCwgc2l6ZSkpID09IHNpemUuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpID09IFdhc21BcnJheU5ldykgeworICAgICAgICAgICAgICAgIHJlcGxh
Y2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCktPmFzPFdhc21BcnJheU5ld1ZhbHVlPigp
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobV92YWx1ZS0+dHJhcHMoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAo
bV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBXYXNt
UmVmQ2FzdDogeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fdmFsdWUtPmNoaWxkKDApLT5h
czxXYXNtUmVmVHlwZUNoZWNrVmFsdWU+KCktPmFsbG93TnVsbCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8V2FzbUFy
cmF5TGVuZ3RoVmFsdWU+KG1faW5kZXgsIFdhc21BcnJheUxlbmd0aCwgSW50MzIsIG1fdmFsdWUt
Pm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdWYWx1ZS0+YXM8V2FzbUFycmF5TGVuZ3RoVmFsdWU+KCktPnNldFJhbmdlKG1fdmFsdWUtPmFz
PFdhc21BcnJheUxlbmd0aFZhbHVlPigpLT5yYW5nZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgV2FzbVN0cnVjdFNldDogewogICAgICAgICAgICAgYXV0byByZXBsYWNlV2l0
aE5vblRyYXBwaW5nID0gWyZdIHsKICAgICAgICAgICAgICAgICBXYXNtU3RydWN0U2V0VmFsdWUq
IHN0cnVjdFNldCA9IG1fdmFsdWUtPmFzPFdhc21TdHJ1Y3RTZXRWYWx1ZT4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCBhM2Y1ZjZjYjhmOWEuLjk5ZTY3MWM2
ZmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAtODY1LDYg
Kzg2NSwyNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IEludDY0LCAoIkF0ICIsICp2YWx1ZSkpOyAvLyByZXR1cm5zIHN0
cnVjdCBwb2ludGVyCiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdh
c21BcnJheUdldDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpID09IEludDY0LCAoIkF0ICIsICp2YWx1ZSkpOyAvLyBhcnJheSBw
b2ludGVyCisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkg
PT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7IC8vIGluZGV4CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFdhc21BcnJheVNldDoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDY0LCAoIkF0
ICIsICp2YWx1ZSkpOyAvLyBhcnJheSBwb2ludGVyCisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7IC8vIGlu
ZGV4CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
YXNtQXJyYXlOZXc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFz
RXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMyB8fCB2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSA0LCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gSW50NjQsICgiQXQgIiwgKnZhbHVlKSk7IC8vIHJldHVybnMgYXJyYXkgcG9pbnRlcgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXYXNtQXJyYXlMZW5ndGg6Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBJbnQ2NCwgKCJBdCAiLCAqdmFsdWUpKTsgLy8gYXJyYXkgcG9pbnRlcgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVl
KSk7IC8vIHJldHVybnMgc2l6ZQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBXYXNtUmVmQ2FzdDoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAxIHx8IHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0g
SW50NjQsICgiQXQgIiwgKnZhbHVlKSk7IC8vIHJlZmVyZW5jZSBpbnB1dApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IDdhZGM5OGExYTI4MS4uZDMwMGMyODBiNjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1
ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNWYWx1ZUtleUlubGluZXMuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUdldFZhbHVl
LmgiCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2Fz
bUFycmF5TmV3VmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheVNldFZhbHVlLmgiCiAjaW5j
bHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbVJlZlR5cGVD
aGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtU3RydWN0R2V0VmFsdWUuaCIKQEAgLTkwNSw2
ICs5MDksMjkgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgICAgIHJlc3Vs
dC53cml0ZXMgPSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1bHQuZXhpdHNTaWRld2F5
cyA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2FzbUFycmF5R2V0OiB7CisgICAg
ICAgIGNvbnN0IGF1dG8qIGRlcml2ZWQgPSBhczxXYXNtQXJyYXlHZXRWYWx1ZT4oKTsKKyAgICAg
ICAgcmVzdWx0LnJlYWRzID0gZGVyaXZlZC0+cmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICByZXN1bHQucmVhZHNNdXRhYmlsaXR5ID0gZGVy
aXZlZC0+bXV0YWJpbGl0eSgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBXYXNt
QXJyYXlTZXQ6IHsKKyAgICAgICAgY29uc3QgYXV0byogZGVyaXZlZCA9IGFzPFdhc21BcnJheVNl
dFZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gZGVyaXZlZC0+cmFuZ2UoKTsKKyAg
ICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBXYXNtQXJyYXlOZXc6CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBS
YW5nZTo6dG9wKCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBIZWFwUmFuZ2U6OnRvcCgpOwor
ICAgICAgICByZXN1bHQuZXhpdHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV2FzbUFycmF5TGVuZ3RoOgorICAgICAgICByZXN1bHQucmVhZHMgPSBhczxXYXNtQXJy
YXlMZW5ndGhWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRl
bnQgPSB0cnVlOworICAgICAgICByZXN1bHQucmVhZHNNdXRhYmlsaXR5ID0gTXV0YWJpbGl0eTo6
SW1tdXRhYmxlOworICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc21SZWZDYXN0OgogICAgICAg
ICByZXN1bHQucmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1bHQuY29udHJv
bERlcGVuZGVudCA9IHRydWU7CkBAIC05NzIsNiArOTk5LDcgQEAgVmFsdWVLZXkgVmFsdWU6Omtl
eSgpIGNvbnN0CiAgICAgY2FzZSBOZWc6CiAgICAgY2FzZSBQdXJpZnlOYU46CiAgICAgY2FzZSBE
ZXBlbmQ6CisgICAgY2FzZSBXYXNtQXJyYXlMZW5ndGg6CiAgICAgICAgIHJldHVybiBWYWx1ZUtl
eShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3Vi
OgpAQCAtMTE1Niw2ICsxMTg0LDkgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAg
Y2FzZSBXYXNtU3RydWN0R2V0OgogICAgIGNhc2UgV2FzbVN0cnVjdFNldDoKICAgICBjYXNlIFdh
c21TdHJ1Y3ROZXc6CisgICAgY2FzZSBXYXNtQXJyYXlHZXQ6CisgICAgY2FzZSBXYXNtQXJyYXlT
ZXQ6CisgICAgY2FzZSBXYXNtQXJyYXlOZXc6CiAgICAgY2FzZSBNZW1vcnlDb3B5OgogICAgIGNh
c2UgTWVtb3J5RmlsbDoKICAgICBjYXNlIEZlbmNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgKaW5kZXggYTQ3MzcwNzVmZDBlLi42YmU5NmEyZTVlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuaApAQCAtMzY5LDcgKzM2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAgIC8v
IFRoZSBzcGVjaWZpYyB2YWx1ZSBvZiBWYXJBcmdzIGRvZXMgbm90IG1hdHRlciwgYnV0IHRoZSB2
YWx1ZSBvZiB0aGUgb3RoZXJzIGlzIGFzc3VtZWQgdG8gbWF0Y2ggdGhlaXIgbWVhbmluZy4KLSAg
ICBlbnVtIE51bUNoaWxkcmVuIDogdWludDhfdCB7IFplcm8gPSAwLCBPbmUgPSAxLCBUd28gPSAy
LCBUaHJlZSA9IDMsIFZhckFyZ3MgPSA0fTsKKyAgICBlbnVtIE51bUNoaWxkcmVuIDogdWludDhf
dCB7IFplcm8gPSAwLCBPbmUgPSAxLCBUd28gPSAyLCBUaHJlZSA9IDMsIEZvdXIgPSA0LCBWYXJB
cmdzID0gNSB9OwogCiAgICAgY2hhciogY2hpbGRyZW5BbGxvYygpIHsgcmV0dXJuIHN0ZDo6Yml0
X2Nhc3Q8Y2hhcio+KHRoaXMpICsgbV9hZGphY2VuY3lMaXN0T2Zmc2V0OyB9CiAgICAgY29uc3Qg
Y2hhciogY2hpbGRyZW5BbGxvYygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Yml0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHRoaXMpICsgbV9hZGphY2VuY3lMaXN0T2Zmc2V0OyB9CkBAIC00NTQsNiArNDU0LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICBjYXNlIFdh
c21Cb3VuZHNDaGVjazoKICAgICAgICAgY2FzZSBXYXNtU3RydWN0R2V0OgorICAgICAgICBjYXNl
IFdhc21BcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBWZWN0b3JFeHRyYWN0TGFuZToKICAgICAg
ICAgY2FzZSBWZWN0b3JTcGxhdDoKICAgICAgICAgY2FzZSBWZWN0b3JOb3Q6CkBAIC01MTksNiAr
NTIwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFN0b3JlODoKICAgICAgICAgY2FzZSBT
dG9yZTE2OgogICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICBjYXNlIFdhc21BcnJheUdldDoK
ICAgICAgICAgY2FzZSBXYXNtU3RydWN0U2V0OgogICAgICAgICBjYXNlIFdhc21TdHJ1Y3ROZXc6
CiAgICAgICAgIGNhc2UgV2FzbVJlZkNhc3Q6CkBAIC01NjcsNiArNTY5LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBjYXNlIFZlY3RvckV4dHJhY3RQYWlyOgogICAgICAgICBjYXNlIFN0aXRjaDoK
ICAgICAgICAgICAgIHJldHVybiAyICogc2l6ZW9mKFZhbHVlKik7CisgICAgICAgIGNhc2UgV2Fz
bUFycmF5U2V0OgogICAgICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAgY2FzZSBBdG9taWNXZWFr
Q0FTOgogICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKQEAgLTU3Nyw2ICs1ODAsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgTWVtb3J5RmlsbDoKICAgICAgICAgY2FzZSBNZW1vcnlD
b3B5OgogICAgICAgICAgICAgcmV0dXJuIDMgKiBzaXplb2YoVmFsdWUqKTsKKyAgICAgICAgY2Fz
ZSBXYXNtQXJyYXlOZXc6CisgICAgICAgICAgICByZXR1cm4gNCAqIHNpemVvZihWYWx1ZSopOwog
ICAgICAgICBjYXNlIENDYWxsOgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBjYXNlIENo
ZWNrQWRkOgpAQCAtNjU2LDYgKzY2MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFyQXJn
czoKICAgICAgICAgICAgIG5ldyAoc3RkOjpiaXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXQp
IFZlY3RvcjxWYWx1ZSosIDM+ICh2YWx1ZVRvQ2xvbmUuY2hpbGRyZW5WZWN0b3IoKSk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb3VyOgorICAgICAgICAgICAgc3RkOjpiaXRf
Y2FzdDxWYWx1ZSoqPihzdGQ6OmJpdF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldClbM10gPSB2
YWx1ZVRvQ2xvbmUuY2hpbGRyZW5BcnJheSgpWzNdOworICAgICAgICAgICAgW1tmYWxsdGhyb3Vn
aF1dOwogICAgICAgICBjYXNlIFRocmVlOgogICAgICAgICAgICAgc3RkOjpiaXRfY2FzdDxWYWx1
ZSoqPihzdGQ6OmJpdF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldClbMl0gPSB2YWx1ZVRvQ2xv
bmUuY2hpbGRyZW5BcnJheSgpWzJdOwogICAgICAgICAgICAgW1tmYWxsdGhyb3VnaF1dOwpAQCAt
NzM3LDYgKzc0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmVjdG9yRHVwRWxlbWVudDoK
ICAgICAgICAgY2FzZSBWZWN0b3JSZXZlcnNlOgogICAgICAgICBjYXNlIFZlY3RvclJlbGF4ZWRU
cnVuY1NhdDoKKyAgICAgICAgY2FzZSBXYXNtQXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBpZiAo
bnVtQXJncyAhPSAxKSBbW3VubGlrZWx5XV0KICAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQs
IG51bUFyZ3MpOwogICAgICAgICAgICAgcmV0dXJuIE9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWVJbmxpbmVzLmgKaW5kZXggNjkwNGM5YzEwMGIwLi4zNDI4YzgyZjQ3ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCkBAIC01MSw2ICs1MSwx
MSBAQAogI2luY2x1ZGUgIkIzVmFsdWUuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIK
ICNpbmNsdWRlICJCM1dhc21BZGRyZXNzVmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUVs
ZW1lbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFycmF5R2V0VmFsdWUuaCIKKyNpbmNsdWRl
ICJCM1dhc21BcnJheUxlbmd0aFZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlOZXdWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFycmF5U2V0VmFsdWUuaCIKICNpbmNsdWRlICJCM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtUmVmVHlwZUNoZWNrVmFsdWUuaCIK
ICNpbmNsdWRlICJCM1dhc21TdHJ1Y3RHZXRWYWx1ZS5oIgpAQCAtMTI3LDYgKzEzMiw4IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDog
XAogICAgIGNhc2UgU2VsZWN0OiBcCiAgICAgICAgIHJldHVybiBNQUNSTyhWYWx1ZSk7IFwKKyAg
ICBjYXNlIFdhc21BcnJheUxlbmd0aDogXAorICAgICAgICByZXR1cm4gTUFDUk8oV2FzbUFycmF5
TGVuZ3RoVmFsdWUpOyBcCiAgICAgY2FzZSBBcmd1bWVudFJlZzogXAogICAgICAgICByZXR1cm4g
TUFDUk8oQXJndW1lbnRSZWdWYWx1ZSk7IFwKICAgICBjYXNlIENvbnN0MzI6IFwKQEAgLTE3Niw2
ICsxODMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAgICAgICAgIHJldHVy
biBNQUNSTyhXYXNtU3RydWN0U2V0VmFsdWUpOyBcCiAgICAgY2FzZSBXYXNtU3RydWN0TmV3OiBc
CiAgICAgICAgIHJldHVybiBNQUNSTyhXYXNtU3RydWN0TmV3VmFsdWUpOyBcCisgICAgY2FzZSBX
YXNtQXJyYXlHZXQ6IFwKKyAgICAgICAgcmV0dXJuIE1BQ1JPKFdhc21BcnJheUdldFZhbHVlKTsg
XAorICAgIGNhc2UgV2FzbUFycmF5U2V0OiBcCisgICAgICAgIHJldHVybiBNQUNSTyhXYXNtQXJy
YXlTZXRWYWx1ZSk7IFwKKyAgICBjYXNlIFdhc21BcnJheU5ldzogXAorICAgICAgICByZXR1cm4g
TUFDUk8oV2FzbUFycmF5TmV3VmFsdWUpOyBcCiAgICAgY2FzZSBXYXNtUmVmQ2FzdDogXAogICAg
IGNhc2UgV2FzbVJlZlRlc3Q6IFwKICAgICAgICAgcmV0dXJuIE1BQ1JPKFdhc21SZWZUeXBlQ2hl
Y2tWYWx1ZSk7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
S2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcAppbmRleCA5
ZjkwNjEzM2I1M2YuLjk5ZmE1YWRiYzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlS2V5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUtleUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUxlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNX
YXNtUmVmVHlwZUNoZWNrVmFsdWUuaCIKIAogV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0Vf
QkVHSU4KQEAgLTI0NSw2ICsyNDYsMTEgQEAgVmFsdWUqIFZhbHVlS2V5OjptYXRlcmlhbGl6ZShQ
cm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmlnaW4pIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
cHJvYy5hZGQ8V2FzbVJlZlR5cGVDaGVja1ZhbHVlPihraW5kKCksIHR5cGUoKSwgb3JpZ2luLCB0
YXJnZXRIZWFwVHlwZSwgZmxhZ3MsIFdURjo6bW92ZSh0YXJnZXRSVFQpLCBjaGlsZChwcm9jLCAw
KSwgY2hpbGQocHJvYywgMSkpOwogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8V2FzbVJlZlR5cGVD
aGVja1ZhbHVlPihraW5kKCksIHR5cGUoKSwgb3JpZ2luLCB0YXJnZXRIZWFwVHlwZSwgZmxhZ3Ms
IFdURjo6bW92ZSh0YXJnZXRSVFQpLCBjaGlsZChwcm9jLCAwKSk7CiAgICAgfQorICAgIGNhc2Ug
V2FzbUFycmF5TGVuZ3RoOiB7CisgICAgICAgIGF1dG8qIHYgPSBwcm9jLmFkZDxXYXNtQXJyYXlM
ZW5ndGhWYWx1ZT4oa2luZCgpLCB0eXBlKCksIG9yaWdpbiwgY2hpbGQocHJvYywgMCkpOworICAg
ICAgICB2LT5zZXRSYW5nZShwcm9jLmhlYXBzKCkuSlNXZWJBc3NlbWJseUFycmF5X3NpemUucmFu
Z2UoKSk7CisgICAgICAgIHJldHVybiB2OworICAgIH0KICAgICBjYXNlIE5vcDoKICAgICBjYXNl
IFNldDoKICAgICBjYXNlIEdldDoKQEAgLTI2OSw2ICsyNzUsOSBAQCBWYWx1ZSogVmFsdWVLZXk6
Om1hdGVyaWFsaXplKFByb2NlZHVyZSYgcHJvYywgT3JpZ2luIG9yaWdpbikgY29uc3QKICAgICBj
YXNlIFdhc21TdHJ1Y3RHZXQ6CiAgICAgY2FzZSBXYXNtU3RydWN0U2V0OgogICAgIGNhc2UgV2Fz
bVN0cnVjdE5ldzoKKyAgICBjYXNlIFdhc21BcnJheUdldDoKKyAgICBjYXNlIFdhc21BcnJheVNl
dDoKKyAgICBjYXNlIFdhc21BcnJheU5ldzoKICAgICBjYXNlIE1lbW9yeUNvcHk6CiAgICAgY2Fz
ZSBNZW1vcnlGaWxsOgogICAgIGNhc2UgRmVuY2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNXYXNtQXJyYXlFbGVtZW50VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzV2FzbUFycmF5RWxlbWVudFZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc1NmY5MzFjNTk4NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUVsZW1lbnRWYWx1ZS5jcHAKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUVsZW1lbnRWYWx1ZS5o
IgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQzo6QjMgeworCitXYXNtQXJy
YXlFbGVtZW50VmFsdWU6On5XYXNtQXJyYXlFbGVtZW50VmFsdWUoKSA9IGRlZmF1bHQ7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlFbGVtZW50VmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUVsZW1lbnRWYWx1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDBiZmYyMjExYWI4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5RWxlbWVudFZh
bHVlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkIzRWZmZWN0cy5oIgorI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCisjaW5jbHVkZSAiQjNW
YWx1ZS5oIgorI2luY2x1ZGUgIldhc21UeXBlRGVmaW5pdGlvbi5oIgorCitXVEZfQUxMT1dfVU5T
QUZFX0JVRkZFUl9VU0FHRV9CRUdJTgorCituYW1lc3BhY2UgSlNDOjpCMyB7CisKK2NsYXNzIFdh
c21BcnJheUVsZW1lbnRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQub3Bjb2RlKCkgPT0gV2FzbUFy
cmF5R2V0IHx8IGtpbmQub3Bjb2RlKCkgPT0gV2FzbUFycmF5U2V0OyB9CisKKyAgICB+V2FzbUFy
cmF5RWxlbWVudFZhbHVlKCkgb3ZlcnJpZGU7CisKKyAgICBSZWY8Y29uc3QgV2FzbTo6UlRUPiBy
dHQoKSBjb25zdCB7IHJldHVybiBtX3J0dDsgfQorICAgIGNvbnN0IFdhc206OkFycmF5VHlwZSog
YXJyYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVR5cGU7IH0KKworICAgIGNvbnN0IEhl
YXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CisgICAgdm9pZCBzZXRS
YW5nZShIZWFwUmFuZ2UgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgTXV0YWJpbGl0
eSBtdXRhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9tdXRhYmlsaXR5OyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgV2FzbUFycmF5RWxl
bWVudFZhbHVlKENoZWNrZWRPcGNvZGVUYWcgdGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgTnVt
Q2hpbGRyZW4gbnVtQ2hpbGRyZW4sIE9yaWdpbiBvcmlnaW4sIFJlZjxjb25zdCBXYXNtOjpSVFQ+
IHJ0dCwgY29uc3QgV2FzbTo6QXJyYXlUeXBlKiBhcnJheVR5cGUsIE11dGFiaWxpdHkgbXV0YWJp
bGl0eSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZSh0YWcsIGtpbmQs
IHR5cGUsIG51bUNoaWxkcmVuLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKKyAgICAgICAgLCBtX3J0
dChXVEY6Om1vdmUocnR0KSkKKyAgICAgICAgLCBtX2FycmF5VHlwZShhcnJheVR5cGUpCisgICAg
ICAgICwgbV9tdXRhYmlsaXR5KG11dGFiaWxpdHkpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IFJlZjxjb25zdCBXYXNtOjpSVFQ+IG1fcnR0OworICAgIFNVUFBSRVNTX1VOQ09VTlRFRF9NRU1C
RVIgY29uc3QgV2FzbTo6QXJyYXlUeXBlKiBtX2FycmF5VHlwZTsKKyAgICBIZWFwUmFuZ2UgbV9y
YW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBNdXRhYmlsaXR5IG1fbXV0YWJpbGl0eTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJf
VVNBR0VfRU5ECisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5R2V0VmFsdWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5R2V0VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uNjJmZjNmMmVkMTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5R2V0VmFsdWUuY3BwCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlHZXRWYWx1ZS5oIgorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0M6OkIzIHsKKworV2FzbUFycmF5R2V0VmFsdWU6On5XYXNtQXJyYXlHZXRWYWx1ZSgpID0g
ZGVmYXVsdDsKKworV2FzbUFycmF5R2V0VmFsdWU6Oldhc21BcnJheUdldFZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgVHlwZSByZXN1bHRUeXBlLCBWYWx1ZSogYXJyYXlQdHIsIFZhbHVl
KiBpbmRleCwgUmVmPGNvbnN0IFdhc206OlJUVD4gcnR0LCBjb25zdCBXYXNtOjpBcnJheVR5cGUq
IGFycmF5VHlwZSwgTXV0YWJpbGl0eSBtdXRhYmlsaXR5KQorICAgIDogV2FzbUFycmF5RWxlbWVu
dFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHJlc3VsdFR5cGUsIFR3bywgb3JpZ2luLCBXVEY6
Om1vdmUocnR0KSwgYXJyYXlUeXBlLCBtdXRhYmlsaXR5LCBhcnJheVB0ciwgaW5kZXgpCit7Cit9
CisKK3ZvaWQgV2FzbUFycmF5R2V0VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEs
IFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAiZWxlbWVu
dFR5cGUgPSAiLCBtX2FycmF5VHlwZS0+ZWxlbWVudFR5cGUoKS50eXBlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUdldFZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlHZXRWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTZiMWY2MmFiODM5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5R2V0VmFsdWUuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlF
bGVtZW50VmFsdWUuaCIKKworV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfQkVHSU4KKwor
bmFtZXNwYWNlIEpTQzo6QjMgeworCitjbGFzcyBXYXNtQXJyYXlHZXRWYWx1ZSBmaW5hbCA6IHB1
YmxpYyBXYXNtQXJyYXlFbGVtZW50VmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kLm9wY29kZSgpID09IFdhc21BcnJheUdldDsg
fQorCisgICAgfldhc21BcnJheUdldFZhbHVlKCkgZmluYWw7CisKKyAgICAvLyBDaGlsZCAwIGlz
IHRoZSBhcnJheSBwb2ludGVyCisgICAgLy8gQ2hpbGQgMSBpcyB0aGUgaW5kZXggKEludDMyKQor
ICAgIEIzX1NQRUNJQUxJWkVfVkFMVUVfRk9SX0ZJWEVEX0NISUxEUkVOKDIpCisgICAgQjNfU1BF
Q0lBTElaRV9WQUxVRV9GT1JfRklOQUxfU0laRV9GSVhFRF9DSElMRFJFTgorCitwcml2YXRlOgor
ICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5h
bDsKKworICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVl
OworCisgICAgc3RhdGljIE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoS2luZCwgT3JpZ2lu
LCBUeXBlLCBWYWx1ZSosIFZhbHVlKiwgUmVmPGNvbnN0IFdhc206OlJUVD4sIGNvbnN0IFdhc206
OkFycmF5VHlwZSosIE11dGFiaWxpdHkpIHsgcmV0dXJuIFdhc21BcnJheUdldDsgfQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIFdhc21BcnJheUdldFZhbHVlKEtpbmQsIE9yaWdpbiwgVHlwZSByZXN1
bHRUeXBlLCBWYWx1ZSogYXJyYXlQdHIsIFZhbHVlKiBpbmRleCwgUmVmPGNvbnN0IFdhc206OlJU
VD4sIGNvbnN0IFdhc206OkFycmF5VHlwZSosIE11dGFiaWxpdHkpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCitXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9FTkQKKworI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lMGZkMWE1ZTNiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5jcHAKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJCM1dhc21BcnJheUxlbmd0aFZhbHVlLmgiCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDOjpCMyB7CisKK1dhc21BcnJheUxlbmd0aFZhbHVl
Ojp+V2FzbUFycmF5TGVuZ3RoVmFsdWUoKSA9IGRlZmF1bHQ7CisKK30gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlMZW5ndGhWYWx1ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzV2FzbUFycmF5TGVuZ3RoVmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjgxYjM3MDZjMWIxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheUxlbmd0aFZhbHVlLmgKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgi
CisjaW5jbHVkZSAiQjNWYWx1ZS5oIgorCitXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9C
RUdJTgorCituYW1lc3BhY2UgSlNDOjpCMyB7CisKK2NsYXNzIFdhc21BcnJheUxlbmd0aFZhbHVl
IGZpbmFsIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRz
KEtpbmQga2luZCkgeyByZXR1cm4ga2luZC5vcGNvZGUoKSA9PSBXYXNtQXJyYXlMZW5ndGg7IH0K
KworICAgIH5XYXNtQXJyYXlMZW5ndGhWYWx1ZSgpIGZpbmFsOworCisgICAgSGVhcFJhbmdlIHJh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQorICAgIHZvaWQgc2V0UmFuZ2UoSGVhcFJh
bmdlIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9WQUxV
RV9GT1JfRklYRURfQ0hJTERSRU4oMSkKKyAgICBCM19TUEVDSUFMSVpFX1ZBTFVFX0ZPUl9GSU5B
TF9TSVpFX0ZJWEVEX0NISUxEUkVOCisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2Nl
ZHVyZTsKKyAgICBmcmllbmQgY2xhc3MgVmFsdWU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CisgICAgc3RhdGljIE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoQXJn
dW1lbnRzLi4uKSB7IHJldHVybiBXYXNtQXJyYXlMZW5ndGg7IH0KKworICAgIFdhc21BcnJheUxl
bmd0aFZhbHVlKEtpbmQga2luZCwgVHlwZSByZXN1bHRUeXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogYXJyYXlQdHIpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgcmVzdWx0
VHlwZSwgT25lLCBvcmlnaW4sIGFycmF5UHRyKQorICAgIHsKKyAgICB9CisKKyAgICBIZWFwUmFu
Z2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKKworV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfRU5ECisKKyNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2Fz
bUFycmF5TmV3VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5
TmV3VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGQ2
YmM1NTM0MDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
V2FzbUFycmF5TmV3VmFsdWUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQjNXYXNtQXJyYXlOZXdWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0M6OkIzIHsKKworV2FzbUFycmF5
TmV3VmFsdWU6On5XYXNtQXJyYXlOZXdWYWx1ZSgpID0gZGVmYXVsdDsKKwordm9pZCBXYXNtQXJy
YXlOZXdWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ0eXBlSW5kZXggPSAiLCBtX3R5cGVJ
bmRleCwgY29tbWEsICJlbGVtZW50VHlwZSA9ICIsIG1fYXJyYXlUeXBlLT5lbGVtZW50VHlwZSgp
LnR5cGUsIGNvbW1hLCAiaGFzSW5pdFZhbHVlID0gIiwgbV9oYXNJbml0VmFsdWUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5TmV3VmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21BcnJheU5ld1ZhbHVlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNjhlNDI3NWJjZWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQXJyYXlOZXdWYWx1ZS5oCkBAIC0w
LDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNWYWx1
ZS5oIgorI2luY2x1ZGUgIldhc21UeXBlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfQkVHSU4KKworbmFt
ZXNwYWNlIEpTQzo6QjMgeworCitjbGFzcyBXYXNtQXJyYXlOZXdWYWx1ZSBmaW5hbCA6IHB1Ymxp
YyBWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsg
cmV0dXJuIGtpbmQub3Bjb2RlKCkgPT0gV2FzbUFycmF5TmV3OyB9CisKKyAgICB+V2FzbUFycmF5
TmV3VmFsdWUoKSBmaW5hbDsKKworICAgIC8vIENoaWxkIDAgaXMgdGhlIGluc3RhbmNlIHBvaW50
ZXIgKEludDY0KQorICAgIC8vIENoaWxkIDEgaXMgdGhlIHN0cnVjdHVyZUlEIChJbnQzMikKKyAg
ICAvLyBDaGlsZCAyIGlzIHRoZSBzaXplIChJbnQzMikKKyAgICAvLyBDaGlsZCAzIChvcHRpb25h
bCkgaXMgdGhlIGluaXQgdmFsdWUKKyAgICBWYWx1ZSogaW5zdGFuY2UoKSBjb25zdCB7IHJldHVy
biBjaGlsZCgwKTsgfQorICAgIFZhbHVlKiBzdHJ1Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIGNo
aWxkKDEpOyB9CisgICAgVmFsdWUqIHNpemUoKSBjb25zdCB7IHJldHVybiBjaGlsZCgyKTsgfQor
CisgICAgYm9vbCBoYXNJbml0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2hhc0luaXRWYWx1ZTsg
fQorICAgIFZhbHVlKiBpbml0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2hhc0luaXRWYWx1ZSk7
IHJldHVybiBjaGlsZCgzKTsgfQorCisgICAgUmVmPGNvbnN0IFdhc206OlJUVD4gcnR0KCkgY29u
c3QgeyByZXR1cm4gbV9ydHQ7IH0KKyAgICBjb25zdCBXYXNtOjpBcnJheVR5cGUqIGFycmF5VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlUeXBlOyB9CisgICAgdWludDMyX3QgdHlwZUluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlSW5kZXg7IH0KKworICAgIC8vIE9mZnNldCBmcm9tIGlu
c3RhbmNlIGZvciBhbGxvY2F0b3IgbG9va3VwIChwcmUtY29tcHV0ZWQgZnJvbSBNb2R1bGVJbmZv
cm1hdGlvbikKKyAgICBpbnQzMl90IGFsbG9jYXRvcnNCYXNlT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvY2F0b3JzQmFzZU9mZnNldDsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9WQUxVRV9G
T1JfTk9OX1ZBUkFSR1NfQ0hJTERSRU4KKyAgICBCM19TUEVDSUFMSVpFX1ZBTFVFX0ZPUl9GSU5B
TF9TSVpFX0ZJWEVEX0NISUxEUkVOCisKK3ByaXZhdGU6CisgICAgdm9pZCBkdW1wTWV0YShDb21t
YVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsOworCisgICAgZnJpZW5kIGNsYXNz
IFByb2NlZHVyZTsKKyAgICBmcmllbmQgY2xhc3MgVmFsdWU7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0
b3IoQXJndW1lbnRzLi4uKSB7IHJldHVybiBXYXNtQXJyYXlOZXc7IH0KKworICAgIC8vIDMtY2hp
bGQgY29uc3RydWN0b3IgKG5vIGluaXQgdmFsdWUg4oCUIGZvciBhZGRBcnJheU5ld0ZpeGVkKQor
ICAgIFdhc21BcnJheU5ld1ZhbHVlKE9yaWdpbiBvcmlnaW4sIFR5cGUgcmVzdWx0VHlwZSwgUmVm
PGNvbnN0IFdhc206OlJUVD4gcnR0LCBjb25zdCBXYXNtOjpBcnJheVR5cGUqIGFycmF5VHlwZSwg
dWludDMyX3QgdHlwZUluZGV4LCBpbnQzMl90IGFsbG9jYXRvcnNCYXNlT2Zmc2V0LCBWYWx1ZSog
aW5zdGFuY2UsIFZhbHVlKiBzdHJ1Y3R1cmVJRCwgVmFsdWUqIHNpemUpCisgICAgICAgIDogVmFs
dWUoQ2hlY2tlZE9wY29kZSwgV2FzbUFycmF5TmV3LCByZXN1bHRUeXBlLCBUaHJlZSwgb3JpZ2lu
LCBpbnN0YW5jZSwgc3RydWN0dXJlSUQsIHNpemUpCisgICAgICAgICwgbV9ydHQoV1RGOjptb3Zl
KHJ0dCkpCisgICAgICAgICwgbV9hcnJheVR5cGUoYXJyYXlUeXBlKQorICAgICAgICAsIG1fdHlw
ZUluZGV4KHR5cGVJbmRleCkKKyAgICAgICAgLCBtX2FsbG9jYXRvcnNCYXNlT2Zmc2V0KGFsbG9j
YXRvcnNCYXNlT2Zmc2V0KQorICAgICAgICAsIG1faGFzSW5pdFZhbHVlKGZhbHNlKQorICAgIHsK
KyAgICB9CisKKyAgICAvLyA0LWNoaWxkIGNvbnN0cnVjdG9yICh3aXRoIGluaXQgdmFsdWUg4oCU
IGZvciBhZGRBcnJheU5ldy9hZGRBcnJheU5ld0RlZmF1bHQpCisgICAgV2FzbUFycmF5TmV3VmFs
dWUoT3JpZ2luIG9yaWdpbiwgVHlwZSByZXN1bHRUeXBlLCBSZWY8Y29uc3QgV2FzbTo6UlRUPiBy
dHQsIGNvbnN0IFdhc206OkFycmF5VHlwZSogYXJyYXlUeXBlLCB1aW50MzJfdCB0eXBlSW5kZXgs
IGludDMyX3QgYWxsb2NhdG9yc0Jhc2VPZmZzZXQsIFZhbHVlKiBpbnN0YW5jZSwgVmFsdWUqIHN0
cnVjdHVyZUlELCBWYWx1ZSogc2l6ZSwgVmFsdWUqIGluaXRWYWx1ZSkKKyAgICAgICAgOiBWYWx1
ZShDaGVja2VkT3Bjb2RlLCBXYXNtQXJyYXlOZXcsIHJlc3VsdFR5cGUsIEZvdXIsIG9yaWdpbiwg
aW5zdGFuY2UsIHN0cnVjdHVyZUlELCBzaXplLCBpbml0VmFsdWUpCisgICAgICAgICwgbV9ydHQo
V1RGOjptb3ZlKHJ0dCkpCisgICAgICAgICwgbV9hcnJheVR5cGUoYXJyYXlUeXBlKQorICAgICAg
ICAsIG1fdHlwZUluZGV4KHR5cGVJbmRleCkKKyAgICAgICAgLCBtX2FsbG9jYXRvcnNCYXNlT2Zm
c2V0KGFsbG9jYXRvcnNCYXNlT2Zmc2V0KQorICAgICAgICAsIG1faGFzSW5pdFZhbHVlKHRydWUp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IFJlZjxjb25zdCBXYXNtOjpSVFQ+IG1fcnR0Owor
ICAgIFNVUFBSRVNTX1VOQ09VTlRFRF9NRU1CRVIgY29uc3QgV2FzbTo6QXJyYXlUeXBlKiBtX2Fy
cmF5VHlwZTsKKyAgICB1aW50MzJfdCBtX3R5cGVJbmRleDsKKyAgICBpbnQzMl90IG1fYWxsb2Nh
dG9yc0Jhc2VPZmZzZXQ7CisgICAgYm9vbCBtX2hhc0luaXRWYWx1ZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKKworV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfRU5ECisKKyNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzV2FzbUFycmF5U2V0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
V2FzbUFycmF5U2V0VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uM2UxZWVkMTRjODg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2FzbUFycmF5U2V0VmFsdWUuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQjNXYXNtQXJyYXlTZXRWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0M6OkIzIHsKKwor
V2FzbUFycmF5U2V0VmFsdWU6On5XYXNtQXJyYXlTZXRWYWx1ZSgpID0gZGVmYXVsdDsKKworV2Fz
bUFycmF5U2V0VmFsdWU6Oldhc21BcnJheVNldFZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdp
biwgVmFsdWUqIGFycmF5UHRyLCBWYWx1ZSogaW5kZXgsIFZhbHVlKiB2YWx1ZSwgUmVmPGNvbnN0
IFdhc206OlJUVD4gcnR0LCBjb25zdCBXYXNtOjpBcnJheVR5cGUqIGFycmF5VHlwZSkKKyAgICA6
IFdhc21BcnJheUVsZW1lbnRWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBUaHJlZSwg
b3JpZ2luLCBXVEY6Om1vdmUocnR0KSwgYXJyYXlUeXBlLCBNdXRhYmlsaXR5OjpNdXRhYmxlLCBh
cnJheVB0ciwgaW5kZXgsIHZhbHVlKQoreworfQorCit2b2lkIFdhc21BcnJheVNldFZhbHVlOjpk
dW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIG91dC5wcmludChjb21tYSwgImVsZW1lbnRUeXBlID0gIiwgbV9hcnJheVR5cGUtPmVsZW1l
bnRUeXBlKCkudHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8v
IEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNX
YXNtQXJyYXlTZXRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUFycmF5
U2V0VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3NWI4
MDQyNDBhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dh
c21BcnJheVNldFZhbHVlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJ
VCkKKworI2luY2x1ZGUgIkIzV2FzbUFycmF5RWxlbWVudFZhbHVlLmgiCisKK1dURl9BTExPV19V
TlNBRkVfQlVGRkVSX1VTQUdFX0JFR0lOCisKK25hbWVzcGFjZSBKU0M6OkIzIHsKKworY2xhc3Mg
V2FzbUFycmF5U2V0VmFsdWUgZmluYWwgOiBwdWJsaWMgV2FzbUFycmF5RWxlbWVudFZhbHVlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2lu
ZC5vcGNvZGUoKSA9PSBXYXNtQXJyYXlTZXQ7IH0KKworICAgIH5XYXNtQXJyYXlTZXRWYWx1ZSgp
IGZpbmFsOworCisgICAgLy8gQ2hpbGQgMCBpcyB0aGUgYXJyYXkgcG9pbnRlcgorICAgIC8vIENo
aWxkIDEgaXMgdGhlIGluZGV4IChJbnQzMikKKyAgICAvLyBDaGlsZCAyIGlzIHRoZSB2YWx1ZSB0
byBzdG9yZQorICAgIEIzX1NQRUNJQUxJWkVfVkFMVUVfRk9SX0ZJWEVEX0NISUxEUkVOKDMpCisg
ICAgQjNfU1BFQ0lBTElaRV9WQUxVRV9GT1JfRklOQUxfU0laRV9GSVhFRF9DSElMRFJFTgorCitw
cml2YXRlOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBj
b25zdCBmaW5hbDsKKworICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNs
YXNzIFZhbHVlOworCisgICAgc3RhdGljIE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoS2lu
ZCwgT3JpZ2luLCBWYWx1ZSosIFZhbHVlKiwgVmFsdWUqLCBSZWY8Y29uc3QgV2FzbTo6UlRUPiwg
Y29uc3QgV2FzbTo6QXJyYXlUeXBlKikgeyByZXR1cm4gV2FzbUFycmF5U2V0OyB9CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgV2FzbUFycmF5U2V0VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogYXJy
YXlQdHIsIFZhbHVlKiBpbmRleCwgVmFsdWUqLCBSZWY8Y29uc3QgV2FzbTo6UlRUPiwgY29uc3Qg
V2FzbTo6QXJyYXlUeXBlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKK1dURl9B
TExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0VORAorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBj
MTc1MmM2MjU1MTUuLjhmYTVmNWU0MjI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTcxLDggKzE3MSw5IEBAIHB1YmxpYzoKICAgICBM
b3dlckRGR1RvQjMoU3RhdGUmIHN0YXRlKQogICAgICAgICA6IG1fZ3JhcGgoc3RhdGUuZ3JhcGgp
CiAgICAgICAgICwgbV9mdGxTdGF0ZShzdGF0ZSkKLSAgICAgICAgLCBtX291dChzdGF0ZSkKICAg
ICAgICAgLCBtX3Byb2MoKnN0YXRlLnByb2MpCisgICAgICAgICwgbV9oZWFwcyhtX3Byb2MuaGVh
cHMoKSkKKyAgICAgICAgLCBtX291dChzdGF0ZSkKICAgICAgICAgLCBtX3R1cGxlVmFsdWVzKG1f
Z3JhcGgubV90dXBsZURhdGEuc2l6ZSgpKQogICAgICAgICAsIG1fYXZhaWxhYmlsaXR5Q2FsY3Vs
YXRvcihtX2dyYXBoKQogICAgICAgICAsIG1fc3RhdGUoc3RhdGUuZ3JhcGgpCkBAIC0yNTkwMSw5
ICsyNTkwMiw5IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgIEdyYXBoJiBtX2dy
YXBoOwogICAgIFN0YXRlJiBtX2Z0bFN0YXRlOwotICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkg
bV9oZWFwczsKLSAgICBPdXRwdXQgbV9vdXQ7CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CisgICAg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgbV9oZWFwczsKKyAgICBPdXRwdXQgbV9vdXQ7CiAKICAg
ICBMQmFzaWNCbG9jayBtX2hhbmRsZUV4Y2VwdGlvbnM7CiAgICAgVW5jaGVja2VkS2V5SGFzaE1h
cDxERkc6OkJhc2ljQmxvY2sqLCBMQmFzaWNCbG9jaz4gbV9ibG9ja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IGFkMjk0OGM3MzZh
YS4uZGY5NWU0Y2VlMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
dXRQcm9wZXJ0eVNsb3QuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVhYmlsaXR5ID09IENh
Y2hpbmdBbGxvd2VkOyB9CiAKLSAgICBKU09iamVjdCogbV9iYXNlOworICAgIFNVUFBSRVNTX0ZP
UldBUkRfREVDTF9NRU1CRVIgSlNPYmplY3QqIG1fYmFzZTsKICAgICBKU1ZhbHVlIG1fdGhpc1Zh
bHVlOwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0lS
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdJUkdlbmVy
YXRvci5jcHAKaW5kZXggZTM2NGEyZWRmMzhjLi5lZjQ4NjE4NGI5OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0lSR2VuZXJhdG9yLmNwcApAQCAtNDksNiAr
NDksMTAgQEAKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZh
bHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQWRkcmVzc1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNt
QXJyYXlHZXRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFycmF5TGVuZ3RoVmFsdWUuaCIKKyNp
bmNsdWRlICJCM1dhc21BcnJheU5ld1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQXJyYXlTZXRW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKICNpbmNsdWRlICJC
M1dhc21SZWZUeXBlQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbVN0cnVjdEdldFZhbHVl
LmgiCkBAIC05MjQsMTYgKzkyOCw4IEBAIHByaXZhdGU6CiAgICAgVmFsdWUqIGVtaXRBdG9taWNC
aW5hcnlSTVdPcChFeHRBdG9taWNPcFR5cGUsIFR5cGUsIFZhbHVlKiBwb2ludGVyLCBWYWx1ZSos
IHVpbnQzMl90IG9mZnNldCk7CiAgICAgVmFsdWUqIGVtaXRBdG9taWNDb21wYXJlRXhjaGFuZ2Uo
RXh0QXRvbWljT3BUeXBlLCBUeXBlLCBWYWx1ZSogcG9pbnRlciwgVmFsdWUqIGV4cGVjdGVkLCBW
YWx1ZSosIHVpbnQzMl90IG9mZnNldCk7CiAKLSAgICBWYWx1ZSogZW5jb2RlU3RydWN0dXJlSUQo
VmFsdWUqIHN0cnVjdHVyZSk7Ci0KLSAgICBWYWx1ZSogYWxsb2NhdG9yRm9yV2FzbUdDSGVhcENl
bGxTaXplKFZhbHVlKiBzaXplLCBCYXNpY0Jsb2NrKiBzbG93UGF0aCk7Ci0gICAgVmFsdWUqIGFs
bG9jYXRlV2FzbUdDSGVhcENlbGwoVmFsdWUqIGFsbG9jYXRvciwgQmFzaWNCbG9jayogc2xvd1Bh
dGgpOwotICAgIFZhbHVlKiBhbGxvY2F0ZVdhc21HQ09iamVjdChWYWx1ZSogYWxsb2NhdG9yLCBW
YWx1ZSogc3RydWN0dXJlSUQsIFZhbHVlKiB0eXBlSW5mbywgQmFzaWNCbG9jayogc2xvd1BhdGgp
OwotICAgIFZhbHVlKiBhbGxvY2F0ZVdhc21HQ0FycmF5VW5pbml0aWFsaXplZChUeXBlU2lnbmF0
dXJlSW5kZXggdHlwZUluZGV4LCBWYWx1ZSogc2l6ZSk7Ci0KICAgICB2b2lkIG11dGF0b3JGZW5j
ZSgpOwogCi0gICAgVmFsdWUqIGVtaXRHZXRBcnJheVBheWxvYWRCYXNlKFdhc206OlN0b3JhZ2VU
eXBlLCBWYWx1ZSopOwogICAgIFZhbHVlKiBlbWl0R2V0QXJyYXlTaXplV2l0aE51bGxDaGVjayhU
eXBlIGFycmF5VHlwZSwgVmFsdWUqKTsKICAgICB2b2lkIGVtaXROdWxsQ2hlY2soVmFsdWUqLCBF
eGNlcHRpb25UeXBlKTsKICAgICBib29sIGVtaXROdWxsQ2hlY2tCZWZvcmVBY2Nlc3MoVmFsdWUq
LCBwdHJkaWZmX3Qgb2Zmc2V0KTsKQEAgLTk0MSwxNiArOTM3LDY5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBlbWl0QXJyYXlTZXRVbmNoZWNrZWRXaXRob3V0V3JpdGVCYXJyaWVyKFR5cGVTaWduYXR1
cmVJbmRleCwgVmFsdWUqLCBWYWx1ZSosIFZhbHVlKik7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGEgd3JpdGVCYXJyaWVyL211dGF0b3JGZW5jZSBpcyBuZWVkZWQuCiAgICAgW1tub2Rpc2NhcmRd
XSBib29sIGVtaXRTdHJ1Y3RTZXQoYm9vbCBjYW5UcmFwLCBWYWx1ZSosIHVpbnQzMl90LCBjb25z
dCBTdHJ1Y3RUeXBlJiwgY29uc3QgUlRUJiwgVmFsdWUqKTsKLSAgICBbW25vZGlzY2FyZF1dIFZh
bHVlKiBhbGxvY2F0ZVdhc21HQ0FycmF5KFR5cGVTaWduYXR1cmVJbmRleCB0eXBlSW5kZXgsIFZh
bHVlKiBpbml0VmFsdWUsIFZhbHVlKiBzaXplKTsKICAgICB1c2luZyBBcnJheVNlZ21lbnRPcGVy
YXRpb24gPSBFbmNvZGVkSlNWYWx1ZSBTWVNWX0FCSSAoJikoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgW1tu
b2Rpc2NhcmRdXSBFeHByZXNzaW9uVHlwZSBwdXNoQXJyYXlOZXdGcm9tU2VnbWVudChBcnJheVNl
Z21lbnRPcGVyYXRpb24sIFR5cGVTaWduYXR1cmVJbmRleCB0eXBlSW5kZXgsIHVpbnQzMl90IHNl
Z21lbnRJbmRleCwgRXhwcmVzc2lvblR5cGUgYXJyYXlTaXplLCBFeHByZXNzaW9uVHlwZSBvZmZz
ZXQsIEV4Y2VwdGlvblR5cGUpOwogICAgIHZvaWQgZW1pdFJlZlRlc3RPckNhc3QoQ2FzdEtpbmQs
IFR5cGVkRXhwcmVzc2lvbiwgYm9vbCwgaW50MzJfdCwgYm9vbCwgRXhwcmVzc2lvblR5cGUmKTsK
IAorICAgIE1lbW9yeVZhbHVlKiBsb2FkR0NPYmplY3RTdHJ1Y3R1cmVJRChUeXBlU2lnbmF0dXJl
SW5kZXggdHlwZUluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byogc3RydWN0dXJlSUQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBv
cmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6Om9mZnNldE9mR0NPYmplY3RTdHJ1Y3R1cmVJRChtX2luZm8sIHR5cGVJbmRleC5y
YXdJbmRleCgpKSkpOworICAgICAgICBtX2hlYXBzLmRlY29yYXRlTWVtb3J5KCZtX2hlYXBzLkpT
V2ViQXNzZW1ibHlJbnN0YW5jZV9nY09iamVjdFN0cnVjdHVyZUlEc1t0eXBlSW5kZXgucmF3SW5k
ZXgoKV0sIHN0cnVjdHVyZUlEKTsKKyAgICAgICAgc3RydWN0dXJlSUQtPnNldFJlYWRzTXV0YWJp
bGl0eShCMzo6TXV0YWJpbGl0eTo6SW1tdXRhYmxlKTsKKyAgICAgICAgc3RydWN0dXJlSUQtPnNl
dENvbnRyb2xEZXBlbmRlbnQoZmFsc2UpOworICAgICAgICByZXR1cm4gc3RydWN0dXJlSUQ7Cisg
ICAgfQorCiAgICAgY29uc3QgQjM6OkFic3RyYWN0SGVhcCogc3RydWN0RmllbGRIZWFwKGNvbnN0
IFJUVCYgcnR0LCB1aW50MzJfdCBmaWVsZEluZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJuICZt
X2hlYXBzLkpTV2ViQXNzZW1ibHlTdHJ1Y3RfZmllbGRzW3J0dC5maWVsZEhlYXBLZXkoZmllbGRJ
bmRleCldOwogICAgIH0KIAorICAgIGNvbnN0IEIzOjpBYnN0cmFjdEhlYXAqIGFycmF5RWxlbWVu
dEhlYXAoY29uc3QgV2FzbTo6U3RvcmFnZVR5cGUmIGVsZW1lbnRUeXBlLCBWYWx1ZSogaW5kZXhW
YWx1ZSkKKyAgICB7CisgICAgICAgIEIzOjpOdW1iZXJlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAg
ICAgICAgaWYgKGVsZW1lbnRUeXBlLmlzPFdhc206OlBhY2tlZFR5cGU+KCkpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZWxlbWVudFR5cGUuYXM8V2FzbTo6UGFja2VkVHlwZT4oKSkgeworICAgICAg
ICAgICAgY2FzZSBXYXNtOjpQYWNrZWRUeXBlOjpJODoKKyAgICAgICAgICAgICAgICBoZWFwID0g
Jm1faGVhcHMuSlNXZWJBc3NlbWJseUFycmF5X2k4OworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBXYXNtOjpQYWNrZWRUeXBlOjpJMTY6CisgICAgICAgICAgICAgICAg
aGVhcCA9ICZtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV9pMTY7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBhdXRvIHVucGFja2VkID0gZWxlbWVudFR5cGUudW5wYWNrZWQoKTsKKyAgICAgICAg
ICAgIHN3aXRjaCAodW5wYWNrZWQua2luZCkgeworICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBl
S2luZDo6STMyOgorICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5KU1dlYkFzc2VtYmx5
QXJyYXlfaTMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXYXNt
OjpUeXBlS2luZDo6RjMyOgorICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5KU1dlYkFz
c2VtYmx5QXJyYXlfZjMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBXYXNtOjpUeXBlS2luZDo6STY0OgorICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5K
U1dlYkFzc2VtYmx5QXJyYXlfaTY0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RjY0OgorICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9o
ZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfZjY0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgICAgICBoZWFw
ID0gJm1faGVhcHMuSlNXZWJBc3NlbWJseUFycmF5X3YxMjg7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFw
cy5KU1dlYkFzc2VtYmx5QXJyYXlfcmVmOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChpbmRleFZhbHVlLT5oYXNJbnQzMigpKSB7
CisgICAgICAgICAgICBpbnQzMl90IGlkeCA9IGluZGV4VmFsdWUtPmFzSW50MzIoKTsKKyAgICAg
ICAgICAgIGlmIChpZHggPj0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJigqaGVhcClbaWR4
XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJmhlYXAtPmF0QW55TnVtYmVyKCk7CisgICAg
fQorCiAgICAgdm9pZCB1bmlmeShWYWx1ZSogcGhpLCBjb25zdCBFeHByZXNzaW9uVHlwZSYgc291
cmNlKTsKICAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0IFN0YWNrJiByZXN1bHRT
dGFjaywgY29uc3QgQ29udHJvbERhdGEmIGJsb2NrKTsKIApAQCAtMzMzOSw4NiArMzM4OCw2IEBA
IGF1dG8gT01HSVJHZW5lcmF0b3I6OmFkZEkzMUdldFUoVHlwZWRFeHByZXNzaW9uIHJlZmVyZW5j
ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotVmFsdWUqIE9N
R0lSR2VuZXJhdG9yOjphbGxvY2F0ZVdhc21HQ0FycmF5KFR5cGVTaWduYXR1cmVJbmRleCB0eXBl
SW5kZXgsIFZhbHVlKiBpbml0VmFsdWUsIFZhbHVlKiBzaXplKQotewotICAgIFN0b3JhZ2VUeXBl
IGVsZW1lbnRUeXBlOwotICAgIGdldEFycmF5RWxlbWVudFR5cGUodHlwZUluZGV4LCBlbGVtZW50
VHlwZSk7Ci0KLSAgICBhdXRvKiBvYmplY3QgPSBhbGxvY2F0ZVdhc21HQ0FycmF5VW5pbml0aWFs
aXplZCh0eXBlSW5kZXgsIHNpemUpOwotCi0gICAgYXV0byogbG9vcEhlYWRlciA9IG1fcHJvYy5h
ZGRCbG9jaygpOwotICAgIGF1dG8qIGxvb3BCb2R5ID0gbV9wcm9jLmFkZEJsb2NrKCk7Ci0gICAg
YXV0byogY29udGludWF0aW9uID0gbV9wcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBhdXRvKiBwYXls
b2FkID0gZW1pdEdldEFycmF5UGF5bG9hZEJhc2UoZWxlbWVudFR5cGUsIG9iamVjdCk7Ci0gICAg
YXV0byogcmVtYWluaW5nVXBzaWxvbiA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVyT2ZJbnQzMihzaXplKSk7Ci0KLSAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2lu
KCksIGxvb3BIZWFkZXIpOwotICAgIGxvb3BIZWFkZXItPmFkZFByZWRlY2Vzc29yKG1fY3VycmVu
dEJsb2NrKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IGxvb3BIZWFkZXI7Ci0KLSAgICBWYWx1ZSog
cmVtYWluaW5nID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBQaGks
IHBvaW50ZXJUeXBlKCksIG9yaWdpbigpKTsKLSAgICByZW1haW5pbmdVcHNpbG9uLT5zZXRQaGko
cmVtYWluaW5nKTsKLSAgICB7Ci0gICAgICAgIFZhbHVlKiBjb25kaXRpb24gPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVtYWluaW5n
LCBjb25zdGFudChwb2ludGVyVHlwZSgpLCAwKSk7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCcmFuY2gsIG9yaWdpbigpLCBjb25kaXRpb24s
IEZyZXF1ZW50ZWRCbG9jayhjb250aW51YXRpb24pLCBGcmVxdWVudGVkQmxvY2sobG9vcEJvZHkp
KTsKLSAgICAgICAgY29udGludWF0aW9uLT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9jayk7
Ci0gICAgICAgIGxvb3BCb2R5LT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9jayk7Ci0gICAg
fQotCi0gICAgbV9jdXJyZW50QmxvY2sgPSBsb29wQm9keTsKLSAgICBhdXRvKiB1cGRhdGVkUmVt
YWluaW5nID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTdWIsIHBv
aW50ZXJUeXBlKCksIG9yaWdpbigpLCByZW1haW5pbmcsIGNvbnN0YW50KHBvaW50ZXJUeXBlKCks
IDEpKTsKLSAgICBhdXRvKiB1cGRhdGVkUmVtYWluaW5nVXBzaWxvbiA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB1cGRhdGVkUmVtYWlu
aW5nKTsKLSAgICB1cGRhdGVkUmVtYWluaW5nVXBzaWxvbi0+c2V0UGhpKHJlbWFpbmluZyk7Ci0K
LSAgICBWYWx1ZSogaW5kZXhlZEFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIEFkZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIHBheWxvYWQsIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVsLCBwb2ludGVyVHlwZSgpLCBv
cmlnaW4oKSwgdXBkYXRlZFJlbWFpbmluZywgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgZWxlbWVu
dFR5cGUuZWxlbWVudFNpemUoKSkpKTsKLQotICAgIGlmIChlbGVtZW50VHlwZS5pczxQYWNrZWRU
eXBlPigpKSB7Ci0gICAgICAgIHN3aXRjaCAoZWxlbWVudFR5cGUuYXM8UGFja2VkVHlwZT4oKSkg
ewotICAgICAgICBjYXNlIFBhY2tlZFR5cGU6Okk4OiB7Ci0gICAgICAgICAgICBhdXRvKiBzdG9y
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmU4
LCBvcmlnaW4oKSwgaW5pdFZhbHVlLCBpbmRleGVkQWRkcmVzcyk7Ci0gICAgICAgICAgICBtX2hl
YXBzLmRlY29yYXRlTWVtb3J5KCZtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV9pOC5hdEFueU51
bWJlcigpLCBzdG9yZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFBhY2tlZFR5cGU6OkkxNjogewotICAgICAgICAgICAgYXV0byogc3RvcmUgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlMTYsIG9yaWdpbigp
LCBpbml0VmFsdWUsIGluZGV4ZWRBZGRyZXNzKTsKLSAgICAgICAgICAgIG1faGVhcHMuZGVjb3Jh
dGVNZW1vcnkoJm1faGVhcHMuSlNXZWJBc3NlbWJseUFycmF5X2kxNi5hdEFueU51bWJlcigpLCBz
dG9yZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnRUeXBlLmlzPFR5cGU+KCkpOwotICAgICAgICBh
dXRvKiBzdG9yZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJv
YywgU3RvcmUsIG9yaWdpbigpLCBpbml0VmFsdWUsIGluZGV4ZWRBZGRyZXNzKTsKLSAgICAgICAg
c3dpdGNoIChlbGVtZW50VHlwZS51bnBhY2tlZCgpLmtpbmQpIHsKLSAgICAgICAgY2FzZSBUeXBl
S2luZDo6STMyOgotICAgICAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmbV9oZWFwcy5K
U1dlYkFzc2VtYmx5QXJyYXlfaTMyLmF0QW55TnVtYmVyKCksIHN0b3JlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6Ci0gICAgICAgICAgICBtX2hlYXBz
LmRlY29yYXRlTWVtb3J5KCZtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV9mMzIuYXRBbnlOdW1i
ZXIoKSwgc3RvcmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6
Okk2NDoKLSAgICAgICAgICAgIG1faGVhcHMuZGVjb3JhdGVNZW1vcnkoJm1faGVhcHMuSlNXZWJB
c3NlbWJseUFycmF5X2k2NC5hdEFueU51bWJlcigpLCBzdG9yZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgbV9oZWFwcy5kZWNv
cmF0ZU1lbW9yeSgmbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfZjY0LmF0QW55TnVtYmVyKCks
IHN0b3JlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4
OgotICAgICAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmbV9oZWFwcy5KU1dlYkFzc2Vt
Ymx5QXJyYXlfdjEyOC5hdEFueU51bWJlcigpLCBzdG9yZSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG1faGVhcHMuZGVjb3JhdGVNZW1vcnkoJm1f
aGVhcHMuSlNXZWJBc3NlbWJseUFycmF5X3JlZi5hdEFueU51bWJlcigpLCBzdG9yZSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9j
ayhsb29wSGVhZGVyKSk7Ci0gICAgbG9vcEhlYWRlci0+YWRkUHJlZGVjZXNzb3IobV9jdXJyZW50
QmxvY2spOwotCi0gICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247Ci0gICAgbXV0YXRv
ckZlbmNlKCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0OwotfQotCiAvLyBHaXZlbiBhIHR5cGUgaW5k
ZXgsIHZlcmlmeSB0aGF0IGl0J3MgYW4gYXJyYXkgdHlwZSBhbmQgcmV0dXJuIGl0cyBleHBhbnNp
b24KIGNvbnN0IEFycmF5VHlwZSogT01HSVJHZW5lcmF0b3I6OmdldEFycmF5VHlwZURlZmluaXRp
b24oVHlwZVNpZ25hdHVyZUluZGV4IHR5cGVJbmRleCkKIHsKQEAgLTM0NTIsNyArMzQyMSwxNiBA
QCBhdXRvIE9NR0lSR2VuZXJhdG9yOjphZGRBcnJheU5ldyhUeXBlU2lnbmF0dXJlSW5kZXggdHlw
ZUluZGV4LCBFeHByZXNzaW9uVHlwZSBzaQogCiAgICAgVmFsdWUqIGluaXRWYWx1ZSA9IGdldCh2
YWx1ZSk7CiAgICAgVmFsdWUqIHNpemVWYWx1ZSA9IGdldChzaXplKTsKLSAgICBWYWx1ZSogYXJy
YXkgPSBhbGxvY2F0ZVdhc21HQ0FycmF5KHR5cGVJbmRleCwgaW5pdFZhbHVlLCBzaXplVmFsdWUp
OworCisgICAgYXV0byogc3RydWN0dXJlSUQgPSBsb2FkR0NPYmplY3RTdHJ1Y3R1cmVJRCh0eXBl
SW5kZXgpOworCisgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGNvbnN0IEFycmF5VHlwZSog
YXJyYXlUeXBlID0gbV9pbmZvLmV4cGFuZGVkVHlwZVNpZ25hdHVyZSh0eXBlSW5kZXgpLnRlbXBs
YXRlIGFzPEFycmF5VHlwZT4oKTsKKyAgICBSZWY8Y29uc3QgUlRUPiBydHQgPSBtX2luZm8ucnR0
KHR5cGVJbmRleCk7CisgICAgaW50MzJfdCBhbGxvY2F0b3JzQmFzZU9mZnNldCA9IHNhZmVDYXN0
PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZBbGxvY2F0b3JGb3JHQ09i
amVjdChtX2luZm8sIDApKTsKKworICAgIGF1dG8qIGFycmF5ID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxXYXNtQXJyYXlOZXdWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgd2FzbVJlZlR5cGUo
KSwgUmVmIHsgcnR0IH0sIGFycmF5VHlwZSwgdHlwZUluZGV4LnJhd0luZGV4KCksIGFsbG9jYXRv
cnNCYXNlT2Zmc2V0LCBpbnN0YW5jZVZhbHVlKCksIHN0cnVjdHVyZUlELCBzaXplVmFsdWUsIGlu
aXRWYWx1ZSk7CisKKyAgICBtdXRhdG9yRmVuY2UoKTsKICAgICByZXN1bHQgPSBwdXNoKGFycmF5
KTsKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzQ4Niw3ICszNDY0LDE2IEBAIGF1dG8gT01HSVJH
ZW5lcmF0b3I6OmFkZEFycmF5TmV3RGVmYXVsdChUeXBlU2lnbmF0dXJlSW5kZXggdHlwZUluZGV4
LCBFeHByZXNzaW9uCiAgICAgICAgIGluaXRWYWx1ZSA9IGNvbnN0YW50KEludDY0LCAwKTsKIAog
ICAgIFZhbHVlKiBzaXplVmFsdWUgPSBnZXQoc2l6ZSk7Ci0gICAgVmFsdWUqIGFycmF5ID0gYWxs
b2NhdGVXYXNtR0NBcnJheSh0eXBlSW5kZXgsIGluaXRWYWx1ZSwgc2l6ZVZhbHVlKTsKKworICAg
IGF1dG8qIHN0cnVjdHVyZUlEID0gbG9hZEdDT2JqZWN0U3RydWN0dXJlSUQodHlwZUluZGV4KTsK
KworICAgIFNVUFBSRVNTX1VOQ09VTlRFRF9MT0NBTCBjb25zdCBBcnJheVR5cGUqIGFycmF5VHlw
ZSA9IG1faW5mby5leHBhbmRlZFR5cGVTaWduYXR1cmUodHlwZUluZGV4KS50ZW1wbGF0ZSBhczxB
cnJheVR5cGU+KCk7CisgICAgUmVmPGNvbnN0IFJUVD4gcnR0ID0gbV9pbmZvLnJ0dCh0eXBlSW5k
ZXgpOworICAgIGludDMyX3QgYWxsb2NhdG9yc0Jhc2VPZmZzZXQgPSBzYWZlQ2FzdDxpbnQzMl90
PihKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQWxsb2NhdG9yRm9yR0NPYmplY3QobV9p
bmZvLCAwKSk7CisKKyAgICBhdXRvKiBhcnJheSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
V2FzbUFycmF5TmV3VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHdhc21SZWZUeXBlKCksIFJlZiB7
IHJ0dCB9LCBhcnJheVR5cGUsIHR5cGVJbmRleC5yYXdJbmRleCgpLCBhbGxvY2F0b3JzQmFzZU9m
ZnNldCwgaW5zdGFuY2VWYWx1ZSgpLCBzdHJ1Y3R1cmVJRCwgc2l6ZVZhbHVlLCBpbml0VmFsdWUp
OworCisgICAgbXV0YXRvckZlbmNlKCk7CiAgICAgcmVzdWx0ID0gcHVzaChhcnJheSk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KQEAgLTM1MTAsNyArMzQ5NywxNCBAQCBhdXRvIE9NR0lSR2VuZXJhdG9y
OjphZGRBcnJheU5ld0ZpeGVkKFR5cGVTaWduYXR1cmVJbmRleCB0eXBlSW5kZXgsIEFyZ3VtZW50
TGlzdAogICAgIGdldEFycmF5RWxlbWVudFR5cGUodHlwZUluZGV4LCBlbGVtZW50VHlwZSk7CiAK
ICAgICBhdXRvKiBzaXplID0gY29uc3RhbnQoSW50MzIsIGFyZ3Muc2l6ZSgpKTsKLSAgICBhdXRv
KiBvYmplY3QgPSBhbGxvY2F0ZVdhc21HQ0FycmF5VW5pbml0aWFsaXplZCh0eXBlSW5kZXgsIHNp
emUpOworCisgICAgYXV0byogc3RydWN0dXJlSUQgPSBsb2FkR0NPYmplY3RTdHJ1Y3R1cmVJRCh0
eXBlSW5kZXgpOworCisgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGNvbnN0IEFycmF5VHlw
ZSogYXJyYXlUeXBlID0gbV9pbmZvLmV4cGFuZGVkVHlwZVNpZ25hdHVyZSh0eXBlSW5kZXgpLnRl
bXBsYXRlIGFzPEFycmF5VHlwZT4oKTsKKyAgICBSZWY8Y29uc3QgUlRUPiBydHQgPSBtX2luZm8u
cnR0KHR5cGVJbmRleCk7CisgICAgaW50MzJfdCBhbGxvY2F0b3JzQmFzZU9mZnNldCA9IHNhZmVD
YXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZBbGxvY2F0b3JGb3JH
Q09iamVjdChtX2luZm8sIDApKTsKKworICAgIGF1dG8qIG9iamVjdCA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8V2FzbUFycmF5TmV3VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHdhc21SZWZU
eXBlKCksIFJlZiB7IHJ0dCB9LCBhcnJheVR5cGUsIHR5cGVJbmRleC5yYXdJbmRleCgpLCBhbGxv
Y2F0b3JzQmFzZU9mZnNldCwgaW5zdGFuY2VWYWx1ZSgpLCBzdHJ1Y3R1cmVJRCwgc2l6ZSk7CiAK
ICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkgewogICAgICAg
ICAvLyBFbWl0IHRoZSBhcnJheSBzZXQgY29kZSAtLSBub3RlIHRoYXQgdGhpcyBvbWl0cyB0aGUg
Ym91bmRzIGNoZWNrLCBzaW5jZQpAQCAtMzUyOCwxNCArMzUyMiwxMCBAQCBWYWx1ZSogT01HSVJH
ZW5lcmF0b3I6OmVtaXRHZXRBcnJheVNpemVXaXRoTnVsbENoZWNrKFR5cGUgYXJyYXlUeXBlLCBW
YWx1ZSogYXJyYQogICAgIGJvb2wgY2FuVHJhcCA9IGZhbHNlOwogICAgIGlmIChhcnJheVR5cGUu
aXNOdWxsYWJsZSgpKQogICAgICAgICBjYW5UcmFwID0gZW1pdE51bGxDaGVja0JlZm9yZUFjY2Vz
cyhhcnJheSwgb2Zmc2V0KTsKLSAgICBhdXRvIHdyYXBUcmFwcGluZyA9IFsmXShhdXRvIGlucHV0
KSAtPiBCMzo6S2luZCB7Ci0gICAgICAgIGlmIChjYW5UcmFwKQotICAgICAgICAgICAgcmV0dXJu
IHRyYXBwaW5nKGlucHV0KTsKLSAgICAgICAgcmV0dXJuIGlucHV0OwotICAgIH07Ci0gICAgYXV0
byogYXJyYXlTaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCB3cmFwVHJhcHBpbmcoTG9hZCksIEludDMyLCBvcmlnaW4oKSwgcG9pbnRlck9mV2FzbVJl
ZihhcnJheSksIG9mZnNldCk7Ci0gICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmbV9oZWFwcy5K
U1dlYkFzc2VtYmx5QXJyYXlfc2l6ZSwgYXJyYXlTaXplKTsKLSAgICByZXR1cm4gYXJyYXlTaXpl
OworICAgIEIzOjpLaW5kIGtpbmQgPSBjYW5UcmFwID8gdHJhcHBpbmcoV2FzbUFycmF5TGVuZ3Ro
KSA6IEIzOjpLaW5kKFdhc21BcnJheUxlbmd0aCk7CisgICAgYXV0byogYXJyYXlMZW5ndGggPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21BcnJheUxlbmd0aFZhbHVlPihtX3Byb2MsIGtp
bmQsIEludDMyLCBvcmlnaW4oKSwgcG9pbnRlck9mV2FzbVJlZihhcnJheSkpOworICAgIG1faGVh
cHMuZGVjb3JhdGVXYXNtQXJyYXlMZW5ndGgoJm1faGVhcHMuSlNXZWJBc3NlbWJseUFycmF5X3Np
emUsIGFycmF5TGVuZ3RoKTsKKyAgICByZXR1cm4gYXJyYXlMZW5ndGg7CiB9CiAKIGF1dG8gT01H
SVJHZW5lcmF0b3I6OmFkZEFycmF5R2V0KEV4dEdDT3BUeXBlIGFycmF5R2V0S2luZCwgVHlwZVNp
Z25hdHVyZUluZGV4IHR5cGVJbmRleCwgVHlwZWRFeHByZXNzaW9uIGFycmF5cmVmLCBFeHByZXNz
aW9uVHlwZSBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdApA
QCAtMzU1Niw0MiArMzU0NiwxNiBAQCBhdXRvIE9NR0lSR2VuZXJhdG9yOjphZGRBcnJheUdldChF
eHRHQ09wVHlwZSBhcnJheUdldEtpbmQsIFR5cGVTaWduYXR1cmVJbmRleCB0eQogICAgICAgICB9
KTsKICAgICB9CiAKLSAgICBWYWx1ZSogcGF5bG9hZEJhc2UgPSBlbWl0R2V0QXJyYXlQYXlsb2Fk
QmFzZShlbGVtZW50VHlwZSwgYXJyYXlWYWx1ZSk7Ci0gICAgVmFsdWUqIGluZGV4ZWRBZGRyZXNz
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIHBvaW50ZXJU
eXBlKCksIG9yaWdpbigpLCBwYXlsb2FkQmFzZSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAg
ICAgICAgICAgcG9pbnRlck9mSW50MzIoaW5kZXhWYWx1ZSksCi0gICAgICAgICAgICBjb25zdGFu
dChwb2ludGVyVHlwZSgpLCBlbGVtZW50VHlwZS5lbGVtZW50U2l6ZSgpKSkpOworICAgIFNVUFBS
RVNTX1VOQ09VTlRFRF9MT0NBTCBjb25zdCBBcnJheVR5cGUqIGFycmF5VHlwZSA9IGdldEFycmF5
VHlwZURlZmluaXRpb24odHlwZUluZGV4KTsKKyAgICBXYXNtOjpNdXRhYmlsaXR5IG11dGFiaWxp
dHkgPSBhcnJheVR5cGUtPmVsZW1lbnRUeXBlKCkubXV0YWJpbGl0eTsKKyAgICBCMzo6TXV0YWJp
bGl0eSBiM011dGFiaWxpdHkgPSAobXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpJbW11
dGFibGUpID8gQjM6Ok11dGFiaWxpdHk6OkltbXV0YWJsZSA6IEIzOjpNdXRhYmlsaXR5OjpNdXRh
YmxlOwogCi0gICAgYXV0byBkZWNvcmF0ZVdpdGhJbmRleCA9IFsmXShNZW1vcnlWYWx1ZSogbG9h
ZCwgTnVtYmVyZWRBYnN0cmFjdEhlYXAmIGhlYXAsIFZhbHVlKiBpbmRleFZhbHVlKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgZG8gdGhpcyBkZWNvcmF0aW9uIGFmdGVyIHdlIGZvdW5k
IHRoYXQgaW5kZXhWYWx1ZSBpcyBhIGNvbnN0YW50LgotICAgICAgICAvLyBCdXQgcmlnaHQgbm93
LCB0aGUgY3VycmVudCBtZWNoYW5pc20gcmVxdWlyZXMgY29uc3RhbnQgYXQgdGhlIGZyb250ZW5k
IGxldmVsLgotICAgICAgICAvLyBXZSBtYXkgbmVlZCB0byBtb2RlbHRoaXMgV2FzbUFycmF5R2V0
IGFzIGlzIGluIEIzIGluaXRpYWxseSwgZG9pbmcgb3B0aW1pemF0aW9uCi0gICAgICAgIC8vIGFu
ZCBsb3dlciBpdCB0byB0aGVzZSBzZXF1ZW5jZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwaXBlbGlu
ZS4KLSAgICAgICAgLy8gVGhlIGxvZ2ljIGlzIHRoZSBzYW1lIHRvIHdoYXQgRlRMIGlzIGRvaW5n
LiBCdXQgRlRMIGFscmVhZHkgZG9lcyBjb25zdGFudCBmb2xkaW5nIG9udG8gRlRMIFNTQSwKLSAg
ICAgICAgLy8gd2hpbGUgT01HIEIzIGlzIG5vdCBhdCB0aGlzIHN0YWdlLgotICAgICAgICBpZiAo
aW5kZXhWYWx1ZS0+aGFzSW50MzIoKSkgewotICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IGlu
ZGV4VmFsdWUtPmFzSW50MzIoKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmaGVhcFtpbmRleF0sIGxvYWQpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBtX2hlYXBzLmRlY29yYXRlTWVtb3J5KCZoZWFwLmF0QW55TnVtYmVyKCksIGxvYWQpOwotICAg
IH07CisgICAgVmFsdWUqIGxvYWRWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8V2Fz
bUFycmF5R2V0VmFsdWU+KG1fcHJvYywgV2FzbUFycmF5R2V0LCBvcmlnaW4oKSwKKyAgICAgICAg
dG9CM1R5cGUocmVzdWx0VHlwZSksIGFycmF5VmFsdWUsIGluZGV4VmFsdWUsIFJlZiB7IG1faW5m
by5ydHQodHlwZUluZGV4KSB9LCBhcnJheVR5cGUsIGIzTXV0YWJpbGl0eSk7CisgICAgbV9oZWFw
cy5kZWNvcmF0ZVdhc21BcnJheUdldChhcnJheUVsZW1lbnRIZWFwKGVsZW1lbnRUeXBlLCBpbmRl
eFZhbHVlKSwgbG9hZFZhbHVlKTsKIAorICAgIFZhbHVlKiBwb3N0UHJvY2VzcyA9IGxvYWRWYWx1
ZTsKICAgICBpZiAoZWxlbWVudFR5cGUuaXM8UGFja2VkVHlwZT4oKSkgewotICAgICAgICBNZW1v
cnlWYWx1ZSogbG9hZDsKLSAgICAgICAgc3dpdGNoIChlbGVtZW50VHlwZS5hczxQYWNrZWRUeXBl
PigpKSB7Ci0gICAgICAgIGNhc2UgUGFja2VkVHlwZTo6STg6Ci0gICAgICAgICAgICBsb2FkID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIElu
dDMyLCBvcmlnaW4oKSwgaW5kZXhlZEFkZHJlc3MpOwotICAgICAgICAgICAgZGVjb3JhdGVXaXRo
SW5kZXgobG9hZCwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfaTgsIGluZGV4VmFsdWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFja2VkVHlwZTo6STE2OgotICAgICAg
ICAgICAgbG9hZCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJv
YywgTG9hZDE2WiwgSW50MzIsIG9yaWdpbigpLCBpbmRleGVkQWRkcmVzcyk7Ci0gICAgICAgICAg
ICBkZWNvcmF0ZVdpdGhJbmRleChsb2FkLCBtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV9pMTYs
IGluZGV4VmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgVmFs
dWUqIHBvc3RQcm9jZXNzID0gbG9hZDsKICAgICAgICAgc3dpdGNoIChhcnJheUdldEtpbmQpIHsK
ICAgICAgICAgY2FzZSBFeHRHQ09wVHlwZTo6QXJyYXlHZXQ6CiAgICAgICAgIGNhc2UgRXh0R0NP
cFR5cGU6OkFycmF5R2V0VToKQEAgLTM2MDcsMzUgKzM1NzEsOSBAQCBhdXRvIE9NR0lSR2VuZXJh
dG9yOjphZGRBcnJheUdldChFeHRHQ09wVHlwZSBhcnJheUdldEtpbmQsIFR5cGVTaWduYXR1cmVJ
bmRleCB0eQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gcHVzaChwb3N0
UHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgQVNTRVJUKGVsZW1l
bnRUeXBlLmlzPFR5cGU+KCkpOwotICAgIGF1dG8qIGxvYWQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBlKHJlc3VsdFR5cGUpLCBv
cmlnaW4oKSwgaW5kZXhlZEFkZHJlc3MpOwotICAgIHN3aXRjaCAocmVzdWx0VHlwZS5raW5kKSB7
Ci0gICAgY2FzZSBUeXBlS2luZDo6STMyOgotICAgICAgICBkZWNvcmF0ZVdpdGhJbmRleChsb2Fk
LCBtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV9pMzIsIGluZGV4VmFsdWUpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFR5cGVLaW5kOjpGMzI6Ci0gICAgICAgIGRlY29yYXRlV2l0aEluZGV4
KGxvYWQsIG1faGVhcHMuSlNXZWJBc3NlbWJseUFycmF5X2YzMiwgaW5kZXhWYWx1ZSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKLSAgICAgICAgZGVjb3JhdGVXaXRo
SW5kZXgobG9hZCwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfaTY0LCBpbmRleFZhbHVlKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICBkZWNvcmF0
ZVdpdGhJbmRleChsb2FkLCBtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV9mNjQsIGluZGV4VmFs
dWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgotICAgICAgICBk
ZWNvcmF0ZVdpdGhJbmRleChsb2FkLCBtX2hlYXBzLkpTV2ViQXNzZW1ibHlBcnJheV92MTI4LCBp
bmRleFZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgZGVjb3Jh
dGVXaXRoSW5kZXgobG9hZCwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfcmVmLCBpbmRleFZh
bHVlKTsKLSAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gcHVzaChsb2FkKTsK
LQorICAgIHJlc3VsdCA9IHB1c2gocG9zdFByb2Nlc3MpOwogICAgIHJldHVybiB7IH07CiB9CiAK
QEAgLTM2NjMsMjEgKzM2MDEsNiBAQCBib29sIE9NR0lSR2VuZXJhdG9yOjplbWl0TnVsbENoZWNr
QmVmb3JlQWNjZXNzKFZhbHVlKiByZWYsIHB0cmRpZmZfdCBvZmZzZXQpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1WYWx1ZSogT01HSVJHZW5lcmF0b3I6OmVtaXRHZXRBcnJheVBheWxvYWRCYXNl
KFdhc206OlN0b3JhZ2VUeXBlIGZpZWxkVHlwZSwgVmFsdWUqIGFycmF5cmVmKQotewotICAgIGlm
IChKU1dlYkFzc2VtYmx5QXJyYXk6Om5lZWRzVjEyOEFsaWdubWVudE1hc2soZmllbGRUeXBlKSkg
ewotICAgICAgICBhdXRvIHBheWxvYWRCYXNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBBZGQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAg
cG9pbnRlck9mV2FzbVJlZihhcnJheXJlZiksIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIEpTV2Vi
QXNzZW1ibHlBcnJheTo6b2Zmc2V0T2ZEYXRhKCkpKTsKLSAgICAgICAgLy8gUm91bmQtdXAgdG8g
MTZ4IGZvciBQcmVjaXNlQWxsb2NhdGlvbiArIFYxMjggYXJyYXkgZGF0YSBoYW5kbGluZy4KLSAg
ICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0
QW5kLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgcGF5bG9hZEJhc2UsIGNvbnN0YW50KHBvaW50ZXJU
eXBlKCksIDE1KSksCi0gICAgICAgICAgICBjb25zdGFudChwb2ludGVyVHlwZSgpLCAtMTYpKTsK
LSAgICB9Ci0gICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgQWRkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKLSAgICAgICAgcG9pbnRlck9mV2FzbVJl
ZihhcnJheXJlZiksCi0gICAgICAgIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIEpTV2ViQXNzZW1i
bHlBcnJheTo6YWxpZ25lZE9mZnNldE9mRGF0YShmaWVsZFR5cGUuZWxlbWVudFNpemUoKSkpKTsK
LX0KLQogLy8gRG9lcyB0aGUgYXJyYXkgc2V0IHdpdGhvdXQgbnVsbCBjaGVjayBhbmQgYm91bmRz
IGNoZWNrcyAtLSBjYW4gYmUKIC8vIGNhbGxlZCBkaXJlY3RseSBieSBhZGRBcnJheU5ld0ZpeGVk
KCkKIGJvb2wgT01HSVJHZW5lcmF0b3I6OmVtaXRBcnJheVNldFVuY2hlY2tlZFdpdGhvdXRXcml0
ZUJhcnJpZXIoVHlwZVNpZ25hdHVyZUluZGV4IHR5cGVJbmRleCwgVmFsdWUqIGFycmF5cmVmLCBW
YWx1ZSogaW5kZXhWYWx1ZSwgVmFsdWUqIHNldFZhbHVlKQpAQCAtMzY4NSw2NiArMzYwOCwxMSBA
QCBib29sIE9NR0lSR2VuZXJhdG9yOjplbWl0QXJyYXlTZXRVbmNoZWNrZWRXaXRob3V0V3JpdGVC
YXJyaWVyKFR5cGVTaWduYXR1cmVJbmRleAogICAgIFN0b3JhZ2VUeXBlIGVsZW1lbnRUeXBlOwog
ICAgIGdldEFycmF5RWxlbWVudFR5cGUodHlwZUluZGV4LCBlbGVtZW50VHlwZSk7CiAKLSAgICBh
dXRvIHBheWxvYWRCYXNlID0gZW1pdEdldEFycmF5UGF5bG9hZEJhc2UoZWxlbWVudFR5cGUsIGFy
cmF5cmVmKTsKLSAgICBhdXRvIGluZGV4ZWRBZGRyZXNzID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBwYXlsb2Fk
QmFzZSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBN
dWwsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBwb2ludGVyT2ZJbnQzMihpbmRleFZhbHVlKSwg
Y29uc3RhbnQocG9pbnRlclR5cGUoKSwgZWxlbWVudFR5cGUuZWxlbWVudFNpemUoKSkpKTsKLQot
ICAgIGF1dG8gZGVjb3JhdGVXaXRoSW5kZXggPSBbJl0oTWVtb3J5VmFsdWUqIHN0b3JlLCBOdW1i
ZXJlZEFic3RyYWN0SGVhcCYgaGVhcCwgVmFsdWUqIGluZGV4VmFsdWUpIHsKLSAgICAgICAgLy8g
RklYTUU6IHdlIHNob3VsZCBkbyB0aGlzIGRlY29yYXRpb24gYWZ0ZXIgd2UgZm91bmQgdGhhdCBp
bmRleFZhbHVlIGlzIGEgY29uc3RhbnQuCi0gICAgICAgIC8vIEJ1dCByaWdodCBub3csIHRoZSBj
dXJyZW50IG1lY2hhbmlzbSByZXF1aXJlcyBjb25zdGFudCBhdCB0aGUgZnJvbnRlbmQgbGV2ZWwu
Ci0gICAgICAgIC8vIFdlIG1heSBuZWVkIHRvIG1vZGVsdGhpcyBXYXNtQXJyYXlHZXQgYXMgaXMg
aW4gQjMgaW5pdGlhbGx5LCBkb2luZyBvcHRpbWl6YXRpb24KLSAgICAgICAgLy8gYW5kIGxvd2Vy
IGl0IHRvIHRoZXNlIHNlcXVlbmNlIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBpcGVsaW5lLgotICAg
ICAgICAvLyBUaGUgbG9naWMgaXMgdGhlIHNhbWUgdG8gd2hhdCBGVEwgaXMgZG9pbmcuIEJ1dCBG
VEwgYWxyZWFkeSBkb2VzIGNvbnN0YW50IGZvbGRpbmcgb250byBGVEwgU1NBLAotICAgICAgICAv
LyB3aGlsZSBPTUcgQjMgaXMgbm90IGF0IHRoaXMgc3RhZ2UuCi0gICAgICAgIGlmIChpbmRleFZh
bHVlLT5oYXNJbnQzMigpKSB7Ci0gICAgICAgICAgICBpbnQzMl90IGluZGV4ID0gaW5kZXhWYWx1
ZS0+YXNJbnQzMigpOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAg
ICAgICBtX2hlYXBzLmRlY29yYXRlTWVtb3J5KCZoZWFwW2luZGV4XSwgc3RvcmUpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2hl
YXBzLmRlY29yYXRlTWVtb3J5KCZoZWFwLmF0QW55TnVtYmVyKCksIHN0b3JlKTsKLSAgICB9Owot
Ci0gICAgaWYgKGVsZW1lbnRUeXBlLmlzPFBhY2tlZFR5cGU+KCkpIHsKLSAgICAgICAgc3dpdGNo
IChlbGVtZW50VHlwZS5hczxQYWNrZWRUeXBlPigpKSB7Ci0gICAgICAgIGNhc2UgUGFja2VkVHlw
ZTo6STg6IHsKLSAgICAgICAgICAgIGF1dG8qIHN0b3JlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZTgsIG9yaWdpbigpLCBzZXRWYWx1ZSwgaW5k
ZXhlZEFkZHJlc3MpOwotICAgICAgICAgICAgZGVjb3JhdGVXaXRoSW5kZXgoc3RvcmUsIG1faGVh
cHMuSlNXZWJBc3NlbWJseUFycmF5X2k4LCBpbmRleFZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGFja2VkVHlwZTo6STE2OiB7Ci0gICAgICAgICAg
ICBhdXRvKiBzdG9yZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgU3RvcmUxNiwgb3JpZ2luKCksIHNldFZhbHVlLCBpbmRleGVkQWRkcmVzcyk7Ci0gICAg
ICAgICAgICBkZWNvcmF0ZVdpdGhJbmRleChzdG9yZSwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJy
YXlfaTE2LCBpbmRleFZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBTVVBQUkVTU19VTkNPVU5U
RURfTE9DQUwgY29uc3QgQXJyYXlUeXBlKiBhcnJheVR5cGUgPSBnZXRBcnJheVR5cGVEZWZpbml0
aW9uKHR5cGVJbmRleCk7CisgICAgYXV0byogc3RvcmVOb2RlID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxXYXNtQXJyYXlTZXRWYWx1ZT4obV9wcm9jLCBXYXNtQXJyYXlTZXQsIG9yaWdpbigp
LAorICAgICAgICBhcnJheXJlZiwgaW5kZXhWYWx1ZSwgc2V0VmFsdWUsIFJlZiB7IG1faW5mby5y
dHQodHlwZUluZGV4KSB9LCBhcnJheVR5cGUpOworICAgIG1faGVhcHMuZGVjb3JhdGVXYXNtQXJy
YXlTZXQoYXJyYXlFbGVtZW50SGVhcChlbGVtZW50VHlwZSwgaW5kZXhWYWx1ZSksIHN0b3JlTm9k
ZSk7CiAKLSAgICBBU1NFUlQoZWxlbWVudFR5cGUuaXM8VHlwZT4oKSk7Ci0gICAgYXV0byByZXN1
bHRUeXBlID0gZWxlbWVudFR5cGUudW5wYWNrZWQoKTsKLSAgICBhdXRvKiBzdG9yZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUsIG9yaWdpbigp
LCBzZXRWYWx1ZSwgaW5kZXhlZEFkZHJlc3MpOwotICAgIHN3aXRjaCAocmVzdWx0VHlwZS5raW5k
KSB7Ci0gICAgY2FzZSBUeXBlS2luZDo6STMyOgotICAgICAgICBkZWNvcmF0ZVdpdGhJbmRleChz
dG9yZSwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfaTMyLCBpbmRleFZhbHVlKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlS2luZDo6RjMyOgotICAgICAgICBkZWNvcmF0ZVdpdGhJ
bmRleChzdG9yZSwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfZjMyLCBpbmRleFZhbHVlKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlS2luZDo6STY0OgotICAgICAgICBkZWNvcmF0
ZVdpdGhJbmRleChzdG9yZSwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfaTY0LCBpbmRleFZh
bHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICBk
ZWNvcmF0ZVdpdGhJbmRleChzdG9yZSwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfZjY0LCBp
bmRleFZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlS2luZDo6VjEyODoKLSAg
ICAgICAgZGVjb3JhdGVXaXRoSW5kZXgoc3RvcmUsIG1faGVhcHMuSlNXZWJBc3NlbWJseUFycmF5
X3YxMjgsIGluZGV4VmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBkZWNvcmF0ZVdpdGhJbmRleChzdG9yZSwgbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJyYXlfcmVm
LCBpbmRleFZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIHJldHVybiBpc1JlZlR5
cGUoZWxlbWVudFR5cGUudW5wYWNrZWQoKSk7CiB9CiAKQEAgLTM5MjMsMTEgKzM3OTEsNyBAQCBh
dXRvIE9NR0lSR2VuZXJhdG9yOjphZGRTdHJ1Y3ROZXcoVHlwZVNpZ25hdHVyZUluZGV4IHR5cGVJ
bmRleCwgQXJndW1lbnRMaXN0JiBhcgogICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSAqbV9p
bmZvLmV4cGFuZGVkVHlwZVNpZ25hdHVyZSh0eXBlSW5kZXgpLnRlbXBsYXRlIGFzPFN0cnVjdFR5
cGU+KCk7CiAgICAgY29uc3QgUlRUJiBydHQgPSBtX2luZm8ucnR0KHR5cGVJbmRleCk7CiAKLSAg
ICBpbnQzMl90IHN0cnVjdHVyZUlET2Zmc2V0ID0gc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZkdDT2JqZWN0U3RydWN0dXJlSUQobV9pbmZvLCB0eXBlSW5k
ZXgucmF3SW5kZXgoKSkpOwotICAgIE1lbW9yeVZhbHVlKiBzdHJ1Y3R1cmVJRCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdp
bigpLCBpbnN0YW5jZVZhbHVlKCksIHN0cnVjdHVyZUlET2Zmc2V0KTsKLSAgICBtX2hlYXBzLmRl
Y29yYXRlTWVtb3J5KCZtX2hlYXBzLkpTV2ViQXNzZW1ibHlJbnN0YW5jZV9nY09iamVjdFN0cnVj
dHVyZUlEc1t0eXBlSW5kZXgucmF3SW5kZXgoKV0sIHN0cnVjdHVyZUlEKTsKLSAgICBzdHJ1Y3R1
cmVJRC0+c2V0UmVhZHNNdXRhYmlsaXR5KEIzOjpNdXRhYmlsaXR5OjpJbW11dGFibGUpOwotICAg
IHN0cnVjdHVyZUlELT5zZXRDb250cm9sRGVwZW5kZW50KGZhbHNlKTsKKyAgICBhdXRvKiBzdHJ1
Y3R1cmVJRCA9IGxvYWRHQ09iamVjdFN0cnVjdHVyZUlEKHR5cGVJbmRleCk7CiAKICAgICBpbnQz
Ml90IGFsbG9jYXRvcnNCYXNlT2Zmc2V0ID0gc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpvZmZzZXRPZkFsbG9jYXRvckZvckdDT2JqZWN0KG1faW5mbywgMCkpOwogCkBA
IC0zOTQ3LDExICszODExLDcgQEAgYXV0byBPTUdJUkdlbmVyYXRvcjo6YWRkU3RydWN0TmV3RGVm
YXVsdChUeXBlU2lnbmF0dXJlSW5kZXggdHlwZUluZGV4LCBFeHByZXNzaW8KICAgICBjb25zdCBh
dXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby5leHBhbmRlZFR5cGVTaWduYXR1cmUodHlwZUluZGV4
KS50ZW1wbGF0ZSBhczxTdHJ1Y3RUeXBlPigpOwogICAgIGNvbnN0IFJUVCYgcnR0ID0gbV9pbmZv
LnJ0dCh0eXBlSW5kZXgpOwogCi0gICAgaW50MzJfdCBzdHJ1Y3R1cmVJRE9mZnNldCA9IHNhZmVD
YXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZHQ09iamVjdFN0cnVj
dHVyZUlEKG1faW5mbywgdHlwZUluZGV4LnJhd0luZGV4KCkpKTsKLSAgICBNZW1vcnlWYWx1ZSog
c3RydWN0dXJlSUQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzdHJ1Y3R1cmVJRE9m
ZnNldCk7Ci0gICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmbV9oZWFwcy5KU1dlYkFzc2VtYmx5
SW5zdGFuY2VfZ2NPYmplY3RTdHJ1Y3R1cmVJRHNbdHlwZUluZGV4LnJhd0luZGV4KCldLCBzdHJ1
Y3R1cmVJRCk7Ci0gICAgc3RydWN0dXJlSUQtPnNldFJlYWRzTXV0YWJpbGl0eShCMzo6TXV0YWJp
bGl0eTo6SW1tdXRhYmxlKTsKLSAgICBzdHJ1Y3R1cmVJRC0+c2V0Q29udHJvbERlcGVuZGVudChm
YWxzZSk7CisgICAgYXV0byogc3RydWN0dXJlSUQgPSBsb2FkR0NPYmplY3RTdHJ1Y3R1cmVJRCh0
eXBlSW5kZXgpOwogCiAgICAgaW50MzJfdCBhbGxvY2F0b3JzQmFzZU9mZnNldCA9IHNhZmVDYXN0
PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZBbGxvY2F0b3JGb3JHQ09i
amVjdChtX2luZm8sIDApKTsKIApAQCAtNDA3NSwxMCArMzkzNSw3IEBAIHZvaWQgT01HSVJHZW5l
cmF0b3I6OmVtaXRSZWZUZXN0T3JDYXN0KENhc3RLaW5kIGNhc3RLaW5kLCBUeXBlZEV4cHJlc3Np
b24gcmVmZXJlCiAgICAgYXV0byBraW5kID0gY2FzdEtpbmQgPT0gQ2FzdEtpbmQ6OkNhc3QgPyB0
cmFwcGluZyhXYXNtUmVmQ2FzdCkgOiBXYXNtUmVmVGVzdDsKIAogICAgIGlmICh0YXJnZXRSVFQg
JiYgdGFyZ2V0UlRULT5raW5kKCkgIT0gV2FzbTo6UlRUS2luZDo6RnVuY3Rpb24pIHsKLSAgICAg
ICAgYXV0byogdGFyZ2V0U3RydWN0dXJlSUQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgp
LCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mR0NPYmpl
Y3RTdHJ1Y3R1cmVJRChtX2luZm8sIG9yaWdpbmFsVHlwZUluZGV4KSkpOwotICAgICAgICBtX2hl
YXBzLmRlY29yYXRlTWVtb3J5KCZtX2hlYXBzLkpTV2ViQXNzZW1ibHlJbnN0YW5jZV9nY09iamVj
dFN0cnVjdHVyZUlEc1tvcmlnaW5hbFR5cGVJbmRleF0sIHRhcmdldFN0cnVjdHVyZUlEKTsKLSAg
ICAgICAgdGFyZ2V0U3RydWN0dXJlSUQtPnNldFJlYWRzTXV0YWJpbGl0eShCMzo6TXV0YWJpbGl0
eTo6SW1tdXRhYmxlKTsKLSAgICAgICAgdGFyZ2V0U3RydWN0dXJlSUQtPnNldENvbnRyb2xEZXBl
bmRlbnQoZmFsc2UpOworICAgICAgICBhdXRvKiB0YXJnZXRTdHJ1Y3R1cmVJRCA9IGxvYWRHQ09i
amVjdFN0cnVjdHVyZUlEKFR5cGVTaWduYXR1cmVJbmRleChvcmlnaW5hbFR5cGVJbmRleCkpOwog
CiAgICAgICAgIGF1dG8qIGNhc3RWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6
Oldhc21SZWZUeXBlQ2hlY2tWYWx1ZT4obV9wcm9jLCBraW5kLCB0eXBlLCBvcmlnaW4oKSwgdG9I
ZWFwVHlwZSwgZmxhZ3MsIFdURjo6bW92ZSh0YXJnZXRSVFQpLCB2YWx1ZSwgdGFyZ2V0U3RydWN0
dXJlSUQpOwogICAgICAgICByZXN1bHQgPSBwdXNoKGNhc3RWYWx1ZSk7CkBAIC00MDg5LDE0NiAr
Mzk0Niw2IEBAIHZvaWQgT01HSVJHZW5lcmF0b3I6OmVtaXRSZWZUZXN0T3JDYXN0KENhc3RLaW5k
IGNhc3RLaW5kLCBUeXBlZEV4cHJlc3Npb24gcmVmZXJlCiAgICAgcmVzdWx0ID0gcHVzaChjYXN0
VmFsdWUpOwogfQogCi1WYWx1ZSogT01HSVJHZW5lcmF0b3I6OmVuY29kZVN0cnVjdHVyZUlEKFZh
bHVlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpUcnVuYywgb3JpZ2luKCksIHN0cnVjdHVyZSk7Ci19Ci0K
LVZhbHVlKiBPTUdJUkdlbmVyYXRvcjo6YWxsb2NhdG9yRm9yV2FzbUdDSGVhcENlbGxTaXplKFZh
bHVlKiBzaXplSW5CeXRlcywgQmFzaWNCbG9jayogc2xvd1BhdGgpCi17Ci0gICAgc3RhdGljX2Fz
c2VydCghKE1hcmtlZFNwYWNlOjpzaXplU3RlcCAmIChNYXJrZWRTcGFjZTo6c2l6ZVN0ZXAgLSAx
KSksICJNYXJrZWRTcGFjZTo6c2l6ZVN0ZXAgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKLQot
ICAgIHB0cmRpZmZfdCBhbGxvY2F0b3JCdWZmZXJCYXNlT2Zmc2V0ID0gSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpvZmZzZXRPZkFsbG9jYXRvckZvckdDT2JqZWN0KG1faW5mbywgMCk7Ci0KLSAgICB1
bnNpZ25lZCBzdGVwU2hpZnQgPSBnZXRMU0JTZXQoTWFya2VkU3BhY2U6OnNpemVTdGVwKTsKLQot
ICAgIGF1dG8qIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOwotCi0gICAgYXV0byog
c2l6ZUNsYXNzSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IFpTaHIsIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEIzOjpBZGQsIG9yaWdpbigpLCBzaXplSW5CeXRlcywgY29uc3RhbnQocG9pbnRl
clR5cGUoKSwgTWFya2VkU3BhY2U6OnNpemVTdGVwIC0gMSkpLAotICAgICAgICBjb25zdGFudChJ
bnQzMiwgc3RlcFNoaWZ0KSk7Ci0KLSAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKG1fcHJvYywgQjM6OkJyYW5jaCwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWJvdmUsIG9yaWdpbigpLCBzaXplQ2xhc3NJ
bmRleCwgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgTWFya2VkU3BhY2U6OmxhcmdlQ3V0b2ZmID4+
IHN0ZXBTaGlmdCkpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2soc2xvd1BhdGgsIEZyZXF1ZW5j
eUNsYXNzOjpSYXJlKSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbikpOwotICAgIG1fY3Vy
cmVudEJsb2NrLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhzbG93UGF0aCwgRnJlcXVl
bmN5Q2xhc3M6OlJhcmUpLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7Ci0gICAgc2xv
d1BhdGgtPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKLSAgICBjb250aW51YXRpb24t
PmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IGNv
bnRpbnVhdGlvbjsKLQotICAgIFZhbHVlKiBhZGRyZXNzID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpBZGQsIG9yaWdpbigpLCBpbnN0YW5jZVZh
bHVlKCksIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIGFsbG9jYXRvckJ1ZmZlckJhc2VPZmZzZXQp
KSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWws
IG9yaWdpbigpLCBzaXplQ2xhc3NJbmRleCwgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgc2l6ZW9m
KEFsbG9jYXRvcikpKSk7Ci0KLSAgICBhdXRvKiByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIEIzOjpMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmln
aW4oKSwgYWRkcmVzcyk7Ci0gICAgcmVzdWx0LT5zZXRDb250cm9sRGVwZW5kZW50KGZhbHNlKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1WYWx1ZSogT01HSVJHZW5lcmF0b3I6OmFsbG9jYXRl
V2FzbUdDSGVhcENlbGwoVmFsdWUqIGFsbG9jYXRvciwgQmFzaWNCbG9jayogc2xvd1BhdGgpCi17
Ci0gICAgYXV0byogY29udGludWF0aW9uID0gbV9wcm9jLmFkZEJsb2NrKCk7Ci0gICAgYXV0byog
cGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1
ZT4obV9wcm9jLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSk7Ci0gICAgaWYgKGlzQVJNNjQoKSkg
ewotICAgICAgICAvLyBlbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFsbG9jYXRvciB1c2VzIHRoZSBz
Y3JhdGNoIHJlZ2lzdGVycyBvbiBBUk0uCi0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvQ2xvYmJlcmVkR1BScygpKTsKLSAgICB9Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyV2l0aENsb2JiZXIoYWxsb2NhdG9yKTsKLSAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnMrKzsKLSAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVS
ZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07Ci0KLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Ci0gICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2VJZiBhbGxvd1NjcmF0Y2hJZihqaXQsIGlzQVJNNjQoKSk7Ci0gICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IGp1bXBUb1Nsb3dQYXRoOwotCi0gICAgICAgICAgICBHUFJSZWcg
YWxsb2NhdG9yR1BSID0gcGFyYW1zWzFdLmdwcigpOwotCi0gICAgICAgICAgICAvLyBXZSB1c2Ug
YSBwYXRjaHBvaW50IHRvIGVtaXQgdGhlIGFsbG9jYXRpb24gcGF0aCBiZWNhdXNlIHdoZW5ldmVy
IHdlIG1lc3Mgd2l0aAotICAgICAgICAgICAgLy8gYWxsb2NhdGlvbiBwYXRocywgd2UgYWxyZWFk
eSByZWFzb24gYWJvdXQgdGhlbSBhdCB0aGUgbWFjaGluZSBjb2RlIGxldmVsLiBXZSBrbm93Ci0g
ICAgICAgICAgICAvLyBleGFjdGx5IHdoYXQgaW5zdHJ1Y3Rpb24gc2VxdWVuY2Ugd2Ugd2FudC4g
V2UncmUgY29uZmlkZW50IHRoYXQgbm8gY29tcGlsZXIKLSAgICAgICAgICAgIC8vIG9wdGltaXph
dGlvbiBjb3VsZCBtYWtlIHRoaXMgY29kZSBiZXR0ZXIuIFNvLCBpdCdzIGJlc3QgdG8gaGF2ZSB0
aGUgY29kZSBpbgotICAgICAgICAgICAgLy8gQXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGUo
KS4gVGhhdCB3YXksIHRoZSBzYW1lIG9wdGltaXplZCBwYXRoIGlzIHNoYXJlZCBieQotICAgICAg
ICAgICAgLy8gYWxsIG9mIHRoZSBjb21waWxlciB0aWVycy4KLSAgICAgICAgICAgIGppdC5lbWl0
QWxsb2NhdGVXaXRoTm9uTnVsbEFsbG9jYXRvcigKLSAgICAgICAgICAgICAgICBwYXJhbXNbMF0u
Z3ByKCksIEpJVEFsbG9jYXRvcjo6dmFyaWFibGVOb25OdWxsKCksIGFsbG9jYXRvckdQUiwgcGFy
YW1zLmdwU2NyYXRjaCgwKSwKLSAgICAgICAgICAgICAgICBqdW1wVG9TbG93UGF0aCwgQ0NhbGxI
ZWxwZXJzOjpTbG93QWxsb2NhdGlvblJlc3VsdDo6VW5kZWZpbmVkQmVoYXZpb3IpOwotCi0gICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAganVtcFRvU3VjY2VzczsKLSAgICAgICAgICAgIGlm
ICghcGFyYW1zLmZhbGxzVGhyb3VnaFRvU3VjY2Vzc29yKDApKQotICAgICAgICAgICAgICAgIGp1
bXBUb1N1Y2Nlc3MgPSBqaXQuanVtcCgpOwotCi0gICAgICAgICAgICBWZWN0b3I8Qm94PENDYWxs
SGVscGVyczo6TGFiZWw+PiBsYWJlbHMgPSBwYXJhbXMuc3VjY2Vzc29yTGFiZWxzKCk7Ci0KLSAg
ICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKLSAgICAgICAgICAgICAgICBbPV0gKENDYWxs
SGVscGVycyYgaml0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3dQYXRoLmxpbmtU
bygqbGFiZWxzWzFdLCAmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGp1bXBUb1N1Y2Nl
c3MuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MubGlua1Rv
KCpsYWJlbHNbMF0sICZqaXQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQot
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRTdWNjZXNzb3IoeyBjb250aW51YXRpb24sIEZyZXF1
ZW5jeUNsYXNzOjpOb3JtYWwgfSk7Ci0gICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZFN1Y2Nlc3Nv
cih7IHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSB9KTsKLQotICAgIG1fY3VycmVudEJs
b2NrID0gY29udGludWF0aW9uOwotICAgIHJldHVybiBwYXRjaHBvaW50OwotfQotCi1WYWx1ZSog
T01HSVJHZW5lcmF0b3I6OmFsbG9jYXRlV2FzbUdDT2JqZWN0KFZhbHVlKiBhbGxvY2F0b3IsIFZh
bHVlKiBzdHJ1Y3R1cmVJRCwgVmFsdWUqIHR5cGVJbmZvLCBCYXNpY0Jsb2NrKiBzbG93UGF0aCkK
LXsKLSAgICBhdXRvKiBjZWxsID0gYWxsb2NhdGVXYXNtR0NIZWFwQ2VsbChhbGxvY2F0b3IsIHNs
b3dQYXRoKTsKLQotICAgIGF1dG8qIHN0b3JlU3RydWN0dXJlSUQgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6U3RvcmUsIG9yaWdpbigpLCBz
dHJ1Y3R1cmVJRCwgY2VsbCwgc2FmZUNhc3Q8aW50MzJfdD4oSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7Ci0gICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmbV9oZWFwcy5KU0NlbGxfc3Ry
dWN0dXJlSUQsIHN0b3JlU3RydWN0dXJlSUQpOwotCi0gICAgYXV0byogc3RvcmVVc2VmdWxCeXRl
cyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihtX3Byb2MsIEIz
OjpTdG9yZSwgb3JpZ2luKCksIHR5cGVJbmZvLCBjZWxsLCBzYWZlQ2FzdDxpbnQzMl90PihKU0Nl
bGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSkpOwotICAgIG1faGVhcHMuZGVjb3JhdGVN
ZW1vcnkoJm1faGVhcHMuSlNDZWxsX3VzZWZ1bEJ5dGVzLCBzdG9yZVVzZWZ1bEJ5dGVzKTsKLQot
ICAgIHJldHVybiBjZWxsOwotfQotCi1WYWx1ZSogT01HSVJHZW5lcmF0b3I6OmFsbG9jYXRlV2Fz
bUdDQXJyYXlVbmluaXRpYWxpemVkKFR5cGVTaWduYXR1cmVJbmRleCB0eXBlSW5kZXgsIFZhbHVl
KiBzaXplKQotewotICAgIGF1dG8qIHNsb3dQYXRoID0gbV9wcm9jLmFkZEJsb2NrKCk7Ci0gICAg
YXV0byogY29udGludWF0aW9uID0gbV9wcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBhdXRvKiBzdHJ1
Y3R1cmVJRCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgSW50MzIsIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+
KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZHQ09iamVjdFN0cnVjdHVyZUlEKG1faW5m
bywgdHlwZUluZGV4LnJhd0luZGV4KCkpKSk7Ci0gICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgm
bV9oZWFwcy5KU1dlYkFzc2VtYmx5SW5zdGFuY2VfZ2NPYmplY3RTdHJ1Y3R1cmVJRHNbdHlwZUlu
ZGV4LnJhd0luZGV4KCldLCBzdHJ1Y3R1cmVJRCk7Ci0gICAgc3RydWN0dXJlSUQtPnNldFJlYWRz
TXV0YWJpbGl0eShCMzo6TXV0YWJpbGl0eTo6SW1tdXRhYmxlKTsKLSAgICBzdHJ1Y3R1cmVJRC0+
c2V0Q29udHJvbERlcGVuZGVudChmYWxzZSk7Ci0KLSAgICBjb25zdCBBcnJheVR5cGUqIHR5cGVE
ZWZpbml0aW9uID0gbV9pbmZvLmV4cGFuZGVkVHlwZVNpZ25hdHVyZSh0eXBlSW5kZXgpLnRlbXBs
YXRlIGFzPEFycmF5VHlwZT4oKTsKLSAgICBzaXplX3QgZWxlbWVudFNpemUgPSB0eXBlRGVmaW5p
dGlvbi0+ZWxlbWVudFR5cGUoKS50eXBlLmVsZW1lbnRTaXplKCk7Ci0gICAgYXV0byogZXh0ZW5k
ZWQgPSBwb2ludGVyT2ZJbnQzMihzaXplKTsKLSAgICBhdXRvKiBzaGlmdGVkID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTaGwsIG9yaWdpbigpLCBleHRlbmRlZCwg
Y29uc3RhbnQoSW50MzIsIGdldExTQlNldChlbGVtZW50U2l6ZSkpKTsKLSAgICBhdXRvKiBzaXpl
SW5CeXRlcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBw
b2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgc2hpZnRlZCwgY29uc3RhbnQocG9pbnRlclR5cGUoKSwg
SlNXZWJBc3NlbWJseUFycmF5OjphbGxvY2F0aW9uTWV0YWRhdGFTaXplKGVsZW1lbnRTaXplKSkp
OwotICAgIGF1dG8qIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcldhc21HQ0hlYXBDZWxsU2l6ZShz
aXplSW5CeXRlcywgc2xvd1BhdGgpOwotICAgIGF1dG8qIHR5cGVJbmZvID0gY29uc3RhbnQoSW50
MzIsIEpTV2ViQXNzZW1ibHlBcnJheTo6dHlwZUluZm9CbG9iKCkuYmxvYigpKTsKLSAgICBhdXRv
KiBjZWxsID0gYWxsb2NhdGVXYXNtR0NPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1cmVJRCwgdHlw
ZUluZm8sIHNsb3dQYXRoKTsKLSAgICBhdXRvKiBmYXN0VmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgd2FzbVJlZk9mQ2VsbChj
ZWxsKSk7Ci0gICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2Ms
IEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwotICAgIGNvbnRpbnVhdGlvbi0+YWRkUHJl
ZGVjZXNzb3IobV9jdXJyZW50QmxvY2spOwotCi0gICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0
aDsKLSAgICBhdXRvKiBzbG93UmVzdWx0ID0gY2FsbFdhc21PcGVyYXRpb24obV9jdXJyZW50Qmxv
Y2ssIHRvQjNUeXBlKFR5cGVzOjpBcnJheXJlZiksIG9wZXJhdGlvbldhc21BcnJheU5ld0VtcHR5
LAotICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGNvbnN0YW50KEludDMyLCB0eXBlSW5kZXgucmF3
SW5kZXgoKSksIHNpemUpOwotICAgIGVtaXROdWxsQ2hlY2soc2xvd1Jlc3VsdCwgRXhjZXB0aW9u
VHlwZTo6QmFkQXJyYXlOZXcpOwotICAgIGF1dG8qIHNsb3dWYWx1ZSA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBzbG93UmVzdWx0KTsK
LSAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwg
b3JpZ2luKCksIGNvbnRpbnVhdGlvbik7Ci0gICAgY29udGludWF0aW9uLT5hZGRQcmVkZWNlc3Nv
cihtX2N1cnJlbnRCbG9jayk7Ci0KLSAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsK
LSAgICBhdXRvKiByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIFBoaSwgd2FzbVJlZlR5cGUoKSwgb3JpZ2luKCkpOwotICAgIGZhc3RWYWx1ZS0+c2V0UGhp
KHJlc3VsdCk7Ci0gICAgc2xvd1ZhbHVlLT5zZXRQaGkocmVzdWx0KTsKLQotICAgIGF1dG8qIGFy
cmF5U2l6ZVN0b3JlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+
KG1fcHJvYywgQjM6OlN0b3JlLCBvcmlnaW4oKSwgc2l6ZSwgcG9pbnRlck9mV2FzbVJlZihyZXN1
bHQpLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5QXJyYXk6Om9mZnNldE9mU2l6ZSgp
KSk7Ci0gICAgbV9oZWFwcy5kZWNvcmF0ZU1lbW9yeSgmbV9oZWFwcy5KU1dlYkFzc2VtYmx5QXJy
YXlfc2l6ZSwgYXJyYXlTaXplU3RvcmUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQg
T01HSVJHZW5lcmF0b3I6Om11dGF0b3JGZW5jZSgpCiB7CiAgICAgaWYgKGlzWDg2KCkpIHsKQEAg
LTY1OTEsNyArNjMwOCw2IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0
aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVPTUcoQ29tcGlsYXRpCiAgICAgSW5saW5pbmdE
ZWNpc2lvbiBpbmxpbmluZ0RlY2lzaW9uKG1vZHVsZSwgcHJvZmlsZWRDYWxsZWUpOwogICAgIGlu
bGluaW5nRGVjaXNpb24uZXhwYW5kKCk7CiAKLSAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IGhl
YXBzOwogICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlx
dWU8Q0NhbGxIZWxwZXJzPigpOwogICAgIGNvbXBpbGF0aW9uQ29udGV4dC5wcm9jZWR1cmUgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxQcm9jZWR1cmU+KGluZm8udXNlc1NJTUQo
ZnVuY3Rpb25JbmRleCkpOwogCkBAIC02NjE4LDcgKzYzMzQsNyBAQCBFeHBlY3RlZDxzdGQ6OnVu
aXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlT01HKENv
bXBpbGF0aQogICAgIHByb2NlZHVyZS5jb2RlKCkuc2V0Rm9yY2VJUkNSZWdpc3RlckFsbG9jYXRp
b24oKTsKIAogICAgIHJlc3VsdC0+b3V0Z29pbmdKSVREaXJlY3RDYWxsZWVzID0gRml4ZWRCaXRW
ZWN0b3IoaW5mby5pbnRlcm5hbEZ1bmN0aW9uQ291bnQoKSk7Ci0gICAgT01HSVJHZW5lcmF0b3Ig
aXJHZW5lcmF0b3IoaGVhcHMsIGNvbXBpbGF0aW9uQ29udGV4dCwgbW9kdWxlLCBjYWxsZWVHcm91
cCwgaW5mbywgcHJvZmlsZWRDYWxsZWUsIGlubGluaW5nRGVjaXNpb24ucm9vdCgpLCBjYWxsZWUs
IHByb2NlZHVyZSwgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIHJlc3VsdC0+b3V0Z29pbmdKSVRE
aXJlY3RDYWxsZWVzLCByZXN1bHQtPm9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIG1vZGUsIGNv
bXBpbGF0aW9uTW9kZSwgZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4Rm9yT1NSRW50cnkpOworICAg
IE9NR0lSR2VuZXJhdG9yIGlyR2VuZXJhdG9yKHByb2NlZHVyZS5oZWFwcygpLCBjb21waWxhdGlv
bkNvbnRleHQsIG1vZHVsZSwgY2FsbGVlR3JvdXAsIGluZm8sIHByb2ZpbGVkQ2FsbGVlLCBpbmxp
bmluZ0RlY2lzaW9uLnJvb3QoKSwgY2FsbGVlLCBwcm9jZWR1cmUsIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCByZXN1bHQtPm91dGdvaW5nSklURGlyZWN0Q2FsbGVlcywgcmVzdWx0LT5vc3JFbnRy
eVNjcmF0Y2hCdWZmZXJTaXplLCBtb2RlLCBjb21waWxhdGlvbk1vZGUsIGZ1bmN0aW9uSW5kZXgs
IGxvb3BJbmRleEZvck9TUkVudHJ5KTsKICAgICBGdW5jdGlvblBhcnNlcjxPTUdJUkdlbmVyYXRv
cj4gcGFyc2VyKGlyR2VuZXJhdG9yLCBmdW5jdGlvbi5kYXRhLCBzaWduYXR1cmUsIGluZm8pOwog
ICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VyLnBhcnNlKCkpOwogCkBAIC02NjI5
LDcgKzYzNDUsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4s
IFN0cmluZz4gcGFyc2VBbmRDb21waWxlT01HKENvbXBpbGF0aQogICAgIC8vIHRvIGhhcHBlbiBs
YXN0IGJlY2F1c2Ugb3VyIGFic3RyYWN0IGhlYXBzIGFyZSBnZW5lcmF0ZWQgbGF6aWx5LiBUaGV5
IGhhdmUgdG8gYmUKICAgICAvLyBnZW5lcmF0ZWQgbGF6aWx5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBp
bmZpbml0ZSBudW1iZXIgb2YgbnVtYmVyZWQsIGluZGV4ZWQsIGFuZAogICAgIC8vIGFic29sdXRl
IGhlYXBzLiBXZSBvbmx5IGJlY29tZSBhd2FyZSBvZiB0aGUgb25lcyB3ZSBhY3R1YWxseSBtZW50
aW9uIHdoaWxlIGxvd2VyaW5nLgotICAgIGhlYXBzLmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUlu
c3RydWN0aW9ucygpOworICAgIHByb2NlZHVyZS5oZWFwcygpLmNvbXB1dGVSYW5nZXNBbmREZWNv
cmF0ZUluc3RydWN0aW9ucygpOwogCiAgICAgcHJvY2VkdXJlLnJlc2V0UmVhY2hhYmlsaXR5KCk7
CiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVz
cy93YXNtLWFycmF5LW9tZy1hcnJheS1sZW5ndGgtY3NlLmpzIGIvSlNUZXN0cy93YXNtL3N0cmVz
cy93YXNtLWFycmF5LW9tZy1hcnJheS1sZW5ndGgtY3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uM2MwYjY4MDg1NDI2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL3N0cmVzcy93YXNtLWFycmF5LW9tZy1hcnJheS1sZW5ndGgtY3NlLmpzCkBAIC0w
LDAgKzEsMTcwIEBACisvLyBUZXN0cyBDU0UgYW5kIHN0cmVuZ3RoIHJlZHVjdGlvbiBmb3IgV2Fz
bUFycmF5TGVuZ3RoIEIzIG9wY29kZSB1bmRlciBPTUcgY29tcGlsYXRpb24uCisvLyBFeGVyY2lz
ZXM6CisvLyAgIDEuIER1cGxpY2F0ZSBhcnJheS5sZW4gb24gdGhlIHNhbWUgYXJyYXkgKENTRSBl
bGltaW5hdGVzIHJlZHVuZGFudCBsZW5ndGggbG9hZCkKKy8vICAgMi4gYXJyYXkubGVuIHN1cnZp
dmVzIGFycmF5LnNldCAobGVuZ3RoIGlzIGltbXV0YWJsZSwgbm90IGNsb2JiZXJlZCBieSBzdG9y
ZXMpCisvLyAgIDMuIExvb3Agd2l0aCBhcnJheS5sZW4gYXMgYm91bmQgKyBhcnJheS5nZXQgKGxl
bmd0aCBDU0UgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucykKKy8vICAgNC4gTG9vcCB3aXRoIGFycmF5
LmxlbiBhcyBib3VuZCArIGFycmF5LnNldCArIGFycmF5LmdldCAobGVuZ3RoIENTRSBzdXJ2aXZl
cyBzdG9yZXMpCisvLyAgIDUuIGFycmF5LmxlbiBvbiBhIGZyZXNobHktYWxsb2NhdGVkIGFycmF5
IChkZS10cmFwcGluZzogV2FzbUFycmF5TmV3IGlzIG5vbi1udWxsKQorLy8gICA2LiBhcnJheS5s
ZW4gb24gdHdvIGRpZmZlcmVudCBhcnJheXMgKG11c3QgTk9UIGJlIENTRSdkKQorLy8KKy8vIEFw
cHJvYWNoOiBhbGxvY2F0ZSBhcnJheXMgb25jZSwgdGhlbiBjYWxsIHRoZSB3YXNtIGZ1bmN0aW9u
cyBOPTEwMCAwMDAgdGltZXMKKy8vIChlbm91Z2ggdG8gcmVhY2ggdGhlIE9NRyB0aWVyLCBkZWZh
dWx0IHRocmVzaG9sZDogNTAgMDAwKS4KKworY29uc3QgTiA9IDEwMDAwMDsKKworZnVuY3Rpb24g
bWFrZUluc3RhbmNlKGJ5dGVzKSB7CisgICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKG5ldyBVaW50OEFycmF5KGJ5dGVzKS5idWZmZXIpKTsK
K30KKworLy8g4pSA4pSAIFdhc21BcnJheUxlbmd0aCBDU0UgbW9kdWxlIOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgAorLyoKKyhtb2R1bGUKKyAgKHR5cGUgJGFyciAoYXJyYXkgKG11dCBpMzIpKSkK
KworICA7OyAxLiBEdXBsaWNhdGUgYXJyYXkubGVuIOKAlCBDU0Ugc2hvdWxkIGVsaW1pbmF0ZSB0
aGUgc2Vjb25kIGxvYWQKKyAgKGZ1bmMgKGV4cG9ydCAiZHVwTGVuIikgKHBhcmFtICRhIChyZWYg
bnVsbCAwKSkgKHJlc3VsdCBpMzIpCisgICAgKGkzMi5hZGQgKGFycmF5LmxlbiAobG9jYWwuZ2V0
ICRhKSkgKGFycmF5LmxlbiAobG9jYWwuZ2V0ICRhKSkpKQorCisgIDs7IDIuIGFycmF5LmxlbiBi
ZWZvcmUgYW5kIGFmdGVyIGFycmF5LnNldCDigJQgbGVuZ3RoIGlzIGltbXV0YWJsZQorICAoZnVu
YyAoZXhwb3J0ICJsZW5BZnRlclNldCIpIChwYXJhbSAkYSAocmVmIG51bGwgMCkpIChwYXJhbSAk
dmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgKGxvY2FsICRiZWZvcmUgaTMyKQorICAgIChsb2Nh
bC5zZXQgJGJlZm9yZSAoYXJyYXkubGVuIChsb2NhbC5nZXQgJGEpKSkKKyAgICAoYXJyYXkuc2V0
IDAgKGxvY2FsLmdldCAkYSkgKGkzMi5jb25zdCAwKSAobG9jYWwuZ2V0ICR2YWwpKQorICAgIChp
MzIuYWRkIChsb2NhbC5nZXQgJGJlZm9yZSkgKGFycmF5LmxlbiAobG9jYWwuZ2V0ICRhKSkpKQor
CisgIDs7IDMuIExvb3Agc3VtbWluZyBlbGVtZW50cyDigJQgYXJyYXkubGVuIHVzZWQgYXMgYm91
bmQgc2hvdWxkIGJlIENTRSdkCisgIChmdW5jIChleHBvcnQgImxvb3BTdW0iKSAocGFyYW0gJGEg
KHJlZiBudWxsIDApKSAocmVzdWx0IGkzMikKKyAgICAobG9jYWwgJGkgaTMyKSAobG9jYWwgJHN1
bSBpMzIpCisgICAgKGxvY2FsLnNldCAkaSAoaTMyLmNvbnN0IDApKSAobG9jYWwuc2V0ICRzdW0g
KGkzMi5jb25zdCAwKSkKKyAgICAoYmxvY2sgJGJyZWFrIChsb29wICRsb29wCisgICAgICAoYnJf
aWYgJGJyZWFrIChpMzIuZ2VfdSAobG9jYWwuZ2V0ICRpKSAoYXJyYXkubGVuIChsb2NhbC5nZXQg
JGEpKSkpCisgICAgICAobG9jYWwuc2V0ICRzdW0gKGkzMi5hZGQgKGxvY2FsLmdldCAkc3VtKSAo
YXJyYXkuZ2V0IDAgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaSkpKSkKKyAgICAgIChsb2Nh
bC5zZXQgJGkgKGkzMi5hZGQgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25zdCAxKSkpCisgICAgICAo
YnIgJGxvb3ApKSkKKyAgICAobG9jYWwuZ2V0ICRzdW0pKQorCisgIDs7IDQuIExvb3AgaW5jcmVt
ZW50aW5nIGVsZW1lbnRzIOKAlCBhcnJheS5sZW4gYm91bmQgc3Vydml2ZXMgYXJyYXkuc2V0IGNs
b2JiZXIKKyAgKGZ1bmMgKGV4cG9ydCAibG9vcEluYyIpIChwYXJhbSAkYSAocmVmIG51bGwgMCkp
IChyZXN1bHQgaTMyKQorICAgIChsb2NhbCAkaSBpMzIpIChsb2NhbCAkc3VtIGkzMikKKyAgICA7
OyBmaXJzdCBsb29wOiBpbmNyZW1lbnQgZWFjaCBlbGVtZW50IGJ5IDEKKyAgICAobG9jYWwuc2V0
ICRpIChpMzIuY29uc3QgMCkpCisgICAgKGJsb2NrICRicmVhayAobG9vcCAkbG9vcAorICAgICAg
KGJyX2lmICRicmVhayAoaTMyLmdlX3UgKGxvY2FsLmdldCAkaSkgKGFycmF5LmxlbiAobG9jYWwu
Z2V0ICRhKSkpKQorICAgICAgKGFycmF5LnNldCAwIChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQg
JGkpCisgICAgICAgIChpMzIuYWRkIChhcnJheS5nZXQgMCAobG9jYWwuZ2V0ICRhKSAobG9jYWwu
Z2V0ICRpKSkgKGkzMi5jb25zdCAxKSkpCisgICAgICAobG9jYWwuc2V0ICRpIChpMzIuYWRkIChs
b2NhbC5nZXQgJGkpIChpMzIuY29uc3QgMSkpKQorICAgICAgKGJyICRsb29wKSkpCisgICAgOzsg
c2Vjb25kIGxvb3A6IHN1bSBhbGwgZWxlbWVudHMgKGFsc28gdXNlcyBhcnJheS5sZW4pCisgICAg
KGxvY2FsLnNldCAkaSAoaTMyLmNvbnN0IDApKSAobG9jYWwuc2V0ICRzdW0gKGkzMi5jb25zdCAw
KSkKKyAgICAoYmxvY2sgJGJyZWFrMiAobG9vcCAkbG9vcDIKKyAgICAgIChicl9pZiAkYnJlYWsy
IChpMzIuZ2VfdSAobG9jYWwuZ2V0ICRpKSAoYXJyYXkubGVuIChsb2NhbC5nZXQgJGEpKSkpCisg
ICAgICAobG9jYWwuc2V0ICRzdW0gKGkzMi5hZGQgKGxvY2FsLmdldCAkc3VtKSAoYXJyYXkuZ2V0
IDAgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaSkpKSkKKyAgICAgIChsb2NhbC5zZXQgJGkg
KGkzMi5hZGQgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25zdCAxKSkpCisgICAgICAoYnIgJGxvb3Ay
KSkpCisgICAgKGxvY2FsLmdldCAkc3VtKSkKKworICA7OyA1LiBhcnJheS5sZW4gb24gYSBmcmVz
aGx5LWFsbG9jYXRlZCBhcnJheSAoZGUtdHJhcHBpbmcgb3B0aW1pemF0aW9uKQorICAoZnVuYyAo
ZXhwb3J0ICJsZW5PZk5ldyIpIChwYXJhbSAkc2l6ZSBpMzIpIChyZXN1bHQgaTMyKQorICAgIChh
cnJheS5sZW4gKGFycmF5Lm5ldyAwIChpMzIuY29uc3QgMCkgKGxvY2FsLmdldCAkc2l6ZSkpKSkK
KworICA7OyA2LiBhcnJheS5sZW4gb24gdHdvIGRpZmZlcmVudCBhcnJheXMg4oCUIG11c3QgTk9U
IGJlIENTRSdkCisgIChmdW5jIChleHBvcnQgImxlblR3b0FycmF5cyIpIChwYXJhbSAkYSAocmVm
IG51bGwgMCkpIChwYXJhbSAkYiAocmVmIG51bGwgMCkpIChyZXN1bHQgaTMyKQorICAgIChpMzIu
YWRkIChhcnJheS5sZW4gKGxvY2FsLmdldCAkYSkpIChhcnJheS5sZW4gKGxvY2FsLmdldCAkYikp
KSkKKworICA7OyBIZWxwZXJzCisgIChmdW5jIChleHBvcnQgImFsbG9jIikgKHBhcmFtICRzaXpl
IGkzMikgKHJlc3VsdCAocmVmIG51bGwgMCkpCisgICAgKGFycmF5Lm5ldyAwIChpMzIuY29uc3Qg
MCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorICAoZnVuYyAoZXhwb3J0ICJzZXQiKSAocGFyYW0gJGEg
KHJlZiBudWxsIDApKSAocGFyYW0gJGlkeCBpMzIpIChwYXJhbSAkdmFsIGkzMikKKyAgICAoYXJy
YXkuc2V0IDAgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaWR4KSAobG9jYWwuZ2V0ICR2YWwp
KSkKKykKKyovCitjb25zdCBMRU5fQ1NFID0gWzB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MDEs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4YWIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDcsIDB4NWUsIDB4N2YsIDB4MDEsIDB4NjAsIDB4MDEsIDB4NjMsIDB4MDAsIDB4MDEsIDB4N2Ys
IDB4NjAsIDB4MDIsIDB4NjMsIDB4MDAsIDB4N2YsIDB4MDEsIDB4N2YsIDB4NjAsIDB4MDEsIDB4
N2YsIDB4MDEsIDB4N2YsIDB4NjAsIDB4MDIsIDB4NjMsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDEs
IDB4N2YsIDB4NjAsIDB4MDEsIDB4N2YsIDB4MDEsIDB4NjMsIDB4MDAsIDB4NjAsIDB4MDMsIDB4
NjMsIDB4MDAsIDB4N2YsIDB4N2YsIDB4MDAsIDB4MDMsIDB4ODksIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDgsIDB4MDEsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDMsIDB4MDQsIDB4MDUsIDB4
MDYsIDB4MDcsIDB4ZDQsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDgsIDB4MDYsIDB4NjQs
IDB4NzUsIDB4NzAsIDB4NGMsIDB4NjUsIDB4NmUsIDB4MDAsIDB4MDAsIDB4MGIsIDB4NmMsIDB4
NjUsIDB4NmUsIDB4NDEsIDB4NjYsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NTMsIDB4NjUsIDB4NzQs
IDB4MDAsIDB4MDEsIDB4MDcsIDB4NmMsIDB4NmYsIDB4NmYsIDB4NzAsIDB4NTMsIDB4NzUsIDB4
NmQsIDB4MDAsIDB4MDIsIDB4MDcsIDB4NmMsIDB4NmYsIDB4NmYsIDB4NzAsIDB4NDksIDB4NmUs
IDB4NjMsIDB4MDAsIDB4MDMsIDB4MDgsIDB4NmMsIDB4NjUsIDB4NmUsIDB4NGYsIDB4NjYsIDB4
NGUsIDB4NjUsIDB4NzcsIDB4MDAsIDB4MDQsIDB4MGMsIDB4NmMsIDB4NjUsIDB4NmUsIDB4NTQs
IDB4NzcsIDB4NmYsIDB4NDEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4NzMsIDB4MDAsIDB4
MDUsIDB4MDUsIDB4NjEsIDB4NmMsIDB4NmMsIDB4NmYsIDB4NjMsIDB4MDAsIDB4MDYsIDB4MDMs
IDB4NzMsIDB4NjUsIDB4NzQsIDB4MDAsIDB4MDcsIDB4MGEsIDB4ODksIDB4ODIsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDgsIDB4OGIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjAs
IDB4MDAsIDB4ZmIsIDB4MGYsIDB4MjAsIDB4MDAsIDB4ZmIsIDB4MGYsIDB4NmEsIDB4MGIsIDB4
OWEsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4N2YsIDB4MjAsIDB4MDAs
IDB4ZmIsIDB4MGYsIDB4MjEsIDB4MDIsIDB4MjAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MjAsIDB4
MDEsIDB4ZmIsIDB4MGUsIDB4MDAsIDB4MjAsIDB4MDIsIDB4MjAsIDB4MDAsIDB4ZmIsIDB4MGYs
IDB4NmEsIDB4MGIsIDB4YjIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4
N2YsIDB4NDEsIDB4MDAsIDB4MjEsIDB4MDEsIDB4NDEsIDB4MDAsIDB4MjEsIDB4MDIsIDB4MDIs
IDB4NDAsIDB4MDMsIDB4NDAsIDB4MjAsIDB4MDEsIDB4MjAsIDB4MDAsIDB4ZmIsIDB4MGYsIDB4
NGYsIDB4MGQsIDB4MDEsIDB4MjAsIDB4MDIsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIs
IDB4MGIsIDB4MDAsIDB4NmEsIDB4MjEsIDB4MDIsIDB4MjAsIDB4MDEsIDB4NDEsIDB4MDEsIDB4
NmEsIDB4MjEsIDB4MDEsIDB4MGMsIDB4MDAsIDB4MGIsIDB4MGIsIDB4MjAsIDB4MDIsIDB4MGIs
IDB4ZGYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4N2YsIDB4NDEsIDB4
MDAsIDB4MjEsIDB4MDEsIDB4MDIsIDB4NDAsIDB4MDMsIDB4NDAsIDB4MjAsIDB4MDEsIDB4MjAs
IDB4MDAsIDB4ZmIsIDB4MGYsIDB4NGYsIDB4MGQsIDB4MDEsIDB4MjAsIDB4MDAsIDB4MjAsIDB4
MDEsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGIsIDB4MDAsIDB4NDEsIDB4MDEs
IDB4NmEsIDB4ZmIsIDB4MGUsIDB4MDAsIDB4MjAsIDB4MDEsIDB4NDEsIDB4MDEsIDB4NmEsIDB4
MjEsIDB4MDEsIDB4MGMsIDB4MDAsIDB4MGIsIDB4MGIsIDB4NDEsIDB4MDAsIDB4MjEsIDB4MDEs
IDB4NDEsIDB4MDAsIDB4MjEsIDB4MDIsIDB4MDIsIDB4NDAsIDB4MDMsIDB4NDAsIDB4MjAsIDB4
MDEsIDB4MjAsIDB4MDAsIDB4ZmIsIDB4MGYsIDB4NGYsIDB4MGQsIDB4MDEsIDB4MjAsIDB4MDIs
IDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGIsIDB4MDAsIDB4NmEsIDB4MjEsIDB4
MDIsIDB4MjAsIDB4MDEsIDB4NDEsIDB4MDEsIDB4NmEsIDB4MjEsIDB4MDEsIDB4MGMsIDB4MDAs
IDB4MGIsIDB4MGIsIDB4MjAsIDB4MDIsIDB4MGIsIDB4OGIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ZmIsIDB4MDYsIDB4MDAsIDB4ZmIs
IDB4MGYsIDB4MGIsIDB4OGIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4
MDAsIDB4ZmIsIDB4MGYsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGYsIDB4NmEsIDB4MGIsIDB4ODks
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4
ZmIsIDB4MDYsIDB4MDAsIDB4MGIsIDB4OGIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAs
IDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4MjAsIDB4MDIsIDB4ZmIsIDB4MGUsIDB4MDAsIDB4
MGJdOworCitjb25zdCB7IGR1cExlbiwgbGVuQWZ0ZXJTZXQsIGxvb3BTdW0sIGxvb3BJbmMsIGxl
bk9mTmV3LCBsZW5Ud29BcnJheXMsIGFsbG9jLCBzZXQgfSA9IG1ha2VJbnN0YW5jZShMRU5fQ1NF
KS5leHBvcnRzOworCisvLyDilIDilIDilIAgMS4gRHVwbGljYXRlIGFycmF5LmxlbiDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIAKK3sKKyAgICBjb25zdCBhcnIgPSBhbGxvYygxMCk7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgY29uc3QgciA9IGR1
cExlbihhcnIpOworICAgICAgICBpZiAociAhPT0gMjApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGR1cExlbigxMCk6IGV4cGVjdGVkIDIwLCBnb3QgJHtyfWApOworICAgIH0KKworICAg
IGNvbnN0IGFycjIgPSBhbGxvYyg3KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykg
eworICAgICAgICBjb25zdCByID0gZHVwTGVuKGFycjIpOworICAgICAgICBpZiAociAhPT0gMTQp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGR1cExlbig3KTogZXhwZWN0ZWQgMTQsIGdv
dCAke3J9YCk7CisgICAgfQorfQorCisvLyDilIDilIDilIAgMi4gYXJyYXkubGVuIHN1cnZpdmVz
IGFycmF5LnNldCAoaW1tdXRhYmxlIGxlbmd0aCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACit7CisgICAgY29uc3QgYXJyID0g
YWxsb2MoOCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgY29u
c3QgciA9IGxlbkFmdGVyU2V0KGFyciwgaSAlIDEwMDApOworICAgICAgICBpZiAociAhPT0gMTYp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxlbkFmdGVyU2V0KDgpOiBleHBlY3RlZCAx
NiwgZ290ICR7cn1gKTsKKyAgICB9Cit9CisKKy8vIOKUgOKUgOKUgCAzLiBMb29wIHdpdGggYXJy
YXkubGVuIGFzIGJvdW5kICsgYXJyYXkuZ2V0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAor
eworICAgIGNvbnN0IFNJWkUgPSAxNjsKKyAgICBjb25zdCBhcnIgPSBhbGxvYyhTSVpFKTsKKyAg
ICAvLyBGaWxsOiBhcnJbaV0gPSBpICsgMQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgU0laRTsg
aSsrKQorICAgICAgICBzZXQoYXJyLCBpLCBpICsgMSk7CisgICAgY29uc3QgZXhwZWN0ZWQgPSBT
SVpFICogKFNJWkUgKyAxKSAvIDI7IC8vIHN1bSBvZiAxLi5TSVpFID0gMTM2CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IE47IGkrKykgeworICAgICAgICBjb25zdCByID0gbG9vcFN1bShhcnIp
OworICAgICAgICBpZiAociAhPT0gZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGxvb3BTdW0oMTYpOiBleHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7cn1gKTsKKyAgICB9
Cit9CisKKy8vIOKUgOKUgOKUgCA0LiBMb29wIHdpdGggYXJyYXkubGVuIGJvdW5kICsgYXJyYXku
c2V0ICsgYXJyYXkuZ2V0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgAoreworICAgIGNvbnN0IFNJWkUgPSA4OworICAgIGNvbnN0IGFyciA9
IGFsbG9jKFNJWkUpOworICAgIC8vIEZpbGw6IGFycltpXSA9IDAgKGFscmVhZHkgemVyb2VkIGJ5
IGFsbG9jKQorCisgICAgLy8gbG9vcEluYyBpbmNyZW1lbnRzIGVhY2ggZWxlbWVudCBieSAxIHRo
ZW4gc3Vtcy4KKyAgICAvLyBBZnRlciBjYWxsIGs6IGFycltpXSA9IGssIHN1bSA9IGsgKiBTSVpF
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgY29uc3QgciA9IGxv
b3BJbmMoYXJyKTsKKyAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSAoaSArIDEpICogU0laRTsKKyAg
ICAgICAgaWYgKHIgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBs
b29wSW5jIGl0ZXJhdGlvbiAke2l9OiBleHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7cn1gKTsK
KyAgICB9Cit9CisKKy8vIOKUgOKUgOKUgCA1LiBhcnJheS5sZW4gb24gZnJlc2hseS1hbGxvY2F0
ZWQgYXJyYXkgKGRlLXRyYXBwaW5nKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIAKK3sKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykg
eworICAgICAgICBjb25zdCBzeiA9IChpICUgMTAwKSArIDE7CisgICAgICAgIGNvbnN0IHIgPSBs
ZW5PZk5ldyhzeik7CisgICAgICAgIGlmIChyICE9PSBzeikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgbGVuT2ZOZXcoJHtzen0pOiBleHBlY3RlZCAke3N6fSwgZ290ICR7cn1gKTsKKyAg
ICB9Cit9CisKKy8vIOKUgOKUgOKUgCA2LiBhcnJheS5sZW4gb24gdHdvIGRpZmZlcmVudCBhcnJh
eXMg4oCUIG11c3QgTk9UIGJlIENTRSdkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgAoreworICAgIGNvbnN0IGEgPSBhbGxvYyg1KTsKKyAgICBjb25zdCBiID0g
YWxsb2MoMTEpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgIGNv
bnN0IHIgPSBsZW5Ud29BcnJheXMoYSwgYik7CisgICAgICAgIGlmIChyICE9PSAxNikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgbGVuVHdvQXJyYXlzKDUsIDExKTogZXhwZWN0ZWQgMTYs
IGdvdCAke3J9YCk7CisgICAgfQorCisgICAgLy8gU3dhcCBhcmd1bWVudHMgdG8gdmVyaWZ5IGlu
ZGVwZW5kZW5jZQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgIGNv
bnN0IHIgPSBsZW5Ud29BcnJheXMoYiwgYSk7CisgICAgICAgIGlmIChyICE9PSAxNikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgbGVuVHdvQXJyYXlzKDExLCA1KTogZXhwZWN0ZWQgMTYs
IGdvdCAke3J9YCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy93
YXNtLWFycmF5LW9tZy1hcnJheS1uZXcuanMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3dhc20tYXJy
YXktb21nLWFycmF5LW5ldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjQ3YWE4NmRlOTNlYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mv
d2FzbS1hcnJheS1vbWctYXJyYXktbmV3LmpzCkBAIC0wLDAgKzEsMzAyIEBACisvLyBUZXN0cyB0
aGF0IGFycmF5Lm5ldyBhbmQgYXJyYXkubmV3X2RlZmF1bHQgcHJvZHVjZSBjb3JyZWN0bHkgaW5p
dGlhbGl6ZWQKKy8vIGFycmF5cyB1bmRlciBPTUcgY29tcGlsYXRpb24uIEV4ZXJjaXNlcyB0aGUg
ZmlsbCBsb29wIGdlbmVyYXRlZCBpbgorLy8gQjNMb3dlck1hY3JvcyBmb3IgV2FzbUFycmF5TmV3
IHdpdGggaW5pdFZhbHVlLgorLy8KKy8vIEVhY2ggdGVzdCBmdW5jdGlvbiBpcyBjYWxsZWQgMTAw
IDAwMCB0aW1lcyAoT01HIHRocmVzaG9sZDogNTAgMDAwKS4KKworY29uc3QgTiA9IDEwMDAwMDsK
KworZnVuY3Rpb24gbWFrZUluc3RhbmNlKGJ5dGVzKSB7CisgICAgcmV0dXJuIG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKG5ldyBVaW50OEFycmF5KGJ5dGVz
KS5idWZmZXIpKTsKK30KKworLy8g4pSA4pSAIEhlbHBlcjogTEVCMTI4IGVuY29kZXJzIOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAorCitmdW5jdGlvbiB1bnNpZ25lZExFQjEyOChu
KSB7CisgICAgY29uc3QgcmVzdWx0ID0gW107CisgICAgZG8geworICAgICAgICBsZXQgYnl0ZSA9
IG4gJiAweDdmOworICAgICAgICBuID4+Pj0gNzsKKyAgICAgICAgaWYgKG4gIT09IDApIGJ5dGUg
fD0gMHg4MDsKKyAgICAgICAgcmVzdWx0LnB1c2goYnl0ZSk7CisgICAgfSB3aGlsZSAobiAhPT0g
MCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gc2lnbmVkTEVCMTI4KG4pIHsK
KyAgICBjb25zdCByZXN1bHQgPSBbXTsKKyAgICBsZXQgbW9yZSA9IHRydWU7CisgICAgd2hpbGUg
KG1vcmUpIHsKKyAgICAgICAgbGV0IGJ5dGUgPSBuICYgMHg3ZjsKKyAgICAgICAgbiA+Pj0gNzsK
KyAgICAgICAgaWYgKChuID09PSAwICYmIChieXRlICYgMHg0MCkgPT09IDApIHx8IChuID09PSAt
MSAmJiAoYnl0ZSAmIDB4NDApICE9PSAwKSkKKyAgICAgICAgICAgIG1vcmUgPSBmYWxzZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYnl0ZSB8PSAweDgwOworICAgICAgICByZXN1bHQucHVz
aChieXRlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZW5jb2Rl
U3RyaW5nKHMpIHsKKyAgICBjb25zdCBieXRlcyA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgcy5sZW5ndGg7IGkrKykKKyAgICAgICAgYnl0ZXMucHVzaChzLmNoYXJDb2RlQXQoaSkpOwor
ICAgIHJldHVybiBbLi4udW5zaWduZWRMRUIxMjgoYnl0ZXMubGVuZ3RoKSwgLi4uYnl0ZXNdOwor
fQorCitmdW5jdGlvbiBtYWtlU2VjdGlvbihpZCwgY29udGVudCkgeworICAgIHJldHVybiBbaWQs
IC4uLnVuc2lnbmVkTEVCMTI4KGNvbnRlbnQubGVuZ3RoKSwgLi4uY29udGVudF07Cit9CisKKy8v
IOKUgOKUgCBpMzIgYXJyYXkubmV3IHRlc3QgbW9kdWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgAorLy8gKG1vZHVsZQorLy8gICAodHlwZSAkYXJyIChhcnJheSAobXV0IGkzMikpKQorLy8g
ICA7OyBhcnJheS5uZXc6IGNyZWF0ZSBhcnJheSBvZiBgc2l6ZWAgZWxlbWVudHMgYWxsIHNldCB0
byBgdmFsYCwgcmV0dXJuIGFycltpZHhdCisvLyAgIChmdW5jIChleHBvcnQgIm5ld0dldCIpIChw
YXJhbSAkdmFsIGkzMikgKHBhcmFtICRzaXplIGkzMikgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0
IGkzMikKKy8vICAgICAoYXJyYXkuZ2V0IDAgKGFycmF5Lm5ldyAwIChsb2NhbC5nZXQgJHZhbCkg
KGxvY2FsLmdldCAkc2l6ZSkpIChsb2NhbC5nZXQgJGlkeCkpKQorLy8gICA7OyBhcnJheS5uZXdf
ZGVmYXVsdDogY3JlYXRlIGFycmF5LCByZXR1cm4gYXJyW2lkeF0gKHNob3VsZCBiZSAwKQorLy8g
ICAoZnVuYyAoZXhwb3J0ICJkZWZHZXQiKSAocGFyYW0gJHNpemUgaTMyKSAocGFyYW0gJGlkeCBp
MzIpIChyZXN1bHQgaTMyKQorLy8gICAgIChhcnJheS5nZXQgMCAoYXJyYXkubmV3X2RlZmF1bHQg
MCAobG9jYWwuZ2V0ICRzaXplKSkgKGxvY2FsLmdldCAkaWR4KSkpCisvLyApCitmdW5jdGlvbiBi
dWlsZEkzMk1vZHVsZSgpIHsKKyAgICAvLyBUeXBlIHNlY3Rpb246IDEgYXJyYXkgdHlwZSArIDIg
ZnVuYyB0eXBlcworICAgIGNvbnN0IHR5cGVTZWN0aW9uID0gbWFrZVNlY3Rpb24oMHgwMSwgWwor
ICAgICAgICAzLCAvLyAzIHR5cGVzCisgICAgICAgIC8vIHR5cGUgMDogKGFycmF5IChtdXQgaTMy
KSkKKyAgICAgICAgMHg1ZSwgMHg3ZiwgMHgwMSwKKyAgICAgICAgLy8gdHlwZSAxOiAoZnVuYyAo
cGFyYW0gaTMyIGkzMiBpMzIpIChyZXN1bHQgaTMyKSkKKyAgICAgICAgMHg2MCwgMywgMHg3Ziwg
MHg3ZiwgMHg3ZiwgMSwgMHg3ZiwKKyAgICAgICAgLy8gdHlwZSAyOiAoZnVuYyAocGFyYW0gaTMy
IGkzMikgKHJlc3VsdCBpMzIpKQorICAgICAgICAweDYwLCAyLCAweDdmLCAweDdmLCAxLCAweDdm
LAorICAgIF0pOworICAgIGNvbnN0IGZ1bmNTZWN0aW9uID0gbWFrZVNlY3Rpb24oMHgwMywgWzIs
IDEsIDJdKTsgLy8gMiBmdW5jcywgdHlwZSBpbmRpY2VzIDEsIDIKKyAgICBjb25zdCBleHBvcnRT
ZWN0aW9uID0gbWFrZVNlY3Rpb24oMHgwNywgWworICAgICAgICAyLCAvLyAyIGV4cG9ydHMKKyAg
ICAgICAgLi4uZW5jb2RlU3RyaW5nKCJuZXdHZXQiKSwgMHgwMCwgMHgwMCwKKyAgICAgICAgLi4u
ZW5jb2RlU3RyaW5nKCJkZWZHZXQiKSwgMHgwMCwgMHgwMSwKKyAgICBdKTsKKyAgICAvLyBDb2Rl
IHNlY3Rpb24KKyAgICBjb25zdCBmdW5jMEJvZHkgPSBbCisgICAgICAgIDAsIC8vIG5vIGxvY2Fs
cworICAgICAgICAweDIwLCAweDAwLCAvLyBsb2NhbC5nZXQgJHZhbAorICAgICAgICAweDIwLCAw
eDAxLCAvLyBsb2NhbC5nZXQgJHNpemUKKyAgICAgICAgMHhmYiwgMHgwNiwgMHgwMCwgLy8gYXJy
YXkubmV3IDAKKyAgICAgICAgMHgyMCwgMHgwMiwgLy8gbG9jYWwuZ2V0ICRpZHgKKyAgICAgICAg
MHhmYiwgMHgwYiwgMHgwMCwgLy8gYXJyYXkuZ2V0IDAKKyAgICAgICAgMHgwYiwKKyAgICBdOwor
ICAgIGNvbnN0IGZ1bmMxQm9keSA9IFsKKyAgICAgICAgMCwgLy8gbm8gbG9jYWxzCisgICAgICAg
IDB4MjAsIDB4MDAsIC8vIGxvY2FsLmdldCAkc2l6ZQorICAgICAgICAweGZiLCAweDA3LCAweDAw
LCAvLyBhcnJheS5uZXdfZGVmYXVsdCAwCisgICAgICAgIDB4MjAsIDB4MDEsIC8vIGxvY2FsLmdl
dCAkaWR4CisgICAgICAgIDB4ZmIsIDB4MGIsIDB4MDAsIC8vIGFycmF5LmdldCAwCisgICAgICAg
IDB4MGIsCisgICAgXTsKKyAgICBjb25zdCBjb2RlU2VjdGlvbiA9IG1ha2VTZWN0aW9uKDB4MGEs
IFsKKyAgICAgICAgMiwgLy8gMiBmdW5jdGlvbnMKKyAgICAgICAgLi4udW5zaWduZWRMRUIxMjgo
ZnVuYzBCb2R5Lmxlbmd0aCksIC4uLmZ1bmMwQm9keSwKKyAgICAgICAgLi4udW5zaWduZWRMRUIx
MjgoZnVuYzFCb2R5Lmxlbmd0aCksIC4uLmZ1bmMxQm9keSwKKyAgICBdKTsKKyAgICByZXR1cm4g
WzB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAg
IC4uLnR5cGVTZWN0aW9uLCAuLi5mdW5jU2VjdGlvbiwgLi4uZXhwb3J0U2VjdGlvbiwgLi4uY29k
ZVNlY3Rpb25dOworfQorCisvLyDilIDilIAgaTY0IGFycmF5Lm5ldyB0ZXN0IG1vZHVsZSDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIAKK2Z1bmN0aW9uIGJ1aWxkSTY0TW9kdWxlKCkgeworICAg
IGNvbnN0IHR5cGVTZWN0aW9uID0gbWFrZVNlY3Rpb24oMHgwMSwgWworICAgICAgICAzLAorICAg
ICAgICAvLyB0eXBlIDA6IChhcnJheSAobXV0IGk2NCkpCisgICAgICAgIDB4NWUsIDB4N2UsIDB4
MDEsCisgICAgICAgIC8vIHR5cGUgMTogKGZ1bmMgKHBhcmFtIGk2NCBpMzIgaTMyKSAocmVzdWx0
IGk2NCkpCisgICAgICAgIDB4NjAsIDMsIDB4N2UsIDB4N2YsIDB4N2YsIDEsIDB4N2UsCisgICAg
ICAgIC8vIHR5cGUgMjogKGZ1bmMgKHBhcmFtIGkzMiBpMzIpIChyZXN1bHQgaTY0KSkKKyAgICAg
ICAgMHg2MCwgMiwgMHg3ZiwgMHg3ZiwgMSwgMHg3ZSwKKyAgICBdKTsKKyAgICBjb25zdCBmdW5j
U2VjdGlvbiA9IG1ha2VTZWN0aW9uKDB4MDMsIFsyLCAxLCAyXSk7CisgICAgY29uc3QgZXhwb3J0
U2VjdGlvbiA9IG1ha2VTZWN0aW9uKDB4MDcsIFsKKyAgICAgICAgMiwKKyAgICAgICAgLi4uZW5j
b2RlU3RyaW5nKCJuZXdHZXQiKSwgMHgwMCwgMHgwMCwKKyAgICAgICAgLi4uZW5jb2RlU3RyaW5n
KCJkZWZHZXQiKSwgMHgwMCwgMHgwMSwKKyAgICBdKTsKKyAgICBjb25zdCBmdW5jMEJvZHkgPSBb
CisgICAgICAgIDAsCisgICAgICAgIDB4MjAsIDB4MDAsIC8vIGxvY2FsLmdldCAkdmFsIChpNjQp
CisgICAgICAgIDB4MjAsIDB4MDEsIC8vIGxvY2FsLmdldCAkc2l6ZSAoaTMyKQorICAgICAgICAw
eGZiLCAweDA2LCAweDAwLCAvLyBhcnJheS5uZXcgMAorICAgICAgICAweDIwLCAweDAyLCAvLyBs
b2NhbC5nZXQgJGlkeCAoaTMyKQorICAgICAgICAweGZiLCAweDBiLCAweDAwLCAvLyBhcnJheS5n
ZXQgMAorICAgICAgICAweDBiLAorICAgIF07CisgICAgY29uc3QgZnVuYzFCb2R5ID0gWworICAg
ICAgICAwLAorICAgICAgICAweDIwLCAweDAwLCAvLyBsb2NhbC5nZXQgJHNpemUKKyAgICAgICAg
MHhmYiwgMHgwNywgMHgwMCwgLy8gYXJyYXkubmV3X2RlZmF1bHQgMAorICAgICAgICAweDIwLCAw
eDAxLCAvLyBsb2NhbC5nZXQgJGlkeAorICAgICAgICAweGZiLCAweDBiLCAweDAwLCAvLyBhcnJh
eS5nZXQgMAorICAgICAgICAweDBiLAorICAgIF07CisgICAgY29uc3QgY29kZVNlY3Rpb24gPSBt
YWtlU2VjdGlvbigweDBhLCBbCisgICAgICAgIDIsCisgICAgICAgIC4uLnVuc2lnbmVkTEVCMTI4
KGZ1bmMwQm9keS5sZW5ndGgpLCAuLi5mdW5jMEJvZHksCisgICAgICAgIC4uLnVuc2lnbmVkTEVC
MTI4KGZ1bmMxQm9keS5sZW5ndGgpLCAuLi5mdW5jMUJvZHksCisgICAgXSk7CisgICAgcmV0dXJu
IFsweDAwLCAweDYxLCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLAorICAgICAg
ICAuLi50eXBlU2VjdGlvbiwgLi4uZnVuY1NlY3Rpb24sIC4uLmV4cG9ydFNlY3Rpb24sIC4uLmNv
ZGVTZWN0aW9uXTsKK30KKworLy8g4pSA4pSAIGYzMiBhcnJheS5uZXcgdGVzdCBtb2R1bGUg4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACitmdW5jdGlvbiBidWlsZEYzMk1vZHVsZSgpIHsKKyAg
ICBjb25zdCB0eXBlU2VjdGlvbiA9IG1ha2VTZWN0aW9uKDB4MDEsIFsKKyAgICAgICAgMywKKyAg
ICAgICAgLy8gdHlwZSAwOiAoYXJyYXkgKG11dCBmMzIpKQorICAgICAgICAweDVlLCAweDdkLCAw
eDAxLAorICAgICAgICAvLyB0eXBlIDE6IChmdW5jIChwYXJhbSBmMzIgaTMyIGkzMikgKHJlc3Vs
dCBmMzIpKQorICAgICAgICAweDYwLCAzLCAweDdkLCAweDdmLCAweDdmLCAxLCAweDdkLAorICAg
ICAgICAvLyB0eXBlIDI6IChmdW5jIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0IGYzMikpCisgICAg
ICAgIDB4NjAsIDIsIDB4N2YsIDB4N2YsIDEsIDB4N2QsCisgICAgXSk7CisgICAgY29uc3QgZnVu
Y1NlY3Rpb24gPSBtYWtlU2VjdGlvbigweDAzLCBbMiwgMSwgMl0pOworICAgIGNvbnN0IGV4cG9y
dFNlY3Rpb24gPSBtYWtlU2VjdGlvbigweDA3LCBbCisgICAgICAgIDIsCisgICAgICAgIC4uLmVu
Y29kZVN0cmluZygibmV3R2V0IiksIDB4MDAsIDB4MDAsCisgICAgICAgIC4uLmVuY29kZVN0cmlu
ZygiZGVmR2V0IiksIDB4MDAsIDB4MDEsCisgICAgXSk7CisgICAgY29uc3QgZnVuYzBCb2R5ID0g
WworICAgICAgICAwLAorICAgICAgICAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDA2
LCAweDAwLAorICAgICAgICAweDIwLCAweDAyLCAweGZiLCAweDBiLCAweDAwLCAweDBiLAorICAg
IF07CisgICAgY29uc3QgZnVuYzFCb2R5ID0gWworICAgICAgICAwLAorICAgICAgICAweDIwLCAw
eDAwLCAweGZiLCAweDA3LCAweDAwLAorICAgICAgICAweDIwLCAweDAxLCAweGZiLCAweDBiLCAw
eDAwLCAweDBiLAorICAgIF07CisgICAgY29uc3QgY29kZVNlY3Rpb24gPSBtYWtlU2VjdGlvbigw
eDBhLCBbCisgICAgICAgIDIsCisgICAgICAgIC4uLnVuc2lnbmVkTEVCMTI4KGZ1bmMwQm9keS5s
ZW5ndGgpLCAuLi5mdW5jMEJvZHksCisgICAgICAgIC4uLnVuc2lnbmVkTEVCMTI4KGZ1bmMxQm9k
eS5sZW5ndGgpLCAuLi5mdW5jMUJvZHksCisgICAgXSk7CisgICAgcmV0dXJuIFsweDAwLCAweDYx
LCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAuLi50eXBlU2Vj
dGlvbiwgLi4uZnVuY1NlY3Rpb24sIC4uLmV4cG9ydFNlY3Rpb24sIC4uLmNvZGVTZWN0aW9uXTsK
K30KKworLy8g4pSA4pSAIGY2NCBhcnJheS5uZXcgdGVzdCBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSACitmdW5jdGlvbiBidWlsZEY2NE1vZHVsZSgpIHsKKyAgICBjb25zdCB0eXBl
U2VjdGlvbiA9IG1ha2VTZWN0aW9uKDB4MDEsIFsKKyAgICAgICAgMywKKyAgICAgICAgLy8gdHlw
ZSAwOiAoYXJyYXkgKG11dCBmNjQpKQorICAgICAgICAweDVlLCAweDdjLCAweDAxLAorICAgICAg
ICAvLyB0eXBlIDE6IChmdW5jIChwYXJhbSBmNjQgaTMyIGkzMikgKHJlc3VsdCBmNjQpKQorICAg
ICAgICAweDYwLCAzLCAweDdjLCAweDdmLCAweDdmLCAxLCAweDdjLAorICAgICAgICAvLyB0eXBl
IDI6IChmdW5jIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0IGY2NCkpCisgICAgICAgIDB4NjAsIDIs
IDB4N2YsIDB4N2YsIDEsIDB4N2MsCisgICAgXSk7CisgICAgY29uc3QgZnVuY1NlY3Rpb24gPSBt
YWtlU2VjdGlvbigweDAzLCBbMiwgMSwgMl0pOworICAgIGNvbnN0IGV4cG9ydFNlY3Rpb24gPSBt
YWtlU2VjdGlvbigweDA3LCBbCisgICAgICAgIDIsCisgICAgICAgIC4uLmVuY29kZVN0cmluZygi
bmV3R2V0IiksIDB4MDAsIDB4MDAsCisgICAgICAgIC4uLmVuY29kZVN0cmluZygiZGVmR2V0Iiks
IDB4MDAsIDB4MDEsCisgICAgXSk7CisgICAgY29uc3QgZnVuYzBCb2R5ID0gWworICAgICAgICAw
LAorICAgICAgICAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDA2LCAweDAwLAorICAg
ICAgICAweDIwLCAweDAyLCAweGZiLCAweDBiLCAweDAwLCAweDBiLAorICAgIF07CisgICAgY29u
c3QgZnVuYzFCb2R5ID0gWworICAgICAgICAwLAorICAgICAgICAweDIwLCAweDAwLCAweGZiLCAw
eDA3LCAweDAwLAorICAgICAgICAweDIwLCAweDAxLCAweGZiLCAweDBiLCAweDAwLCAweDBiLAor
ICAgIF07CisgICAgY29uc3QgY29kZVNlY3Rpb24gPSBtYWtlU2VjdGlvbigweDBhLCBbCisgICAg
ICAgIDIsCisgICAgICAgIC4uLnVuc2lnbmVkTEVCMTI4KGZ1bmMwQm9keS5sZW5ndGgpLCAuLi5m
dW5jMEJvZHksCisgICAgICAgIC4uLnVuc2lnbmVkTEVCMTI4KGZ1bmMxQm9keS5sZW5ndGgpLCAu
Li5mdW5jMUJvZHksCisgICAgXSk7CisgICAgcmV0dXJuIFsweDAwLCAweDYxLCAweDczLCAweDZk
LCAweDAxLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAuLi50eXBlU2VjdGlvbiwgLi4uZnVu
Y1NlY3Rpb24sIC4uLmV4cG9ydFNlY3Rpb24sIC4uLmNvZGVTZWN0aW9uXTsKK30KKworLy8g4pSA
4pSAIFRlc3QgMTogaTMyIGFycmF5Lm5ldyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIAKK3sKKyAgICBjb25zdCB7IG5ld0dldCwgZGVmR2V0IH0gPSBtYWtlSW5zdGFuY2Uo
YnVpbGRJMzJNb2R1bGUoKSkuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkr
KykgeworICAgICAgICBjb25zdCByID0gbmV3R2V0KDQyLCA0LCAwKTsKKyAgICAgICAgaWYgKHIg
IT09IDQyKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpMzIgbmV3R2V0KDQyLDQsMCk6
IGV4cGVjdGVkIDQyLCBnb3QgJHtyfWApOworICAgIH0KKyAgICAvLyBDaGVjayB2YXJpb3VzIGlu
ZGljZXMKKyAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCA0OyBpZHgrKykgeworICAgICAgICBj
b25zdCByID0gbmV3R2V0KDk5LCA0LCBpZHgpOworICAgICAgICBpZiAociAhPT0gOTkpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGkzMiBuZXdHZXQoOTksNCwke2lkeH0pOiBleHBlY3Rl
ZCA5OSwgZ290ICR7cn1gKTsKKyAgICB9CisgICAgLy8gTGFyZ2VyIHNpemUKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IE47IGkrKykgeworICAgICAgICBjb25zdCByID0gbmV3R2V0KDcsIDEwMDAw
LCA5OTk5KTsKKyAgICAgICAgaWYgKHIgIT09IDcpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGkzMiBuZXdHZXQoNywxMDAwMCw5OTk5KTogZXhwZWN0ZWQgNywgZ290ICR7cn1gKTsKKyAg
ICB9CisgICAgLy8gYXJyYXkubmV3X2RlZmF1bHQKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47
IGkrKykgeworICAgICAgICBjb25zdCByID0gZGVmR2V0KDEwMCwgNTApOworICAgICAgICBpZiAo
ciAhPT0gMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaTMyIGRlZkdldCgxMDAsNTAp
OiBleHBlY3RlZCAwLCBnb3QgJHtyfWApOworICAgIH0KK30KKworLy8g4pSA4pSAIFRlc3QgMjog
aTY0IGFycmF5Lm5ldyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKK3sK
KyAgICBjb25zdCB7IG5ld0dldCwgZGVmR2V0IH0gPSBtYWtlSW5zdGFuY2UoYnVpbGRJNjRNb2R1
bGUoKSkuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykgeworICAgICAg
ICBjb25zdCByID0gbmV3R2V0KDEyM24sIDQsIDApOworICAgICAgICBpZiAociAhPT0gMTIzbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaTY0IG5ld0dldCgxMjNuLDQsMCk6IGV4cGVj
dGVkIDEyM24sIGdvdCAke3J9YCk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsg
aSsrKSB7CisgICAgICAgIGNvbnN0IHIgPSBuZXdHZXQoMHgxXzAwMDBfMDAwMG4sIDEwMCwgOTkp
OworICAgICAgICBpZiAociAhPT0gMHgxXzAwMDBfMDAwMG4pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGk2NCBuZXdHZXQgbGFyZ2U6IGV4cGVjdGVkIDB4MTAwMDAwMDAwbiwgZ290ICR7
cn1gKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAg
Y29uc3QgciA9IGRlZkdldCgxMDAsIDUwKTsKKyAgICAgICAgaWYgKHIgIT09IDBuKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBpNjQgZGVmR2V0KDEwMCw1MCk6IGV4cGVjdGVkIDBuLCBn
b3QgJHtyfWApOworICAgIH0KK30KKworLy8g4pSA4pSAIFRlc3QgMzogZjMyIGFycmF5Lm5ldyDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKK3sKKyAgICBjb25zdCB7IG5l
d0dldCwgZGVmR2V0IH0gPSBtYWtlSW5zdGFuY2UoYnVpbGRGMzJNb2R1bGUoKSkuZXhwb3J0czsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykgeworICAgICAgICBjb25zdCByID0gbmV3
R2V0KDMuMTQsIDQsIDApOworICAgICAgICBpZiAoTWF0aC5hYnMociAtIDMuMTQpID4gMC4wMDEp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGYzMiBuZXdHZXQoMy4xNCw0LDApOiBleHBl
Y3RlZCB+My4xNCwgZ290ICR7cn1gKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBO
OyBpKyspIHsKKyAgICAgICAgY29uc3QgciA9IGRlZkdldCgxMDAsIDUwKTsKKyAgICAgICAgaWYg
KHIgIT09IDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGYzMiBkZWZHZXQoMTAwLDUw
KTogZXhwZWN0ZWQgMCwgZ290ICR7cn1gKTsKKyAgICB9Cit9CisKKy8vIOKUgOKUgCBUZXN0IDQ6
IGY2NCBhcnJheS5uZXcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACit7
CisgICAgY29uc3QgeyBuZXdHZXQsIGRlZkdldCB9ID0gbWFrZUluc3RhbmNlKGJ1aWxkRjY0TW9k
dWxlKCkpLmV4cG9ydHM7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAg
ICAgY29uc3QgciA9IG5ld0dldCgyLjcxODI4MTgyOCwgNCwgMCk7CisgICAgICAgIGlmIChNYXRo
LmFicyhyIC0gMi43MTgyODE4MjgpID4gMWUtOSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihgZjY0IG5ld0dldCgyLjcxODI4MTgyOCw0LDApOiBleHBlY3RlZCB+Mi43MTgsIGdvdCAke3J9
YCk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgIGNv
bnN0IHIgPSBuZXdHZXQoMS41LCAxMDAwMCwgOTk5OSk7CisgICAgICAgIGlmIChyICE9PSAxLjUp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGY2NCBuZXdHZXQoMS41LDEwMDAwLDk5OTkp
OiBleHBlY3RlZCAxLjUsIGdvdCAke3J9YCk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgTjsgaSsrKSB7CisgICAgICAgIGNvbnN0IHIgPSBkZWZHZXQoMTAwLCA1MCk7CisgICAgICAg
IGlmIChyICE9PSAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBmNjQgZGVmR2V0KDEw
MCw1MCk6IGV4cGVjdGVkIDAsIGdvdCAke3J9YCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL3N0cmVzcy93YXNtLWFycmF5LW9tZy1jc2UuanMgYi9KU1Rlc3RzL3dhc20vc3Ry
ZXNzL3dhc20tYXJyYXktb21nLWNzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjQwOWNmMDdmYmNlMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9z
dHJlc3Mvd2FzbS1hcnJheS1vbWctY3NlLmpzCkBAIC0wLDAgKzEsMTcxIEBACisvLyBUZXN0cyBD
U0UgKENvbW1vbiBTdWJleHByZXNzaW9uIEVsaW1pbmF0aW9uKSBmb3IgV2FzbUFycmF5R2V0IC8g
V2FzbUFycmF5U2V0CisvLyBCMyBub2RlcyB1bmRlciBPTUcgY29tcGlsYXRpb24uICBFeGVyY2lz
ZXM6CisvLyAgIDEuIER1cGxpY2F0ZSBnZXQgYXQgY29uc3RhbnQgaW5kZXggKHJlZHVuZGFudCBs
b2FkKQorLy8gICAyLiBEdXBsaWNhdGUgZ2V0IGF0IGR5bmFtaWMgaW5kZXgKKy8vICAgMy4gRGVh
ZCBzdG9yZSBlbGltaW5hdGlvbiAoc2Vjb25kIHNldCBzdXBlcnNlZGVzIGZpcnN0KQorLy8gICA0
LiBTdG9yZS10by1sb2FkIGZvcndhcmRpbmcgKHNldCB0aGVuIGdldCBhdCBzYW1lIHNsb3QpCisv
LyAgIDUuIEltbXV0YWJsZSBhcnJheSBDU0UgKGxvYWQgc3Vydml2ZXMgYWxsIGNsb2JiZXJpbmcp
CisvLyAgIDYuIFBhY2tlZCBpOCBzdG9yZS10by1sb2FkIGZvcndhcmRpbmcgd2l0aCB6ZXJvL3Np
Z24gbWFza2luZworLy8KKy8vIEFwcHJvYWNoOiBhbGxvY2F0ZSBhcnJheXMgb25jZSwgdGhlbiBj
YWxsIHRoZSB3YXNtIGZ1bmN0aW9ucyBOPTEwMCAwMDAgdGltZXMKKy8vIChlbm91Z2ggdG8gcmVh
Y2ggdGhlIE9NRyB0aWVyLCBkZWZhdWx0IHRocmVzaG9sZDogNTAgMDAwKS4KKworY29uc3QgTiA9
IDEwMDAwMDsKKworZnVuY3Rpb24gbWFrZUluc3RhbmNlKGJ5dGVzKSB7CisgICAgcmV0dXJuIG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKG5ldyBVaW50OEFy
cmF5KGJ5dGVzKS5idWZmZXIpKTsKK30KKworLy8g4pSA4pSAIENTRSBtdXRhYmxlIGkzMiBhcnJh
eSBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACisvLyBBbGwgZnVuY3Rpb25zIHRha2UgYSAo
cmVmIG51bGwgJGFycikgYXMgZmlyc3QgcGFyYW0uCisvLyAgIGR1cEdldENvbnN0KGFyciwgdmFs
KSAgICAgIOKAkyBzZXRbMl09dmFsLCBnZXRbMl0rZ2V0WzJdICDihpIgdmFsKjIKKy8vICAgZHVw
R2V0RHluKGFyciwgaWR4LCB2YWwpICAg4oCTIHNldFtpZHhdPXZhbCwgZ2V0W2lkeF0rZ2V0W2lk
eF0gIOKGkiB2YWwqMgorLy8gICBkZWFkU3RvcmUoYXJyLCB2YWwpICAgICAgICDigJMgc2V0WzBd
PTk5OSwgc2V0WzBdPXZhbCwgZ2V0WzBdICDihpIgdmFsCisvLyAgIHN0b3JlTG9hZEZ3ZChhcnIs
IHZhbCkgICAgIOKAkyBzZXRbM109dmFsLCBnZXRbM10gIOKGkiB2YWwKKy8vICAgYWxsb2Moc2l6
ZSkgICAgICAgICAgICAgICAg4oCTIGFycmF5Lm5ldyB6ZXJvZWQKKy8qCisobW9kdWxlCisgICh0
eXBlICRhcnIgKGFycmF5IChtdXQgaTMyKSkpCisgIChmdW5jIChleHBvcnQgImR1cEdldENvbnN0
IikgKHBhcmFtICRhIChyZWYgbnVsbCAkYXJyKSkgKHBhcmFtICR2YWwgaTMyKSAocmVzdWx0IGkz
MikKKyAgICAoYXJyYXkuc2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGkzMi5jb25zdCAyKSAobG9j
YWwuZ2V0ICR2YWwpKQorICAgIChpMzIuYWRkIChhcnJheS5nZXQgJGFyciAobG9jYWwuZ2V0ICRh
KSAoaTMyLmNvbnN0IDIpKSAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGkzMi5jb25z
dCAyKSkpKQorICAoZnVuYyAoZXhwb3J0ICJkdXBHZXREeW4iKSAocGFyYW0gJGEgKHJlZiBudWxs
ICRhcnIpKSAocGFyYW0gJGlkeCBpMzIpIChwYXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisg
ICAgKGFycmF5LnNldCAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkgKGxvY2Fs
LmdldCAkdmFsKSkKKyAgICAoaTMyLmFkZCAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAkYSkg
KGxvY2FsLmdldCAkaWR4KSkgKGFycmF5LmdldCAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2NhbC5n
ZXQgJGlkeCkpKSkKKyAgKGZ1bmMgKGV4cG9ydCAiZGVhZFN0b3JlIikgKHBhcmFtICRhIChyZWYg
bnVsbCAkYXJyKSkgKHBhcmFtICR2YWwgaTMyKSAocmVzdWx0IGkzMikKKyAgICAoYXJyYXkuc2V0
ICRhcnIgKGxvY2FsLmdldCAkYSkgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDk5OSkpCisgICAg
KGFycmF5LnNldCAkYXJyIChsb2NhbC5nZXQgJGEpIChpMzIuY29uc3QgMCkgKGxvY2FsLmdldCAk
dmFsKSkKKyAgICAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGkzMi5jb25zdCAwKSkp
CisgIChmdW5jIChleHBvcnQgInN0b3JlTG9hZEZ3ZCIpIChwYXJhbSAkYSAocmVmIG51bGwgJGFy
cikpIChwYXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgKGFycmF5LnNldCAkYXJyIChs
b2NhbC5nZXQgJGEpIChpMzIuY29uc3QgMykgKGxvY2FsLmdldCAkdmFsKSkKKyAgICAoYXJyYXku
Z2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGkzMi5jb25zdCAzKSkpCisgIChmdW5jIChleHBvcnQg
ImFsbG9jIikgKHBhcmFtICRzaXplIGkzMikgKHJlc3VsdCAocmVmIG51bGwgJGFycikpCisgICAg
KGFycmF5Lm5ldyAkYXJyIChpMzIuY29uc3QgMCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorKQorKi8K
K2NvbnN0IENTRSA9IFsweDAwLCAweDYxLCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAw
eDAwLCAweDAxLCAweDk5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDA0LCAweDVlLCAweDdm
LCAweDAxLCAweDYwLCAweDAyLCAweDYzLCAweDAwLCAweDdmLCAweDAxLCAweDdmLCAweDYwLCAw
eDAzLCAweDYzLCAweDAwLCAweDdmLCAweDdmLCAweDAxLCAweDdmLCAweDYwLCAweDAxLCAweDdm
LCAweDAxLCAweDYzLCAweDAwLCAweDAzLCAweDg2LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDA1LCAweDAxLCAweDAyLCAweDAxLCAweDAxLCAweDAzLCAweDA3LCAweGJlLCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDA1LCAweDBiLCAweDY0LCAweDc1LCAweDcwLCAweDQ3LCAweDY1LCAw
eDc0LCAweDQzLCAweDZmLCAweDZlLCAweDczLCAweDc0LCAweDAwLCAweDAwLCAweDA5LCAweDY0
LCAweDc1LCAweDcwLCAweDQ3LCAweDY1LCAweDc0LCAweDQ0LCAweDc5LCAweDZlLCAweDAwLCAw
eDAxLCAweDA5LCAweDY0LCAweDY1LCAweDYxLCAweDY0LCAweDUzLCAweDc0LCAweDZmLCAweDcy
LCAweDY1LCAweDAwLCAweDAyLCAweDBjLCAweDczLCAweDc0LCAweDZmLCAweDcyLCAweDY1LCAw
eDRjLCAweDZmLCAweDYxLCAweDY0LCAweDQ2LCAweDc3LCAweDY0LCAweDAwLCAweDAzLCAweDA1
LCAweDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAweDAwLCAweDA0LCAweDBhLCAweDg1LCAw
eDgxLCAweDgwLCAweDgwLCAweDAwLCAweDA1LCAweDlhLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAwLCAweDIwLCAweDAwLCAweDQxLCAweDAyLCAweDIwLCAweDAxLCAweGZiLCAweDBlLCAw
eDAwLCAweDIwLCAweDAwLCAweDQxLCAweDAyLCAweGZiLCAweDBiLCAweDAwLCAweDIwLCAweDAw
LCAweDQxLCAweDAyLCAweGZiLCAweDBiLCAweDAwLCAweDZhLCAweDBiLCAweDlhLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweDIwLCAweDAy
LCAweGZiLCAweDBlLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBiLCAw
eDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBiLCAweDAwLCAweDZhLCAweDBi
LCAweDljLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDQxLCAw
eDAwLCAweDQxLCAweGU3LCAweDA3LCAweGZiLCAweDBlLCAweDAwLCAweDIwLCAweDAwLCAweDQx
LCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBlLCAweDAwLCAweDIwLCAweDAwLCAweDQxLCAw
eDAwLCAweGZiLCAweDBiLCAweDAwLCAweDBiLCAweDkyLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAwLCAweDIwLCAweDAwLCAweDQxLCAweDAzLCAweDIwLCAweDAxLCAweGZiLCAweDBlLCAw
eDAwLCAweDIwLCAweDAwLCAweDQxLCAweDAzLCAweGZiLCAweDBiLCAweDAwLCAweDBiLCAweDg5
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDQxLCAweDAwLCAweDIwLCAweDAwLCAw
eGZiLCAweDA2LCAweDAwLCAweDBiXTsKKworLy8g4pSA4pSAIEltbXV0YWJsZSBpMzIgYXJyYXkg
bW9kdWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAorLy8gYWRkQXQoYXJyLCBpZHgp
ID0gZWxlbWVudCAqIGVsZW1lbnQgICh0d28gaWRlbnRpY2FsIGdldHM7IENTRSBlbGltaW5hdGVz
IG9uZSkKKy8vIGFsbG9jKHNpemUsIHZhbCkgPSAocmVmIG51bGwgJGFycikKKy8qCisobW9kdWxl
CisgICh0eXBlICRhcnIgKGFycmF5IGkzMikpCisgIChmdW5jIChleHBvcnQgImFkZEF0IikgKHBh
cmFtICRhIChyZWYgbnVsbCAkYXJyKSkgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0IGkzMikKKyAg
ICAoaTMyLm11bCAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaWR4
KSkKKyAgICAgICAgICAgICAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdl
dCAkaWR4KSkpKQorICAoZnVuYyAoZXhwb3J0ICJhbGxvYyIpIChwYXJhbSAkc2l6ZSBpMzIpIChw
YXJhbSAkdmFsIGkzMikgKHJlc3VsdCAocmVmIG51bGwgJGFycikpCisgICAgKGFycmF5Lm5ldyAk
YXJyIChsb2NhbC5nZXQgJHZhbCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorKQorKi8KK2NvbnN0IElN
TSA9IFsweDAwLCAweDYxLCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDkyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAzLCAweDVlLCAweDdmLCAweDAwLCAw
eDYwLCAweDAyLCAweDYzLCAweDAwLCAweDdmLCAweDAxLCAweDdmLCAweDYwLCAweDAyLCAweDdm
LCAweDdmLCAweDAxLCAweDYzLCAweDAwLCAweDAzLCAweDgzLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAyLCAweDAxLCAweDAyLCAweDA3LCAweDkxLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAyLCAweDA1LCAweDYxLCAweDY0LCAweDY0LCAweDQxLCAweDc0LCAweDAwLCAweDAwLCAw
eDA1LCAweDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAweDAwLCAweDAxLCAweDBhLCAweGE1
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAyLCAweDkxLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBiLCAweDAwLCAweDIw
LCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBiLCAweDAwLCAweDZjLCAweDBiLCAweDg5LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAxLCAweDIwLCAweDAwLCAweGZi
LCAweDA2LCAweDAwLCAweDBiXTsKKworLy8g4pSA4pSAIGk4IHBhY2tlZCBDU0U6IHNldCB0aGVu
IGdldF91IC8gZ2V0X3MgKHN0b3JlLXRvLWxvYWQgZm9yd2FyZGluZyArIG1hc2spIOKUgOKUgAor
Ly8gZndkVShhcnIsIGlkeCwgdmFsKSA9IHNldCB0aGVuIGdldF91ICDihpIgdmFsICYgMHhmZgor
Ly8gZndkUyhhcnIsIGlkeCwgdmFsKSA9IHNldCB0aGVuIGdldF9zICDihpIgc2lnbi1leHRlbmQo
dmFsICYgMHhmZikKKy8vIGFsbG9jKHNpemUpIOKGkiB6ZXJvZWQgKHJlZiBudWxsICRhcnIpCisv
KgorKG1vZHVsZQorICAodHlwZSAkYXJyIChhcnJheSAobXV0IGk4KSkpCisgIChmdW5jIChleHBv
cnQgImZ3ZFUiKSAocGFyYW0gJGEgKHJlZiBudWxsICRhcnIpKSAocGFyYW0gJGlkeCBpMzIpIChw
YXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgKGFycmF5LnNldCAkYXJyIChsb2NhbC5n
ZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkgKGxvY2FsLmdldCAkdmFsKSkKKyAgICAoYXJyYXkuZ2V0
X3UgJGFyciAobG9jYWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpKSkKKyAgKGZ1bmMgKGV4cG9y
dCAiZndkUyIpIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHBh
cmFtICR2YWwgaTMyKSAocmVzdWx0IGkzMikKKyAgICAoYXJyYXkuc2V0ICRhcnIgKGxvY2FsLmdl
dCAkYSkgKGxvY2FsLmdldCAkaWR4KSAobG9jYWwuZ2V0ICR2YWwpKQorICAgIChhcnJheS5nZXRf
cyAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkpKQorICAoZnVuYyAoZXhwb3J0
ICJhbGxvYyIpIChwYXJhbSAkc2l6ZSBpMzIpIChyZXN1bHQgKHJlZiBudWxsICRhcnIpKQorICAg
IChhcnJheS5uZXcgJGFyciAoaTMyLmNvbnN0IDApIChsb2NhbC5nZXQgJHNpemUpKSkKKykKKyov
Citjb25zdCBJOCA9IFsweDAwLCAweDYxLCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAw
eDAwLCAweDAxLCAweDkyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAzLCAweDVlLCAweDc4
LCAweDAxLCAweDYwLCAweDAzLCAweDYzLCAweDAwLCAweDdmLCAweDdmLCAweDAxLCAweDdmLCAw
eDYwLCAweDAxLCAweDdmLCAweDAxLCAweDYzLCAweDAwLCAweDAzLCAweDg0LCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAzLCAweDAxLCAweDAxLCAweDAyLCAweDA3LCAweDk3LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAzLCAweDA0LCAweDY2LCAweDc3LCAweDY0LCAweDU1LCAweDAw
LCAweDAwLCAweDA0LCAweDY2LCAweDc3LCAweDY0LCAweDUzLCAweDAwLCAweDAxLCAweDA1LCAw
eDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAweDAwLCAweDAyLCAweDBhLCAweGJkLCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAzLCAweDkyLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweDIwLCAweDAyLCAweGZiLCAweDBlLCAweDAw
LCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBkLCAweDAwLCAweDBiLCAweDkyLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweDIw
LCAweDAyLCAweGZiLCAweDBlLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAw
eDBjLCAweDAwLCAweDBiLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDQx
LCAweDAwLCAweDIwLCAweDAwLCAweGZiLCAweDA2LCAweDAwLCAweDBiXTsKKworLy8g4pSA4pSA
4pSAIDHigJM0LiBNdXRhYmxlIGkzMiBDU0Ug4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSACit7CisgICAgY29uc3QgeyBkdXBHZXRDb25zdCwgZHVwR2V0RHluLCBk
ZWFkU3RvcmUsIHN0b3JlTG9hZEZ3ZCwgYWxsb2MgfSA9IG1ha2VJbnN0YW5jZShDU0UpLmV4cG9y
dHM7CisgICAgY29uc3QgYXJyID0gYWxsb2MoMTYpOworCisgICAgLy8gMS4gVHdvIGlkZW50aWNh
bCBjb25zdGFudC1pbmRleCBnZXRzOiByZXN1bHQgPSB2YWwgKyB2YWwKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IE47IGkrKykgeworICAgICAgICBjb25zdCB2ID0gaSAlIDUwMDA7CisgICAgICAg
IGNvbnN0IHIgPSBkdXBHZXRDb25zdChhcnIsIHYpOworICAgICAgICBpZiAociAhPT0gdiAqIDIp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGR1cEdldENvbnN0KCR7dn0pOiBleHBlY3Rl
ZCAke3YgKiAyfSwgZ290ICR7cn1gKTsKKyAgICB9CisKKyAgICAvLyAyLiBUd28gaWRlbnRpY2Fs
IGR5bmFtaWMtaW5kZXggZ2V0czogcmVzdWx0ID0gdmFsICsgdmFsCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgY29uc3QgaWR4ID0gaSAlIDE2OworICAgICAgICBj
b25zdCB2ID0gaSAlIDUwMDA7CisgICAgICAgIGNvbnN0IHIgPSBkdXBHZXREeW4oYXJyLCBpZHgs
IHYpOworICAgICAgICBpZiAociAhPT0gdiAqIDIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGR1cEdldER5bihpZHg9JHtpZHh9LCB2YWw9JHt2fSk6IGV4cGVjdGVkICR7diAqIDJ9LCBn
b3QgJHtyfWApOworICAgIH0KKworICAgIC8vIDMuIERlYWQgc3RvcmU6IGZpcnN0IHdyaXRlICg5
OTkpIGlzIGNsb2JiZXJlZCwgc2Vjb25kICh2YWwpIHdpbnMKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IE47IGkrKykgeworICAgICAgICBjb25zdCB2ID0gaSAlIDUwMDA7CisgICAgICAgIGNvbnN0
IHIgPSBkZWFkU3RvcmUoYXJyLCB2KTsKKyAgICAgICAgaWYgKHIgIT09IHYpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGRlYWRTdG9yZSgke3Z9KTogZXhwZWN0ZWQgJHt2fSwgZ290ICR7
cn1gKTsKKyAgICB9CisKKyAgICAvLyA0LiBTdG9yZS10by1sb2FkIGZvcndhcmRpbmc6IGdldCBt
dXN0IHJldHVybiB0aGUganVzdC1zdG9yZWQgdmFsdWUKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IE47IGkrKykgeworICAgICAgICBjb25zdCB2ID0gaSAlIDUwMDA7CisgICAgICAgIGNvbnN0IHIg
PSBzdG9yZUxvYWRGd2QoYXJyLCB2KTsKKyAgICAgICAgaWYgKHIgIT09IHYpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYHN0b3JlTG9hZEZ3ZCgke3Z9KTogZXhwZWN0ZWQgJHt2fSwgZ290
ICR7cn1gKTsKKyAgICB9Cit9CisKKy8vIOKUgOKUgOKUgCA1LiBJbW11dGFibGUgYXJyYXkgQ1NF
IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAoreworICAgIGNvbnN0IHsg
YWRkQXQsIGFsbG9jIH0gPSBtYWtlSW5zdGFuY2UoSU1NKS5leHBvcnRzOworCisgICAgLy8gQWxs
IGVsZW1lbnRzID0gNzogYWRkQXQgPSA3ICogNyA9IDQ5IChDU0UgY2FuIHJldXNlIHRoZSBzaW5n
bGUgbG9hZCkKKyAgICBjb25zdCBhcnIgPSBhbGxvYygxNiwgNyk7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgY29uc3QgciA9IGFkZEF0KGFyciwgaSAlIDE2KTsK
KyAgICAgICAgaWYgKHIgIT09IDQ5KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbW11
dCBhZGRBdCg3KTogZXhwZWN0ZWQgNDksIGdvdCAke3J9YCk7CisgICAgfQorCisgICAgLy8gU3dl
ZXAgc2V2ZXJhbCBlbGVtZW50IHZhbHVlcworICAgIGNvbnN0IHZhbHMgPSBbMCwgMSwgNSwgMTAw
LCAxMDAwXTsKKyAgICBmb3IgKGNvbnN0IHYgb2YgdmFscykgeworICAgICAgICBjb25zdCBhID0g
YWxsb2MoMTYsIHYpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE4gLyB2YWxzLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICBjb25zdCByID0gYWRkQXQoYSwgaSAlIDE2KTsKKyAgICAg
ICAgICAgIGlmIChyICE9PSB2ICogdikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGltbXV0IGFkZEF0KCR7dn0pOiBleHBlY3RlZCAke3YgKiB2fSwgZ290ICR7cn1gKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworLy8g4pSA4pSA4pSAIDYuIGk4IHN0b3JlLXRvLWxvYWQgZm9yd2Fy
ZGluZyB3aXRoIG1hc2tpbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACit7CisgICAg
Y29uc3QgeyBmd2RVLCBmd2RTLCBhbGxvYyB9ID0gbWFrZUluc3RhbmNlKEk4KS5leHBvcnRzOwor
ICAgIGNvbnN0IGFyciA9IGFsbG9jKDE2KTsKKworICAgIC8vIHJhdyBieXRlIHZhbHVlIOKGkiBl
eHBlY3RlZCBnZXRfdSAoemVyby1leHRlbmRlZCksIGV4cGVjdGVkIGdldF9zIChzaWduLWV4dGVu
ZGVkKQorICAgIGNvbnN0IENBU0VTID0gWworICAgICAgICBbMCwgICAwLCAgICAwXSwKKyAgICAg
ICAgWzEyNywgMTI3LCAgMTI3XSwKKyAgICAgICAgWzEyOCwgMTI4LCAtMTI4XSwKKyAgICAgICAg
WzIwMCwgMjAwLCAgLTU2XSwKKyAgICAgICAgWzI1NSwgMjU1LCAgIC0xXSwKKyAgICBdOworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgY29uc3QgW3JhdywgZXhw
ZWN0VSwgZXhwZWN0U10gPSBDQVNFU1tpICUgQ0FTRVMubGVuZ3RoXTsKKyAgICAgICAgY29uc3Qg
aWR4ID0gaSAlIDE2OworCisgICAgICAgIGNvbnN0IHUgPSBmd2RVKGFyciwgaWR4LCByYXcpOwor
ICAgICAgICBpZiAodSAhPT0gZXhwZWN0VSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
aTggZndkVSgke3Jhd30pOiBleHBlY3RlZCAke2V4cGVjdFV9LCBnb3QgJHt1fWApOworCisgICAg
ICAgIGNvbnN0IHMgPSBmd2RTKGFyciwgaWR4LCByYXcpOworICAgICAgICBpZiAocyAhPT0gZXhw
ZWN0UykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaTggZndkUygke3Jhd30pOiBleHBl
Y3RlZCAke2V4cGVjdFN9LCBnb3QgJHtzfWApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWctZWxlbWVudC10eXBlcy5qcyBiL0pTVGVzdHMv
d2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWctZWxlbWVudC10eXBlcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFiNTJkNDA1M2E2ZgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWctZWxlbWVudC10eXBlcy5qcwpA
QCAtMCwwICsxLDI5NSBAQAorLy8gVGVzdHMgV2FzbUFycmF5TmV3IC8gV2FzbUFycmF5R2V0IC8g
V2FzbUFycmF5U2V0IEIzIG5vZGVzIGFjcm9zcyBhbGwgZWxlbWVudAorLy8gdHlwZXMgdW5kZXIg
T01HIGNvbXBpbGF0aW9uLgorLy8KKy8vIEFwcHJvYWNoOiBhbGxvY2F0ZSBlYWNoIHRlc3QgYXJy
YXkgb25jZSBpbiBKUywgdGhlbiBjYWxsIGdldC9zZXQgZnVuY3Rpb25zCisvLyAxMDAgMDAwIHRp
bWVzIHNvIHRoZXkgcmVhY2ggdGhlIE9NRyB0aWVyIChkZWZhdWx0IHRocmVzaG9sZDogNTAgMDAw
KS4KKy8vIEFsbG9jYXRpb24gY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgc2VwYXJhdGVseSB3aXRo
IGEgc21hbGxlciBsb29wLgorCitjb25zdCBOID0gMTAwMDAwOyAvLyBlbm91Z2ggdG8gdHJpZ2dl
ciBPTUcgKGRlZmF1bHQgdGhyZXNob2xkOiA1MCAwMDApCisKK2Z1bmN0aW9uIG1ha2VJbnN0YW5j
ZShieXRlcykgeworICAgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShuZXcgVWludDhBcnJheShieXRlcykuYnVmZmVyKSk7Cit9CisKKy8vIOKU
gOKUgCBBbGxvY2F0aW9uIG1vZHVsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIAKKy8vIEV4cG9ydHMgYWxsb2NJMzIgLyBhbGxvY0k4IC8g
YWxsb2NJMTYgLyBhbGxvY0k2NCAvIGFsbG9jRjMyIC8gYWxsb2NGNjQgLworLy8gICAgICAgICBh
bGxvY0ltbSAgKGltbXV0YWJsZSBpMzIpIC8gYXJyYXlMZW4KKy8qCisobW9kdWxlCisgICh0eXBl
ICRpMzJhcnIgKGFycmF5IChtdXQgaTMyKSkpCisgICh0eXBlICRpOGFyciAgKGFycmF5IChtdXQg
aTgpKSkKKyAgKHR5cGUgJGkxNmFyciAoYXJyYXkgKG11dCBpMTYpKSkKKyAgKHR5cGUgJGk2NGFy
ciAoYXJyYXkgKG11dCBpNjQpKSkKKyAgKHR5cGUgJGYzMmFyciAoYXJyYXkgKG11dCBmMzIpKSkK
KyAgKHR5cGUgJGY2NGFyciAoYXJyYXkgKG11dCBmNjQpKSkKKyAgKHR5cGUgJGltbWFyciAoYXJy
YXkgaTMyKSkKKyAgKGZ1bmMgKGV4cG9ydCAiYWxsb2NJMzIiKSAocGFyYW0gJHNpemUgaTMyKSAo
cGFyYW0gJHZhbCBpMzIpICAocmVzdWx0IChyZWYgbnVsbCAkaTMyYXJyKSkgKGFycmF5Lm5ldyAk
aTMyYXJyIChsb2NhbC5nZXQgJHZhbCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorICAoZnVuYyAoZXhw
b3J0ICJhbGxvY0k4IikgIChwYXJhbSAkc2l6ZSBpMzIpIChwYXJhbSAkdmFsIGkzMikgIChyZXN1
bHQgKHJlZiBudWxsICRpOGFycikpICAoYXJyYXkubmV3ICRpOGFyciAgKGxvY2FsLmdldCAkdmFs
KSAobG9jYWwuZ2V0ICRzaXplKSkpCisgIChmdW5jIChleHBvcnQgImFsbG9jSTE2IikgKHBhcmFt
ICRzaXplIGkzMikgKHBhcmFtICR2YWwgaTMyKSAgKHJlc3VsdCAocmVmIG51bGwgJGkxNmFycikp
IChhcnJheS5uZXcgJGkxNmFyciAobG9jYWwuZ2V0ICR2YWwpIChsb2NhbC5nZXQgJHNpemUpKSkK
KyAgKGZ1bmMgKGV4cG9ydCAiYWxsb2NJNjQiKSAocGFyYW0gJHNpemUgaTMyKSAocGFyYW0gJHZh
bCBpNjQpICAocmVzdWx0IChyZWYgbnVsbCAkaTY0YXJyKSkgKGFycmF5Lm5ldyAkaTY0YXJyIChs
b2NhbC5nZXQgJHZhbCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorICAoZnVuYyAoZXhwb3J0ICJhbGxv
Y0YzMiIpIChwYXJhbSAkc2l6ZSBpMzIpIChwYXJhbSAkdmFsIGYzMikgIChyZXN1bHQgKHJlZiBu
dWxsICRmMzJhcnIpKSAoYXJyYXkubmV3ICRmMzJhcnIgKGxvY2FsLmdldCAkdmFsKSAobG9jYWwu
Z2V0ICRzaXplKSkpCisgIChmdW5jIChleHBvcnQgImFsbG9jRjY0IikgKHBhcmFtICRzaXplIGkz
MikgKHBhcmFtICR2YWwgZjY0KSAgKHJlc3VsdCAocmVmIG51bGwgJGY2NGFycikpIChhcnJheS5u
ZXcgJGY2NGFyciAobG9jYWwuZ2V0ICR2YWwpIChsb2NhbC5nZXQgJHNpemUpKSkKKyAgKGZ1bmMg
KGV4cG9ydCAiYWxsb2NJbW0iKSAocGFyYW0gJHNpemUgaTMyKSAocGFyYW0gJHZhbCBpMzIpICAo
cmVzdWx0IChyZWYgbnVsbCAkaW1tYXJyKSkgKGFycmF5Lm5ldyAkaW1tYXJyIChsb2NhbC5nZXQg
JHZhbCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorICAoZnVuYyAoZXhwb3J0ICJhcnJheUxlbiIpIChw
YXJhbSAkYSAocmVmIG51bGwgJGkzMmFycikpIChyZXN1bHQgaTMyKSAoYXJyYXkubGVuIChsb2Nh
bC5nZXQgJGEpKSkKKykKKyovCitjb25zdCBBTExPQyA9IFsweDAwLCAweDYxLCAweDczLCAweDZk
LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweGNkLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDBmLCAweDVlLCAweDdmLCAweDAxLCAweDVlLCAweDc4LCAweDAxLCAweDVlLCAweDc3
LCAweDAxLCAweDVlLCAweDdlLCAweDAxLCAweDVlLCAweDdkLCAweDAxLCAweDVlLCAweDdjLCAw
eDAxLCAweDVlLCAweDdmLCAweDAwLCAweDYwLCAweDAyLCAweDdmLCAweDdmLCAweDAxLCAweDYz
LCAweDAwLCAweDYwLCAweDAyLCAweDdmLCAweDdmLCAweDAxLCAweDYzLCAweDAxLCAweDYwLCAw
eDAyLCAweDdmLCAweDdmLCAweDAxLCAweDYzLCAweDAyLCAweDYwLCAweDAyLCAweDdmLCAweDdl
LCAweDAxLCAweDYzLCAweDAzLCAweDYwLCAweDAyLCAweDdmLCAweDdkLCAweDAxLCAweDYzLCAw
eDA0LCAweDYwLCAweDAyLCAweDdmLCAweDdjLCAweDAxLCAweDYzLCAweDA1LCAweDYwLCAweDAy
LCAweDdmLCAweDdmLCAweDAxLCAweDYzLCAweDA2LCAweDYwLCAweDAxLCAweDYzLCAweDAwLCAw
eDAxLCAweDdmLCAweDAzLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDA4LCAweDA3
LCAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDA3LCAweGQ4LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDA4LCAweDA4LCAweDYxLCAweDZjLCAweDZjLCAweDZm
LCAweDYzLCAweDQ5LCAweDMzLCAweDMyLCAweDAwLCAweDAwLCAweDA3LCAweDYxLCAweDZjLCAw
eDZjLCAweDZmLCAweDYzLCAweDQ5LCAweDM4LCAweDAwLCAweDAxLCAweDA4LCAweDYxLCAweDZj
LCAweDZjLCAweDZmLCAweDYzLCAweDQ5LCAweDMxLCAweDM2LCAweDAwLCAweDAyLCAweDA4LCAw
eDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAweDQ5LCAweDM2LCAweDM0LCAweDAwLCAweDAz
LCAweDA4LCAweDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAweDQ2LCAweDMzLCAweDMyLCAw
eDAwLCAweDA0LCAweDA4LCAweDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAweDQ2LCAweDM2
LCAweDM0LCAweDAwLCAweDA1LCAweDA4LCAweDYxLCAweDZjLCAweDZjLCAweDZmLCAweDYzLCAw
eDQ5LCAweDZkLCAweDZkLCAweDAwLCAweDA2LCAweDA4LCAweDYxLCAweDcyLCAweDcyLCAweDYx
LCAweDc5LCAweDRjLCAweDY1LCAweDZlLCAweDAwLCAweDA3LCAweDBhLCAweGVlLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDA4LCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAw
LCAweDIwLCAweDAxLCAweDIwLCAweDAwLCAweGZiLCAweDA2LCAweDAwLCAweDBiLCAweDg5LCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAxLCAweDIwLCAweDAwLCAweGZi
LCAweDA2LCAweDAxLCAweDBiLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAw
eDIwLCAweDAxLCAweDIwLCAweDAwLCAweGZiLCAweDA2LCAweDAyLCAweDBiLCAweDg5LCAweDgw
LCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAxLCAweDIwLCAweDAwLCAweGZiLCAw
eDA2LCAweDAzLCAweDBiLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIw
LCAweDAxLCAweDIwLCAweDAwLCAweGZiLCAweDA2LCAweDA0LCAweDBiLCAweDg5LCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAxLCAweDIwLCAweDAwLCAweGZiLCAweDA2
LCAweDA1LCAweDBiLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAw
eDAxLCAweDIwLCAweDAwLCAweGZiLCAweDA2LCAweDA2LCAweDBiLCAweDg2LCAweDgwLCAweDgw
LCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweGZiLCAweDBmLCAweDBiXTsKKworLy8g
4pSA4pSAIGkzMiBnZXQvc2V0IG1vZHVsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIAKKy8vIGdldEF0KGFyciwgaWR4KSDihpIgaTMyICAgIHNl
dEF0KGFyciwgaWR4LCB2YWwpICAgIGFkZEF0KGFyciwgaWR4KSDihpIgaTMyK2kzMgorLyoKKyht
b2R1bGUKKyAgKHR5cGUgJGFyciAoYXJyYXkgKG11dCBpMzIpKSkKKyAgKGZ1bmMgKGV4cG9ydCAi
Z2V0QXQiKSAgKHBhcmFtICRhIChyZWYgbnVsbCAkYXJyKSkgKHBhcmFtICRpZHggaTMyKSAocmVz
dWx0IGkzMikKKyAgICAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAk
aWR4KSkpCisgIChmdW5jIChleHBvcnQgInNldEF0IikgIChwYXJhbSAkYSAocmVmIG51bGwgJGFy
cikpIChwYXJhbSAkaWR4IGkzMikgKHBhcmFtICR2YWwgaTMyKQorICAgIChhcnJheS5zZXQgJGFy
ciAobG9jYWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpIChsb2NhbC5nZXQgJHZhbCkpKQorICAo
ZnVuYyAoZXhwb3J0ICJhZGRBdCIpICAocGFyYW0gJGEgKHJlZiBudWxsICRhcnIpKSAocGFyYW0g
JGlkeCBpMzIpIChyZXN1bHQgaTMyKQorICAgIChpMzIuYWRkCisgICAgICAoYXJyYXkuZ2V0ICRh
cnIgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaWR4KSkKKyAgICAgIChhcnJheS5nZXQgJGFy
ciAobG9jYWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpKSkpCispCisqLworY29uc3QgSTMyX0dT
ID0gWzB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEs
IDB4OTIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NWUsIDB4N2YsIDB4MDEsIDB4
NjAsIDB4MDIsIDB4NjMsIDB4MDAsIDB4N2YsIDB4MDEsIDB4N2YsIDB4NjAsIDB4MDMsIDB4NjMs
IDB4MDAsIDB4N2YsIDB4N2YsIDB4MDAsIDB4MDMsIDB4ODQsIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDMsIDB4MDEsIDB4MDIsIDB4MDEsIDB4MDcsIDB4OTksIDB4ODAsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDMsIDB4MDUsIDB4NjcsIDB4NjUsIDB4NzQsIDB4NDEsIDB4NzQsIDB4MDAsIDB4
MDAsIDB4MDUsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NDEsIDB4NzQsIDB4MDAsIDB4MDEsIDB4MDUs
IDB4NjEsIDB4NjQsIDB4NjQsIDB4NDEsIDB4NzQsIDB4MDAsIDB4MDIsIDB4MGEsIDB4YjUsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4ODksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGIsIDB4MDAsIDB4MGIsIDB4
OGIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEs
IDB4MjAsIDB4MDIsIDB4ZmIsIDB4MGUsIDB4MDAsIDB4MGIsIDB4OTEsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGIsIDB4MDAs
IDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGIsIDB4MDAsIDB4NmEsIDB4MGJdOwor
CisvLyDilIDilIAgaTggcGFja2VkIGdldC9zZXQgbW9kdWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgAorLyoKKyhtb2R1bGUKKyAgKHR5cGUgJGFyciAoYXJyYXkgKG11dCBp
OCkpKQorICAoZnVuYyAoZXhwb3J0ICJnZXRVIikgIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikp
IChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBpMzIpIChhcnJheS5nZXRfdSAkYXJyIChsb2NhbC5n
ZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkpKQorICAoZnVuYyAoZXhwb3J0ICJnZXRTIikgIChwYXJh
bSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBpMzIpIChhcnJh
eS5nZXRfcyAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkpKQorICAoZnVuYyAo
ZXhwb3J0ICJzZXRBdCIpIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkz
MikgKHBhcmFtICR2YWwgaTMyKSAoYXJyYXkuc2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGxvY2Fs
LmdldCAkaWR4KSAobG9jYWwuZ2V0ICR2YWwpKSkKKykKKyovCitjb25zdCBJOF9HUyA9IFsweDAw
LCAweDYxLCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDkyLCAw
eDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAzLCAweDVlLCAweDc4LCAweDAxLCAweDYwLCAweDAy
LCAweDYzLCAweDAwLCAweDdmLCAweDAxLCAweDdmLCAweDYwLCAweDAzLCAweDYzLCAweDAwLCAw
eDdmLCAweDdmLCAweDAwLCAweDAzLCAweDg0LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAz
LCAweDAxLCAweDAxLCAweDAyLCAweDA3LCAweDk3LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAw
eDAzLCAweDA0LCAweDY3LCAweDY1LCAweDc0LCAweDU1LCAweDAwLCAweDAwLCAweDA0LCAweDY3
LCAweDY1LCAweDc0LCAweDUzLCAweDAwLCAweDAxLCAweDA1LCAweDczLCAweDY1LCAweDc0LCAw
eDQxLCAweDc0LCAweDAwLCAweDAyLCAweDBhLCAweGFkLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAzLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAw
eDIwLCAweDAxLCAweGZiLCAweDBkLCAweDAwLCAweDBiLCAweDg5LCAweDgwLCAweDgwLCAweDgw
LCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBjLCAweDAwLCAw
eDBiLCAweDhiLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIw
LCAweDAxLCAweDIwLCAweDAyLCAweGZiLCAweDBlLCAweDAwLCAweDBiXTsKKworLy8g4pSA4pSA
IGkxNiBwYWNrZWQgZ2V0L3NldCBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSACisvKgorKG1vZHVsZQorICAodHlwZSAkYXJyIChhcnJheSAobXV0IGkxNikpKQorICAoZnVu
YyAoZXhwb3J0ICJnZXRVIikgIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4
IGkzMikgKHJlc3VsdCBpMzIpIChhcnJheS5nZXRfdSAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2Nh
bC5nZXQgJGlkeCkpKQorICAoZnVuYyAoZXhwb3J0ICJnZXRTIikgIChwYXJhbSAkYSAocmVmIG51
bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBpMzIpIChhcnJheS5nZXRfcyAkYXJy
IChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkpKQorICAoZnVuYyAoZXhwb3J0ICJzZXRB
dCIpIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHBhcmFtICR2
YWwgaTMyKSAoYXJyYXkuc2V0ICRhcnIgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaWR4KSAo
bG9jYWwuZ2V0ICR2YWwpKSkKKykKKyovCitjb25zdCBJMTZfR1MgPSBbMHgwMCwgMHg2MSwgMHg3
MywgMHg2ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MiwgMHg4MCwgMHg4MCwg
MHg4MCwgMHgwMCwgMHgwMywgMHg1ZSwgMHg3NywgMHgwMSwgMHg2MCwgMHgwMiwgMHg2MywgMHgw
MCwgMHg3ZiwgMHgwMSwgMHg3ZiwgMHg2MCwgMHgwMywgMHg2MywgMHgwMCwgMHg3ZiwgMHg3Ziwg
MHgwMCwgMHgwMywgMHg4NCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHgwMSwgMHgw
MSwgMHgwMiwgMHgwNywgMHg5NywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHgwNCwg
MHg2NywgMHg2NSwgMHg3NCwgMHg1NSwgMHgwMCwgMHgwMCwgMHgwNCwgMHg2NywgMHg2NSwgMHg3
NCwgMHg1MywgMHgwMCwgMHgwMSwgMHgwNSwgMHg3MywgMHg2NSwgMHg3NCwgMHg0MSwgMHg3NCwg
MHgwMCwgMHgwMiwgMHgwYSwgMHhhZCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg4
OSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwg
MHhmYiwgMHgwZCwgMHgwMCwgMHgwYiwgMHg4OSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgw
MCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhmYiwgMHgwYywgMHgwMCwgMHgwYiwgMHg4Yiwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgy
MCwgMHgwMiwgMHhmYiwgMHgwZSwgMHgwMCwgMHgwYl07CisKKy8vIOKUgOKUgCBpNjQgZ2V0L3Nl
dCBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSACitjb25zdCBJNjRfR1MgPSBbMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwMSwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywg
MHg1ZSwgMHg3ZSwgMHgwMSwgMHg2MCwgMHgwMiwgMHg2MywgMHgwMCwgMHg3ZiwgMHgwMSwgMHg3
ZSwgMHg2MCwgMHgwMywgMHg2MywgMHgwMCwgMHg3ZiwgMHg3ZSwgMHgwMCwgMHgwMywgMHg4Mywg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwMiwgMHgwNywgMHg5MSwgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHgwNSwgMHg2NywgMHg2NSwgMHg3NCwgMHg0MSwg
MHg3NCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg3MywgMHg2NSwgMHg3NCwgMHg0MSwgMHg3NCwgMHgw
MCwgMHgwMSwgMHgwYSwgMHg5ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHg4OSwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhm
YiwgMHgwYiwgMHgwMCwgMHgwYiwgMHg4YiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg
MHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgyMCwgMHgwMiwgMHhmYiwgMHgwZSwgMHgwMCwgMHgw
Yl07CisKKy8vIOKUgOKUgCBmMzIgZ2V0L3NldCBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACitjb25zdCBGMzJfR1MgPSBbMHgwMCwg
MHg2MSwgMHg3MywgMHg2ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MiwgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg1ZSwgMHg3ZCwgMHgwMSwgMHg2MCwgMHgwMiwg
MHg2MywgMHgwMCwgMHg3ZiwgMHgwMSwgMHg3ZCwgMHg2MCwgMHgwMywgMHg2MywgMHgwMCwgMHg3
ZiwgMHg3ZCwgMHgwMCwgMHgwMywgMHg4MywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwg
MHgwMSwgMHgwMiwgMHgwNywgMHg5MSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHgw
NSwgMHg2NywgMHg2NSwgMHg3NCwgMHg0MSwgMHg3NCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg3Mywg
MHg2NSwgMHg3NCwgMHg0MSwgMHg3NCwgMHgwMCwgMHgwMSwgMHgwYSwgMHg5ZiwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHg4OSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg
MHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhmYiwgMHgwYiwgMHgwMCwgMHgwYiwgMHg4YiwgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgyMCwg
MHgwMiwgMHhmYiwgMHgwZSwgMHgwMCwgMHgwYl07CisKKy8vIOKUgOKUgCBmNjQgZ2V0L3NldCBt
b2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSACitjb25zdCBGNjRfR1MgPSBbMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwMSwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMSwgMHg5MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg1
ZSwgMHg3YywgMHgwMSwgMHg2MCwgMHgwMiwgMHg2MywgMHgwMCwgMHg3ZiwgMHgwMSwgMHg3Yywg
MHg2MCwgMHgwMywgMHg2MywgMHgwMCwgMHg3ZiwgMHg3YywgMHgwMCwgMHgwMywgMHg4MywgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwMiwgMHgwNywgMHg5MSwgMHg4MCwg
MHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHgwNSwgMHg2NywgMHg2NSwgMHg3NCwgMHg0MSwgMHg3
NCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg3MywgMHg2NSwgMHg3NCwgMHg0MSwgMHg3NCwgMHgwMCwg
MHgwMSwgMHgwYSwgMHg5ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMiwgMHg4OSwgMHg4
MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhmYiwg
MHgwYiwgMHgwMCwgMHgwYiwgMHg4YiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgy
MCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgyMCwgMHgwMiwgMHhmYiwgMHgwZSwgMHgwMCwgMHgwYl07
CisKKy8vIOKUgOKUgCBJbW11dGFibGUgaTMyIGFycmF5IGdldCBtb2R1bGUg4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSACisvLyBnZXRBdChhcnIsIGlkeCkg4oaSIGkzMiAgICBhZGRBdChhcnIsIGlkeCkg4oaS
IGVsZW1lbnQgKiBlbGVtZW50IChDU0U6IGJvdGggZXF1YWwpCisvKgorKG1vZHVsZQorICAodHlw
ZSAkYXJyIChhcnJheSBpMzIpKSAgIDs7IGltbXV0YWJsZQorICAoZnVuYyAoZXhwb3J0ICJnZXRB
dCIpIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBp
MzIpIChhcnJheS5nZXQgJGFyciAobG9jYWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpKSkKKyAg
KGZ1bmMgKGV4cG9ydCAiYWRkQXQiKSAocGFyYW0gJGEgKHJlZiBudWxsICRhcnIpKSAocGFyYW0g
JGlkeCBpMzIpIChyZXN1bHQgaTMyKQorICAgIChpMzIubXVsIChhcnJheS5nZXQgJGFyciAobG9j
YWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpKSAoYXJyYXkuZ2V0ICRhcnIgKGxvY2FsLmdldCAk
YSkgKGxvY2FsLmdldCAkaWR4KSkpKQorKQorKi8KK2NvbnN0IElNTV9HUyA9IFsweDAwLCAweDYx
LCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDhiLCAweDgwLCAw
eDgwLCAweDgwLCAweDAwLCAweDAyLCAweDVlLCAweDdmLCAweDAwLCAweDYwLCAweDAyLCAweDYz
LCAweDAwLCAweDdmLCAweDAxLCAweDdmLCAweDAzLCAweDgzLCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAyLCAweDAxLCAweDAxLCAweDA3LCAweDkxLCAweDgwLCAweDgwLCAweDgwLCAweDAw
LCAweDAyLCAweDA1LCAweDY3LCAweDY1LCAweDc0LCAweDQxLCAweDc0LCAweDAwLCAweDAwLCAw
eDA1LCAweDYxLCAweDY0LCAweDY0LCAweDQxLCAweDc0LCAweDAwLCAweDAxLCAweDBhLCAweGE1
LCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAyLCAweDg5LCAweDgwLCAweDgwLCAweDgwLCAw
eDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBiLCAweDAwLCAweDBi
LCAweDkxLCAweDgwLCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAw
eDAxLCAweGZiLCAweDBiLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweDAxLCAweGZiLCAweDBi
LCAweDAwLCAweDZjLCAweDBiXTsKKworLy8g4pSA4pSAIFRlc3RzIOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgAorCisvLyBBbGxvY2F0aW9uOiB2ZXJpZnkgYXJyYXkubmV3
IGluaXRpYWxpc2VzIGFsbCBlbGVtZW50cyBjb3JyZWN0bHkuCisvLyBPbmx5IGEgbW9kZXN0IGl0
ZXJhdGlvbiBjb3VudCDigJMgd2UncmUgY2hlY2tpbmcgY29ycmVjdG5lc3MsIG5vdCBPTUcgcmVh
Y2guCit7CisgICAgY29uc3QgeyBhbGxvY0kzMiwgYWxsb2NJOCwgYWxsb2NJMTYsIGFsbG9jSTY0
LCBhbGxvY0YzMiwgYWxsb2NGNjQsIGFsbG9jSW1tLCBhcnJheUxlbiB9ID0KKyAgICAgICAgbWFr
ZUluc3RhbmNlKEFMTE9DKS5leHBvcnRzOworCisgICAgLy8gaTMyOiAxMCBlbGVtZW50cyBvZiB2
YWx1ZSA0MjsgY2hlY2sgYXJyYXlMZW4gYW5kIGZpcnN0L2xhc3QgZWxlbWVudAorICAgIGNvbnN0
IGkzMmdzID0gbWFrZUluc3RhbmNlKEkzMl9HUykuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICAgICAgY29uc3QgYSA9IGFsbG9jSTMyKDEwLCA0Mik7
CisgICAgICAgIGlmIChhcnJheUxlbihhKSAhPT0gMTApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGFsbG9jSTMyIGxlbjogZXhwZWN0ZWQgMTBgKTsKKyAgICAgICAgaWYgKGkzMmdzLmdl
dEF0KGEsIDApICE9PSA0MikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYWxsb2NJMzIg
ZWxlbVswXTogZXhwZWN0ZWQgNDJgKTsKKyAgICAgICAgaWYgKGkzMmdzLmdldEF0KGEsIDkpICE9
PSA0MikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYWxsb2NJMzIgZWxlbVs5XTogZXhw
ZWN0ZWQgNDJgKTsKKyAgICB9CisKKyAgICAvLyBpODogYWxsIGVsZW1lbnRzID0gMjAwOyBjaGVj
ayB6ZXJvLWV4dGVuZGVkIHJlYWRiYWNrCisgICAgY29uc3QgaThncyA9IG1ha2VJbnN0YW5jZShJ
OF9HUykuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICAgICAgY29uc3QgYSA9IGFsbG9jSTgoOCwgMjAwKTsKKyAgICAgICAgaWYgKGk4Z3MuZ2V0VShh
LCAwKSAhPT0gMjAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBhbGxvY0k4IGdldFU6
IGV4cGVjdGVkIDIwMGApOworICAgICAgICBpZiAoaThncy5nZXRTKGEsIDApICE9PSAtNTYpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFsbG9jSTggZ2V0UzogZXhwZWN0ZWQgLTU2YCk7
CisgICAgfQorCisgICAgLy8gaTE2OiBhbGwgZWxlbWVudHMgPSA1MDAwMAorICAgIGNvbnN0IGkx
NmdzID0gbWFrZUluc3RhbmNlKEkxNl9HUykuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICAgICAgY29uc3QgYSA9IGFsbG9jSTE2KDgsIDUwMDAwKTsK
KyAgICAgICAgaWYgKGkxNmdzLmdldFUoYSwgMCkgIT09IDUwMDAwKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBhbGxvY0kxNiBnZXRVOiBleHBlY3RlZCA1MDAwMGApOworICAgICAgICBp
ZiAoaTE2Z3MuZ2V0UyhhLCAwKSAhPT0gLTE1NTM2KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBhbGxvY0kxNiBnZXRTOiBleHBlY3RlZCAtMTU1MzZgKTsKKyAgICB9CisKKyAgICAvLyBp
NjQ6IHZhbHVlID0gMHgxMjM0NTY3ODkwQUJDREVGbgorICAgIGNvbnN0IGk2NGdzID0gbWFrZUlu
c3RhbmNlKEk2NF9HUykuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgICAgICAgY29uc3QgYSA9IGFsbG9jSTY0KDQsIDB4MTIzNDU2Nzg5MEFCQ0RFRm4p
OworICAgICAgICBpZiAoaTY0Z3MuZ2V0QXQoYSwgMikgIT09IDB4MTIzNDU2Nzg5MEFCQ0RFRm4p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFsbG9jSTY0OiBleHBlY3RlZCAweDEyMzQ1
Njc4OTBBQkNERUZgKTsKKyAgICB9CisKKyAgICAvLyBmMzI6IHZhbHVlID0gMi41CisgICAgY29u
c3QgZjMyZ3MgPSBtYWtlSW5zdGFuY2UoRjMyX0dTKS5leHBvcnRzOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgICAgICBjb25zdCBhID0gYWxsb2NGMzIoNCwgMi41
KTsKKyAgICAgICAgaWYgKE1hdGguYWJzKGYzMmdzLmdldEF0KGEsIDEpIC0gMi41KSA+IDFlLTYp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFsbG9jRjMyOiBleHBlY3RlZCAyLjVgKTsK
KyAgICB9CisKKyAgICAvLyBmNjQ6IHZhbHVlID0gMy4xNAorICAgIGNvbnN0IGY2NGdzID0gbWFr
ZUluc3RhbmNlKEY2NF9HUykuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICAgICAgY29uc3QgYSA9IGFsbG9jRjY0KDQsIDMuMTQpOworICAgICAgICBp
ZiAoTWF0aC5hYnMoZjY0Z3MuZ2V0QXQoYSwgMSkgLSAzLjE0KSA+IDFlLTEwKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBhbGxvY0Y2NDogZXhwZWN0ZWQgMy4xNGApOworICAgIH0KKwor
ICAgIC8vIGltbXV0YWJsZSBpMzI6IGFsbCA0MgorICAgIGNvbnN0IGltbWdzID0gbWFrZUluc3Rh
bmNlKElNTV9HUykuZXhwb3J0czsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICAgICAgY29uc3QgYSA9IGFsbG9jSW1tKDEwLCA0Mik7CisgICAgICAgIGlmIChpbW1n
cy5nZXRBdChhLCAwKSAhPT0gNDIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFsbG9j
SW1tIGVsZW1bMF06IGV4cGVjdGVkIDQyYCk7CisgICAgICAgIGlmIChpbW1ncy5nZXRBdChhLCA5
KSAhPT0gNDIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFsbG9jSW1tIGVsZW1bOV06
IGV4cGVjdGVkIDQyYCk7CisgICAgfQorfQorCisvLyBnZXQvc2V0IHVuZGVyIE9NRzogYWxsb2Nh
dGUgYXJyYXlzIG9uY2UsIGxvb3AgTiB0aW1lcyBvdmVyIGdldC9zZXQuCit7CisgICAgY29uc3Qg
YWxsb2MgPSBtYWtlSW5zdGFuY2UoQUxMT0MpLmV4cG9ydHM7CisKKyAgICAvLyBpMzIgZ2V0L3Nl
dAorICAgIHsKKyAgICAgICAgY29uc3QgeyBnZXRBdCwgc2V0QXQsIGFkZEF0IH0gPSBtYWtlSW5z
dGFuY2UoSTMyX0dTKS5leHBvcnRzOworICAgICAgICBjb25zdCBhcnIgPSBhbGxvYy5hbGxvY0kz
MigxNiwgMCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAg
ICAgICBjb25zdCBpZHggPSBpICUgMTY7CisgICAgICAgICAgICBjb25zdCB2YWwgPSAoaSAqIDMx
KSAlIDEwMDAwOworICAgICAgICAgICAgc2V0QXQoYXJyLCBpZHgsIHZhbCk7CisgICAgICAgICAg
ICBjb25zdCByID0gZ2V0QXQoYXJyLCBpZHgpOworICAgICAgICAgICAgaWYgKHIgIT09IHZhbCkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGkzMiBnZXRBdCBhZnRlciBzZXRBdDog
ZXhwZWN0ZWQgJHt2YWx9LCBnb3QgJHtyfWApOworICAgICAgICB9CisgICAgICAgIC8vIGFkZEF0
IHJldHVybnMgZWxlbWVudCAqIDIgKHR3byBpZGVudGljYWwgZ2V0cywgQ1NFIGNhbmRpZGF0ZSkK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0
IGlkeCA9IGkgJSAxNjsKKyAgICAgICAgICAgIGNvbnN0IHIgPSBhZGRBdChhcnIsIGlkeCk7Cisg
ICAgICAgICAgICBjb25zdCB2ID0gZ2V0QXQoYXJyLCBpZHgpOworICAgICAgICAgICAgaWYgKHIg
IT09IHYgKiAyKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaTMyIGFkZEF0OiBl
eHBlY3RlZCAke3YgKiAyfSwgZ290ICR7cn1gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IGk4IHBhY2tlZCBnZXQvc2V0OiB6ZXJvLSBhbmQgc2lnbi1leHRlbnNpb24KKyAgICB7CisgICAg
ICAgIGNvbnN0IHsgZ2V0VSwgZ2V0Uywgc2V0QXQgfSA9IG1ha2VJbnN0YW5jZShJOF9HUykuZXhw
b3J0czsKKyAgICAgICAgY29uc3QgYXJyID0gYWxsb2MuYWxsb2NJOCgxNiwgMCk7CisgICAgICAg
IGNvbnN0IENBU0VTID0gW1swLCAwLCAwXSwgWzEyNywgMTI3LCAxMjddLCBbMTI4LCAxMjgsIC0x
MjhdLCBbMjAwLCAyMDAsIC01Nl0sIFsyNTUsIDI1NSwgLTFdXTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0IFtyYXcsIGV4cGVjdFUsIGV4
cGVjdFNdID0gQ0FTRVNbaSAlIENBU0VTLmxlbmd0aF07CisgICAgICAgICAgICBjb25zdCBpZHgg
PSBpICUgMTY7CisgICAgICAgICAgICBzZXRBdChhcnIsIGlkeCwgcmF3KTsKKyAgICAgICAgICAg
IGNvbnN0IHUgPSBnZXRVKGFyciwgaWR4KTsKKyAgICAgICAgICAgIGlmICh1ICE9PSBleHBlY3RV
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaTggZ2V0VSgke3Jhd30pOiBleHBl
Y3RlZCAke2V4cGVjdFV9LCBnb3QgJHt1fWApOworICAgICAgICAgICAgY29uc3QgcyA9IGdldFMo
YXJyLCBpZHgpOworICAgICAgICAgICAgaWYgKHMgIT09IGV4cGVjdFMpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBpOCBnZXRTKCR7cmF3fSk6IGV4cGVjdGVkICR7ZXhwZWN0U30s
IGdvdCAke3N9YCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBpMTYgcGFja2VkIGdldC9z
ZXQKKyAgICB7CisgICAgICAgIGNvbnN0IHsgZ2V0VSwgZ2V0Uywgc2V0QXQgfSA9IG1ha2VJbnN0
YW5jZShJMTZfR1MpLmV4cG9ydHM7CisgICAgICAgIGNvbnN0IGFyciA9IGFsbG9jLmFsbG9jSTE2
KDE2LCAwKTsKKyAgICAgICAgY29uc3QgQ0FTRVMgPSBbWzAsIDAsIDBdLCBbMzI3NjcsIDMyNzY3
LCAzMjc2N10sIFszMjc2OCwgMzI3NjgsIC0zMjc2OF0sCisgICAgICAgICAgICAgICAgICAgICAg
IFs1MDAwMCwgNTAwMDAsIC0xNTUzNl0sIFs2NTUzNSwgNjU1MzUsIC0xXV07CisgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgICAgICBjb25zdCBbcmF3LCBleHBl
Y3RVLCBleHBlY3RTXSA9IENBU0VTW2kgJSBDQVNFUy5sZW5ndGhdOworICAgICAgICAgICAgY29u
c3QgaWR4ID0gaSAlIDE2OworICAgICAgICAgICAgc2V0QXQoYXJyLCBpZHgsIHJhdyk7CisgICAg
ICAgICAgICBjb25zdCB1ID0gZ2V0VShhcnIsIGlkeCk7CisgICAgICAgICAgICBpZiAodSAhPT0g
ZXhwZWN0VSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGkxNiBnZXRVKCR7cmF3
fSk6IGV4cGVjdGVkICR7ZXhwZWN0VX0sIGdvdCAke3V9YCk7CisgICAgICAgICAgICBjb25zdCBz
ID0gZ2V0UyhhcnIsIGlkeCk7CisgICAgICAgICAgICBpZiAocyAhPT0gZXhwZWN0UykKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGkxNiBnZXRTKCR7cmF3fSk6IGV4cGVjdGVkICR7
ZXhwZWN0U30sIGdvdCAke3N9YCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBpNjQgZ2V0
L3NldCB3aXRoIGR5bmFtaWMgaW5kZXgKKyAgICB7CisgICAgICAgIGNvbnN0IHsgZ2V0QXQsIHNl
dEF0IH0gPSBtYWtlSW5zdGFuY2UoSTY0X0dTKS5leHBvcnRzOworICAgICAgICBjb25zdCBhcnIg
PSBhbGxvYy5hbGxvY0k2NCg4LCAwbik7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsg
aSsrKSB7CisgICAgICAgICAgICBjb25zdCBpZHggPSBpICUgODsKKyAgICAgICAgICAgIGNvbnN0
IHZhbCA9IEJpZ0ludCgoaSAqIDE3KSAlIDEwMDAwKTsKKyAgICAgICAgICAgIHNldEF0KGFyciwg
aWR4LCB2YWwpOworICAgICAgICAgICAgY29uc3QgciA9IGdldEF0KGFyciwgaWR4KTsKKyAgICAg
ICAgICAgIGlmIChyICE9PSB2YWwpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBp
NjQgZ2V0QXQ6IGV4cGVjdGVkICR7dmFsfSwgZ290ICR7cn1gKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIGYzMiBnZXQvc2V0CisgICAgeworICAgICAgICBjb25zdCB7IGdldEF0LCBzZXRB
dCB9ID0gbWFrZUluc3RhbmNlKEYzMl9HUykuZXhwb3J0czsKKyAgICAgICAgY29uc3QgYXJyID0g
YWxsb2MuYWxsb2NGMzIoOCwgMCk7CisgICAgICAgIGNvbnN0IFZBTFMgPSBbMCwgMS41LCAtMi41
LCAxZTEwLCAtMWUxMCwgMy4xNF07CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsr
KSB7CisgICAgICAgICAgICBjb25zdCB2YWwgPSBWQUxTW2kgJSBWQUxTLmxlbmd0aF07CisgICAg
ICAgICAgICBjb25zdCBpZHggPSBpICUgODsKKyAgICAgICAgICAgIHNldEF0KGFyciwgaWR4LCB2
YWwpOworICAgICAgICAgICAgY29uc3QgciA9IGdldEF0KGFyciwgaWR4KTsKKyAgICAgICAgICAg
IGlmIChNYXRoLmFicyhyIC0gTWF0aC5mcm91bmQodmFsKSkgPiAxZS02ICogTWF0aC5hYnModmFs
IHx8IDEpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZjMyIGdldEF0OiBleHBl
Y3RlZCB+JHt2YWx9LCBnb3QgJHtyfWApOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZjY0
IGdldC9zZXQKKyAgICB7CisgICAgICAgIGNvbnN0IHsgZ2V0QXQsIHNldEF0IH0gPSBtYWtlSW5z
dGFuY2UoRjY0X0dTKS5leHBvcnRzOworICAgICAgICBjb25zdCBhcnIgPSBhbGxvYy5hbGxvY0Y2
NCg4LCAwKTsKKyAgICAgICAgY29uc3QgVkFMUyA9IFswLCAxLjUsIC0yLjUsIDFlMTAwLCAtMWUx
MDAsIDMuMTQxNTkyNjUzNTg5NzkzXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBp
KyspIHsKKyAgICAgICAgICAgIGNvbnN0IHZhbCA9IFZBTFNbaSAlIFZBTFMubGVuZ3RoXTsKKyAg
ICAgICAgICAgIGNvbnN0IGlkeCA9IGkgJSA4OworICAgICAgICAgICAgc2V0QXQoYXJyLCBpZHgs
IHZhbCk7CisgICAgICAgICAgICBjb25zdCByID0gZ2V0QXQoYXJyLCBpZHgpOworICAgICAgICAg
ICAgaWYgKHIgIT09IHZhbCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGY2NCBn
ZXRBdDogZXhwZWN0ZWQgJHt2YWx9LCBnb3QgJHtyfWApOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gaW1tdXRhYmxlIGkzMiBnZXQKKyAgICB7CisgICAgICAgIGNvbnN0IHsgZ2V0QXQsIGFk
ZEF0IH0gPSBtYWtlSW5zdGFuY2UoSU1NX0dTKS5leHBvcnRzOworICAgICAgICBjb25zdCBhcnIg
PSBhbGxvYy5hbGxvY0ltbSgxNiwgNyk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsg
aSsrKSB7CisgICAgICAgICAgICBjb25zdCBpZHggPSBpICUgMTY7CisgICAgICAgICAgICBjb25z
dCB2ID0gZ2V0QXQoYXJyLCBpZHgpOworICAgICAgICAgICAgaWYgKHYgIT09IDcpCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbW0gZ2V0QXQ6IGV4cGVjdGVkIDcsIGdvdCAke3Z9
YCk7CisgICAgICAgICAgICAvLyBhZGRBdCA9IGVsZW1lbnQgKiBlbGVtZW50ID0gNDkKKyAgICAg
ICAgICAgIGNvbnN0IG0gPSBhZGRBdChhcnIsIGlkeCk7CisgICAgICAgICAgICBpZiAobSAhPT0g
NDkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbW0gYWRkQXQ6IGV4cGVjdGVk
IDQ5LCBnb3QgJHttfWApOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3N0cmVzcy93YXNtLWFycmF5LW9tZy1wYWNrZWQtdHlwZXMuanMgYi9KU1Rlc3RzL3dh
c20vc3RyZXNzL3dhc20tYXJyYXktb21nLXBhY2tlZC10eXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjMjE2ZTJlNDgxYQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvd2FzbS9zdHJlc3Mvd2FzbS1hcnJheS1vbWctcGFja2VkLXR5cGVzLmpzCkBAIC0w
LDAgKzEsMTQ5IEBACisvLyBUZXN0cyBXYXNtQXJyYXlHZXQgLyBXYXNtQXJyYXlTZXQgQjMgbm9k
ZXMgZm9yIHBhY2tlZCBlbGVtZW50IHR5cGVzIChpOCwgaTE2KQorLy8gdW5kZXIgT01HIGNvbXBp
bGF0aW9uLiAgRXhlcmNpc2VzOgorLy8gICAtIGk4IHplcm8tZXh0ZW5zaW9uIChhcnJheS5nZXRf
dSkgYW5kIHNpZ24tZXh0ZW5zaW9uIChhcnJheS5nZXRfcykKKy8vICAgLSBpMTYgemVyby1leHRl
bnNpb24gYW5kIHNpZ24tZXh0ZW5zaW9uCisvLyAgIC0gQm91bmRhcnkgdmFsdWVzOiAwLCAxMjcv
MzI3NjcsIDEyOC8zMjc2OCwgMjAwLzUwMDAwLCAyNTUvNjU1MzUKKy8vICAgLSBEeW5hbWljIGlu
ZGV4IHN3ZWVwcworLy8gICAtIE91dC1vZi1ib3VuZHMgYWNjZXNzIG11c3QgdHJhcAorLy8gICAt
IE51bGwgcmVmZXJlbmNlIGFjY2VzcyBtdXN0IHRyYXAKKy8vCisvLyBBcHByb2FjaDogYWxsb2Nh
dGUgYXJyYXlzIG9uY2UsIGxvb3AgTiB0aW1lcyBvdmVyIGdldC9zZXQgc28gT01HIGZpcmVzLgor
Citjb25zdCBOID0gMTAwMDAwOyAvLyBlbm91Z2ggdG8gdHJpZ2dlciBPTUcgKGRlZmF1bHQgdGhy
ZXNob2xkOiA1MCAwMDApCisKK2Z1bmN0aW9uIG1ha2VJbnN0YW5jZShieXRlcykgeworICAgIHJl
dHVybiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShuZXcg
VWludDhBcnJheShieXRlcykuYnVmZmVyKSk7Cit9CisKKy8vIOKUgOKUgCBpOCBwYWNrZWQgYXJy
YXkgbW9kdWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAorLy8g
Z2V0VShhcnIsIGlkeCkg4oaSIGFycmF5LmdldF91ICAgIGdldFMoYXJyLCBpZHgpIOKGkiBhcnJh
eS5nZXRfcworLy8gc2V0QXQoYXJyLCBpZHgsIHZhbCkgICAgICAgICAgICBhbGxvYyhzaXplKSDi
hpIgemVyb2VkIChyZWYgbnVsbCAkYXJyKQorLyoKKyhtb2R1bGUKKyAgKHR5cGUgJGFyciAoYXJy
YXkgKG11dCBpOCkpKQorICAoZnVuYyAoZXhwb3J0ICJnZXRVIikgIChwYXJhbSAkYSAocmVmIG51
bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBpMzIpIChhcnJheS5nZXRfdSAkYXJy
IChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkpKQorICAoZnVuYyAoZXhwb3J0ICJnZXRT
IikgIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBp
MzIpIChhcnJheS5nZXRfcyAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQgJGlkeCkpKQor
ICAoZnVuYyAoZXhwb3J0ICJzZXRBdCIpIChwYXJhbSAkYSAocmVmIG51bGwgJGFycikpIChwYXJh
bSAkaWR4IGkzMikgKHBhcmFtICR2YWwgaTMyKSAoYXJyYXkuc2V0ICRhcnIgKGxvY2FsLmdldCAk
YSkgKGxvY2FsLmdldCAkaWR4KSAobG9jYWwuZ2V0ICR2YWwpKSkKKyAgKGZ1bmMgKGV4cG9ydCAi
YWxsb2MiKSAocGFyYW0gJHNpemUgaTMyKSAocmVzdWx0IChyZWYgbnVsbCAkYXJyKSkgKGFycmF5
Lm5ldyAkYXJyIChpMzIuY29uc3QgMCkgKGxvY2FsLmdldCAkc2l6ZSkpKQorKQorKi8KK2NvbnN0
IEk4ID0gWzB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDEsIDB4OTgsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4NWUsIDB4NzgsIDB4MDEs
IDB4NjAsIDB4MDIsIDB4NjMsIDB4MDAsIDB4N2YsIDB4MDEsIDB4N2YsIDB4NjAsIDB4MDMsIDB4
NjMsIDB4MDAsIDB4N2YsIDB4N2YsIDB4MDAsIDB4NjAsIDB4MDEsIDB4N2YsIDB4MDEsIDB4NjMs
IDB4MDAsIDB4MDMsIDB4ODUsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4MDEsIDB4
MDEsIDB4MDIsIDB4MDMsIDB4MDcsIDB4OWYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQs
IDB4MDQsIDB4NjcsIDB4NjUsIDB4NzQsIDB4NTUsIDB4MDAsIDB4MDAsIDB4MDQsIDB4NjcsIDB4
NjUsIDB4NzQsIDB4NTMsIDB4MDAsIDB4MDEsIDB4MDUsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NDEs
IDB4NzQsIDB4MDAsIDB4MDIsIDB4MDUsIDB4NjEsIDB4NmMsIDB4NmMsIDB4NmYsIDB4NjMsIDB4
MDAsIDB4MDMsIDB4MGEsIDB4YmIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4ODks
IDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4
ZmIsIDB4MGQsIDB4MDAsIDB4MGIsIDB4ODksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAs
IDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGMsIDB4MDAsIDB4MGIsIDB4OGIsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4MjAs
IDB4MDIsIDB4ZmIsIDB4MGUsIDB4MDAsIDB4MGIsIDB4ODksIDB4ODAsIDB4ODAsIDB4ODAsIDB4
MDAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ZmIsIDB4MDYsIDB4MDAsIDB4MGJd
OworCisvLyDilIDilIAgaTE2IHBhY2tlZCBhcnJheSBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSACisvLyBTYW1lIGV4cG9ydHMgYnV0IGZvciAobXV0IGkxNikK
Ky8qCisobW9kdWxlCisgICh0eXBlICRhcnIgKGFycmF5IChtdXQgaTE2KSkpCisgIChmdW5jIChl
eHBvcnQgImdldFUiKSAgKHBhcmFtICRhIChyZWYgbnVsbCAkYXJyKSkgKHBhcmFtICRpZHggaTMy
KSAocmVzdWx0IGkzMikgKGFycmF5LmdldF91ICRhcnIgKGxvY2FsLmdldCAkYSkgKGxvY2FsLmdl
dCAkaWR4KSkpCisgIChmdW5jIChleHBvcnQgImdldFMiKSAgKHBhcmFtICRhIChyZWYgbnVsbCAk
YXJyKSkgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0IGkzMikgKGFycmF5LmdldF9zICRhcnIgKGxv
Y2FsLmdldCAkYSkgKGxvY2FsLmdldCAkaWR4KSkpCisgIChmdW5jIChleHBvcnQgInNldEF0Iikg
KHBhcmFtICRhIChyZWYgbnVsbCAkYXJyKSkgKHBhcmFtICRpZHggaTMyKSAocGFyYW0gJHZhbCBp
MzIpIChhcnJheS5zZXQgJGFyciAobG9jYWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpIChsb2Nh
bC5nZXQgJHZhbCkpKQorICAoZnVuYyAoZXhwb3J0ICJhbGxvYyIpIChwYXJhbSAkc2l6ZSBpMzIp
IChyZXN1bHQgKHJlZiBudWxsICRhcnIpKSAoYXJyYXkubmV3ICRhcnIgKGkzMi5jb25zdCAwKSAo
bG9jYWwuZ2V0ICRzaXplKSkpCispCisqLworY29uc3QgSTE2ID0gWzB4MDAsIDB4NjEsIDB4NzMs
IDB4NmQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OTgsIDB4ODAsIDB4ODAsIDB4
ODAsIDB4MDAsIDB4MDQsIDB4NWUsIDB4NzcsIDB4MDEsIDB4NjAsIDB4MDIsIDB4NjMsIDB4MDAs
IDB4N2YsIDB4MDEsIDB4N2YsIDB4NjAsIDB4MDMsIDB4NjMsIDB4MDAsIDB4N2YsIDB4N2YsIDB4
MDAsIDB4NjAsIDB4MDEsIDB4N2YsIDB4MDEsIDB4NjMsIDB4MDAsIDB4MDMsIDB4ODUsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDcsIDB4
OWYsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4MDQsIDB4NjcsIDB4NjUsIDB4NzQs
IDB4NTUsIDB4MDAsIDB4MDAsIDB4MDQsIDB4NjcsIDB4NjUsIDB4NzQsIDB4NTMsIDB4MDAsIDB4
MDEsIDB4MDUsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NDEsIDB4NzQsIDB4MDAsIDB4MDIsIDB4MDUs
IDB4NjEsIDB4NmMsIDB4NmMsIDB4NmYsIDB4NjMsIDB4MDAsIDB4MDMsIDB4MGEsIDB4YmIsIDB4
ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4ODksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZmIsIDB4MGQsIDB4MDAsIDB4MGIsIDB4
ODksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEs
IDB4ZmIsIDB4MGMsIDB4MDAsIDB4MGIsIDB4OGIsIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDAsIDB4MjAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4MjAsIDB4MDIsIDB4ZmIsIDB4MGUsIDB4MDAs
IDB4MGIsIDB4ODksIDB4ODAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4
MjAsIDB4MDAsIDB4ZmIsIDB4MDYsIDB4MDAsIDB4MGJdOworCisvLyDilIDilIAgT3V0LW9mLWJv
dW5kcyAvIG51bGwgdHJhcCBtb2R1bGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACisvKgorKG1vZHVsZQorICAodHlwZSAk
YXJyIChhcnJheSAobXV0IGkzMikpKQorICAoZnVuYyAoZXhwb3J0ICJnZXQiKSAgIChwYXJhbSAk
YSAocmVmIG51bGwgJGFycikpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBpMzIpIChhcnJheS5n
ZXQgJGFyciAobG9jYWwuZ2V0ICRhKSAobG9jYWwuZ2V0ICRpZHgpKSkKKyAgKGZ1bmMgKGV4cG9y
dCAic2V0IikgICAocGFyYW0gJGEgKHJlZiBudWxsICRhcnIpKSAocGFyYW0gJGlkeCBpMzIpIChw
YXJhbSAkdmFsIGkzMikgKGFycmF5LnNldCAkYXJyIChsb2NhbC5nZXQgJGEpIChsb2NhbC5nZXQg
JGlkeCkgKGxvY2FsLmdldCAkdmFsKSkpCisgIChmdW5jIChleHBvcnQgImFsbG9jIikgKHBhcmFt
ICRzaXplIGkzMikgKHJlc3VsdCAocmVmIG51bGwgJGFycikpIChhcnJheS5uZXcgJGFyciAoaTMy
LmNvbnN0IDcpIChsb2NhbC5nZXQgJHNpemUpKSkKKykKKyovCitjb25zdCBCT1VORFMgPSBbMHgw
MCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5OCwg
MHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwNCwgMHg1ZSwgMHg3ZiwgMHgwMSwgMHg2MCwgMHgw
MiwgMHg2MywgMHgwMCwgMHg3ZiwgMHgwMSwgMHg3ZiwgMHg2MCwgMHgwMywgMHg2MywgMHgwMCwg
MHg3ZiwgMHg3ZiwgMHgwMCwgMHg2MCwgMHgwMSwgMHg3ZiwgMHgwMSwgMHg2MywgMHgwMCwgMHgw
MywgMHg4NCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHgwMSwgMHgwMiwgMHgwMywg
MHgwNywgMHg5NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHgwMywgMHg2NywgMHg2
NSwgMHg3NCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MywgMHg2NSwgMHg3NCwgMHgwMCwgMHgwMSwg
MHgwNSwgMHg2MSwgMHg2YywgMHg2YywgMHg2ZiwgMHg2MywgMHgwMCwgMHgwMiwgMHgwYSwgMHhh
ZCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg4OSwgMHg4MCwgMHg4MCwgMHg4MCwg
MHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhmYiwgMHgwYiwgMHgwMCwgMHgw
YiwgMHg4YiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyMCwg
MHgwMSwgMHgyMCwgMHgwMiwgMHhmYiwgMHgwZSwgMHgwMCwgMHgwYiwgMHg4OSwgMHg4MCwgMHg4
MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwNywgMHgyMCwgMHgwMCwgMHhmYiwgMHgwNiwg
MHgwMCwgMHgwYl07CisKKy8vIOKUgOKUgOKUgCBpOCB0ZXN0cyDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIAKK3sKKyAgICBjb25zdCB7IGdldFUsIGdldFMsIHNldEF0LCBhbGxvYyB9ID0gbWFrZUlu
c3RhbmNlKEk4KS5leHBvcnRzOworICAgIGNvbnN0IGFyciA9IGFsbG9jKDE2KTsKKworICAgIC8v
IHJhdyBieXRlIHZhbHVlIOKGkiAoZXhwZWN0ZWRfdSwgZXhwZWN0ZWRfcykKKyAgICBjb25zdCBD
QVNFUyA9IFsKKyAgICAgICAgWzAsICAgMCwgICAgMF0sCisgICAgICAgIFsxLCAgIDEsICAgIDFd
LAorICAgICAgICBbMTI3LCAxMjcsICAxMjddLAorICAgICAgICBbMTI4LCAxMjgsIC0xMjhdLAor
ICAgICAgICBbMjAwLCAyMDAsICAtNTZdLAorICAgICAgICBbMjU1LCAyNTUsICAgLTFdLAorICAg
IF07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykgeworICAgICAgICBjb25zdCBb
cmF3LCBleHBlY3RVLCBleHBlY3RTXSA9IENBU0VTW2kgJSBDQVNFUy5sZW5ndGhdOworICAgICAg
ICBjb25zdCBpZHggPSBpICUgMTY7CisKKyAgICAgICAgc2V0QXQoYXJyLCBpZHgsIHJhdyk7CisK
KyAgICAgICAgY29uc3QgdSA9IGdldFUoYXJyLCBpZHgpOworICAgICAgICBpZiAodSAhPT0gZXhw
ZWN0VSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaTggZ2V0VShyYXc9JHtyYXd9KTog
ZXhwZWN0ZWQgJHtleHBlY3RVfSwgZ290ICR7dX1gKTsKKworICAgICAgICBjb25zdCBzID0gZ2V0
UyhhcnIsIGlkeCk7CisgICAgICAgIGlmIChzICE9PSBleHBlY3RTKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBpOCBnZXRTKHJhdz0ke3Jhd30pOiBleHBlY3RlZCAke2V4cGVjdFN9LCBn
b3QgJHtzfWApOworICAgIH0KK30KKworLy8g4pSA4pSA4pSAIGkxNiB0ZXN0cyDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIAKK3sKKyAgICBjb25zdCB7IGdldFUsIGdldFMsIHNldEF0LCBhbGxvYyB9ID0g
bWFrZUluc3RhbmNlKEkxNikuZXhwb3J0czsKKyAgICBjb25zdCBhcnIgPSBhbGxvYygxNik7CisK
KyAgICBjb25zdCBDQVNFUyA9IFsKKyAgICAgICAgWzAsICAgICAwLCAgICAgMF0sCisgICAgICAg
IFsxLCAgICAgMSwgICAgIDFdLAorICAgICAgICBbMzI3NjcsIDMyNzY3LCAgMzI3NjddLAorICAg
ICAgICBbMzI3NjgsIDMyNzY4LCAtMzI3NjhdLAorICAgICAgICBbNTAwMDAsIDUwMDAwLCAtMTU1
MzZdLAorICAgICAgICBbNjU1MzUsIDY1NTM1LCAgICAgLTFdLAorICAgIF07CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IE47IGkrKykgeworICAgICAgICBjb25zdCBbcmF3LCBleHBlY3RVLCBl
eHBlY3RTXSA9IENBU0VTW2kgJSBDQVNFUy5sZW5ndGhdOworICAgICAgICBjb25zdCBpZHggPSBp
ICUgMTY7CisKKyAgICAgICAgc2V0QXQoYXJyLCBpZHgsIHJhdyk7CisKKyAgICAgICAgY29uc3Qg
dSA9IGdldFUoYXJyLCBpZHgpOworICAgICAgICBpZiAodSAhPT0gZXhwZWN0VSkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgaTE2IGdldFUocmF3PSR7cmF3fSk6IGV4cGVjdGVkICR7ZXhw
ZWN0VX0sIGdvdCAke3V9YCk7CisKKyAgICAgICAgY29uc3QgcyA9IGdldFMoYXJyLCBpZHgpOwor
ICAgICAgICBpZiAocyAhPT0gZXhwZWN0UykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
aTE2IGdldFMocmF3PSR7cmF3fSk6IGV4cGVjdGVkICR7ZXhwZWN0U30sIGdvdCAke3N9YCk7Cisg
ICAgfQorfQorCisvLyDilIDilIDilIAgT3V0LW9mLWJvdW5kcyAvIG51bGwgdHJhcCDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIAKK3sKKyAgICBjb25zdCB7IGdldCwgc2V0LCBhbGxvYyB9
ID0gbWFrZUluc3RhbmNlKEJPVU5EUykuZXhwb3J0czsKKyAgICBjb25zdCBhcnIgPSBhbGxvYyg1
KTsKKworICAgIC8vIFdhcm0gdXAgaW4tYm91bmRzICh0cmlnZ2VycyBPTUcpLgorICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgIGNvbnN0IHIgPSBnZXQoYXJyLCBpICUg
NSk7CisgICAgICAgIGlmIChyICE9PSA3KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
b3VuZHMgaW4tYm91bmRzOiBleHBlY3RlZCA3LCBnb3QgJHtyfWApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG11c3RUaHJvdyhmbiwgbGFiZWwpIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgICAgIHRyeSB7IGZuKCk7IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgJHtsYWJlbH06IGV4cGVjdGVkIFJ1bnRpbWVFcnJvciwgZ290ICR7ZX1g
KTsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXRo
cmV3KSB0aHJvdyBuZXcgRXJyb3IoYCR7bGFiZWx9OiBleHBlY3RlZCBleGNlcHRpb24gYnV0IG5v
bmUgdGhyb3duYCk7CisgICAgfQorCisgICAgLy8gT09CIGdldCBtdXN0IHRyYXAuCisgICAgbXVz
dFRocm93KCgpID0+IGdldChhcnIsIDUpLCAiT09CIGdldFs1XSIpOworICAgIG11c3RUaHJvdygo
KSA9PiBnZXQoYXJyLCAtMSksICJPT0IgZ2V0Wy0xXSIpOworCisgICAgLy8gT09CIHNldCBtdXN0
IHRyYXAuCisgICAgbXVzdFRocm93KCgpID0+IHNldChhcnIsIDUsIDApLCAiT09CIHNldFs1XSIp
OworCisgICAgLy8gTnVsbCByZWZlcmVuY2UgbXVzdCB0cmFwLgorICAgIG11c3RUaHJvdygoKSA9
PiBnZXQobnVsbCwgMCksICJudWxsIGdldCIpOworICAgIG11c3RUaHJvdygoKSA9PiBzZXQobnVs
bCwgMCwgMCksICJudWxsIHNldCIpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>