<?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>249087</bug_id>
          
          <creation_ts>2022-12-10 23:52:58 -0800</creation_ts>
          <short_desc>REGRESSION(257597@main): failing in AppleSilicon JSC tests</short_desc>
          <delta_ts>2022-12-10 23:57:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>247576</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>tjc</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1918249</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-12-10 23:52:58 -0800</bug_when>
    <thetext>https://commits.webkit.org/257597@main introduced a regression:
failing in AppleSilicon JSC tests

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>1918251</commentid>
    <comment_count>1</comment_count>
      <attachid>463982</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-12-10 23:53:04 -0800</bug_when>
    <thetext>Created attachment 463982
REVERT of 257597@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>1918252</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-12-10 23:56:54 -0800</bug_when>
    <thetext>Committed 257697@main (7c2e07e77bff): &lt;https://commits.webkit.org/257697@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463982.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1918253</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-12-10 23:57:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/103222640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463982</attachid>
            <date>2022-12-10 23:53:04 -0800</date>
            <delta_ts>2022-12-10 23:56:54 -0800</delta_ts>
            <desc>REVERT of 257597@main</desc>
            <filename>bug-249087-20221210235303.patch</filename>
            <type>text/plain</type>
            <size>91039</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA0OWYxODdlN2ExNzNjYWI3MjZhZGQzOTA0NzE2MzY3ZTE0MjRmOTI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTYXQsIDEwIERlYyAyMDIyIDIzOjUzOjAxIC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTc1OTdAbWFpbi4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDkwODcKCmZhaWxpbmcgaW4gQXBwbGVTaWxpY29uIEpTQyB0
ZXN0cwoKUmV2ZXJ0ZWQgY2hhbmdlc2V0OgoKIltXYXNtLUdDXSBJbXBsZW1lbnQgcGFja2VkIHR5
cGVzIGluIGFycmF5cyIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
NzU3NgpodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yNTc1OTdAbWFpbgotLS0KIC4uLi9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgICB8ICAxNiAtCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtICAgfCAgIDIgLQogLi4uL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcCAgICAgICAgICAgICAgIHwgIDQ1ICstCiAuLi4vSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgfCAgNzYgKy0tCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggICAgICAgfCAgMzUgKy0KIC4uLi9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oICB8ICA2NyArLS0KIC4uLi93YXNtL1dhc21M
TEludEdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAyMiArLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIHwgIDQ4ICstCiAuLi4vSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgfCAgNDMgKy0KIC4uLi9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmggICB8ICAgMiAtCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCAgfCAgMzUgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TbG93UGF0aHMuaCAgICB8ICAgMiAtCiAuLi4vd2FzbS9XYXNtVHlwZURlZmlu
aXRpb24uY3BwICAgICAgICAgICAgICAgfCAgMzAgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UeXBlRGVmaW5pdGlvbi5oICB8IDEwNCArLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9nZW5lcmF0ZVdhc20ucHkgICAgfCAgIDEgLQogLi4uL3dhc20vZ2VuZXJhdGVXYXNtT3Bz
SGVhZGVyLnB5ICAgICAgICAgICAgIHwgIDQyIC0tCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5
QXJyYXkuY3BwICAgICAgICAgICAgfCAgMzcgKy0KIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlB
cnJheS5oICAgICAgICAgICAgICB8ICA1MiArLQogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseVN0
cnVjdC5jcHAgICAgICAgICAgIHwgIDE0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93
YXNtLmpzb24gICAgICAgICAgfCAgIDYgLQogSlNUZXN0cy93YXNtL2djL2FycmF5cy5qcyAgICAg
ICAgICAgICAgICAgICAgIHwgICAyICstCiBKU1Rlc3RzL3dhc20vZ2MvcGFja2VkLWFycmF5cy5q
cyAgICAgICAgICAgICAgfCA0NzQgLS0tLS0tLS0tLS0tLS0tLS0tCiBKU1Rlc3RzL3dhc20vd2Fz
bS5qc29uICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgLQogMjMgZmlsZXMgY2hhbmdlZCwg
MTExIGluc2VydGlvbnMoKyksIDEwNTAgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg
SlNUZXN0cy93YXNtL2djL3BhY2tlZC1hcnJheXMuanMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCA2Y2JiMjc3ZGE3M2EuLjVlOTU1ZTEx
OGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC0xOTUxLDIyICsxOTUxLDYgQEAgb3AgOmFycmF5X2dldCwKICAgICAgICAgdHlwZUlu
ZGV4OiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDphcnJheV9nZXRfcywKLSAgICBhcmdzOiB7Ci0g
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcnJheXJlZjogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICBpbmRleDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0eXBlSW5k
ZXg6IHVuc2lnbmVkLAotICAgIH0KLQotb3AgOmFycmF5X2dldF91LAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFycmF5cmVmOiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIGluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHR5cGVJbmRl
eDogdW5zaWduZWQsCi0gICAgfQotCiBvcCA6YXJyYXlfc2V0LAogICAgIGFyZ3M6IHsKICAgICAg
ICAgYXJyYXlyZWY6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDYzNmU0N2UwYzZkZS4uOGNhYjQ4NjY2OTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTg0Niw4ICs4
NDYsNiBAQCBzbG93V2FzbU9wKG1lbW9yeV9hdG9taWNfbm90aWZ5KQogc2xvd1dhc21PcChhcnJh
eV9uZXcpCiBzbG93V2FzbU9wKGFycmF5X25ld19kZWZhdWx0KQogc2xvd1dhc21PcChhcnJheV9n
ZXQpCi1zbG93V2FzbU9wKGFycmF5X2dldF9zKQotc2xvd1dhc21PcChhcnJheV9nZXRfdSkKIHNs
b3dXYXNtT3AoYXJyYXlfc2V0KQogc2xvd1dhc21PcChzdHJ1Y3RfbmV3KQogc2xvd1dhc21PcChz
dHJ1Y3RfZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKaW5kZXggYTQ5NjNlYmZlZWEzLi41ODM3MTZhYzBiMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMzk1
LDcgKzM5NSw3IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRJMzFHZXRVKEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJyYXlOZXcodWludDMy
X3QgdHlwZUluZGV4LCBFeHByZXNzaW9uVHlwZSBzaXplLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkQXJyYXlOZXdEZWZhdWx0KHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSBz
aXplLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRBcnJheUdldChHQ09wVHlwZSBhcnJheUdldEtpbmQsIHVpbnQzMl90IHR5
cGVJbmRleCwgRXhwcmVzc2lvblR5cGUgYXJyYXlyZWYsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRBcnJheUdldCh1aW50MzJfdCB0eXBlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGFycmF5
cmVmLCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJyYXlTZXQodWludDMyX3QgdHlw
ZUluZGV4LCBFeHByZXNzaW9uVHlwZSBhcnJheXJlZiwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4
cHJlc3Npb25UeXBlIHZhbHVlKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRBcnJheUxlbihFeHByZXNzaW9uVHlwZSBhcnJheXJlZiwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3
KHVpbnQzMl90IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKQEAgLTM2NjgsMTEgKzM2NjgsMTEgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkQXJyYXlOZXdEZWZhdWx0KHVpbnQzMl90IHR5cGVJbmRleCwgRXhwcmVzc2lvblR5cGUg
c2l6ZSwKIHsKICAgICBXYXNtOjpUeXBlRGVmaW5pdGlvbiYgYXJyYXlTaWduYXR1cmUgPSBtX2lu
Zm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XTsKICAgICBBU1NFUlQoYXJyYXlTaWduYXR1cmUu
aXM8QXJyYXlUeXBlPigpKTsKLSAgICBjb25zdCBTdG9yYWdlVHlwZSYgZWxlbWVudFR5cGUgPSBh
cnJheVNpZ25hdHVyZS5hczxBcnJheVR5cGU+KCktPmVsZW1lbnRUeXBlKCkudHlwZTsKKyAgICBX
YXNtOjpUeXBlIGVsZW1lbnRUeXBlID0gYXJyYXlTaWduYXR1cmUuYXM8QXJyYXlUeXBlPigpLT5l
bGVtZW50VHlwZSgpLnR5cGU7CiAKICAgICBUeXBlZFRtcCB0bXBGb3JWYWx1ZTsKICAgICBpZiAo
V2FzbTo6aXNSZWZUeXBlKGVsZW1lbnRUeXBlKSkgewotICAgICAgICB0bXBGb3JWYWx1ZSA9IGdS
ZWYoKmVsZW1lbnRUeXBlLmFzPFR5cGU+KCkpOworICAgICAgICB0bXBGb3JWYWx1ZSA9IGdSZWYo
ZWxlbWVudFR5cGUpOwogICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0oSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKSksIHRtcEZvclZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAgICB0
bXBGb3JWYWx1ZSA9IGc2NCgpOwpAQCAtMzY4NywxNCArMzY4NywxMSBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRBcnJheU5ld0RlZmF1bHQodWludDMyX3QgdHlwZUluZGV4LCBFeHByZXNzaW9u
VHlwZSBzaXplLAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZEFycmF5R2V0KEdDT3BUeXBlIGFycmF5R2V0S2luZCwgdWludDMyX3QgdHlwZUluZGV4LCBFeHBy
ZXNzaW9uVHlwZSBhcnJheXJlZiwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZEFycmF5
R2V0KHVpbnQzMl90IHR5cGVJbmRleCwgRXhwcmVzc2lvblR5cGUgYXJyYXlyZWYsIEV4cHJlc3Np
b25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7
Ci0gICAgQVNTRVJUKGFycmF5R2V0S2luZCA9PSBHQ09wVHlwZTo6QXJyYXlHZXQgfHwgYXJyYXlH
ZXRLaW5kID09IEdDT3BUeXBlOjpBcnJheUdldFMgfHwgYXJyYXlHZXRLaW5kID09IEdDT3BUeXBl
OjpBcnJheUdldFUpOwotCiAgICAgV2FzbTo6VHlwZURlZmluaXRpb24mIGFycmF5U2lnbmF0dXJl
ID0gbV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJbmRleF07CiAgICAgQVNTRVJUKGFycmF5U2ln
bmF0dXJlLmlzPEFycmF5VHlwZT4oKSk7Ci0gICAgV2FzbTo6U3RvcmFnZVR5cGUgZWxlbWVudFR5
cGUgPSBhcnJheVNpZ25hdHVyZS5hczxBcnJheVR5cGU+KCktPmVsZW1lbnRUeXBlKCkudHlwZTsK
LSAgICBXYXNtOjpUeXBlIHJlc3VsdFR5cGUgPSBlbGVtZW50VHlwZS51bnBhY2tlZCgpOworICAg
IFdhc206OlR5cGUgZWxlbWVudFR5cGUgPSBhcnJheVNpZ25hdHVyZS5hczxBcnJheVR5cGU+KCkt
PmVsZW1lbnRUeXBlKCkudHlwZTsKIAogICAgIC8vIEVuc3VyZSBhcnJheXJlZiBpcyBub24tbnVs
bC4KICAgICBhdXRvIHRtcEZvck51bGwgPSBnNjQoKTsKQEAgLTM3MTksMjcgKzM3MTYsMTAgQEAg
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQXJyYXlHZXQoR0NPcFR5cGUgYXJyYXlHZXRLaW5kLCB1
aW50MzJfdCB0eXBlSW5kZXgsIEV4cHIKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQ1NDA1CiAgICAgZW1pdENDYWxsKCZvcGVyYXRpb25XYXNtQXJyYXlH
ZXQsIGdldFZhbHVlLCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGVzOjpJMzIsIHR5
cGVJbmRleCksIGFycmF5cmVmLCBpbmRleCk7CiAKLSAgICBzd2l0Y2ggKHJlc3VsdFR5cGUua2lu
ZCkgeworICAgIHN3aXRjaCAoZWxlbWVudFR5cGUua2luZCkgewogICAgIGNhc2UgVHlwZUtpbmQ6
OkkzMjoKICAgICAgICAgcmVzdWx0ID0gZzMyKCk7CiAgICAgICAgIGFwcGVuZChNb3ZlMzIsIGdl
dFZhbHVlLCByZXN1bHQpOwotICAgICAgICBzd2l0Y2ggKGFycmF5R2V0S2luZCkgewotICAgICAg
ICBjYXNlIEdDT3BUeXBlOjpBcnJheUdldDoKLSAgICAgICAgY2FzZSBHQ09wVHlwZTo6QXJyYXlH
ZXRVOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5R2V0
UzogewotICAgICAgICAgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gKmVsZW1lbnRUeXBlLmFzPFBh
Y2tlZFR5cGU+KCkgPT0gUGFja2VkVHlwZTo6STggPyBzaXplb2YodWludDhfdCkgOiBzaXplb2Yo
dWludDE2X3QpOwotICAgICAgICAgICAgdWludDhfdCBiaXRTaGlmdCA9IChzaXplb2YodWludDMy
X3QpIC0gZWxlbWVudFNpemUpICogODsKLSAgICAgICAgICAgIGF1dG8gdG1wRm9yU2hpZnQgPSBn
MzIoKTsKLSAgICAgICAgICAgIGFwcGVuZChNb3ZlMzIsIEFyZzo6aW1tKGJpdFNoaWZ0KSwgdG1w
Rm9yU2hpZnQpOwotICAgICAgICAgICAgYWRkU2hpZnQoVHlwZXM6OkkzMiwgTHNoaWZ0MzIsIHJl
c3VsdCwgdG1wRm9yU2hpZnQsIHJlc3VsdCk7Ci0gICAgICAgICAgICBhZGRTaGlmdChUeXBlczo6
STMyLCBSc2hpZnQzMiwgcmVzdWx0LCB0bXBGb3JTaGlmdCwgcmVzdWx0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAgIHJlc3Vs
dCA9IGYzMigpOwpAQCAtMzc1NCw3ICszNzM0LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
QXJyYXlHZXQoR0NPcFR5cGUgYXJyYXlHZXRLaW5kLCB1aW50MzJfdCB0eXBlSW5kZXgsIEV4cHIK
ICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAg
ICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgotICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKHJl
c3VsdFR5cGUpOworICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKGVsZW1lbnRUeXBlKTsKICAg
ICAgICAgYXBwZW5kKE1vdmUsIGdldFZhbHVlLCByZXN1bHQpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgpAQCAtMzg1NywxMSArMzgzNyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFN0cnVjdEdldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIGNvbnN0IFN0cnVjdFR5
CiAgICAgdWludDMyX3QgZmllbGRPZmZzZXQgPSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBheWxv
YWQsICpzdHJ1Y3RUeXBlLmdldEZpZWxkT2Zmc2V0KGZpZWxkSW5kZXgpKTsKICAgICBBcmcgYWRk
ckFyZyA9IEFyZzo6YWRkcihwYXlsb2FkLCBmaWVsZE9mZnNldCk7CiAKLSAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk4MQotICAgIEFTU0VS
VChzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGUuaXM8VHlwZT4oKSk7Ci0KLSAgICBU
eXBlIGZpZWxkVHlwZSA9ICpzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGUuYXM8VHlw
ZT4oKTsKLQorICAgIGNvbnN0IGF1dG8mIGZpZWxkVHlwZSA9IHN0cnVjdFR5cGUuZmllbGQoZmll
bGRJbmRleCkudHlwZTsKICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKGZpZWxkVHlwZSk7CiAgICAg
c3dpdGNoIChmaWVsZFR5cGUua2luZCkgewogICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjogewpAQCAt
Mzg5NywxMCArMzg3Myw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChFeHBy
ZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIGNvbnN0IFN0cnVjdFR5CiAgICAgdWludDMyX3Qg
ZmllbGRPZmZzZXQgPSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBheWxvYWQsICpzdHJ1Y3RUeXBl
LmdldEZpZWxkT2Zmc2V0KGZpZWxkSW5kZXgpKTsKICAgICBBcmcgYWRkckFyZyA9IEFyZzo6YWRk
cihwYXlsb2FkLCBmaWVsZE9mZnNldCk7CiAKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk4MQotICAgIEFTU0VSVChzdHJ1Y3RUeXBlLmZp
ZWxkKGZpZWxkSW5kZXgpLnR5cGUuaXM8VHlwZT4oKSk7Ci0KLSAgICBUeXBlIGZpZWxkVHlwZSA9
ICpzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGUuYXM8VHlwZT4oKTsKKyAgICBjb25z
dCBhdXRvJiBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7CiAg
ICAgc3dpdGNoIChmaWVsZFR5cGUua2luZCkgewogICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKICAg
ICAgICAgYXBwZW5kKE1vdmUzMiwgdmFsdWUsIGFkZHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDc2MjgxODM5NWE3OC4u
MDAzNjQ3Y2RjZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgcHVibGljOgogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEkzMUdldFUoRXhwcmVzc2lvblR5cGUgcmVmLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRBcnJheU5ldyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgc2l6ZSwgRXhw
cmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEFycmF5TmV3RGVmYXVsdCh1aW50MzJfdCBpbmRl
eCwgRXhwcmVzc2lvblR5cGUgc2l6ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJyYXlHZXQoR0NPcFR5cGUgYXJyYXlH
ZXRLaW5kLCB1aW50MzJfdCB0eXBlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGFycmF5cmVmLCBFeHBy
ZXNzaW9uVHlwZSBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJyYXlHZXQodWludDMyX3QgdHlwZUluZGV4LCBF
eHByZXNzaW9uVHlwZSBhcnJheXJlZiwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEFy
cmF5U2V0KHVpbnQzMl90IHR5cGVJbmRleCwgRXhwcmVzc2lvblR5cGUgYXJyYXlyZWYsIEV4cHJl
c3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJyYXlMZW4oRXhwcmVzc2lvblR5cGUgYXJyYXlyZWYs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZFN0cnVjdE5ldyh1aW50MzJfdCB0eXBlSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtNDYyLDcgKzQ2Miw2IEBA
IHByaXZhdGU6CiAgICAgVmFsdWUqIGVtaXRBdG9taWNDb21wYXJlRXhjaGFuZ2UoRXh0QXRvbWlj
T3BUeXBlLCBUeXBlLCBWYWx1ZSogcG9pbnRlciwgVmFsdWUqIGV4cGVjdGVkLCBWYWx1ZSosIHVp
bnQzMl90IG9mZnNldCk7CiAKICAgICB2b2lkIGVtaXRTdHJ1Y3RTZXQoVmFsdWUqLCB1aW50MzJf
dCwgY29uc3QgU3RydWN0VHlwZSYsIEV4cHJlc3Npb25UeXBlJik7Ci0gICAgRXhwcmVzc2lvblR5
cGUgV0FSTl9VTlVTRURfUkVUVVJOIHB1c2hBcnJheU5ldyh1aW50MzJfdCB0eXBlSW5kZXgsIFZh
bHVlKiBpbml0VmFsdWUsIEV4cHJlc3Npb25UeXBlIHNpemUpOwogCiAgICAgdm9pZCB1bmlmeShW
YWx1ZSogcGhpLCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpOwogICAgIHZvaWQgdW5pZnlW
YWx1ZXNXaXRoQmxvY2soY29uc3QgU3RhY2smIHJlc3VsdFN0YWNrLCBjb25zdCBDb250cm9sRGF0
YSYgYmxvY2spOwpAQCAtMjA4MiwxMSArMjA4MSw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1p
dFN0cnVjdFNldChWYWx1ZSogc3RydWN0VmFsdWUsIHVpbnQzMl90IGZpZWxkSW5kZXgsIGNvbnN0
CiB7CiAgICAgVmFsdWUqIHBheWxvYWRCYXNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBtZW1vcnlLaW5kKExvYWQpLCBJbnQ2NCwgb3JpZ2luKCksIHN0
cnVjdFZhbHVlLCBKU1dlYkFzc2VtYmx5U3RydWN0OjpvZmZzZXRPZlBheWxvYWQoKSk7CiAgICAg
aW50MzJfdCBmaWVsZE9mZnNldCA9IGZpeHVwUG9pbnRlclBsdXNPZmZzZXQocGF5bG9hZEJhc2Us
ICpzdHJ1Y3RUeXBlLmdldEZpZWxkT2Zmc2V0KGZpZWxkSW5kZXgpKTsKLQotICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTgxCi0gICAgQVNT
RVJUKHN0cnVjdFR5cGUuZmllbGQoZmllbGRJbmRleCkudHlwZS5pczxUeXBlPigpKTsKLQotICAg
IFR5cGUgZmllbGRUeXBlID0gKnN0cnVjdFR5cGUuZmllbGQoZmllbGRJbmRleCkudHlwZS5hczxU
eXBlPigpOworICAgIGNvbnN0IGF1dG8mIGZpZWxkVHlwZSA9IHN0cnVjdFR5cGUuZmllbGQoZmll
bGRJbmRleCkudHlwZTsKICAgICBzd2l0Y2ggKGZpZWxkVHlwZS5raW5kKSB7CiAgICAgY2FzZSBU
eXBlS2luZDo6STMyOgogICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CkBAIC0yMzk1LDIzICsy
MzkwLDEzIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkSTMxR2V0VShFeHByZXNzaW9uVHlwZSBy
ZWYsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
VmFyaWFibGUqIEIzSVJHZW5lcmF0b3I6OnB1c2hBcnJheU5ldyh1aW50MzJfdCB0eXBlSW5kZXgs
IFZhbHVlKiBpbml0VmFsdWUsIEV4cHJlc3Npb25UeXBlIHNpemUpCi17Ci0gICAgLy8gRklYTUU6
IEVtaXQgdGhpcyBpbmxpbmUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0NTQwNQotICAgIHJldHVybiBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShUeXBlczo6QXJyYXlyZWYpLCBvcmlnaW4o
KSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNt
QXJyYXlOZXcpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHlwZUluZGV4KSwKLSAgICAg
ICAgZ2V0KHNpemUpLCBpbml0VmFsdWUpKTsKLX0KLQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRB
cnJheU5ldyh1aW50MzJfdCB0eXBlSW5kZXgsIEV4cHJlc3Npb25UeXBlIHNpemUsIEV4cHJlc3Np
b25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBXYXNtOjpUeXBlRGVmaW5pdGlvbiYgYXJyYXlTaWdu
YXR1cmUgPSBtX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XTsKICAgICBBU1NFUlQoYXJy
YXlTaWduYXR1cmUuaXM8QXJyYXlUeXBlPigpKTsKLSAgICBjb25zdCBTdG9yYWdlVHlwZSYgZWxl
bWVudFR5cGUgPSBhcnJheVNpZ25hdHVyZS5hczxBcnJheVR5cGU+KCktPmVsZW1lbnRUeXBlKCku
dHlwZTsKLSAgICBBU1NFUlQodG9CM1R5cGUoZWxlbWVudFR5cGUudW5wYWNrZWQoKSkgPT0gdmFs
dWUtPnR5cGUoKSk7CisgICAgV2FzbTo6VHlwZSBlbGVtZW50VHlwZSA9IGFycmF5U2lnbmF0dXJl
LmFzPEFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKS50eXBlOworICAgIEFTU0VSVCh0b0IzVHlw
ZShlbGVtZW50VHlwZSkgPT0gdmFsdWUtPnR5cGUoKSk7CiAjZW5kaWYKIAogICAgIFZhbHVlKiBp
bml0VmFsdWUgPSBnZXQodmFsdWUpOwpAQCAtMjQyNCwzMyArMjQwOSw0NCBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEFycmF5TmV3KHVpbnQzMl90IHR5cGVJbmRleCwgRXhwcmVzc2lvblR5cGUg
c2l6ZSwgRXhwcmVzcwogICAgICAgICBpbml0VmFsdWUgPSBwYXRjaHBvaW50OwogICAgIH0KIAot
ICAgIHJlc3VsdCA9IHB1c2hBcnJheU5ldyh0eXBlSW5kZXgsIGluaXRWYWx1ZSwgc2l6ZSk7Cisg
ICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NTQwNQorICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKFR5cGVzOjpBcnJh
eXJlZiksIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbldhc21BcnJheU5ldykpLAorICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0eXBl
SW5kZXgpLAorICAgICAgICBnZXQoc2l6ZSksIGluaXRWYWx1ZSkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRBcnJheU5ld0RlZmF1bHQodWludDMyX3Qg
dHlwZUluZGV4LCBFeHByZXNzaW9uVHlwZSBzaXplLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAt
PiBQYXJ0aWFsUmVzdWx0CiB7CisgICAgLy8gRklYTUU6IEFic3RyYWN0IGFuZCBnZW5lcmFsaXpl
IHdpdGggYWRkQXJyYXlOZXcuCiAgICAgV2FzbTo6VHlwZURlZmluaXRpb24mIGFycmF5U2lnbmF0
dXJlID0gbV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJbmRleF07CiAgICAgQVNTRVJUKGFycmF5
U2lnbmF0dXJlLmlzPEFycmF5VHlwZT4oKSk7CisgICAgV2FzbTo6VHlwZSBlbGVtZW50VHlwZSA9
IGFycmF5U2lnbmF0dXJlLmFzPEFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKS50eXBlOwogCiAg
ICAgVmFsdWUqIGluaXRWYWx1ZTsKLSAgICBpZiAoV2FzbTo6aXNSZWZUeXBlKGFycmF5U2lnbmF0
dXJlLmFzPEFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKS50eXBlKSkKKyAgICBpZiAoV2FzbTo6
aXNSZWZUeXBlKGVsZW1lbnRUeXBlKSkKICAgICAgICAgaW5pdFZhbHVlID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIEpTVmFsdWU6OmVu
Y29kZShqc051bGwoKSkpOwogICAgIGVsc2UKICAgICAgICAgaW5pdFZhbHVlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApOwogCi0g
ICAgcmVzdWx0ID0gcHVzaEFycmF5TmV3KHR5cGVJbmRleCwgaW5pdFZhbHVlLCBzaXplKTsKKyAg
ICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1NDA1CisgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5cGUoVHlwZXM6OkFycmF5
cmVmKSwgb3JpZ2luKCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uV2FzbUFycmF5TmV3KSksCisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHR5cGVJ
bmRleCksCisgICAgICAgIGdldChzaXplKSwgaW5pdFZhbHVlKSk7CiAKICAgICByZXR1cm4geyB9
OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEFycmF5R2V0KEdDT3BUeXBlIGFycmF5R2V0
S2luZCwgdWludDMyX3QgdHlwZUluZGV4LCBFeHByZXNzaW9uVHlwZSBhcnJheXJlZiwgRXhwcmVz
c2lvblR5cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQK
K2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQXJyYXlHZXQodWludDMyX3QgdHlwZUluZGV4LCBFeHBy
ZXNzaW9uVHlwZSBhcnJheXJlZiwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBXYXNtOjpUeXBlRGVmaW5pdGlvbiYg
YXJyYXlTaWduYXR1cmUgPSBtX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XTsKICAgICBB
U1NFUlQoYXJyYXlTaWduYXR1cmUuaXM8QXJyYXlUeXBlPigpKTsKLSAgICBXYXNtOjpTdG9yYWdl
VHlwZSBlbGVtZW50VHlwZSA9IGFycmF5U2lnbmF0dXJlLmFzPEFycmF5VHlwZT4oKS0+ZWxlbWVu
dFR5cGUoKS50eXBlOwotICAgIFdhc206OlR5cGUgcmVzdWx0VHlwZSA9IGVsZW1lbnRUeXBlLnVu
cGFja2VkKCk7CisgICAgV2FzbTo6VHlwZSBlbGVtZW50VHlwZSA9IGFycmF5U2lnbmF0dXJlLmFz
PEFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKS50eXBlOwogCiAgICAgLy8gRW5zdXJlIGFycmF5
cmVmIGlzIG5vbi1udWxsLgogICAgIHsKQEAgLTI0NzksMTAgKzI0NzUsMTAgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRBcnJheUdldChHQ09wVHlwZSBhcnJheUdldEtpbmQsIHVpbnQzMl90IHR5
cGVJbmRleCwgRXhwcmUKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHlwZUluZGV4KSwKICAg
ICAgICAgZ2V0KGFycmF5cmVmKSwgZ2V0KGluZGV4KSk7CiAKLSAgICBzd2l0Y2ggKHRvQjNUeXBl
KHJlc3VsdFR5cGUpLmtpbmQoKSkgeworICAgIHN3aXRjaCAodG9CM1R5cGUoZWxlbWVudFR5cGUp
LmtpbmQoKSkgewogICAgIGNhc2UgQjM6OkZsb2F0OgogICAgIGNhc2UgQjM6OkRvdWJsZTogewot
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShyZXN1bHRUeXBlKSwgb3Jp
Z2luKCkpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShlbGVtZW50
VHlwZSksIG9yaWdpbigpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVy
KGFycmF5UmVzdWx0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNb
MF0uZnByKCkpOwpAQCAtMjQ5MSwyOCArMjQ4NywxMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZEFycmF5R2V0KEdDT3BUeXBlIGFycmF5R2V0S2luZCwgdWludDMyX3QgdHlwZUluZGV4LCBFeHBy
ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBCMzo6SW50MzI6IHsKLSAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KG1fcHJvYywgdG9CM1R5cGUocmVzdWx0VHlwZSksIG9yaWdpbigpKTsK
KyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgdG9CM1R5cGUoZWxlbWVudFR5cGUpLCBv
cmlnaW4oKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcnJheVJl
c3VsdCk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAg
ICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwogICAgICAg
ICB9KTsKLSAgICAgICAgVmFsdWUqIHBvc3RQcm9jZXNzID0gcGF0Y2hwb2ludDsKLSAgICAgICAg
c3dpdGNoIChhcnJheUdldEtpbmQpIHsKLSAgICAgICAgY2FzZSBHQ09wVHlwZTo6QXJyYXlHZXQ6
Ci0gICAgICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5R2V0VToKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEdDT3BUeXBlOjpBcnJheUdldFM6IHsKLSAgICAgICAgICAgIHNpemVfdCBl
bGVtZW50U2l6ZSA9ICplbGVtZW50VHlwZS5hczxQYWNrZWRUeXBlPigpID09IFBhY2tlZFR5cGU6
Okk4ID8gc2l6ZW9mKHVpbnQ4X3QpIDogc2l6ZW9mKHVpbnQxNl90KTsKLSAgICAgICAgICAgIHVp
bnQ4X3QgYml0U2hpZnQgPSAoc2l6ZW9mKHVpbnQzMl90KSAtIGVsZW1lbnRTaXplKSAqIDg7Ci0g
ICAgICAgICAgICBWYWx1ZSogc2hpZnRMZWZ0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBCMzo6U2hsLCBvcmlnaW4oKSwgcGF0Y2hwb2ludCwgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGJpdFNoaWZ0KSk7
Ci0gICAgICAgICAgICBwb3N0UHJvY2VzcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgQjM6OlNTaHIsIG9yaWdpbigpLCBzaGlmdExlZnQsIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBiaXRTaGlmdCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4geyB9
OwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IHB1c2gocG9zdFByb2Nlc3MpOworICAgICAg
ICByZXN1bHQgPSBwdXNoKHBhdGNocG9pbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBCMzo6SW50NjQ6CkBAIC0yNjEzLDExICsyNTkzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRTdHJ1Y3RHZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCBjb25zdCBTdHJ1
Y3RUeXAKIHsKICAgICBWYWx1ZSogcGF5bG9hZEJhc2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQoTG9hZCksIHBvaW50ZXJUeXBlKCks
IG9yaWdpbigpLCBnZXQoc3RydWN0UmVmZXJlbmNlKSwgSlNXZWJBc3NlbWJseVN0cnVjdDo6b2Zm
c2V0T2ZQYXlsb2FkKCkpOwogICAgIGludDMyX3QgZmllbGRPZmZzZXQgPSBmaXh1cFBvaW50ZXJQ
bHVzT2Zmc2V0KHBheWxvYWRCYXNlLCAqc3RydWN0VHlwZS5nZXRGaWVsZE9mZnNldChmaWVsZElu
ZGV4KSk7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0Njk4MQotICAgIEFTU0VSVChzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5
cGUuaXM8VHlwZT4oKSk7Ci0KLSAgICBzd2l0Y2ggKHN0cnVjdFR5cGUuZmllbGQoZmllbGRJbmRl
eCkudHlwZS5hczxUeXBlPigpLT5raW5kKSB7CisgICAgc3dpdGNoIChzdHJ1Y3RUeXBlLmZpZWxk
KGZpZWxkSW5kZXgpLnR5cGUua2luZCkgewogICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKICAgICAg
ICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIG1lbW9yeUtpbmQoTG9hZCksIEludDMyLCBvcmlnaW4oKSwgcGF5bG9hZEJhc2UsIGZp
ZWxkT2Zmc2V0KSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5oCmluZGV4IGU3ODJlZmM3NDViYy4uNzhjOTAwOTRiNDcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0xMDQsMTQgKzEwNCw2IEBAIGlubGluZSBi
b29sIGlzUmVmVHlwZShUeXBlIHR5cGUpCiAgICAgcmV0dXJuIHR5cGUuaXNGdW5jcmVmKCkgfHwg
dHlwZS5pc0V4dGVybnJlZigpOwogfQogCi0vLyBJZiB0aGlzIGlzIGEgdHlwZSwgcmV0dXJucyB0
cnVlIGlmZiBpdCdzIGEgcmVmIHR5cGU7IGlmIGl0J3MgYSBwYWNrZWQgdHlwZSwgcmV0dXJucyBm
YWxzZQotaW5saW5lIGJvb2wgaXNSZWZUeXBlKFN0b3JhZ2VUeXBlIHR5cGUpCi17Ci0gICAgaWYg
KHR5cGUuaXM8VHlwZT4oKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSgqdHlwZS5hczxUeXBl
PigpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGlubGluZSBib29sIGlzRXh0ZXJucmVmKFR5
cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9u
UmVmZXJlbmNlcygpKQpAQCAtMTYzLDcgKzE1NSw3IEBAIGlubGluZSBib29sIGlzUmVmV2l0aFR5
cGVJbmRleChUeXBlIHR5cGUpCiB9CiAKIC8vIERldGVybWluZSBpZiB0aGUgcmVmIHR5cGUgaGFz
IGEgcGxhY2Vob2xkZXIgdHlwZSBpbmRleCB0aGF0IGlzIHVzZWQKLS8vIGZvciBhbiB1bnJlc29s
dmVkIHJlY3Vyc2l2ZSByZWZlcmVuY2UgaW4gYSByZWN1cnNpb24gZ3JvdXAuCisvLyBmb3IgYW4g
dW5yZXNvbGVkIHJlY3Vyc2l2ZSByZWZlcmVuY2UgaW4gYSByZWN1cnNpb24gZ3JvdXAuCiBpbmxp
bmUgYm9vbCBpc1JlZldpdGhSZWN1cnNpdmVSZWZlcmVuY2UoVHlwZSB0eXBlKQogewogICAgIGlm
ICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlHQygpKQpAQCAtMTc4LDE0ICsxNzAsNiBAQCBpbmxp
bmUgYm9vbCBpc1JlZldpdGhSZWN1cnNpdmVSZWZlcmVuY2UoVHlwZSB0eXBlKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgaXNSZWZXaXRoUmVjdXJzaXZlUmVmZXJlbmNlKFN0
b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQotewotICAgIGlmIChzdG9yYWdlVHlwZS5pczxQYWNrZWRU
eXBlPigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaXNSZWZXaXRoUmVj
dXJzaXZlUmVmZXJlbmNlKCpzdG9yYWdlVHlwZS5hczxUeXBlPigpKTsKLX0KLQogaW5saW5lIGJv
b2wgaXNUeXBlSW5kZXhIZWFwVHlwZShpbnQzMl90IGhlYXBUeXBlKQogewogICAgIGlmICghT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQpAQCAtMjM3LDE1
ICsyMjEsNiBAQCBpbmxpbmUgYm9vbCBpc1N1YnR5cGUoVHlwZSBzdWIsIFR5cGUgcGFyZW50KQog
ICAgIHJldHVybiBzdWIgPT0gcGFyZW50OwogfQogCi1pbmxpbmUgYm9vbCBpc1N1YnR5cGUoU3Rv
cmFnZVR5cGUgc3ViLCBTdG9yYWdlVHlwZSBwYXJlbnQpCi17Ci0gICAgaWYgKHN1Yi5pczxQYWNr
ZWRUeXBlPigpIHx8IHBhcmVudC5pczxQYWNrZWRUeXBlPigpKQotICAgICAgICByZXR1cm4gc3Vi
ID09IHBhcmVudDsKLQotICAgIEFTU0VSVChzdWIuaXM8VHlwZT4oKSAmJiBwYXJlbnQuaXM8VHlw
ZT4oKSk7Ci0gICAgcmV0dXJuIGlzU3VidHlwZSgqc3ViLmFzPFR5cGU+KCksICpwYXJlbnQuYXM8
VHlwZT4oKSk7Ci19Ci0KIGlubGluZSBib29sIGlzVmFsaWRIZWFwVHlwZUtpbmQoVHlwZUtpbmQg
a2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTI2NiwxNCArMjQxLDYgQEAgaW5saW5l
IGJvb2wgaXNEZWZhdWx0YWJsZVR5cGUoVHlwZSB0eXBlKQogICAgIHJldHVybiAhdHlwZS5pc1Jl
ZigpOwogfQogCi1pbmxpbmUgYm9vbCBpc0RlZmF1bHRhYmxlVHlwZShTdG9yYWdlVHlwZSB0eXBl
KQotewotICAgIGlmICh0eXBlLmlzPFR5cGU+KCkpCi0gICAgICAgIHJldHVybiAhdHlwZS5hczxU
eXBlPigpLT5pc1JlZigpOwotICAgIC8vIEFsbCBwYWNrZWQgdHlwZXMgYXJlIGRlZmF1bHRhYmxl
LgotICAgIHJldHVybiB0cnVlOwotfQotCiBlbnVtIGNsYXNzIEV4dGVybmFsS2luZCA6IHVpbnQ4
X3QgewogICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUgdGhpcy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQogICAgIEZ1bmN0aW9uID0gMCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNGExMjE4
OWFjNmViLi4wZjdiZDQ5NmFlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiB1bmlmeShjb25zdCBDb250cm9sVHlwZSYp
OwogCiAjZGVmaW5lIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8ocmVzdWx0LCB3
aGF0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5pc0VtcHR5KCksICJjYW4ndCBwb3AgZW1w
dHkgc3RhY2sgaW4gIiwgd2hhdCk7IFwKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2V4
cHJlc3Npb25TdGFjay5pc0VtcHR5KCksICJjYW4ndCBwb3AgZW1wdHkgc3RhY2sgaW4gIiB3aGF0
KTsgXAogICAgICAgICByZXN1bHQgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1fY29u
dGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQpAQCAtMTY0NywxMSArMTY0
NywxMCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICBj
YXNlIEdDUHJlZml4OiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5R0MoKSwgIldhc20gR0MgaXMgbm90IGVuYWJsZWQiKTsKIAotICAgICAgICB1
aW50OF90IGV4dE9wSW50OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4
KGV4dE9wSW50KSwgImNhbid0IHBhcnNlIGV4dGVuZGVkIEdDIG9wY29kZSIpOworICAgICAgICB1
aW50OF90IGV4dE9wOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KGV4
dE9wKSwgImNhbid0IHBhcnNlIGV4dGVuZGVkIEdDIG9wY29kZSIpOwogCi0gICAgICAgIEdDT3BU
eXBlIGV4dE9wID0gc3RhdGljX2Nhc3Q8R0NPcFR5cGU+KGV4dE9wSW50KTsKLSAgICAgICAgc3dp
dGNoIChleHRPcCkgeworICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEdDT3BUeXBlPihleHRP
cCkpIHsKICAgICAgICAgY2FzZSBHQ09wVHlwZTo6STMxTmV3OiB7CiAgICAgICAgICAgICBUeXBl
ZEV4cHJlc3Npb24gdmFsdWU7CiAgICAgICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9T
VEFDS19JTlRPKHZhbHVlLCAiaTMxLm5ldyIpOwpAQCAtMTY5MiwxMyArMTY5MSwxMiBAQCBGT1Jf
RUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICAgICAgY29u
c3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gbV9pbmZvLnR5cGVTaWduYXR1cmVz
W3R5cGVJbmRleF0uZ2V0KCk7CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCF0
eXBlRGVmaW5pdGlvbi5pczxBcnJheVR5cGU+KCksICJhcnJheS5uZXcgaW5kZXggIiwgdHlwZUlu
ZGV4LCAiIGRvZXMgbm90IHJlZmVyZW5jZSBhbiBhcnJheSBkZWZpbml0aW9uIik7Ci0gICAgICAg
ICAgICAvLyBJZiB0aGlzIGlzIGEgcGFja2VkIGFycmF5LCB0aGVuIHRoZSB2YWx1ZSBoYXMgdG8g
aGF2ZSB0eXBlIGkzMgotICAgICAgICAgICAgY29uc3QgVHlwZSB1bnBhY2tlZEVsZW1lbnRUeXBl
ID0gdHlwZURlZmluaXRpb24uYXM8QXJyYXlUeXBlPigpLT5lbGVtZW50VHlwZSgpLnR5cGUudW5w
YWNrZWQoKTsKKyAgICAgICAgICAgIGNvbnN0IFR5cGUgZWxlbWVudFR5cGUgPSB0eXBlRGVmaW5p
dGlvbi5hczxBcnJheVR5cGU+KCktPmVsZW1lbnRUeXBlKCkudHlwZTsKIAogICAgICAgICAgICAg
VHlwZWRFeHByZXNzaW9uIHZhbHVlLCBzaXplOwogICAgICAgICAgICAgV0FTTV9UUllfUE9QX0VY
UFJFU1NJT05fU1RBQ0tfSU5UTyhzaXplLCAiYXJyYXkubmV3Iik7CiAgICAgICAgICAgICBXQVNN
X1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHZhbHVlLCAiYXJyYXkubmV3Iik7Ci0gICAg
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFsdWUudHlwZSgpLCB1
bnBhY2tlZEVsZW1lbnRUeXBlKSwgImFycmF5Lm5ldyB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLnR5
cGUoKSwgIiBleHBlY3RlZCAiLCB1bnBhY2tlZEVsZW1lbnRUeXBlKTsKKyAgICAgICAgICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIGVsZW1lbnRUeXBl
KSwgImFycmF5Lm5ldyB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLnR5cGUoKSwgIiBleHBlY3RlZCAi
LCBlbGVtZW50VHlwZSk7CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGVL
aW5kOjpJMzIgIT0gc2l6ZS50eXBlKCkua2luZCwgImFycmF5Lm5ldyBpbmRleCB0byB0eXBlICIs
IHNpemUudHlwZSgpLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5kOjpJMzIpOwogCiAgICAgICAgICAg
ICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CkBAIC0xNzE0LDcgKzE3MTIsNyBAQCBGT1JfRUFDSF9X
QVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICAgICAgY29uc3QgVHlw
ZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gbV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJ
bmRleF0uZ2V0KCk7CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCF0eXBlRGVm
aW5pdGlvbi5pczxBcnJheVR5cGU+KCksICJhcnJheS5uZXdfZGVmYXVsdCBpbmRleCAiLCB0eXBl
SW5kZXgsICIgZG9lcyBub3QgcmVmZXJlbmNlIGFuIGFycmF5IGRlZmluaXRpb24iKTsKLSAgICAg
ICAgICAgIGNvbnN0IFN0b3JhZ2VUeXBlIGVsZW1lbnRUeXBlID0gdHlwZURlZmluaXRpb24uYXM8
QXJyYXlUeXBlPigpLT5lbGVtZW50VHlwZSgpLnR5cGU7CisgICAgICAgICAgICBjb25zdCBUeXBl
IGVsZW1lbnRUeXBlID0gdHlwZURlZmluaXRpb24uYXM8QXJyYXlUeXBlPigpLT5lbGVtZW50VHlw
ZSgpLnR5cGU7CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc0RlZmF1bHRh
YmxlVHlwZShlbGVtZW50VHlwZSksICJhcnJheS5uZXdfZGVmYXVsdCBpbmRleCAiLCB0eXBlSW5k
ZXgsICIgZG9lcyBub3QgcmVmZXJlbmNlIGFuIGFycmF5IGRlZmluaXRpb24gd2l0aCBhIGRlZmF1
bHRhYmxlIHR5cGUiKTsKIAogICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIHNpemU7CkBAIC0x
NzI3LDM4ICsxNzI1LDI1IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKFR5
cGUgeyBUeXBlS2luZDo6UmVmLCBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlRGVmaW5pdGlvbikg
fSwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHQ09wVHlwZTo6QXJyYXlHZXQ6Ci0gICAgICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5R2V0
UzoKLSAgICAgICAgY2FzZSBHQ09wVHlwZTo6QXJyYXlHZXRVOiB7CisgICAgICAgIGNhc2UgR0NP
cFR5cGU6OkFycmF5R2V0OiB7CiAgICAgICAgICAgICB1aW50MzJfdCB0eXBlSW5kZXg7Ci0gICAg
ICAgICAgICBjb25zdCBjaGFyKiBvcE5hbWUgPSBleHRPcCA9PSBHQ09wVHlwZTo6QXJyYXlHZXQg
PyAiYXJyYXkuZ2V0IiA6IGV4dE9wID09IEdDT3BUeXBlOjpBcnJheUdldFMgPyAiYXJyYXkuZ2V0
X3MiIDogImFycmF5LmdldF91IjsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFyVUludDMyKHR5cGVJbmRleCksICJjYW4ndCBnZXQgdHlwZSBpbmRleCBmb3IgIiwgb3BO
YW1lKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodHlwZUluZGV4ID49IG1f
aW5mby50eXBlQ291bnQoKSwgb3BOYW1lLCAiIGluZGV4ICIsIHR5cGVJbmRleCwgIiBpcyBvdXQg
b2YgYm91bmRzIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMih0eXBlSW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggZm9yIGFycmF5LmdldCIpOwor
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0eXBlSW5kZXggPj0gbV9pbmZvLnR5
cGVDb3VudCgpLCAiYXJyYXkuZ2V0IGluZGV4ICIsIHR5cGVJbmRleCwgIiBpcyBvdXQgb2YgYm91
bmRzIik7CiAKICAgICAgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlv
biA9IG1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLmdldCgpOwotICAgICAgICAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRighdHlwZURlZmluaXRpb24uaXM8QXJyYXlUeXBlPigpLCBv
cE5hbWUsICIgaW5kZXggIiwgdHlwZUluZGV4LCAiIGRvZXMgbm90IHJlZmVyZW5jZSBhbiBhcnJh
eSBkZWZpbml0aW9uIik7Ci0gICAgICAgICAgICBjb25zdCBTdG9yYWdlVHlwZSBlbGVtZW50VHlw
ZSA9IHR5cGVEZWZpbml0aW9uLmFzPEFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKS50eXBlOwot
ICAgICAgICAgICAgLy8gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCB3aWxsIGJlIHVucGFja2VkIGlm
IHRoZSBhcnJheSBpcyBwYWNrZWQuCi0gICAgICAgICAgICBjb25zdCBUeXBlIHJlc3VsdFR5cGUg
PSBlbGVtZW50VHlwZS51bnBhY2tlZCgpOwotCi0gICAgICAgICAgICAvLyBhcnJheS5nZXRfcyBh
bmQgYXJyYXkuZ2V0X3UgYXJlIG9ubHkgdmFsaWQgZm9yIHBhY2tlZCBhcnJheXMKLSAgICAgICAg
ICAgIGlmIChleHRPcCA9PSBHQ09wVHlwZTo6QXJyYXlHZXRTIHx8IGV4dE9wID09IEdDT3BUeXBl
OjpBcnJheUdldFUpCi0gICAgICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVu
dFR5cGUuaXM8UGFja2VkVHlwZT4oKSwgb3BOYW1lLCAiIGFwcGxpZWQgdG8gd3JvbmcgdHlwZSBv
ZiBhcnJheSAtLSBleHBlY3RlZDogaTggb3IgaTE2LCBmb3VuZCAiLCBlbGVtZW50VHlwZS5hczxU
eXBlPigpLT5raW5kKTsKLQotICAgICAgICAgICAgLy8gYXJyYXkuZ2V0IGlzIG5vdCB2YWxpZCBm
b3IgcGFja2VkIGFycmF5cwotICAgICAgICAgICAgaWYgKGV4dE9wID09IEdDT3BUeXBlOjpBcnJh
eUdldCkKLSAgICAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGVsZW1lbnRUeXBlLmlz
PFBhY2tlZFR5cGU+KCksIG9wTmFtZSwgIiBhcHBsaWVkIHRvIHBhY2tlZCBhcnJheSBvZiAiLCAg
KmVsZW1lbnRUeXBlLmFzPFBhY2tlZFR5cGU+KCksICIgLS0gdXNlIGFycmF5LmdldF9zIG9yIGFy
cmF5LmdldF91Iik7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCF0eXBlRGVm
aW5pdGlvbi5pczxBcnJheVR5cGU+KCksICJhcnJheS5nZXQgaW5kZXggIiwgdHlwZUluZGV4LCAi
IGRvZXMgbm90IHJlZmVyZW5jZSBhbiBhcnJheSBkZWZpbml0aW9uIik7CisgICAgICAgICAgICBj
b25zdCBUeXBlIGVsZW1lbnRUeXBlID0gdHlwZURlZmluaXRpb24uYXM8QXJyYXlUeXBlPigpLT5l
bGVtZW50VHlwZSgpLnR5cGU7CiAKICAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcnJheXJl
ZiwgaW5kZXg7CiAgICAgICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRP
KGluZGV4LCAiYXJyYXkuZ2V0Iik7CiAgICAgICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lP
Tl9TVEFDS19JTlRPKGFycmF5cmVmLCAiYXJyYXkuZ2V0Iik7Ci0gICAgICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUoYXJyYXlyZWYudHlwZSgpLCBUeXBlIHsgVHlwZUtp
bmQ6OlJlZk51bGwsIFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVEZWZpbml0aW9uKSB9KSwgb3BO
YW1lLCAiIGFycmF5cmVmIHRvIHR5cGUgIiwgYXJyYXlyZWYudHlwZSgpLmtpbmQsICIgZXhwZWN0
ZWQgYXJyYXlyZWYiKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3Vi
dHlwZShhcnJheXJlZi50eXBlKCksIFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgVHlwZUluZm9y
bWF0aW9uOjpnZXQodHlwZURlZmluaXRpb24pIH0pLCAiYXJyYXkuZ2V0IGFycmF5cmVmIHRvIHR5
cGUgIiwgYXJyYXlyZWYudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgYXJyYXlyZWYiKTsKICAgICAg
ICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBpbmRleC50eXBl
KCkua2luZCwgImFycmF5LmdldCBpbmRleCB0byB0eXBlICIsIGluZGV4LnR5cGUoKSwgIiBleHBl
Y3RlZCAiLCBUeXBlS2luZDo6STMyKTsKIAogICAgICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVz
dWx0OwotICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQXJyYXlHZXQoZXh0
T3AsIHR5cGVJbmRleCwgYXJyYXlyZWYsIGluZGV4LCByZXN1bHQpKTsKKyAgICAgICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKGFkZEFycmF5R2V0KHR5cGVJbmRleCwgYXJyYXlyZWYsIGlu
ZGV4LCByZXN1bHQpKTsKIAotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0
QW5kQXBwZW5kKHJlc3VsdFR5cGUsIHJlc3VsdCk7CisgICAgICAgICAgICBtX2V4cHJlc3Npb25T
dGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoZWxlbWVudFR5cGUsIHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5U2V0
OiB7CkBAIC0xNzcwLDggKzE3NTUsNiBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIXR5cGVEZWZp
bml0aW9uLmlzPEFycmF5VHlwZT4oKSwgImFycmF5LnNldCBpbmRleCAiLCB0eXBlSW5kZXgsICIg
ZG9lcyBub3QgcmVmZXJlbmNlIGFuIGFycmF5IGRlZmluaXRpb24iKTsKICAgICAgICAgICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoIXR5cGVEZWZpbml0aW9uLmlzPEFycmF5VHlwZT4oKSwgImFy
cmF5LnNldCBpbmRleCAiLCB0eXBlSW5kZXgsICIgZG9lcyBub3QgcmVmZXJlbmNlIGFuIGFycmF5
IGRlZmluaXRpb24iKTsKICAgICAgICAgICAgIGNvbnN0IEZpZWxkVHlwZSBlbGVtZW50VHlwZSA9
IHR5cGVEZWZpbml0aW9uLmFzPEFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKTsKLSAgICAgICAg
ICAgIGNvbnN0IFR5cGUgdW5wYWNrZWRFbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlLnR5cGUudW5w
YWNrZWQoKTsKLQogICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihlbGVtZW50VHlw
ZS5tdXRhYmlsaXR5ICE9IE11dGFiaWxpdHk6Ok11dGFibGUsICJhcnJheS5zZXQgaW5kZXggIiwg
dHlwZUluZGV4LCAiIGRvZXMgbm90IHJlZmVyZW5jZSBhIG11dGFibGUgYXJyYXkgZGVmaW5pdGlv
biIpOwogCiAgICAgICAgICAgICBUeXBlZEV4cHJlc3Npb24gYXJyYXlyZWYsIGluZGV4LCB2YWx1
ZTsKQEAgLTE3ODAsNyArMTc2Myw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKQogICAgICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5U
TyhhcnJheXJlZiwgImFycmF5LnNldCIpOwogICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighaXNTdWJ0eXBlKGFycmF5cmVmLnR5cGUoKSwgVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxs
LCBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlRGVmaW5pdGlvbikgfSksICJhcnJheS5zZXQgYXJy
YXlyZWYgdG8gdHlwZSAiLCBhcnJheXJlZi50eXBlKCksICIgZXhwZWN0ZWQgYXJyYXlyZWYiKTsK
ICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBpbmRl
eC50eXBlKCkua2luZCwgImFycmF5LnNldCBpbmRleCB0byB0eXBlICIsIGluZGV4LnR5cGUoKSwg
IiBleHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIHVucGFja2VkRWxlbWVudFR5cGUpLCAi
YXJyYXkuc2V0IHZhbHVlIHRvIHR5cGUgIiwgdmFsdWUudHlwZSgpLCAiIGV4cGVjdGVkICIsIHVu
cGFja2VkRWxlbWVudFR5cGUpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRigh
aXNTdWJ0eXBlKHZhbHVlLnR5cGUoKSwgZWxlbWVudFR5cGUudHlwZSksICJhcnJheS5zZXQgdmFs
dWUgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCksICIgZXhwZWN0ZWQgIiwgZWxlbWVudFR5cGUudHlw
ZSk7CiAKICAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZEFycmF5U2V0KHR5
cGVJbmRleCwgYXJyYXlyZWYsIGluZGV4LCB2YWx1ZSkpOwogCkBAIC0xODExLDcgKzE3OTQsNyBA
QCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9
IG1fZXhwcmVzc2lvblN0YWNrLmF0KGkpOwotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZp
ZWxkVHlwZSA9IHN0cnVjdFR5cGUtPmZpZWxkKFN0cnVjdEZpZWxkQ291bnQoaSAtIGZpcnN0QXJn
dW1lbnRJbmRleCkpLnR5cGUudW5wYWNrZWQoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRv
JiBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLT5maWVsZChTdHJ1Y3RGaWVsZENvdW50KGkgLSBmaXJz
dEFyZ3VtZW50SW5kZXgpKS50eXBlOwogICAgICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIWlzU3VidHlwZShhcmcudHlwZSgpLCBmaWVsZFR5cGUpLCAiYXJndW1lbnQgdHlwZSBt
aXNtYXRjaCBpbiBzdHJ1Y3QubmV3LCBnb3QgIiwgYXJnLnR5cGUoKSwgIiwgZXhwZWN0ZWQgIiwg
ZmllbGRUeXBlKTsKICAgICAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOwog
ICAgICAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOwpAQCAtMTgz
Miw3ICsxODE1LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0
dXJlc1tzdHJ1Y3RHZXRJbnB1dC5pbmRpY2VzLnN0cnVjdFR5cGVJbmRleF0tPnRlbXBsYXRlIGFz
PFN0cnVjdFR5cGU+KCk7CiAgICAgICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRT
dHJ1Y3RHZXQoc3RydWN0R2V0SW5wdXQuc3RydWN0UmVmZXJlbmNlLCBzdHJ1Y3RUeXBlLCBzdHJ1
Y3RHZXRJbnB1dC5pbmRpY2VzLmZpZWxkSW5kZXgsIHJlc3VsdCkpOwogCi0gICAgICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoc3RydWN0R2V0SW5wdXQuZmllbGQu
dHlwZS51bnBhY2tlZCgpLCByZXN1bHQpOworICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2su
Y29uc3RydWN0QW5kQXBwZW5kKHN0cnVjdEdldElucHV0LmZpZWxkLnR5cGUsIHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0NPcFR5cGU6
OlN0cnVjdFNldDogewpAQCAtMTg0NCwxNCArMTgyNywxNCBAQCBGT1JfRUFDSF9XQVNNX01FTU9S
WV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICAgICAgY29uc3QgYXV0byYgZmllbGQg
PSBzdHJ1Y3RTZXRJbnB1dC5maWVsZDsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
ZmllbGQubXV0YWJpbGl0eSAhPSBNdXRhYmlsaXR5OjpNdXRhYmxlLCAidGhlIGZpZWxkICIsIHN0
cnVjdFNldElucHV0LmluZGljZXMuZmllbGRJbmRleCwgIiBjYW4ndCBiZSBzZXQgYmVjYXVzZSBp
dCBpcyBpbW11dGFibGUiKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzU3Vi
dHlwZSh2YWx1ZS50eXBlKCksIGZpZWxkLnR5cGUudW5wYWNrZWQoKSksICJ0eXBlIG1pc21hdGNo
IGluIHN0cnVjdC5zZXQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzU3Vi
dHlwZSh2YWx1ZS50eXBlKCksIGZpZWxkLnR5cGUpLCAidHlwZSBtaXNtYXRjaCBpbiBzdHJ1Y3Qu
c2V0Iik7CiAKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSAqbV9pbmZvLnR5
cGVTaWduYXR1cmVzW3N0cnVjdFNldElucHV0LmluZGljZXMuc3RydWN0VHlwZUluZGV4XS0+dGVt
cGxhdGUgYXM8U3RydWN0VHlwZT4oKTsKICAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZFN0cnVjdFNldChzdHJ1Y3RTZXRJbnB1dC5zdHJ1Y3RSZWZlcmVuY2UsIHN0cnVjdFR5
cGUsIHN0cnVjdFNldElucHV0LmluZGljZXMuZmllbGRJbmRleCwgdmFsdWUpKTsKICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImludmFsaWQgZXh0ZW5kZWQgR0Mgb3AgIiwgZXh0
T3BJbnQpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAiaW52YWxpZCBl
eHRlbmRlZCBHQyBvcCAiLCBleHRPcCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4geyB9OwpAQCAtMjgwNywxNiArMjc5MCw2IEBAIGF1dG8gRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJl
c3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodW51
c2VkKSwgImNhbid0IGdldCB0eXBlIGluZGV4IGltbWVkaWF0ZSBmb3IgYXJyYXkuZ2V0IGluIHVu
cmVhY2hhYmxlIGNvbnRleHQiKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBHQ09wVHlwZTo6QXJyYXlHZXRTOiB7Ci0gICAgICAgICAgICB1aW50MzJf
dCB1bnVzZWQ7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih1bnVzZWQpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggaW1tZWRpYXRlIGZvciBhcnJheS5nZXRf
cyBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5R2V0VTogewotICAgICAgICAgICAg
dWludDMyX3QgdW51c2VkOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VW
YXJVSW50MzIodW51c2VkKSwgImNhbid0IGdldCB0eXBlIGluZGV4IGltbWVkaWF0ZSBmb3IgYXJy
YXkuZ2V0X3UgaW4gdW5yZWFjaGFibGUgY29udGV4dCIpOwotICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgfQogICAgICAgICBjYXNlIEdDT3BUeXBlOjpBcnJheVNldDogewogICAgICAg
ICAgICAgdWludDMyX3QgdW51c2VkOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIodW51c2VkKSwgImNhbid0IGdldCB0eXBlIGluZGV4IGltbWVkaWF0ZSBm
b3IgYXJyYXkuc2V0IGluIHVucmVhY2hhYmxlIGNvbnRleHQiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGM5NGExM2Q1MmM2
MS4uZTllYjVlYWU5ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBwdWJsaWM6CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkSTMxR2V0VShFeHByZXNzaW9uVHlwZSBy
ZWYsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZEFycmF5TmV3KHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSBzaXpl
LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJyYXlOZXdEZWZhdWx0KHVpbnQzMl90
IGluZGV4LCBFeHByZXNzaW9uVHlwZSBzaXplLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcnJheUdldChHQ09wVHlwZSBh
cnJheUdldEtpbmQsIHVpbnQzMl90IHR5cGVJbmRleCwgRXhwcmVzc2lvblR5cGUgYXJyYXlyZWYs
IEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcnJheUdldCh1aW50MzJfdCB0eXBlSW5k
ZXgsIEV4cHJlc3Npb25UeXBlIGFycmF5cmVmLCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkQXJyYXlTZXQodWludDMyX3QgdHlwZUluZGV4LCBFeHByZXNzaW9uVHlwZSBhcnJheXJlZiwg
RXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcnJheUxlbihFeHByZXNzaW9uVHlwZSBhcnJh
eXJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTE5NTMsMjUgKzE5NTMs
MTEgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJyYXlOZXdEZWZhdWx0KHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSBzaXplLCBFeHAKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRv
IExMSW50R2VuZXJhdG9yOjphZGRBcnJheUdldChHQ09wVHlwZSBhcnJheUdldEtpbmQsIHVpbnQz
Ml90IHR5cGVJbmRleCwgRXhwcmVzc2lvblR5cGUgYXJyYXlyZWYsIEV4cHJlc3Npb25UeXBlIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIExMSW50
R2VuZXJhdG9yOjphZGRBcnJheUdldCh1aW50MzJfdCB0eXBlSW5kZXgsIEV4cHJlc3Npb25UeXBl
IGFycmF5cmVmLCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2goKTsKLSAgICBzd2l0Y2ggKGFy
cmF5R2V0S2luZCkgewotICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5R2V0OiB7Ci0gICAgICAgIFdh
c21BcnJheUdldDo6ZW1pdCh0aGlzLCByZXN1bHQsIGFycmF5cmVmLCBpbmRleCwgdHlwZUluZGV4
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR0NPcFR5cGU6OkFycmF5R2V0Uzog
ewotICAgICAgICBXYXNtQXJyYXlHZXRTOjplbWl0KHRoaXMsIHJlc3VsdCwgYXJyYXlyZWYsIGlu
ZGV4LCB0eXBlSW5kZXgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBHQ09wVHlw
ZTo6QXJyYXlHZXRVOiB7Ci0gICAgICAgIFdhc21BcnJheUdldFU6OmVtaXQodGhpcywgcmVzdWx0
LCBhcnJheXJlZiwgaW5kZXgsIHR5cGVJbmRleCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
KyAgICBXYXNtQXJyYXlHZXQ6OmVtaXQodGhpcywgcmVzdWx0LCBhcnJheXJlZiwgaW5kZXgsIHR5
cGVJbmRleCk7CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggOGUzNTQ5ZmEyYTMxLi5kOGIzODc4MmVj
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAK
QEAgLTg0MiwxMSArODQyLDggQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldh
c21TdHJ1Y3ROZXcsIEVuY29kZWRKU1ZhbHVlLCAoSW5zdGFuY2UqIGluc3QKICAgICBjb25zdCBT
dHJ1Y3RUeXBlJiBzdHJ1Y3RUeXBlID0gKnN0cnVjdFR5cGVEZWZpbml0aW9uLT5hczxTdHJ1Y3RU
eXBlPigpOwogCiAgICAgSlNXZWJBc3NlbWJseVN0cnVjdCogc3RydWN0VmFsdWUgPSBKU1dlYkFz
c2VtYmx5U3RydWN0Ojp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFz
c2VtYmx5U3RydWN0U3RydWN0dXJlKCksIGpzSW5zdGFuY2UsIHR5cGVJbmRleCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cnVjdFR5cGUuZmllbGRDb3VudCgpOyArK2kpIHsKLSAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDY5ODEKLSAgICAgICAgQVNTRVJUKHN0cnVjdFR5cGUuZmllbGQoaSkudHlwZS5pczxUeXBlPigp
KTsKLSAgICAgICAgc3RydWN0VmFsdWUtPnNldChnbG9iYWxPYmplY3QsIGksIHRvSlNWYWx1ZShn
bG9iYWxPYmplY3QsICpzdHJ1Y3RUeXBlLmZpZWxkKGkpLnR5cGUuYXM8VHlwZT4oKSwgYXJndW1l
bnRzW2ldKSk7Ci0gICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHJ1Y3RUeXBl
LmZpZWxkQ291bnQoKTsgKytpKQorICAgICAgICBzdHJ1Y3RWYWx1ZS0+c2V0KGdsb2JhbE9iamVj
dCwgaSwgdG9KU1ZhbHVlKGdsb2JhbE9iamVjdCwgc3RydWN0VHlwZS5maWVsZChpKS50eXBlLCBh
cmd1bWVudHNbaV0pKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cnVjdFZhbHVlKTsK
IH0KIApAQCAtODc1LDExICs4NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uV2FzbVN0cnVjdFNldCwgdm9pZCwgKEluc3RhbmNlKiBpbnN0YW5jZSwgRW5jbwogICAgIEpT
T2JqZWN0KiBzdHJ1Y3R1cmVBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHN0cnVjdFJlZmVy
ZW5jZSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZUFzT2JqZWN0LT5pbmhlcml0czxKU1dlYkFzc2Vt
Ymx5U3RydWN0PigpKTsKICAgICBKU1dlYkFzc2VtYmx5U3RydWN0KiBzdHJ1Y3RQb2ludGVyID0g
anNDYXN0PEpTV2ViQXNzZW1ibHlTdHJ1Y3QqPihzdHJ1Y3R1cmVBc09iamVjdCk7Ci0KLSAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk4MQot
ICAgIEFTU0VSVChzdHJ1Y3RQb2ludGVyLT5zdHJ1Y3RUeXBlKCktPmZpZWxkKGZpZWxkSW5kZXgp
LnR5cGUuaXM8VHlwZT4oKSk7Ci0KLSAgICBjb25zdCBhdXRvIGZpZWxkVHlwZSA9ICpzdHJ1Y3RQ
b2ludGVyLT5zdHJ1Y3RUeXBlKCktPmZpZWxkKGZpZWxkSW5kZXgpLnR5cGUuYXM8VHlwZT4oKTsK
KyAgICBjb25zdCBhdXRvIGZpZWxkVHlwZSA9IHN0cnVjdFBvaW50ZXItPnN0cnVjdFR5cGUoKS0+
ZmllbGQoZmllbGRJbmRleCkudHlwZTsKICAgICByZXR1cm4gc3RydWN0UG9pbnRlci0+c2V0KGpz
SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLCBmaWVsZEluZGV4LCB0b0pTVmFsdWUoanNJbnN0YW5j
ZS0+Z2xvYmFsT2JqZWN0KCksIGZpZWxkVHlwZSwgYXJndW1lbnQpKTsKIH0KIApAQCAtMTEyOCw0
NiArMTEyMSwyNSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbUFycmF5
TmV3LCBFbmNvZGVkSlNWYWx1ZSwgKEluc3RhbmNlKiBpbnN0YQogICAgIEFTU0VSVChhcnJheVNp
Z25hdHVyZS5pczxBcnJheVR5cGU+KCkpOwogICAgIFdhc206OkZpZWxkVHlwZSBmaWVsZFR5cGUg
PSBhcnJheVNpZ25hdHVyZS5hczxBcnJheVR5cGU+KCktPmVsZW1lbnRUeXBlKCk7CiAKLSAgICBz
aXplX3QgZWxlbWVudFNpemUgPSBmaWVsZFR5cGUudHlwZS5lbGVtZW50U2l6ZSgpOwotCiAgICAg
SlNXZWJBc3NlbWJseUFycmF5KiBhcnJheSA9IG51bGxwdHI7Ci0KLSAgICBzd2l0Y2ggKGVsZW1l
bnRTaXplKSB7Ci0gICAgY2FzZSBzaXplb2YodWludDhfdCk6IHsKLSAgICAgICAgLy8gYGVuY1Zh
bHVlYCBtdXN0IGJlIGFuIHVuYm94ZWQgaW50MzIgKHNpbmNlIHRoZSB0eXBlY2hlY2tlciBndWFy
YW50ZWVzIHRoYXQgaXRzIHR5cGUgaXMgaTMyKTsgc28gaXQncyBzYWZlIHRvIHRydW5jYXRlIGl0
IGluIHRoZSBjYXNlcyBiZWxvdy4KLSAgICAgICAgQVNTRVJUKGVuY1ZhbHVlIDw9IFVJTlQzMl9N
QVgpOwotICAgICAgICBGaXhlZFZlY3Rvcjx1aW50OF90PiB2YWx1ZXMoc2l6ZSk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgICB2YWx1ZXNb
aV0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihlbmNWYWx1ZSk7Ci0gICAgICAgIGFycmF5ID0gSlNX
ZWJBc3NlbWJseUFycmF5OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlBcnJh
eVN0cnVjdHVyZSgpLCBmaWVsZFR5cGUsIHNpemUsIFdURk1vdmUodmFsdWVzKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBjYXNlIHNpemVvZih1aW50MTZfdCk6IHsKLSAgICAgICAgQVNT
RVJUKGVuY1ZhbHVlIDw9IFVJTlQzMl9NQVgpOwotICAgICAgICBGaXhlZFZlY3Rvcjx1aW50MTZf
dD4gdmFsdWVzKHNpemUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKQotICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGVuY1Zh
bHVlKTsKLSAgICAgICAgYXJyYXkgPSBKU1dlYkFzc2VtYmx5QXJyYXk6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LT53ZWJBc3NlbWJseUFycmF5U3RydWN0dXJlKCksIGZpZWxkVHlwZSwgc2l6ZSwg
V1RGTW92ZSh2YWx1ZXMpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugc2l6ZW9m
KHVpbnQzMl90KTogewotICAgICAgICBBU1NFUlQoZW5jVmFsdWUgPD0gVUlOVDMyX01BWCk7Cisg
ICAgc3dpdGNoIChmaWVsZFR5cGUudHlwZS5raW5kKSB7CisgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6STMyOgorICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkYzMjogewogICAgICAgICBGaXhlZFZl
Y3Rvcjx1aW50MzJfdD4gdmFsdWVzKHNpemUpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKQogICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGVuY1ZhbHVlKTsKLSAgICAgICAgYXJyYXkgPSBKU1dlYkFzc2VtYmx5QXJyYXk6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUFycmF5U3RydWN0dXJlKCksIGZpZWxk
VHlwZSwgc2l6ZSwgV1RGTW92ZSh2YWx1ZXMpKTsKKyAgICAgICAgYXJyYXkgPSBKU1dlYkFzc2Vt
Ymx5QXJyYXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUFycmF5U3RydWN0
dXJlKCksIGZpZWxkVHlwZS50eXBlLCBzaXplLCBXVEZNb3ZlKHZhbHVlcykpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBzaXplb2YodWludDY0X3QpOiB7CisgICAgZGVmYXVsdDog
ewogICAgICAgICBGaXhlZFZlY3Rvcjx1aW50NjRfdD4gdmFsdWVzKHNpemUpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQogICAgICAgICAgICAgdmFsdWVzW2ld
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVuY1ZhbHVlKTsKLSAgICAgICAgYXJyYXkgPSBKU1dl
YkFzc2VtYmx5QXJyYXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUFycmF5
U3RydWN0dXJlKCksIGZpZWxkVHlwZSwgc2l6ZSwgV1RGTW92ZSh2YWx1ZXMpKTsKKyAgICAgICAg
YXJyYXkgPSBKU1dlYkFzc2VtYmx5QXJyYXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53ZWJB
c3NlbWJseUFycmF5U3RydWN0dXJlKCksIGZpZWxkVHlwZS50eXBlLCBzaXplLCBXVEZNb3ZlKHZh
bHVlcykpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoYXJyYXkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGFjN2U1N2U5MDJkZC4uMTMwZjZlM2I2
YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuY3BwCkBAIC03NzIsMzYgKzc3Miw2IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5j
dGlvblR5cGUodWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVBhY2tlZFR5cGUoUGFj
a2VkVHlwZSYgcGFja2VkVHlwZSkgLT4gUGFydGlhbFJlc3VsdAotewotICAgIGludDhfdCBraW5k
OwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50NyhraW5kKSwgImludmFsaWQgdHlw
ZSBpbiBzdHJ1Y3QgZmllbGQgb3IgYXJyYXkgZWxlbWVudCIpOwotICAgIGlmIChpc1ZhbGlkUGFj
a2VkVHlwZShraW5kKSkgewotICAgICAgICBwYWNrZWRUeXBlID0gc3RhdGljX2Nhc3Q8UGFja2Vk
VHlwZT4oa2luZCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotICAgIHJldHVybiBmYWls
KCJleHBlY3RlZCBhIHBhY2tlZCB0eXBlIGJ1dCBnb3QgIiwga2luZCk7Ci19Ci0KLWF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VTdG9yYWdlVHlwZShTdG9yYWdlVHlwZSYgc3RvcmFnZVR5cGUpIC0+
IFBhcnRpYWxSZXN1bHQKLXsKLSAgICBBU1NFUlQoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlHQygp
KTsKLQotICAgIGludDhfdCBraW5kOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBlZWtJbnQ3
KGtpbmQpLCAiaW52YWxpZCB0eXBlIGluIHN0cnVjdCBmaWVsZCBvciBhcnJheSBlbGVtZW50Iik7
Ci0gICAgaWYgKGlzVmFsaWRUeXBlS2luZChraW5kKSkgewotICAgICAgICBUeXBlIGVsZW1lbnRU
eXBlOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShtX2luZm8s
IGVsZW1lbnRUeXBlKSwgImludmFsaWQgdHlwZSBpbiBzdHJ1Y3QgZmllbGQgb3IgYXJyYXkgZWxl
bWVudCIpOwotICAgICAgICBzdG9yYWdlVHlwZSA9IFN0b3JhZ2VUeXBlIHsgZWxlbWVudFR5cGUg
fTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBQYWNrZWRUeXBlIGVsZW1lbnRU
eXBlOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUGFja2VkVHlwZShlbGVtZW50VHlw
ZSksICJpbnZhbGlkIHR5cGUgaW4gc3RydWN0IGZpZWxkIG9yIGFycmF5IGVsZW1lbnQiKTsKLSAg
ICBzdG9yYWdlVHlwZSA9IFN0b3JhZ2VUeXBlIHsgZWxlbWVudFR5cGUgfTsKLSAgICByZXR1cm4g
eyB9OwotfQotCiBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlU3RydWN0VHlwZSh1aW50MzJfdCBw
b3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiYgc3RydWN0VHlwZSkgLT4gUGFydGlhbFJl
c3VsdAogewogICAgIEFTU0VSVChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpOwpAQCAtODE0
LDE4ICs3ODQsMTUgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUodWludDMy
X3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mIHMKIAogICAgIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBzdHJ1Y3RJbnN0YW5jZVBheWxvYWRTaXplIHsgMCB9Owog
ICAgIGZvciAodWludDMyX3QgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXggPCBmaWVsZENvdW50
OyArK2ZpZWxkSW5kZXgpIHsKLSAgICAgICAgU3RvcmFnZVR5cGUgZmllbGRUeXBlOwotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVN0b3JhZ2VUeXBlKGZpZWxkVHlwZSksICJjYW4n
dCBnZXQgIiwgZmllbGRJbmRleCwgInRoIGZpZWxkIFR5cGUiKTsKLQotICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk4MQotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZpZWxkVHlwZS5pczxQYWNrZWRUeXBlPigpLCAicGFja2Vk
IHR5cGVzIGluIHN0cnVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0Iik7CisgICAgICAgIFR5cGUg
ZmllbGRUeXBlOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZSht
X2luZm8sIGZpZWxkVHlwZSksICJjYW4ndCBnZXQgIiwgZmllbGRJbmRleCwgInRoIGZpZWxkIFR5
cGUiKTsKIAogICAgICAgICB1aW50OF90IG11dGFiaWxpdHk7CiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVUludDgobXV0YWJpbGl0eSksIHBvc2l0aW9uLCAiY2FuJ3QgZ2V0ICIs
IGZpZWxkSW5kZXgsICJ0aCBmaWVsZCBtdXRhYmlsaXR5Iik7CiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYobXV0YWJpbGl0eSAhPSAweDAgJiYgbXV0YWJpbGl0eSAhPSAweDEsICJpbnZhbGlk
IEZpZWxkJ3MgbXV0YWJpbGl0eTogMHgiLCBoZXgobXV0YWJpbGl0eSwgMiwgTG93ZXJjYXNlKSk7
CiAKICAgICAgICAgZmllbGRzLnVuY2hlY2tlZEFwcGVuZChGaWVsZFR5cGUgeyBmaWVsZFR5cGUs
IHN0YXRpY19jYXN0PE11dGFiaWxpdHk+KG11dGFiaWxpdHkpIH0pOwotICAgICAgICBzdHJ1Y3RJ
bnN0YW5jZVBheWxvYWRTaXplICs9IHR5cGVTaXplSW5CeXRlcyhmaWVsZFR5cGUpOworICAgICAg
ICBzdHJ1Y3RJbnN0YW5jZVBheWxvYWRTaXplICs9IHR5cGVLaW5kU2l6ZUluQnl0ZXMoZmllbGRU
eXBlLmtpbmQpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHN0cnVjdEluc3RhbmNlUGF5
bG9hZFNpemUuaGFzT3ZlcmZsb3dlZCgpLCAic3RydWN0IGxheW91dCBpcyB0b28gYmlnIik7CiAg
ICAgfQogCkBAIC04MzcsOCArODA0LDggQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUFycmF5
VHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiYgYXIKIHsKICAg
ICBBU1NFUlQoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlHQygpKTsKIAotICAgIFN0b3JhZ2VUeXBl
IGVsZW1lbnRUeXBlOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlU3RvcmFnZVR5cGUo
ZWxlbWVudFR5cGUpLCAiY2FuJ3QgZ2V0IGFycmF5J3MgZWxlbWVudCBUeXBlIik7CisgICAgVHlw
ZSBlbGVtZW50VHlwZTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZSht
X2luZm8sIGVsZW1lbnRUeXBlKSwgImNhbid0IGdldCBhcnJheSdzIGVsZW1lbnQgVHlwZSIpOwog
CiAgICAgdWludDhfdCBtdXRhYmlsaXR5OwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
VUludDgobXV0YWJpbGl0eSksIHBvc2l0aW9uLCAiY2FuJ3QgZ2V0IGFycmF5J3MgbXV0YWJpbGl0
eSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgK
aW5kZXggN2VlNTFkZTI5M2JmLi42Yjc1NjJlNGQ1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaApAQCAtNzIsOCArNzIsNiBAQCBwcml2YXRl
OgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSTMySW5pdEV4cHIo
c3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mLCBBU0NJSUxpdGVyYWwgZmFpbE1lc3NhZ2UpOwog
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblR5cGUo
dWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mKTsKLSAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVBhY2tlZFR5cGUoUGFja2VkVHlwZSYpOwot
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlU3RvcmFnZVR5cGUoU3Rv
cmFnZVR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVN0
cnVjdFR5cGUodWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mKTsKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUFycmF5VHlwZSh1aW50MzJf
dCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiYpOwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlUmVjdXJzaW9uR3JvdXAodWludDMyX3QgcG9zaXRpb24s
IFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNsb3dQYXRocy5jcHAKaW5kZXggOTUyYWQ1YzFkZDY5Li5hOTNlMGQxMzg0NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC00MDIsNyAr
NDAyLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChhcnJheV9uZXdfZGVmYXVsdCkKIAogICAgIFdh
c206OlR5cGVEZWZpbml0aW9uJiBhcnJheVNpZ25hdHVyZSA9IGluc3RhbmNlLT5tb2R1bGUoKS5t
b2R1bGVJbmZvcm1hdGlvbigpLnR5cGVTaWduYXR1cmVzW2luc3RydWN0aW9uLm1fdHlwZUluZGV4
XTsKICAgICBBU1NFUlQoYXJyYXlTaWduYXR1cmUuaXM8V2FzbTo6QXJyYXlUeXBlPigpKTsKLSAg
ICBXYXNtOjpTdG9yYWdlVHlwZSBlbGVtZW50VHlwZSA9IGFycmF5U2lnbmF0dXJlLmFzPFdhc206
OkFycmF5VHlwZT4oKS0+ZWxlbWVudFR5cGUoKS50eXBlOworICAgIFdhc206OlR5cGUgZWxlbWVu
dFR5cGUgPSBhcnJheVNpZ25hdHVyZS5hczxXYXNtOjpBcnJheVR5cGU+KCktPmVsZW1lbnRUeXBl
KCkudHlwZTsKIAogICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlID0gMDsKICAgICBpZiAoV2FzbTo6
aXNSZWZUeXBlKGVsZW1lbnRUeXBlKSkKQEAgLTQxMSw0NiArNDExLDIxIEBAIFdBU01fU0xPV19Q
QVRIX0RFQ0woYXJyYXlfbmV3X2RlZmF1bHQpCiAgICAgV0FTTV9SRVRVUk4oV2FzbTo6b3BlcmF0
aW9uV2FzbUFycmF5TmV3KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCwgc2l6ZSwg
dmFsdWUpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFdhc21PcD4KLXN0YXRpYyBhdXRvIEFy
cmF5R2V0T3BlcmF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBXYXNtSW5zdHJ1Y3Rp
b24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIHN0ZDo6ZnVuY3Rpb248RW5jb2RlZEpT
VmFsdWUoV2FzbTo6U3RvcmFnZVR5cGUsIEVuY29kZWRKU1ZhbHVlKT4gY2FsbGJhY2spCitXQVNN
X1NMT1dfUEFUSF9ERUNMKGFycmF5X2dldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21PcD4oKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21BcnJheUdl
dD4oKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBhcnJheXJlZiA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9h
cnJheXJlZikuZW5jb2RlZEpTVmFsdWUoKTsKICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKGFycmF5
cmVmKS5pc051bGwoKSkKICAgICAgICAgV0FTTV9USFJPVyhXYXNtOjpFeGNlcHRpb25UeXBlOjpO
dWxsQXJyYXlHZXQpOwogICAgIHVpbnQzMl90IGluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2lu
ZGV4KS51bmJveGVkVUludDMyKCk7CisKICAgICBKU1ZhbHVlIGFycmF5VmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoYXJyYXlyZWYpOwogICAgIEFTU0VSVChhcnJheVZhbHVlLmlzT2JqZWN0KCkpOwog
ICAgIEpTV2ViQXNzZW1ibHlBcnJheSogYXJyYXlPYmplY3QgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJs
eUFycmF5Kj4oYXJyYXlWYWx1ZS5nZXRPYmplY3QoKSk7CiAgICAgaWYgKGluZGV4ID49IGFycmF5
T2JqZWN0LT5zaXplKCkpCiAgICAgICAgIFdBU01fVEhST1coV2FzbTo6RXhjZXB0aW9uVHlwZTo6
T3V0T2ZCb3VuZHNBcnJheUdldCk7Ci0gICAgV0FTTV9SRVRVUk4oY2FsbGJhY2soYXJyYXlPYmpl
Y3QtPmVsZW1lbnRUeXBlKCkudHlwZSwgV2FzbTo6b3BlcmF0aW9uV2FzbUFycmF5R2V0KGluc3Rh
bmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCwgYXJyYXlyZWYsIGluZGV4KSkpOwotfQotCi1X
QVNNX1NMT1dfUEFUSF9ERUNMKGFycmF5X2dldCkKLXsKLSAgICByZXR1cm4gQXJyYXlHZXRPcGVy
YXRpb248V2FzbUFycmF5R2V0PihjYWxsRnJhbWUsIHBjLCBpbnN0YW5jZSwgWz1dKGF1dG8sIGF1
dG8gcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSk7Ci19Ci0KLVdBU01f
U0xPV19QQVRIX0RFQ0woYXJyYXlfZ2V0X3MpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IFs9XShX
YXNtOjpTdG9yYWdlVHlwZSB0eXBlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICBz
aXplX3QgZWxlbWVudFNpemUgPSAqdHlwZS5hczxXYXNtOjpQYWNrZWRUeXBlPigpID09IFdhc206
OlBhY2tlZFR5cGU6Okk4ID8gc2l6ZW9mKHVpbnQ4X3QpIDogc2l6ZW9mKHVpbnQxNl90KTsKLSAg
ICAgICAgdWludDhfdCBiaXRTaGlmdCA9IChzaXplb2YodWludDMyX3QpIC0gZWxlbWVudFNpemUp
ICogODsKLSAgICAgICAgaW50MzJfdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1
ZSk7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA8PCBiaXRTaGlmdDsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlPihyZXN1bHQgPj4gYml0U2hpZnQpOwotICAgIH07
Ci0gICAgcmV0dXJuIEFycmF5R2V0T3BlcmF0aW9uPFdhc21BcnJheUdldFM+KGNhbGxGcmFtZSwg
cGMsIGluc3RhbmNlLCBjYWxsYmFjayk7Ci19CiAKLVdBU01fU0xPV19QQVRIX0RFQ0woYXJyYXlf
Z2V0X3UpCi17Ci0gICAgcmV0dXJuIEFycmF5R2V0T3BlcmF0aW9uPFdhc21BcnJheUdldFU+KGNh
bGxGcmFtZSwgcGMsIGluc3RhbmNlLCBbPV0oYXV0bywgYXV0byByZXN1bHQpIHsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9KTsKKyAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25X
YXNtQXJyYXlHZXQoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fdHlwZUluZGV4LCBhcnJheXJlZiwg
aW5kZXgpKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChhcnJheV9zZXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKaW5kZXggZGNhODI4NjYzMDJlLi4xMzQw
OTM5NmE5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgK
QEAgLTkzLDggKzkzLDYgQEAgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0cmlldmVfYW5k
X2NsZWFyX2V4Y2VwdGlvbik7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChhcnJheV9uZXcp
OwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woYXJyYXlfbmV3X2RlZmF1bHQpOwogV0FTTV9T
TE9XX1BBVEhfSElEREVOX0RFQ0woYXJyYXlfZ2V0KTsKLVdBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKGFycmF5X2dldF9zKTsKLVdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGFycmF5X2dldF91
KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGFycmF5X3NldCk7CiBXQVNNX1NMT1dfUEFU
SF9ISURERU5fREVDTChzdHJ1Y3RfbmV3KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHN0
cnVjdF9nZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5
cGVEZWZpbml0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVm
aW5pdGlvbi5jcHAKaW5kZXggMGI5Y2Q4YjczNTM2Li4zOGI5MTk0YjE1ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcApAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIFN0cnVjdFR5cGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICBvdXQucHJpbnQoIigiKTsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZm9yIChT
dHJ1Y3RGaWVsZENvdW50IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgZmllbGRDb3VudCgp
OyArK2ZpZWxkSW5kZXgpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBtYWtlU3RyaW5nKGZp
ZWxkKGZpZWxkSW5kZXgpLnR5cGUpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBtYWtlU3Ry
aW5nKGZpZWxkKGZpZWxkSW5kZXgpLnR5cGUua2luZCkpOwogICAgICAgICBvdXQucHJpbnQoY29t
bWEsIGZpZWxkKGZpZWxkSW5kZXgpLm11dGFiaWxpdHkgPyAiaW1tdXRhYmxlIiA6ICJtdXRhYmxl
Iik7CiAgICAgfQogICAgIG91dC5wcmludCgiKSIpOwpAQCAtMTE0LDcgKzExNCw3IEBAIFN0cnVj
dFR5cGU6OlN0cnVjdFR5cGUoRmllbGRUeXBlKiBwYXlsb2FkLCBTdHJ1Y3RGaWVsZENvdW50IGZp
ZWxkQ291bnQsIGNvbnN0IEZpCiAgICAgICAgIGhhc1JlY3Vyc2l2ZVJlZmVyZW5jZSB8PSBpc1Jl
ZldpdGhSZWN1cnNpdmVSZWZlcmVuY2UoZmllbGRUeXBlLnR5cGUpOwogICAgICAgICBnZXRGaWVs
ZChmaWVsZEluZGV4KSA9IGZpZWxkVHlwZTsKICAgICAgICAgKmdldEZpZWxkT2Zmc2V0KGZpZWxk
SW5kZXgpID0gY3VycmVudEZpZWxkT2Zmc2V0OwotICAgICAgICBjdXJyZW50RmllbGRPZmZzZXQg
Kz0gdHlwZVNpemVJbkJ5dGVzKGZpZWxkKGZpZWxkSW5kZXgpLnR5cGUpOworICAgICAgICBjdXJy
ZW50RmllbGRPZmZzZXQgKz0gdHlwZUtpbmRTaXplSW5CeXRlcyhmaWVsZChmaWVsZEluZGV4KS50
eXBlLmtpbmQpOwogICAgIH0KIAogICAgIG1faW5zdGFuY2VQYXlsb2FkU2l6ZSA9IFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWludDY0X3QpPihjdXJyZW50RmllbGRPZmZzZXQpOwpA
QCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQXJyYXlUeXBlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIoIik7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwot
ICAgIG91dC5wcmludChjb21tYSwgbWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnR5cGUpKTsKKyAg
ICBvdXQucHJpbnQoY29tbWEsIG1ha2VTdHJpbmcoZWxlbWVudFR5cGUoKS50eXBlLmtpbmQpKTsK
ICAgICBvdXQucHJpbnQoY29tbWEsIGVsZW1lbnRUeXBlKCkubXV0YWJpbGl0eSA/ICJpbW11dGFi
bGUiIDogIm11dGFibGUiKTsKICAgICBvdXQucHJpbnQoIikiKTsKIH0KQEAgLTE4MCwxNiArMTgw
LDYgQEAgdm9pZCBTdWJ0eXBlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0
LnByaW50KCIpIik7CiB9CiAKLXZvaWQgU3RvcmFnZVR5cGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKLXsKLSAgICBpZiAoaXM8VHlwZT4oKSkKLSAgICAgICAgb3V0LnByaW50KG1ha2VT
dHJpbmcoYXM8VHlwZT4oKS0+a2luZCkpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoaXM8
UGFja2VkVHlwZT4oKSk7Ci0gICAgICAgIG91dC5wcmludChtYWtlU3RyaW5nKCphczxQYWNrZWRU
eXBlPigpKSk7Ci0gICAgfQotfQotCiB2b2lkIFR5cGVEZWZpbml0aW9uOjpjbGVhbnVwKCkKIHsK
ICAgICAvLyBPbmx5IGNvbXBvdW5kIHR5cGUgZGVmaW5pdGlvbnMgbmVlZCB0byBiZSBjbGVhbmVk
IHVwLCBub3QsIGUuZy4sIGZ1bmN0aW9uIHR5cGVzLgpAQCAtMjM3LDggKzIyNyw4IEBAIHN0YXRp
YyB1bnNpZ25lZCBjb21wdXRlU3RydWN0VHlwZUhhc2goc2l6ZV90IGZpZWxkQ291bnQsIGNvbnN0
IEZpZWxkVHlwZSogZmllbGRzCiB7CiAgICAgdW5zaWduZWQgYWNjdW11bGF0b3IgPSAweDE1ZDI1
NDY7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGZpZWxkQ291bnQ7ICsraSkgewotICAg
ICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50
SGFzaDxpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PGludDhfdD4oZmllbGRzW2ldLnR5cGUudHlw
ZUNvZGUoKSkpKTsKLSAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3Vt
dWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4o
ZmllbGRzW2ldLnR5cGUuaW5kZXgoKSkpKTsKKyAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBh
aXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmllbGRzW2ldLnR5cGUua2luZCkpKTsKKyAgICAgICAgYWNjdW11bGF0
b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46
Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4oZmllbGRzW2ldLnR5cGUuaW5kZXgpKSk7CiAgICAg
ICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRI
YXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZpZWxkc1tpXS5tdXRhYmls
aXR5KSkpOwogICAgIH0KICAgICByZXR1cm4gYWNjdW11bGF0b3I7CkBAIC0yNDcsOCArMjM3LDgg
QEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVTdHJ1Y3RUeXBlSGFzaChzaXplX3QgZmllbGRDb3Vu
dCwgY29uc3QgRmllbGRUeXBlKiBmaWVsZHMKIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlQXJyYXlU
eXBlSGFzaChGaWVsZFR5cGUgZWxlbWVudFR5cGUpCiB7CiAgICAgdW5zaWduZWQgYWNjdW11bGF0
b3IgPSAweDc4MzVhYjsKLSAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11
bGF0b3IsIFdURjo6SW50SGFzaDxpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PGludDhfdD4oZWxl
bWVudFR5cGUudHlwZS50eXBlQ29kZSgpKSkpOwotICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWly
SW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPFR5cGVJbmRleD46Omhhc2goZWxlbWVu
dFR5cGUudHlwZS5pbmRleCgpKSk7CisgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNo
KGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZWxlbWVudFR5cGUudHlwZS5raW5kKSkpOworICAgIGFjY3VtdWxhdG9yID0gV1RGOjpw
YWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPFR5cGVJbmRleD46Omhhc2goZWxl
bWVudFR5cGUudHlwZS5pbmRleCkpOwogICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFz
aChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGVsZW1lbnRUeXBlLm11dGFiaWxpdHkpKSk7CiAgICAgcmV0dXJuIGFjY3VtdWxhdG9y
OwogfQpAQCAtNDIyLDggKzQxMiw3IEBAIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBUeXBlRGVmaW5p
dGlvbjo6cmVwbGFjZVBsYWNlaG9sZGVycyhUeXBlSW5kZXggcHJvamVjdGVlKSBjCiAgICAgICAg
IG5ld0ZpZWxkcy50cnlSZXNlcnZlQ2FwYWNpdHkoc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cnVjdFR5cGUtPmZpZWxkQ291bnQo
KTsgaSsrKSB7CiAgICAgICAgICAgICBGaWVsZFR5cGUgZmllbGQgPSBzdHJ1Y3RUeXBlLT5maWVs
ZChpKTsKLSAgICAgICAgICAgIFN0b3JhZ2VUeXBlIHN1YnN0aXR1dGVkID0gZmllbGQudHlwZS5p
czxQYWNrZWRUeXBlPigpID8gZmllbGQudHlwZSA6IFN0b3JhZ2VUeXBlKHN1YnN0aXR1dGUoKmZp
ZWxkLnR5cGUuYXM8VHlwZT4oKSwgcHJvamVjdGVlKSk7Ci0gICAgICAgICAgICBuZXdGaWVsZHMu
dW5jaGVja2VkQXBwZW5kKEZpZWxkVHlwZSB7IHN1YnN0aXR1dGVkLCBmaWVsZC5tdXRhYmlsaXR5
IH0pOworICAgICAgICAgICAgbmV3RmllbGRzLnVuY2hlY2tlZEFwcGVuZChGaWVsZFR5cGUgeyBz
dWJzdGl0dXRlKGZpZWxkLnR5cGUsIHByb2plY3RlZSksIGZpZWxkLm11dGFiaWxpdHkgfSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IGRlZiA9IFR5cGVJbmZv
cm1hdGlvbjo6dHlwZURlZmluaXRpb25Gb3JTdHJ1Y3QobmV3RmllbGRzKTsKQEAgLTQzMyw4ICs0
MjIsNyBAQCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgVHlwZURlZmluaXRpb246OnJlcGxhY2VQbGFj
ZWhvbGRlcnMoVHlwZUluZGV4IHByb2plY3RlZSkgYwogICAgIGlmIChpczxBcnJheVR5cGU+KCkp
IHsKICAgICAgICAgY29uc3QgQXJyYXlUeXBlKiBhcnJheVR5cGUgPSBhczxBcnJheVR5cGU+KCk7
CiAgICAgICAgIEZpZWxkVHlwZSBmaWVsZCA9IGFycmF5VHlwZS0+ZWxlbWVudFR5cGUoKTsKLSAg
ICAgICAgU3RvcmFnZVR5cGUgc3Vic3RpdHV0ZWQgPSBmaWVsZC50eXBlLmlzPFBhY2tlZFR5cGU+
KCkgPyBmaWVsZC50eXBlIDogU3RvcmFnZVR5cGUoc3Vic3RpdHV0ZSgqZmllbGQudHlwZS5hczxU
eXBlPigpLCBwcm9qZWN0ZWUpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBkZWYg
PSBUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yQXJyYXkoRmllbGRUeXBlIHsgc3Vi
c3RpdHV0ZWQsIGZpZWxkLm11dGFiaWxpdHkgfSk7CisgICAgICAgIFJlZlB0cjxUeXBlRGVmaW5p
dGlvbj4gZGVmID0gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvckFycmF5KEZpZWxk
VHlwZSB7IHN1YnN0aXR1dGUoZmllbGQudHlwZSwgcHJvamVjdGVlKSwgZmllbGQubXV0YWJpbGl0
eSB9KTsKICAgICAgICAgcmV0dXJuICpkZWY7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5oCmluZGV4IDUzNWExMjM2ZjBhZS4uYTgw
NWM1MzcxZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlw
ZURlZmluaXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURl
ZmluaXRpb24uaApAQCAtMjE2LDEwOCArMjE2LDggQEAgZW51bSBNdXRhYmlsaXR5IDogdWludDhf
dCB7CiAgICAgSW1tdXRhYmxlID0gMAogfTsKIAotc3RydWN0IFN0b3JhZ2VUeXBlIHsKLXB1Ymxp
YzoKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBib29sIGlzKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxUPihtX3N0b3JhZ2VUeXBlKTsgfQotCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgY29uc3QgVCogYXMoKSBjb25zdCB7IEFTU0VSVChpczxU
PigpKTsgcmV0dXJuIHN0ZDo6Z2V0X2lmPFQ+KCZtX3N0b3JhZ2VUeXBlKTsgfQotCi0gICAgU3Rv
cmFnZVR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBTdG9yYWdlVHlwZShUeXBlIHQp
Ci0gICAgewotICAgICAgICBtX3N0b3JhZ2VUeXBlID0gc3RkOjp2YXJpYW50PFR5cGUsIFBhY2tl
ZFR5cGU+KHQpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IFN0b3JhZ2VUeXBlKFBhY2tlZFR5cGUg
dCkKLSAgICB7Ci0gICAgICAgIG1fc3RvcmFnZVR5cGUgPSBzdGQ6OnZhcmlhbnQ8VHlwZSwgUGFj
a2VkVHlwZT4odCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGEgdmFsdWUgdHlwZSBzdWl0YWJs
ZSBmb3IgdmFsaWRhdGluZyBpbnN0cnVjdGlvbiBhcmd1bWVudHMuIFBhY2tlZCB0eXBlcyBjYW5u
b3Qgc2hvdyB1cCBhcyB2YWx1ZSB0eXBlcyBhbmQgbmVlZCB0byBiZSB1bnBhY2tlZCB0byBJMzIu
Ci0gICAgVHlwZSB1bnBhY2tlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXM8VHlwZT4o
KSkKLSAgICAgICAgICAgIHJldHVybiAqYXM8VHlwZT4oKTsKLSAgICAgICAgcmV0dXJuIFR5cGVz
OjpJMzI7Ci0gICAgfQotCi0gICAgc2l6ZV90IGVsZW1lbnRTaXplKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGlmIChpczxUeXBlPigpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGFzPFR5cGU+KCkt
PmtpbmQpIHsKLSAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKLSAgICAgICAg
ICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkYzMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6
ZW9mKHVpbnQzMl90KTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNpemVvZih1aW50NjRfdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
c3dpdGNoICgqYXM8UGFja2VkVHlwZT4oKSkgewotICAgICAgICBjYXNlIFBhY2tlZFR5cGU6Okk4
OgotICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1aW50OF90KTsKLSAgICAgICAgY2FzZSBQYWNr
ZWRUeXBlOjpJMTY6Ci0gICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVpbnQxNl90KTsKLSAgICAg
ICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdG9yYWdlVHlwZSYgcmhzKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKHJocy5pczxQYWNrZWRUeXBlPigpKQotICAgICAgICAgICAgcmV0dXJuIChpczxQ
YWNrZWRUeXBlPigpICYmICphczxQYWNrZWRUeXBlPigpID09ICpyaHMuYXM8UGFja2VkVHlwZT4o
KSk7Ci0gICAgICAgIGlmICghaXM8VHlwZT4oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuKCphczxUeXBlPigpID09ICpyaHMuYXM8VHlwZT4oKSk7Ci0gICAgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdG9yYWdlVHlwZSYgcmhzKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IHJocyk7IH07Ci0KLSAgICBpbnQ4X3QgdHlwZUNvZGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKGlzPFR5cGU+KCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50OF90PihhczxUeXBlPigpLT5raW5kKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludDhfdD4oKmFzPFBhY2tlZFR5cGU+KCkpOwotICAgIH0KLQotICAgIFR5cGVJbmRleCBpbmRl
eCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXM8VHlwZT4oKSkKLSAgICAgICAgICAgIHJl
dHVybiBhczxUeXBlPigpLT5pbmRleDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHZv
aWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0
ZDo6dmFyaWFudDxUeXBlLCBQYWNrZWRUeXBlPiBtX3N0b3JhZ2VUeXBlOwotCi19OwotCi1pbmxp
bmUgY29uc3QgY2hhciogbWFrZVN0cmluZyhjb25zdCBTdG9yYWdlVHlwZSYgc3RvcmFnZVR5cGUp
Ci17Ci0gICAgcmV0dXJuKHN0b3JhZ2VUeXBlLmlzPFR5cGU+KCkgPyBtYWtlU3RyaW5nKHN0b3Jh
Z2VUeXBlLmFzPFR5cGU+KCktPmtpbmQpIDoKLSAgICAgICAgbWFrZVN0cmluZygqc3RvcmFnZVR5
cGUuYXM8UGFja2VkVHlwZT4oKSkpOwotfQotCi1pbmxpbmUgc2l6ZV90IHR5cGVTaXplSW5CeXRl
cyhjb25zdCBTdG9yYWdlVHlwZSYgc3RvcmFnZVR5cGUpCi17Ci0gICAgaWYgKHN0b3JhZ2VUeXBl
LmlzPFBhY2tlZFR5cGU+KCkpIHsKLSAgICAgICAgc3dpdGNoICgqc3RvcmFnZVR5cGUuYXM8UGFj
a2VkVHlwZT4oKSkgewotICAgICAgICBjYXNlIFBhY2tlZFR5cGU6Okk4OiB7Ci0gICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFBhY2tlZFR5cGU6OkkxNjogewot
ICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gdHlwZUtpbmRTaXplSW5CeXRlcyhzdG9yYWdlVHlwZS5hczxUeXBlPigpLT5raW5kKTsK
LX0KLQotY2xhc3MgRmllbGRUeXBlIHsKLXB1YmxpYzoKLSAgICBTdG9yYWdlVHlwZSB0eXBlOwor
c3RydWN0IEZpZWxkVHlwZSB7CisgICAgVHlwZSB0eXBlOwogICAgIE11dGFiaWxpdHkgbXV0YWJp
bGl0eTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWVsZFR5cGUmIHJocykgY29uc3Qg
eyByZXR1cm4gdHlwZSA9PSByaHMudHlwZSAmJiBtdXRhYmlsaXR5ID09IHJocy5tdXRhYmlsaXR5
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc20u
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc20ucHkKaW5kZXggNDM0
MjIzZDM0NmEwLi5kNGU2MTBlMWYyMTcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2dlbmVyYXRlV2FzbS5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc20ucHkKQEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgV2FzbToKICAgICAgICAgICAg
ICAgICBzZWxmLmV4cGVjdGVkVmVyc2lvbk51bWJlciA9IHN0cihwcmVbInZhbHVlIl0pCiAgICAg
ICAgIHNlbGYucHJlYW1ibGUgPSB3YXNtWyJwcmVhbWJsZSJdCiAgICAgICAgIHNlbGYudHlwZXMg
PSB3YXNtWyJ0eXBlIl0KLSAgICAgICAgc2VsZi5wYWNrZWRfdHlwZXMgPSB3YXNtWyJwYWNrZWRf
dHlwZSJdCiAgICAgICAgIHNlbGYub3Bjb2RlcyA9IHdhc21bIm9wY29kZSJdCiAgICAgICAgIHNl
bGYuaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQppbmRleCA1MDU2Y2VmMWVjNmEuLjU1MjYyMzg4YmZl
ZiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3Bz
SGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9w
c0hlYWRlci5weQpAQCAtNTAsMTEgKzUwLDYgQEAgZGVmIGNwcE1hY3JvKHdhc21PcGNvZGUsIHZh
bHVlLCBiMywgaW5jLCAqZXh0cmFBcmdzKToKICAgICBleHRyYUFyZ3NTdHIgPSAiLCAiICsgIiwg
Ii5qb2luKGV4dHJhQXJncykgaWYgbGVuKGV4dHJhQXJncykgZWxzZSAiIgogICAgIHJldHVybiAi
IFxcXG4gICAgbWFjcm8oIiArIHdhc20udG9DcHAod2FzbU9wY29kZSkgKyAiLCAiICsgaGV4KGlu
dCh2YWx1ZSkpICsgIiwgIiArIGIzICsgIiwgIiArIHN0cihpbmMpICsgZXh0cmFBcmdzU3RyICsg
IikiCiAKLQotZGVmIGNwcE1hY3JvUGFja2VkKHdhc21PcGNvZGUsIHZhbHVlKToKLSAgICByZXR1
cm4gIiBcXFxuICAgIG1hY3JvKCIgKyB3YXNtLnRvQ3BwKHdhc21PcGNvZGUpICsgIiwgIiArIGhl
eChpbnQodmFsdWUpKSArICIpIgotCi0KIGRlZiB0eXBlTWFjcm9pemVyKCk6CiAgICAgaW5jID0g
MAogICAgIGZvciB0eSBpbiB3YXNtLnR5cGVzOgpAQCAtNjIsMTEgKzU3LDYgQEAgZGVmIHR5cGVN
YWNyb2l6ZXIoKToKICAgICAgICAgaW5jICs9IDEKIAogCi1kZWYgcGFja2VkVHlwZU1hY3JvaXpl
cigpOgotICAgIGZvciB0eSBpbiB3YXNtLnBhY2tlZF90eXBlczoKLSAgICAgICAgeWllbGQgY3Bw
TWFjcm9QYWNrZWQodHksIHdhc20ucGFja2VkX3R5cGVzW3R5XVsidmFsdWUiXSkKLQotCiBkZWYg
dHlwZU1hY3JvaXplckZpbHRlcmVkKGZpbHRlcik6CiAgICAgZm9yIHQgaW4gdHlwZU1hY3JvaXpl
cigpOgogICAgICAgICBpZiBub3QgZmlsdGVyKHQpOgpAQCAtNzQsOCArNjQsNiBAQCBkZWYgdHlw
ZU1hY3JvaXplckZpbHRlcmVkKGZpbHRlcik6CiAKIHR5cGVfZGVmaW5pdGlvbnMgPSBbIiNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9UWVBFKG1hY3JvKSJdCiB0eXBlX2RlZmluaXRpb25zLmV4dGVuZChb
dCBmb3IgdCBpbiB0eXBlTWFjcm9pemVyKCldKQotdHlwZV9kZWZpbml0aW9ucy5leHRlbmQoWyJc
blxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX1BBQ0tFRF9UWVBFKG1hY3JvKSJdKQotdHlwZV9kZWZp
bml0aW9ucy5leHRlbmQoW3QgZm9yIHQgaW4gcGFja2VkVHlwZU1hY3JvaXplcigpXSkKIHR5cGVf
ZGVmaW5pdGlvbnMgPSAiIi5qb2luKHR5cGVfZGVmaW5pdGlvbnMpCiAKIHR5cGVfZGVmaW5pdGlv
bnNfZXhjZXB0X2Z1bmNyZWZfZXh0ZXJucmVmID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fVFlQ
RV9FWENFUFRfRlVOQ1JFRl9BTkRfRVhURVJOUkVGKG1hY3JvKSJdCkBAIC0yNDEsMTIgKzIyOSw2
IEBAIGVudW0gY2xhc3MgVHlwZUtpbmQgOiBpbnQ4X3QgewogfTsKICN1bmRlZiBDUkVBVEVfRU5V
TV9WQUxVRQogCi0jZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5hbWUsIGlkKSBuYW1lID0gaWQs
Ci1lbnVtIGNsYXNzIFBhY2tlZFR5cGU6IGludDhfdCB7Ci0gICAgRk9SX0VBQ0hfV0FTTV9QQUNL
RURfVFlQRShDUkVBVEVfRU5VTV9WQUxVRSkKLX07Ci0jdW5kZWYgQ1JFQVRFX0VOVU1fVkFMVUUK
LQogdXNpbmcgVHlwZUluZGV4ID0gdWludHB0cl90OwogCiBpbmxpbmUgYm9vbCB0eXBlSW5kZXhJ
c1R5cGUoVHlwZUluZGV4IGluZGV4KQpAQCAtMzA0LDE5ICsyODYsNiBAQCBpbmxpbmUgYm9vbCBp
c1ZhbGlkVHlwZUtpbmQoSW50IGkpCiB9CiAjdW5kZWYgQ1JFQVRFX0NBU0UKIAotI2RlZmluZSBD
UkVBVEVfQ0FTRShuYW1lLCBpZCwgLi4uKSBjYXNlIGlkOiByZXR1cm4gdHJ1ZTsKLXRlbXBsYXRl
IDx0eXBlbmFtZSBJbnQ+Ci1pbmxpbmUgYm9vbCBpc1ZhbGlkUGFja2VkVHlwZShJbnQgaSkKLXsK
LSAgICBzd2l0Y2ggKGkpIHsKLSAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7Ci0gICAgRk9SX0VB
Q0hfV0FTTV9QQUNLRURfVFlQRShDUkVBVEVfQ0FTRSkKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jdW5kZWYgQ1JFQVRFX0NB
U0UKLQogI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCAuLi4pIGNhc2UgVHlwZUtpbmQ6Om5hbWU6
IHJldHVybiAjbmFtZTsKIGlubGluZSBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKFR5cGVLaW5kIGtp
bmQpCiB7CkBAIC0zMjgsMTcgKzI5Nyw2IEBAIGlubGluZSBjb25zdCBjaGFyKiBtYWtlU3RyaW5n
KFR5cGVLaW5kIGtpbmQpCiB9CiAjdW5kZWYgQ1JFQVRFX0NBU0UKIAotI2RlZmluZSBDUkVBVEVf
Q0FTRShuYW1lLCAuLi4pIGNhc2UgUGFja2VkVHlwZTo6bmFtZTogcmV0dXJuICNuYW1lOwotaW5s
aW5lIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoUGFja2VkVHlwZSBwYWNrZWRUeXBlKQotewotICAg
IHN3aXRjaCAocGFja2VkVHlwZSkgewotICAgIEZPUl9FQUNIX1dBU01fUEFDS0VEX1RZUEUoQ1JF
QVRFX0NBU0UpCi0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0jdW5kZWYgQ1JFQVRFX0NBU0UKLQogI2RlZmluZSBDUkVBVEVf
Q0FTRShuYW1lLCBpZCwgYjN0eXBlLCBpbmMsIC4uLikgY2FzZSBUeXBlS2luZDo6bmFtZTogcmV0
dXJuIGluYzsKIGlubGluZSBpbnQgbGluZWFyaXplVHlwZShUeXBlS2luZCBraW5kKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUFycmF5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlBcnJheS5j
cHAKaW5kZXggYjlmNjRjZWE1OWU4Li5hMDBlYmE0MjM2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlBcnJheS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUFycmF5LmNwcApAQCAtMzAsMTMg
KzMwLDEyIEBACiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbUZvcm1h
dC5oIgotI2luY2x1ZGUgIldhc21UeXBlRGVmaW5pdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlBcnJheTo6c19pbmZvID0geyAiV2ViQXNz
ZW1ibHkuQXJyYXkiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNXZWJBc3NlbWJseUFycmF5KSB9OwogCi1KU1dlYkFzc2VtYmx5QXJyYXk6
OkpTV2ViQXNzZW1ibHlBcnJheShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpG
aWVsZFR5cGUgZWxlbWVudFR5cGUsIHNpemVfdCBzaXplLCBGaXhlZFZlY3Rvcjx1aW50MzJfdD4m
JiBwYXlsb2FkKQorSlNXZWJBc3NlbWJseUFycmF5OjpKU1dlYkFzc2VtYmx5QXJyYXkoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6VHlwZSBlbGVtZW50VHlwZSwgc2l6ZV90IHNp
emUsIEZpeGVkVmVjdG9yPHVpbnQzMl90PiYmIHBheWxvYWQpCiAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX2VsZW1lbnRUeXBlKGVsZW1lbnRUeXBlKQogICAgICwgbV9zaXplKHNp
emUpCkBAIC00NCw3ICs0Myw3IEBAIEpTV2ViQXNzZW1ibHlBcnJheTo6SlNXZWJBc3NlbWJseUFy
cmF5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206OkZpZWxkCiB7CiB9CiAKLUpT
V2ViQXNzZW1ibHlBcnJheTo6SlNXZWJBc3NlbWJseUFycmF5KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFdhc206OkZpZWxkVHlwZSBlbGVtZW50VHlwZSwgc2l6ZV90IHNpemUsIEZpeGVk
VmVjdG9yPHVpbnQ2NF90PiYmIHBheWxvYWQpCitKU1dlYkFzc2VtYmx5QXJyYXk6OkpTV2ViQXNz
ZW1ibHlBcnJheShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpUeXBlIGVsZW1l
bnRUeXBlLCBzaXplX3Qgc2l6ZSwgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiYgcGF5bG9hZCkKICAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZWxlbWVudFR5cGUoZWxlbWVudFR5cGUp
CiAgICAgLCBtX3NpemUoc2l6ZSkKQEAgLTU0LDE5ICs1Myw3IEBAIEpTV2ViQXNzZW1ibHlBcnJh
eTo6SlNXZWJBc3NlbWJseUFycmF5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206
OkZpZWxkCiAKIEpTV2ViQXNzZW1ibHlBcnJheTo6fkpTV2ViQXNzZW1ibHlBcnJheSgpCiB7Ci0g
ICAgaWYgKG1fZWxlbWVudFR5cGUudHlwZS5pczxXYXNtOjpQYWNrZWRUeXBlPigpKSB7Ci0gICAg
ICAgIHN3aXRjaCAoKm1fZWxlbWVudFR5cGUudHlwZS5hczxXYXNtOjpQYWNrZWRUeXBlPigpKSB7
Ci0gICAgICAgIGNhc2UgV2FzbTo6UGFja2VkVHlwZTo6STg6Ci0gICAgICAgICAgICBtX3BheWxv
YWQ4Ln5GaXhlZFZlY3Rvcjx1aW50OF90PigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgV2FzbTo6UGFja2VkVHlwZTo6STE2OgotICAgICAgICAgICAgbV9wYXlsb2FkMTYufkZp
eGVkVmVjdG9yPHVpbnQxNl90PigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN3aXRjaCAobV9lbGVtZW50VHlwZS50eXBlLmFz
PFdhc206OlR5cGU+KCktPmtpbmQpIHsKKyAgICBzd2l0Y2ggKG1fZWxlbWVudFR5cGUua2luZCkg
ewogICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKICAgICBjYXNlIFdhc206OlR5cGVLaW5k
OjpGMzI6CiAgICAgICAgIG1fcGF5bG9hZDMyLn5GaXhlZFZlY3Rvcjx1aW50MzJfdD4oKTsKQEAg
LTc3LDIyICs2NCw2IEBAIEpTV2ViQXNzZW1ibHlBcnJheTo6fkpTV2ViQXNzZW1ibHlBcnJheSgp
CiAgICAgfQogfQogCi1KU1dlYkFzc2VtYmx5QXJyYXk6OkpTV2ViQXNzZW1ibHlBcnJheShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpGaWVsZFR5cGUgZWxlbWVudFR5cGUsIHNp
emVfdCBzaXplLCBGaXhlZFZlY3Rvcjx1aW50OF90PiYmIHBheWxvYWQpCi0gICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2VsZW1lbnRUeXBlKGVsZW1lbnRUeXBlKQotICAgICwgbV9z
aXplKHNpemUpCi0gICAgLCBtX3BheWxvYWQ4KFdURk1vdmUocGF5bG9hZCkpCi17Ci19Ci0KLUpT
V2ViQXNzZW1ibHlBcnJheTo6SlNXZWJBc3NlbWJseUFycmF5KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFdhc206OkZpZWxkVHlwZSBlbGVtZW50VHlwZSwgc2l6ZV90IHNpemUsIEZpeGVk
VmVjdG9yPHVpbnQxNl90PiYmIHBheWxvYWQpCi0gICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0g
ICAgLCBtX2VsZW1lbnRUeXBlKGVsZW1lbnRUeXBlKQotICAgICwgbV9zaXplKHNpemUpCi0gICAg
LCBtX3BheWxvYWQxNihXVEZNb3ZlKHBheWxvYWQpKQotewotfQotCiB2b2lkIEpTV2ViQXNzZW1i
bHlBcnJheTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKQEAgLTExNyw3ICs4OCw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUFycmF5Ojp2aXNp
dENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKGlzUmVmVHlw
ZSh0aGlzT2JqZWN0LT5lbGVtZW50VHlwZSgpLnR5cGUpKSB7CisgICAgaWYgKGlzUmVmVHlwZSh0
aGlzT2JqZWN0LT5lbGVtZW50VHlwZSgpKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdGhpc09iamVjdC0+c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZChiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Pih0aGlzT2JqZWN0LT5nZXQoaSkp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlBcnJheS5oCmluZGV4IGI1ZTg5N2RkYTUyOS4uOGIxZThlMWM2YWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5QXJyYXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5QXJyYXkuaApAQCAt
MjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJXYXNtT3Bz
LmgiCi0jaW5jbHVkZSAiV2FzbVR5cGVEZWZpbml0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC01NSwzMyArNTQsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5QXJyYXkqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpGaWVsZFR5cGUgZWxlbWVudFR5cGUsIHNp
emVfdCBzaXplLCBGaXhlZFZlY3RvcjxFbGVtZW50VHlwZT4mJiBwYXlsb2FkKQorICAgIHN0YXRp
YyBKU1dlYkFzc2VtYmx5QXJyYXkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBXYXNtOjpUeXBlIGVsZW1lbnRUeXBlLCBzaXplX3Qgc2l6ZSwgRml4ZWRWZWN0b3I8dWludDMy
X3Q+JiYgcGF5bG9hZCkKICAgICB7CiAgICAgICAgIEpTV2ViQXNzZW1ibHlBcnJheSogYXJyYXkg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5QXJyYXk+KHZtKSkgSlNX
ZWJBc3NlbWJseUFycmF5KHZtLCBzdHJ1Y3R1cmUsIGVsZW1lbnRUeXBlLCBzaXplLCBXVEZNb3Zl
KHBheWxvYWQpKTsKICAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAg
cmV0dXJuIGFycmF5OworICAgIH0KIAorICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5QXJyYXkqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpUeXBlIGVsZW1lbnRUeXBl
LCBzaXplX3Qgc2l6ZSwgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiYgcGF5bG9hZCkKKyAgICB7Cisg
ICAgICAgIEpTV2ViQXNzZW1ibHlBcnJheSogYXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1dlYkFzc2VtYmx5QXJyYXk+KHZtKSkgSlNXZWJBc3NlbWJseUFycmF5KHZtLCBzdHJ1
Y3R1cmUsIGVsZW1lbnRUeXBlLCBzaXplLCBXVEZNb3ZlKHBheWxvYWQpKTsKKyAgICAgICAgYXJy
YXktPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGFycmF5OwogICAgIH0KIAog
ICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CiAKLSAgICBXYXNtOjpGaWVsZFR5cGUgZWxlbWVu
dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9CisgICAgV2FzbTo6VHlwZSBl
bGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCiAgICAgRW5jb2RlZEpTVmFsdWUgZ2V0
KHVpbnQzMl90IGluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKG1fZWxlbWVudFR5cGUudHlwZS5p
czxXYXNtOjpQYWNrZWRUeXBlPigpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKCptX2VsZW1lbnRU
eXBlLnR5cGUuYXM8V2FzbTo6UGFja2VkVHlwZT4oKSkgewotICAgICAgICAgICAgY2FzZSBXYXNt
OjpQYWNrZWRUeXBlOjpJODoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWU+KG1fcGF5bG9hZDhbaW5kZXhdKTsKLSAgICAgICAgICAgIGNhc2UgV2FzbTo6
UGFja2VkVHlwZTo6STE2OgotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZT4obV9wYXlsb2FkMTZbaW5kZXhdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICAvLyBtX2VsZW1lbnRfdHlwZSBtdXN0IGJlIGEgdHlwZSwgc28gd2UgY2FuIGdl
dCBpdHMga2luZAotICAgICAgICBBU1NFUlQobV9lbGVtZW50VHlwZS50eXBlLmlzPFdhc206OlR5
cGU+KCkpOwotICAgICAgICBzd2l0Y2ggKG1fZWxlbWVudFR5cGUudHlwZS5hczxXYXNtOjpUeXBl
PigpLT5raW5kKSB7CisgICAgICAgIHN3aXRjaCAobV9lbGVtZW50VHlwZS5raW5kKSB7CiAgICAg
ICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6RjMyOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlPiht
X3BheWxvYWQzMltpbmRleF0pOwpAQCAtOTIsMjMgKzg2LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXQoVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBpZiAobV9lbGVtZW50VHlwZS50eXBlLmlzPFdhc206OlBhY2tlZFR5cGU+KCkp
IHsKLSAgICAgICAgICAgIC8vIGB2YWx1ZWAgaXMgYXNzdW1lZCB0byBiZSBhbiB1bmJveGVkIGlu
dDMyOyB0cnVuY2F0ZSBpdCB0byBlaXRoZXIgOCBvciAxNiBiaXRzCi0gICAgICAgICAgICBBU1NF
UlQodmFsdWUgPD0gVUlOVDMyX01BWCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKCptX2VsZW1lbnRU
eXBlLnR5cGUuYXM8V2FzbTo6UGFja2VkVHlwZT4oKSkgewotICAgICAgICAgICAgY2FzZSBXYXNt
OjpQYWNrZWRUeXBlOjpJODoKLSAgICAgICAgICAgICAgICBtX3BheWxvYWQ4W2luZGV4XSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgV2FzbTo6UGFja2VkVHlwZTo6STE2OgotICAgICAgICAgICAgICAgIG1fcGF5
bG9hZDE2W2luZGV4XSA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBBU1NFUlQobV9lbGVtZW50VHlwZS50eXBlLmlzPFdhc206OlR5cGU+KCkp
OwotCi0gICAgICAgIHN3aXRjaCAobV9lbGVtZW50VHlwZS50eXBlLmFzPFdhc206OlR5cGU+KCkt
PmtpbmQpIHsKKyAgICAgICAgc3dpdGNoIChtX2VsZW1lbnRUeXBlLmtpbmQpIHsKICAgICAgICAg
Y2FzZSBXYXNtOjpUeXBlS2luZDo6STMyOgogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpG
MzI6CiAgICAgICAgICAgICBtX3BheWxvYWQzMltpbmRleF0gPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odmFsdWUpOwpAQCAtMTQwLDIyICsxMTgsMTggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVj
dGVkOgotICAgIEpTV2ViQXNzZW1ibHlBcnJheShWTSYsIFN0cnVjdHVyZSosIFdhc206OkZpZWxk
VHlwZSwgc2l6ZV90LCBGaXhlZFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBKU1dlYkFzc2VtYmx5
QXJyYXkoVk0mLCBTdHJ1Y3R1cmUqLCBXYXNtOjpGaWVsZFR5cGUsIHNpemVfdCwgRml4ZWRWZWN0
b3I8dWludDE2X3Q+JiYpOwotICAgIEpTV2ViQXNzZW1ibHlBcnJheShWTSYsIFN0cnVjdHVyZSos
IFdhc206OkZpZWxkVHlwZSwgc2l6ZV90LCBGaXhlZFZlY3Rvcjx1aW50MzJfdD4mJik7Ci0gICAg
SlNXZWJBc3NlbWJseUFycmF5KFZNJiwgU3RydWN0dXJlKiwgV2FzbTo6RmllbGRUeXBlLCBzaXpl
X3QsIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYmKTsKKyAgICBKU1dlYkFzc2VtYmx5QXJyYXkoVk0m
LCBTdHJ1Y3R1cmUqLCBXYXNtOjpUeXBlLCBzaXplX3QsIEZpeGVkVmVjdG9yPHVpbnQzMl90PiYm
KTsKKyAgICBKU1dlYkFzc2VtYmx5QXJyYXkoVk0mLCBTdHJ1Y3R1cmUqLCBXYXNtOjpUeXBlLCBz
aXplX3QsIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYmKTsKICAgICB+SlNXZWJBc3NlbWJseUFycmF5
KCk7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBXYXNtOjpGaWVsZFR5
cGUgbV9lbGVtZW50VHlwZTsKKyAgICBXYXNtOjpUeXBlIG1fZWxlbWVudFR5cGU7CiAgICAgc2l6
ZV90IG1fc2l6ZTsKIAogICAgIC8vIEEgdW5pb24gaXMgdXNlZCBoZXJlIHRvIGVuc3VyZSB0aGUg
dW5kZXJseWluZyBzdG9yYWdlIGlzIGFsaWduZWQgY29ycmVjdGx5LgogICAgIC8vIFRoZSBwYXls
b2FkIG1lbWJlciB1c2VkIGVudGlyZWx5IGRlcGVuZHMgb24gbV9lbGVtZW50VHlwZSwgc28gbm8g
dGFnIGlzIHJlcXVpcmVkLgogICAgIHVuaW9uIHsKLSAgICAgICAgRml4ZWRWZWN0b3I8dWludDhf
dD4gIG1fcGF5bG9hZDg7Ci0gICAgICAgIEZpeGVkVmVjdG9yPHVpbnQxNl90PiBtX3BheWxvYWQx
NjsKICAgICAgICAgRml4ZWRWZWN0b3I8dWludDMyX3Q+IG1fcGF5bG9hZDMyOwogICAgICAgICBG
aXhlZFZlY3Rvcjx1aW50NjRfdD4gbV9wYXlsb2FkNjQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlTdHJ1Y3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5jcHAKaW5kZXgg
OTdmMGI0NjIwNjNiLi45YWUzZjhlNGNhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlTdHJ1Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlTdHJ1Y3QuY3BwCkBAIC04MywxMiArODMsNyBA
QCB1aW50NjRfdCBKU1dlYkFzc2VtYmx5U3RydWN0OjpnZXQodWludDMyX3QgZmllbGRJbmRleCkg
Y29uc3QKICAgICB1c2luZyBXYXNtOjpUeXBlS2luZDsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIHRh
cmdldFBvaW50ZXIgPSBmaWVsZFBvaW50ZXIoZmllbGRJbmRleCk7Ci0KLSAgICAvLyBGSVhNRTog
cGFja2VkIHR5cGVzIGluIHN0cnVjdHMgbm90IHN1cHBvcnRlZCB5ZXQ6Ci0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk4MQotICAgIEFTU0VSVChmaWVs
ZFR5cGUoZmllbGRJbmRleCkudHlwZS5pczxXYXNtOjpUeXBlPigpKTsKLQotICAgIHN3aXRjaCAo
ZmllbGRUeXBlKGZpZWxkSW5kZXgpLnR5cGUuYXM8V2FzbTo6VHlwZT4oKS0+a2luZCkgeworICAg
IHN3aXRjaCAoZmllbGRUeXBlKGZpZWxkSW5kZXgpLnR5cGUua2luZCkgewogICAgIGNhc2UgVHlw
ZUtpbmQ6OkkzMjoKICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAgIHJldHVybiAqYml0
d2lzZV9jYXN0PHVpbnQzMl90Kj4odGFyZ2V0UG9pbnRlcik7CkBAIC0xMTEsMTIgKzEwNiw3IEBA
IHZvaWQgSlNXZWJBc3NlbWJseVN0cnVjdDo6c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVpbnQzMl90IGZpZWxkSW5kZXgsCiAgICAgdXNpbmcgV2FzbTo6VHlwZUtpbmQ7CiAKICAg
ICB1aW50OF90KiB0YXJnZXRQb2ludGVyID0gZmllbGRQb2ludGVyKGZpZWxkSW5kZXgpOwotCi0g
ICAgLy8gRklYTUU6IHBhY2tlZCB0eXBlcyBpbiBzdHJ1Y3RzIG5vdCBzdXBwb3J0ZWQgeWV0Ogot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5ODEKLSAg
ICBBU1NFUlQoZmllbGRUeXBlKGZpZWxkSW5kZXgpLnR5cGUuaXM8V2FzbTo6VHlwZT4oKSk7Ci0K
LSAgICBzd2l0Y2ggKGZpZWxkVHlwZShmaWVsZEluZGV4KS50eXBlLmFzPFdhc206OlR5cGU+KCkt
PmtpbmQpIHsKKyAgICBzd2l0Y2ggKGZpZWxkVHlwZShmaWVsZEluZGV4KS50eXBlLmtpbmQpIHsK
ICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6IHsKICAgICAgICAgKmJpdHdpc2VfY2FzdDxpbnQzMl90
Kj4odGFyZ2V0UG9pbnRlcikgPSBhcmd1bWVudC50b0ludDMyKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCAxN2IyZmUy
YzY2MTEuLjExNGIxN2Q3ODZlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpA
QCAtMjUsMTAgKzI1LDYgQEAKICAgICAgICAgInJlYyI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAtNDksICJiM3R5cGUiOiAiQjM6OlZvaWQiLCAgICJ3aWR0aCI6IDAgfSwK
ICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQs
ICJiM3R5cGUiOiAiQjM6OlZvaWQiLCAgICJ3aWR0aCI6IDAgfQogICAgIH0sCi0gICAgInBhY2tl
ZF90eXBlIjogewotICAgICAgICAiaTgiOiAgICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC02fSwKLSAgICAgICAgImkxNiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAtN30KLSAgICB9LAogICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYz
MiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiLCAidjEyOCJdLAogICAgICJibG9ja190
eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAidm9pZCIsICJleHRlcm5yZWYiLCAi
ZnVuY3JlZiIsICJ2MTI4Il0sCiAgICAgInJlZl90eXBlIjogWyJmdW5jcmVmIiwgImV4dGVybnJl
ZiIsICJyZWYiLCAicmVmX251bGwiXSwKQEAgLTI2Nyw4ICsyNjMsNiBAQAogICAgICAgICAiYXJy
YXkubmV3IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAy
NTEsICJyZXR1cm4iOiBbImFycmF5cmVmIl0sICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiYW55IiwgImkzMiIsICJydHQiXSwgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAxNyB9
LAogICAgICAgICAiYXJyYXkubmV3X2RlZmF1bHQiOiAgIHsgImNhdGVnb3J5IjogImdjIiwgICAg
ICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImFycmF5cmVmIl0sICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiaTMyIiwgInJ0dCJdLCAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4
dGVuZGVkT3AiOiAxOCB9LAogICAgICAgICAiYXJyYXkuZ2V0IjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImFueSJdLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXlyZWYiLCAiaTMyIl0sICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAxOSB9LAotICAgICAgICAiYXJyYXkuZ2V0X3MiOiAg
ICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4i
OiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXly
ZWYiLCAiaTMyIl0sICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRl
eCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAyMCB9LAotICAgICAgICAi
YXJyYXkuZ2V0X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUi
OiAyNTEsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlciI6IFsiYXJyYXlyZWYiLCAiaTMyIl0sICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAy
MSB9LAogICAgICAgICAiYXJyYXkuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwg
ICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXlyZWYiLCAiaTMyIiwgImFueSJdLCAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ImV4dGVuZGVkT3AiOiAyMiB9LAogICAgICAgICAiYXJyYXkubGVuIjogICAgICAgICAgIHsgImNh
dGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImkzMiJdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXlyZWYiXSwgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAyMyB9LAogICAgICAgICAiaTMxLm5ldyI6ICAg
ICAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1
cm4iOiBbImkzMXJlZiJdLCAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiaTMy
Il0sICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAiZXh0ZW5kZWRPcCI6
IDMyIH0sCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZ2MvYXJyYXlzLmpzIGIvSlNUZXN0cy93
YXNtL2djL2FycmF5cy5qcwppbmRleCAyNjQ0YzQ0ZDk2NDYuLjA1MWI0ZDkzODNhYiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy93YXNtL2djL2FycmF5cy5qcworKysgYi9KU1Rlc3RzL3dhc20vZ2MvYXJy
YXlzLmpzCkBAIC0zNCw3ICszNCw3IEBAIGZ1bmN0aW9uIHRlc3RBcnJheURlY2xhcmF0aW9uKCkg
ewogICBhc3NlcnQudGhyb3dzKAogICAgICgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMVx4NWVceGZmXHgwMiIpKSwKICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3Is
Ci0gICAgIk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTY6IGNhbid0IGdldCBhcnJheSdz
IGVsZW1lbnQgVHlwZSIKKyAgICAiTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNzogY2Fu
J3QgZ2V0IGFycmF5J3MgZWxlbWVudCBUeXBlIgogICApCiAKICAgLyoKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9nYy9wYWNrZWQtYXJyYXlzLmpzIGIvSlNUZXN0cy93YXNtL2djL3BhY2tlZC1h
cnJheXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZWRhMWJhYTYxYi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS9nYy9wYWNrZWQtYXJyYXlzLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsNDc0ICswLDAgQEAKLS8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdl
YkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdlYkFzc2VtYmx5
R0M9dHJ1ZSIpCi0KLWltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOwotaW1w
b3J0IHsgY29tcGlsZSwgaW5zdGFudGlhdGUgfSBmcm9tICIuL3dhc3Qtd3JhcHBlci5qcyI7Ci0K
LWZ1bmN0aW9uIG1vZHVsZShieXRlcywgdmFsaWQgPSB0cnVlKSB7Ci0gIGxldCBidWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKLSAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJh
eShidWZmZXIpOwotICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7Ci0gIH0KLSAgcmV0dXJuIG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gY2hlY2soY3JlYXRlTW9kdWxl
U3RyaW5nLCB0eXBlLCBleHBlY3RlZFZhbCkgewotICAgIGxldCBtID0gaW5zdGFudGlhdGUoY3Jl
YXRlTW9kdWxlU3RyaW5nKHR5cGUpKTsKLSAgICBhc3NlcnQuZXEobS5leHBvcnRzLmYoKSwgZXhw
ZWN0ZWRWYWwpOwotfQotCi1mdW5jdGlvbiB0ZXN0QXJyYXlHZXRQYWNrZWQoKSB7Ci0gICAgbGV0
IGYgPSAodHlwZSkgPT4gYAotICAgICAgKG1vZHVsZQotICAgICAgICAodHlwZSAoYXJyYXkgKG11
dCBgICsgdHlwZSArIGApKSkKLSAgICAgICAgKGZ1bmMgKGV4cG9ydCAiZiIpIChyZXN1bHQgaTMy
KQotICAgICAgICAgIChhcnJheS5uZXdfY2Fub25fZGVmYXVsdCAwIChpMzIuY29uc3QgNSkpCi0g
ICAgICAgICAgKGkzMi5jb25zdCAyKQotICAgICAgICAgIChhcnJheS5nZXRfdSAwKSkpCi0gICAg
YDsKLSAgICBjaGVjayhmLCAiaTgiLCAwKTsKLSAgICBjaGVjayhmLCAiaTE2IiwgMCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RBcnJheUdldFVXaXRoTmV3Q2Fub25QYWNrZWQoKSB7Ci0gICAgLyoKLSAg
ICAgKiBtYXhpbnQzMiA9PiB0cnVuY2F0ZSB0byAweEZGID0+IHplcm8tZXh0ZW5kIHRvIDB4MDAw
MDAwRkYgKGk4KSBvciAweDAwMDBGRkZGIChpMTYpCi0gICAgICovCi0gICAgewotICAgICAgICBs
ZXQgZiA9ICh0eXBlKSA9PiBgCi0gICAgICAobW9kdWxlCi0gICAgICAgICh0eXBlIChhcnJheSAo
bXV0IGAgKyB0eXBlICsgYCkpKQotICAgICAgICAoZnVuYyAoZXhwb3J0ICJmIikgKHJlc3VsdCBp
MzIpCi0gICAgICAgICAgKGFycmF5Lm5ld19jYW5vbiAwIChpMzIuY29uc3QgMHg3RkZGX0ZGRkYp
IChpMzIuY29uc3QgNSkpCi0gICAgICAgICAgKGkzMi5jb25zdCAyKQotICAgICAgICAgIChhcnJh
eS5nZXRfdSAwKSkpCi0gICAgYDsKLSAgICAgICAgY2hlY2soZiwgImk4IiwgMjU1KTsKLSAgICAg
ICAgY2hlY2soZiwgImkxNiIsIDB4RkZGRik7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiAtMSA9
PiB0cnVuY2F0ZSB0byAweEZGID0+IHplcm8tZXh0ZW5kIHRvIDB4MDAwMDAwRkYgKGk4KSBvciAw
eDAwMDBGRkZGIChpMTYpCi0gICAgICovCi0gICAgewotICAgICAgICBsZXQgZiA9ICh0eXBlKSA9
PiBgCi0gICAgICAobW9kdWxlCi0gICAgICAgICh0eXBlIChhcnJheSAobXV0IGAgKyB0eXBlICsg
YCkpKQotICAgICAgICAoZnVuYyAoZXhwb3J0ICJmIikgKHJlc3VsdCBpMzIpCi0gICAgICAgICAg
KGFycmF5Lm5ld19jYW5vbiAwIChpMzIuY29uc3QgMHhGRkZGX0ZGRkYpIChpMzIuY29uc3QgNSkp
Ci0gICAgICAgICAgKGkzMi5jb25zdCAyKQotICAgICAgICAgIChhcnJheS5nZXRfdSAwKSkpCi0g
ICAgYDsKLSAgICAgICAgY2hlY2soZiwgImk4IiwgMjU1KTsKLSAgICAgICAgY2hlY2soZiwgImkx
NiIsIDB4RkZGRik7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiAweDQwMDBfMDAwMCA9PiB0cnVu
Y2F0ZSB0byAwID0+IHplcm8tZXh0ZW5kIHRvIDAKLSAgICAgKi8KLSAgICB7Ci0gICAgICAgIGxl
dCBmID0gKHR5cGUpID0+IGAKLSAgICAgIChtb2R1bGUKLSAgICAgICAgKHR5cGUgKGFycmF5ICht
dXQgYCArIHR5cGUgKyBgKSkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImYiKSAocmVzdWx0IGkz
MikKLSAgICAgICAgICAoYXJyYXkubmV3X2Nhbm9uIDAgKGkzMi5jb25zdCAweDQwMDBfMDAwMCkg
KGkzMi5jb25zdCA1KSkKLSAgICAgICAgICAoaTMyLmNvbnN0IDIpCi0gICAgICAgICAgKGFycmF5
LmdldF91IDApKSkKLSAgICBgOwotICAgICAgICBjaGVjayhmLCAiaTgiLCAwKTsKLSAgICAgICAg
Y2hlY2soZiwgImkxNiIsIDApOwotICAgIH0KLQotICAgIC8qCi0gICAgICogMHgwMDAwMDA4MCA9
PiB0cnVuY2F0ZSB0byAweDgwICA9PiB6ZXJvLWV4dGVuZCB0byAxMjgKLSAgICAgKi8KLSB7Ci0g
ICAgIGxldCBmID0gKHR5cGUpID0+IGAKLSAgICAgIChtb2R1bGUKLSAgICAgICAgKHR5cGUgKGFy
cmF5IChtdXQgYCArIHR5cGUgKyBgKSkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImYiKSAocmVz
dWx0IGkzMikKLSAgICAgICAgICAoYXJyYXkubmV3X2Nhbm9uIDAgKGkzMi5jb25zdCAweDgwKSAo
aTMyLmNvbnN0IDUpKQotICAgICAgICAgIChpMzIuY29uc3QgMikKLSAgICAgICAgICAoYXJyYXku
Z2V0X3UgMCkpKQotICAgIGA7Ci0gICAgIGNoZWNrKGYsICJpOCIsIDEyOCk7Ci0gICAgIGNoZWNr
KGYsICJpMTYiLCAxMjgpOwotICB9Ci0KLSAgICAvKgotICAgICAqIDB4YWFhYV9hYWFhID0+IHRy
dW5jYXRlIHRvIDB4YWEgID0+IHplcm8tZXh0ZW5kIHRvIDB4YWEgKGk4KSBvciAweGFhYWEgKGkx
NikKLSAgICAgKi8KLSB7Ci0gICAgIGxldCBmID0gKHR5cGUpID0+IGAKLSAgICAgIChtb2R1bGUK
LSAgICAgICAgKHR5cGUgKGFycmF5IChtdXQgYCArIHR5cGUgKyBgKSkpCi0gICAgICAgIChmdW5j
IChleHBvcnQgImYiKSAocmVzdWx0IGkzMikKLSAgICAgICAgICAoYXJyYXkubmV3X2Nhbm9uIDAg
KGkzMi5jb25zdCAweGFhYWFfYWFhYSkgKGkzMi5jb25zdCA1KSkKLSAgICAgICAgICAoaTMyLmNv
bnN0IDIpCi0gICAgICAgICAgKGFycmF5LmdldF91IDApKSkKLSAgICBgOwotICAgICBjaGVjayhm
LCAiaTgiLCAweGFhKTsKLSAgICAgY2hlY2soZiwgImkxNiIsIDB4YWFhYSk7Ci0gIH0KLQotfQot
Ci0vLyBUaGVzZSB0ZXN0cyB0ZXN0IHR3byBkaWZmZXJlbnQgdGhpbmdzIGF0IG9uY2UgKHRoYXQg
YXJyYXkuZ2V0X3Mgc2lnbi1leHRlbmRzIHByb3Blcmx5LAotLy8gYW5kIHRoYXQgYXJyYXkubmV3
X2Nhbm9uIHRydW5jYXRlcyBwcm9wZXJseSkKLWZ1bmN0aW9uIHRlc3RBcnJheUdldFNXaXRoTmV3
Q2Fub25QYWNrZWQoKSB7Ci0gICAgLyoKLSAgICAgKiBtYXhpbnQzMiA9PiB0cnVuY2F0ZSB0byAw
eEZGIChvciAweEZGRkYpID0+IHNpZ24tZXh0ZW5kIHRvIDB4RkZGRkZGRkYKLSAgICAgKi8KLQot
ICAgIHsKLSAgICAgICAgbGV0IGYgPSAodHlwZSkgPT4gYAotICAgICAgKG1vZHVsZQotICAgICAg
ICAodHlwZSAoYXJyYXkgKG11dCBgICsgdHlwZSArIGApKSkKLSAgICAgICAgKGZ1bmMgKGV4cG9y
dCAiZiIpIChyZXN1bHQgaTMyKQotICAgICAgICAgIChhcnJheS5uZXdfY2Fub24gMCAoaTMyLmNv
bnN0IDB4N0ZGRl9GRkZGKSAoaTMyLmNvbnN0IDUpKQotICAgICAgICAgIChpMzIuY29uc3QgMikK
LSAgICAgICAgICAoYXJyYXkuZ2V0X3MgMCkpKQotICAgIGA7Ci0gICAgICAgIGNoZWNrKGYsICJp
OCIsIC0xKTsKLSAgICAgICAgY2hlY2soZiwgImkxNiIsIC0xKTsKLSAgICB9Ci0KLSAgICAvKgot
ICAgICAqIC0xID0+IHRydW5jYXRlIHRvIDB4RkYgKG9yIDB4RkZGRikgPT4gc2lnbi1leHRlbmQg
dG8gMHhGRkZGRkZGRgotICAgICAqLwotCi0gICAgewotICAgICAgICBsZXQgZiA9ICh0eXBlKSA9
PiBgCi0gICAgICAobW9kdWxlCi0gICAgICAgICh0eXBlIChhcnJheSAobXV0IGAgKyB0eXBlICsg
YCkpKQotICAgICAgICAoZnVuYyAoZXhwb3J0ICJmIikgKHJlc3VsdCBpMzIpCi0gICAgICAgICAg
KGFycmF5Lm5ld19jYW5vbiAwIChpMzIuY29uc3QgMHhGRkZGX0ZGRkYpIChpMzIuY29uc3QgNSkp
Ci0gICAgICAgICAgKGkzMi5jb25zdCAyKQotICAgICAgICAgIChhcnJheS5nZXRfcyAwKSkpCi0g
ICAgYDsKLSAgICAgICAgY2hlY2soZiwgImk4IiwgLTEpOwotICAgICAgICBjaGVjayhmLCAiaTE2
IiwgLTEpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogMHg0MDAwXzAwMDAgPT4gdHJ1bmNhdGUg
dG8gMCA9PiBzaWduLWV4dGVuZCB0byAwCi0gICAgICovCi0KLSAgewotICAgICAgbGV0IGYgPSAo
dHlwZSkgPT4gYAotICAgICAgKG1vZHVsZQotICAgICAgICAodHlwZSAoYXJyYXkgKG11dCBgICsg
dHlwZSArIGApKSkKLSAgICAgICAgKGZ1bmMgKGV4cG9ydCAiZiIpIChyZXN1bHQgaTMyKQotICAg
ICAgICAgIChhcnJheS5uZXdfY2Fub24gMCAoaTMyLmNvbnN0IDB4NDAwMF8wMDAwKSAoaTMyLmNv
bnN0IDUpKQotICAgICAgICAgIChpMzIuY29uc3QgMikKLSAgICAgICAgICAoYXJyYXkuZ2V0X3Mg
MCkpKQotICAgIGA7Ci0gICAgICBjaGVjayhmLCAiaTgiLCAwKTsKLSAgICAgIGNoZWNrKGYsICJp
MTYiLCAwKTsKLSAgfQotCi0gICAgLyoKLSAgICAgKiAweDAwMDBfMDA4MCA9PiB0cnVuY2F0ZSB0
byAweDgwID0+IHNpZ24tZXh0ZW5kIHRvIC0xMjggKGk4KSBvciAxMjggKGkxNikKLSAgICAgKi8K
LQotICB7Ci0gICAgICBsZXQgZiA9ICh0eXBlKSA9PiBgCi0gICAgICAobW9kdWxlCi0gICAgICAg
ICh0eXBlIChhcnJheSAobXV0IGAgKyB0eXBlICsgYCkpKQotICAgICAgICAoZnVuYyAoZXhwb3J0
ICJmIikgKHJlc3VsdCBpMzIpCi0gICAgICAgICAgKGFycmF5Lm5ld19jYW5vbiAwIChpMzIuY29u
c3QgMHgwMDAwXzAwODApIChpMzIuY29uc3QgNSkpCi0gICAgICAgICAgKGkzMi5jb25zdCAyKQot
ICAgICAgICAgIChhcnJheS5nZXRfcyAwKSkpCi0gICAgYDsKLSAgICAgIGNoZWNrKGYsICJpOCIs
IC0xMjgpOwotICAgICAgY2hlY2soZiwgImkxNiIsIDEyOCk7Ci0gIH0KLQotICAgIC8qCi0gICAg
ICogMHgwMDAwXzgwMDAgPT4gdHJ1bmNhdGUgdG8gMCAoaTgpIDB4ODAwMCAoaTE2KSA9PiBzaWdu
LWV4dGVuZCB0byAwIChpOCkgb3IgMHhmZmZmODAwMCAoLTMyNzY4KSAoaTE2KQotICAgICAqLwot
Ci0gICAgewotICAgICAgbGV0IGYgPSAodHlwZSkgPT4gYAotICAgICAgKG1vZHVsZQotICAgICAg
ICAodHlwZSAoYXJyYXkgKG11dCBgICsgdHlwZSArIGApKSkKLSAgICAgICAgKGZ1bmMgKGV4cG9y
dCAiZiIpIChyZXN1bHQgaTMyKQotICAgICAgICAgIChhcnJheS5uZXdfY2Fub24gMCAoaTMyLmNv
bnN0IDB4MDAwMF84MDAwKSAoaTMyLmNvbnN0IDUpKQotICAgICAgICAgIChpMzIuY29uc3QgMikK
LSAgICAgICAgICAoYXJyYXkuZ2V0X3MgMCkpKQotICAgIGA7Ci0gICAgICAgIGNoZWNrKGYsICJp
OCIsIDApOwotICAgICAgICBjaGVjayhmLCAiaTE2IiwgLTMyNzY4KTsKLSAgICB9Ci0KLQotICAg
IC8qCi0gICAgICogMHhhYWFhX2FhYWEgPT4gdHJ1bmNhdGUgdG8gMHhhYSAoaTgpIG9yIDB4YWFh
YSAoaTE2KSA9PiBzaWduLWV4dGVuZCB0byAweGZmZmZfZmZhYSAoLTg2KSAoaTgpIG9yIDB4ZmZm
Zl9hYWFhICgtMjE4NDYpIChpMTYpCi0gICAgICovCi0KLSAgICB7Ci0gICAgICAgIGxldCBmID0g
KHR5cGUpID0+IGAKLSAgICAgIChtb2R1bGUKLSAgICAgICAgKHR5cGUgKGFycmF5IChtdXQgYCAr
IHR5cGUgKyBgKSkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImYiKSAocmVzdWx0IGkzMikKLSAg
ICAgICAgICAoYXJyYXkubmV3X2Nhbm9uIDAgKGkzMi5jb25zdCAweGFhYWFfYWFhYSkgKGkzMi5j
b25zdCA1KSkKLSAgICAgICAgICAoaTMyLmNvbnN0IDIpCi0gICAgICAgICAgKGFycmF5LmdldF9z
IDApKSkKLSAgICBgOwotICAgICAgICBjaGVjayhmLCAiaTgiLCAtODYpOwotICAgICAgICBjaGVj
ayhmLCAiaTE2IiwgLTIxODQ2KTsKLSAgICB9Ci0KLX0KLQotLy8gU2hvdWxkIGJlIGFuIGVycm9y
IHRvIGluaXRpYWxpemUgYSBwYWNrZWQgYXJyYXkgd2l0aCBhbiBpNjQgdmFsdWUKLWZ1bmN0aW9u
IHRlc3RUeXBlTWlzbWF0Y2g2NCgpIHsKLSAgICBsZXQgY2hlY2sgPSAodHlwZSkgPT4gYXNzZXJ0
LnRocm93cygKLSAgICAgICAgKCkgPT4gY29tcGlsZShgCi0gICAgICAobW9kdWxlCi0gICAgICAg
ICh0eXBlIChhcnJheSAobXV0IGAgKyB0eXBlICsgYCkpKQotICAgICAgICAoZnVuYyAoZXhwb3J0
ICJmIikgKHJlc3VsdCBpMzIpCi0gICAgICAgICAgKGFycmF5Lm5ld19jYW5vbiAwIChpNjQuY29u
c3QgMCkgKGkzMi5jb25zdCA1KSkKLSAgICAgICAgICAoaTMyLmNvbnN0IDIpCi0gICAgICAgICAg
KGFycmF5LmdldF91IDApKSkKLSAgICBgKSwKLSAgICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVy
cm9yLAotICAgICAgICAiYXJyYXkubmV3IHZhbHVlIHRvIHR5cGUgSTY0IGV4cGVjdGVkIEkzMiIK
LSAgICApOwotICAgIGNoZWNrKCJpOCIpOwotICAgIGNoZWNrKCJpMTYiKTsKLX0KLQotCi0vLyBT
aG91bGQgYmUgYW4gZXJyb3IgdG8gdXNlIGFycmF5LmdldCBvbiBhIHBhY2tlZCBhcnJheSAtLSBu
ZWVkIGdldF9zIG9yIGdldF91Ci1mdW5jdGlvbiB0ZXN0VHlwZU1pc21hdGNoQXJyYXlHZXQoKSB7
Ci0gICAgbGV0IGYgPSAodHlwZSkgPT4gKCkgPT4gY29tcGlsZShgCi0gICAgICAobW9kdWxlCi0g
ICAgICAgICh0eXBlIChhcnJheSAobXV0IGAgKyB0eXBlICsgYCkpKQotICAgICAgICAoZnVuYyAo
ZXhwb3J0ICJmIikgKHJlc3VsdCBpMzIpCi0gICAgICAgICAgKGFycmF5Lm5ld19jYW5vbiAwIChp
MzIuY29uc3QgMCkgKGkzMi5jb25zdCA1KSkKLSAgICAgICAgICAoaTMyLmNvbnN0IDIpCi0gICAg
ICAgICAgKGFycmF5LmdldCAwKSkpCi0gICAgYCk7Ci0gICAgYXNzZXJ0LnRocm93cyhmKCJpOCIp
LAotICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAg
ICAgICAgICAgImFycmF5LmdldCBhcHBsaWVkIHRvIHBhY2tlZCBhcnJheSBvZiBJOCAtLSB1c2Ug
YXJyYXkuZ2V0X3Mgb3IgYXJyYXkuZ2V0X3UiKTsKLSAgICBhc3NlcnQudGhyb3dzKGYoImkxNiIp
LAotICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAg
ICAgICAgICAgImFycmF5LmdldCBhcHBsaWVkIHRvIHBhY2tlZCBhcnJheSBvZiBJMTYgLS0gdXNl
IGFycmF5LmdldF9zIG9yIGFycmF5LmdldF91Iik7Ci19Ci0KLS8qCi1TaG91bGQgYmUgYW4gZXJy
b3IgdG8gdXNlIGk4IG9yIGkxNiBvdXRzaWRlIGFuIGFycmF5IGNvbnRleHQKLSovCi1mdW5jdGlv
biB0ZXN0UGFja2VkVHlwZU91dE9mQ29udGV4dCgpIHsKLS8qCi0obW9kdWxlCi0gIChmdW5jIChl
eHBvcnQgImYiKSAocmVzdWx0IGk4KQotICAgIChpMzIuY29uc3QgMikpKQotKi8KLSAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYx
XHg3M1x4NkRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBc
eDAwXHgwMVx4N0FceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg1XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAxXHg2Nlx4MDBceDAwXHgwQVx4OEFceDgwXHg4MFx4ODBceDAwXHgw
MVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAyXHgwQiIpKSwKLSAgICAgICAgICAgICAg
ICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICJXZWJBc3Nl
bWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE5OiBjYW4ndCBnZXQgMHRoIFR5cGUn
cyByZXR1cm4gdmFsdWUiKTsKLS8qCi0obW9kdWxlCi0gIChmdW5jIChleHBvcnQgImYiKSAocGFy
YW0gaTE2KSAocmVzdWx0IGkzMikKLSAgICAoaTMyLmNvbnN0IDIpKSkKLSovCi0gICAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4
NzNceDZEXHgwMVx4MDBceDAwXHgwMFx4MDFceDg2XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgw
MVx4NzlceDAxXHg3Rlx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODVceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDFceDY2XHgwMFx4MDBceDBBXHg4QVx4ODBceDgwXHg4MFx4MDBc
eDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDJceDBCIikpLAotICAgICAgICAgICAg
ICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAgICAgICAgICAgIldlYkFz
c2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTg6IGNhbid0IGdldCAwdGggYXJn
dW1lbnQgVHlwZSIpOwotLyoKLShtb2R1bGUKLSAgKHR5cGUgKGZ1bmMgKHBhcmFtIGk4KSAocmVz
dWx0IGkzMikpKSkKLSovCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZEXHgwMVx4MDBceDAwXHgwMFx4MDFceDg2
XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMVx4N0FceDAxXHg3RiIpKSwKLSAgICAgICAgICAg
ICAgICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICJXZWJB
c3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE4OiBjYW4ndCBnZXQgMHRoIGFy
Z3VtZW50IFR5cGUiKTsKLS8qCi0obW9kdWxlCi0gICh0eXBlIChmdW5jIChwYXJhbSBpMzIpIChy
ZXN1bHQgaTE2KSkpKQotKi8KLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NkRceDAxXHgwMFx4MDBceDAwXHgwMVx4
ODZceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAxXHg3Rlx4MDFceDc5IikpLAotICAgICAgICAg
ICAgICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAgICAgICAgICAgIldl
YkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMjA6IGNhbid0IGdldCAwdGgg
VHlwZSdzIHJldHVybiB2YWx1ZSIpOwotLyoKLShtb2R1bGUKLSAgKGdsb2JhbCAobXV0IGk4KSAo
aTMyLmNvbnN0IDApKSkKLSovCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZEXHgwMVx4MDBceDAwXHgwMFx4MDZc
eDg2XHg4MFx4ODBceDgwXHgwMFx4MDFceDdBXHgwMVx4NDFceDAwXHgwQiIpKSwKLSAgICAgICAg
ICAgICAgICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICJX
ZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE2OiBjYW4ndCBnZXQgR2xv
YmFsJ3MgdmFsdWUgdHlwZSIpOwotLyoKLShtb2R1bGUKLSAgKGdsb2JhbCAobXV0IGkxNikgKGkz
Mi5jb25zdCAwKSkpCi0qLwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2RFx4MDFceDAwXHgwMFx4MDBceDA2XHg4
Nlx4ODBceDgwXHg4MFx4MDBceDAxXHg3OVx4MDFceDQxXHgwMFx4MEIiKSksCi0gICAgICAgICAg
ICAgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAiV2Vi
QXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNjogY2FuJ3QgZ2V0IEdsb2Jh
bCdzIHZhbHVlIHR5cGUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBzZXR0aW5nIGBlbGVtZW50YCBp
biBhbiBhcnJheSBvZiBgdHlwZWAgaXMgYSB0eXBlIGVycm9yOyBhbHNvIHRha2VzIGBlbGVtZW50
VHlwZWAKLS8vIHNvIHRoZSByaWdodCBlcnJvciBtZXNzYWdlIGNhbiBiZSB0ZXN0ZWQgZm9yCi1m
dW5jdGlvbiB0ZXN0VHlwZUVycm9yKHR5cGUsIGVsZW1lbnQsIGVsZW1lbnRUeXBlKSB7Ci0gICAg
YXNzZXJ0LnRocm93cygoKSA9PiBjb21waWxlKGAKLSAgICAgIChtb2R1bGUKLSAgICAgICAgKHR5
cGUgKGFycmF5IChtdXQgYCArIHR5cGUgKyBgKSkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImYi
KSAocmVzdWx0IGkzMikKLSAgICAgICAgKGFycmF5Lm5ld19jYW5vbl9kZWZhdWx0IDAgKGkzMi5j
b25zdCA1KSkKLSAgICAgICAgKGkzMi5jb25zdCAyKWAKLSAgICAgICAgKyBlbGVtZW50ICsKLSAg
ICAgICAgYFxuKGFycmF5LnNldCAwKQotICAgICAgICAoYXJyYXkuZ2V0X3UgMCkpKWApLAotICAg
ICAgICAgICAgICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAgICAgICAg
ICAgImFycmF5LnNldCB2YWx1ZSB0byB0eXBlICIgKyBlbGVtZW50VHlwZSArICIgZXhwZWN0ZWQg
STMyIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc2V0dGluZyBhbiBlbGVtZW50IGluIGEgbnVsbCBh
cnJheSBvZiB0eXBlIGB0eXBlYCBpcyBhIHJ1bnRpbWUgZXJyb3IKLWZ1bmN0aW9uIHRlc3RUcmFw
c051bGwodHlwZSkgewotICAgIGxldCBtID0gaW5zdGFudGlhdGUoYAotICAgICAgKG1vZHVsZQot
ICAgICAgICAodHlwZSAoYXJyYXkgKG11dCBgICsgdHlwZSArIGApKSkKLSAgICAgICAgKGZ1bmMg
KGV4cG9ydCAiZiIpIChyZXN1bHQgaTMyKQotICAgICAgICAocmVmLm51bGwgMCkKLSAgICAgICAg
KGkzMi5jb25zdCAyKQotICAgICAgICAoaTMyLmNvbnN0IDE3KQotICAgICAgICAoYXJyYXkuc2V0
IDApCi0gICAgICAgIChpMzIuY29uc3QgMCkpKWApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
eyBtLmV4cG9ydHMuZigpOyB9LAotICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHkuUnVudGlt
ZUVycm9yLAotICAgICAgICAgICAgICAgICAgImFycmF5LnNldCB0byBhIG51bGwgcmVmZXJlbmNl
Iik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc2V0dGluZyBgaW5kZXhgIGluIGEgYHR5cGVgIGFycmF5
IG9mIGxlbmd0aCBgbGVuYCBpcyBhIHJ1bnRpbWUgZXJyb3IKLWZ1bmN0aW9uIHRlc3RUcmFwc091
dE9mQm91bmRzKHR5cGUsIGxlbiwgaW5kZXgpIHsKLSAgICBsZXQgbSA9IGluc3RhbnRpYXRlKGAK
LSAgICAgIChtb2R1bGUKLSAgICAgICAgKHR5cGUgKGFycmF5IChtdXQgYCArIHR5cGUgKyBgKSkp
Ci0gICAgICAgIChmdW5jIChleHBvcnQgImYiKSAocmVzdWx0IGkzMikKLSAgICAgICAgKGFycmF5
Lm5ld19jYW5vbl9kZWZhdWx0IDAgKGkzMi5jb25zdCBgICsgbGVuICsgYCkpCi0gICAgICAgIChp
MzIuY29uc3QgYCArIGluZGV4ICsgYCkKLSAgICAgICAgKGkzMi5jb25zdCAxNykKLSAgICAgICAg
KGFycmF5LnNldCAwKQotICAgICAgICAoaTMyLmNvbnN0IDApKSlgKTsKLSAgICBhc3NlcnQudGhy
b3dzKCgpID0+IHsgbS5leHBvcnRzLmYoKTsgfSwKLSAgICAgICAgICAgICAgICAgIFdlYkFzc2Vt
Ymx5LlJ1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICJPdXQgb2YgYm91bmRzIGFycmF5
LnNldCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGlmIHdlIHNldCBhW2BpbmRleGBdIHRvIChpMzIu
Y29uc3QgYHZhbHVlYCksIHdoZXJlIGEgaXMgYSBgdHlwZWAgYXJyYXkgb2YgbGVuZ3RoIGBsZW5g
LCB0aGUgZm9sbG93aW5nIGdldCBvcGVyYXRpb24gcmV0dXJucyAoaTMyLmNvbnN0IGB2YWx1ZWAp
Ci1mdW5jdGlvbiB0ZXN0U2V0R2V0Um91bmR0cmlwKHR5cGUsIGxlbiwgaW5kZXgsIHZhbHVlKSB7
Ci0gICAgbGV0IG0gPSBpbnN0YW50aWF0ZShgCi0gICAgICAobW9kdWxlCi0gICAgICAgICh0eXBl
IChhcnJheSAobXV0IGAgKyB0eXBlICsgYCkpKQotICAgICAgICAoZ2xvYmFsIChtdXQgKHJlZiBu
dWxsIDApKSAocmVmLm51bGwgMCkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImluaXQiKQotICAg
ICAgICAgICAoZ2xvYmFsLnNldCAwIChhcnJheS5uZXdfY2Fub25fZGVmYXVsdCAwIChpMzIuY29u
c3QgYCArIGxlbiArIGApKSkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImYiKSAocmVzdWx0IGkz
MikKLSAgICAgICAgICAoYXJyYXkuc2V0IDAgKGdsb2JhbC5nZXQgMCkgKGkzMi5jb25zdCBgICsg
aW5kZXggKyBgKSAoaTMyLmNvbnN0IGAgKyB2YWx1ZSArIGApKQotICAgICAgICAgIChhcnJheS5n
ZXRfdSAwIChnbG9iYWwuZ2V0IDApIChpMzIuY29uc3QgYCArIGluZGV4ICsgYCkpKSlgKTsKLSAg
ICBtLmV4cG9ydHMuaW5pdCgpOwotICAgIGFzc2VydC5lcShtLmV4cG9ydHMuZigpLCB2YWx1ZSk7
Ci19Ci0KLS8vIENyZWF0ZXMgYW4gYXJyYXkgYSBvZiB0eXBlIGB0eXBlYCwgc2V0cyBhW2ldIChm
b3Igc29tZSBpbi1ib3VuZHMgaSkgdG8gYGluVmFsdWVgLCBhbmQgZ2V0cyBgYVtpXWAgdXNpbmcg
YHNpZ25Nb2RlYDsgY29tcGFyZXMgdGhlIHJlc3VsdCB0byBgb3V0VmFsdWVgCi1mdW5jdGlvbiB0
ZXN0U2V0R2V0VHJ1bmNhdGUodHlwZSwgc2lnbk1vZGUsIGluVmFsdWUsIG91dFZhbHVlKSB7Ci0g
ICAgbGV0IG0gPSBpbnN0YW50aWF0ZShgCi0gICAgICAobW9kdWxlCi0gICAgICAgICh0eXBlIChh
cnJheSAobXV0IGAgKyB0eXBlICsgYCkpKQotICAgICAgICAoZ2xvYmFsIChtdXQgKHJlZiBudWxs
IDApKSAocmVmLm51bGwgMCkpCi0gICAgICAgIChmdW5jIChleHBvcnQgImluaXQiKQotICAgICAg
ICAgICAoZ2xvYmFsLnNldCAwIChhcnJheS5uZXdfY2Fub25fZGVmYXVsdCAwIChpMzIuY29uc3Qg
NSkpKSkKLSAgICAgICAgKGZ1bmMgKGV4cG9ydCAiZiIpIChyZXN1bHQgaTMyKQotICAgICAgICAg
IChhcnJheS5zZXQgMCAoZ2xvYmFsLmdldCAwKSAoaTMyLmNvbnN0IDMpIChpMzIuY29uc3QgYCAr
IGluVmFsdWUgKyBgKSkKLSAgICAgICAgICAoYXJyYXkuZ2V0X2AgKyBzaWduTW9kZSArIGAgMCAo
Z2xvYmFsLmdldCAwKSAoaTMyLmNvbnN0IDMpKSkpYCk7Ci0gICAgbS5leHBvcnRzLmluaXQoKTsK
LSAgICBhc3NlcnQuZXEobS5leHBvcnRzLmYoKSwgb3V0VmFsdWUpOwotfQotCi0vKgotICBhcnJh
eS5zZXQKLSAgZm9yIGJvdGggaTggYW5kIGkxNjoKLQotICB0ZXN0IHRoYXQgaXQncyBhIHR5cGUg
ZXJyb3IgdG8gcGFzcyBpbiBhIG5vbi1pMzIgdmFsdWUgd2hlbiBzZXR0aW5nIGEgcGFja2VkIGFy
cmF5IGVsZW1lbnQKLSAgdGVzdCB0aGF0IGl0IHRyYXBzIGNvcnJlY3RseSBmb3IgbnVsbAotICAg
IGFuZCBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcwotICB0ZXN0IGFycmF5IGxlbmd0aHMg
MCwgMSwgNQotICB0ZXN0IGluZGljZXMgMCwgMSwgYW5kIChmb3IgbGVuZ3RoIDUpIDMgYW5kIDQK
LQotICB0ZXN0IHRoYXQgc2V0L2dldCByb3VuZHRyaXBzIGZvciB3aXRoaW4tYm91bmRzIHZhbHVl
cwotICB0ZXN0IHRoYXQgc2V0L2dldCByZXR1cm5zIHRoZSBwcm9wZXJseSB0cnVuY2F0ZWQgdmFs
dWUgZm9yIGVhY2ggY29tYmluYXRpb24gb2YgdHlwZSBhbmQgc2lnbi1leHRlbnNpb24KLSAqLwot
Ci1mdW5jdGlvbiB0ZXN0QXJyYXlTZXQoKSB7Ci0gICAgZm9yIChjb25zdCB0eXBlIG9mIFsiaTgi
LCAiaTE2Il0pIHsKLSAgICAgICAgdGVzdFR5cGVFcnJvcih0eXBlLCAiKGk2NC5jb25zdCAzKSIs
ICJJNjQiKTsKLSAgICAgICAgdGVzdFRyYXBzTnVsbCh0eXBlKTsKLSAgICAgICAgdGVzdFRyYXBz
T3V0T2ZCb3VuZHModHlwZSwgNSwgNSk7Ci0gICAgICAgIHRlc3RUcmFwc091dE9mQm91bmRzKHR5
cGUsIDUsIDcpOwotICAgICAgICB0ZXN0VHJhcHNPdXRPZkJvdW5kcyh0eXBlLCAwLCAxKTsKLSAg
ICAgICAgZm9yIChjb25zdCBsZW5ndGggb2YgWzAsIDEsIDVdKSB7Ci0gICAgICAgICAgICBmb3Ig
KGNvbnN0IGluZGV4IG9mIFswLCAxLCAzLCA0XSkgewotICAgICAgICAgICAgICAgIGlmIChpbmRl
eCA8IGxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0U2V0R2V0Um91bmR0cmlwKHR5
cGUsIGxlbmd0aCwgaW5kZXgsIDE3KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICB0ZXN0VHJhcHNPdXRPZkJvdW5kcyh0eXBlLCBsZW5ndGgsIGluZGV4KTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ly8gdGVzdFNldEdldFRydW5jYXRlKHR5cGUsIHNpZ25Nb2RlLCBpblZhbHVlLCBvdXRWYWx1ZSkK
LSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImk4IiwgInUiLCAweEZGRkZfRkZGRiwgMjU1KTsKLSAg
ICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImk4IiwgInUiLCAweDQwMDBfMDAwMCwgMCk7Ci0gICAgdGVz
dFNldEdldFRydW5jYXRlKCJpOCIsICJ1IiwgMHg4MCwgMTI4KTsKLSAgICB0ZXN0U2V0R2V0VHJ1
bmNhdGUoImk4IiwgInMiLCAweEZGRkZfRkZGRiwgLTEpOwotICAgIHRlc3RTZXRHZXRUcnVuY2F0
ZSgiaTgiLCAicyIsIDB4NDAwMF8wMDAwLCAwKTsKLSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImk4
IiwgInMiLCAweDgwLCAtMTI4KTsKLSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImkxNiIsICJ1Iiwg
MHhGRkZGX0ZGRkYsIDB4RkZGRik7Ci0gICAgdGVzdFNldEdldFRydW5jYXRlKCJpMTYiLCAidSIs
IDB4NDAwMF8wMDAwLCAwKTsKLSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImkxNiIsICJ1IiwgMHg4
MCwgMTI4KTsKLSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImkxNiIsICJzIiwgMHhGRkZGX0ZGRkYs
IC0xKTsKLSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImkxNiIsICJzIiwgMHg0MDAwXzAwMDAsIDAp
OwotICAgIHRlc3RTZXRHZXRUcnVuY2F0ZSgiaTE2IiwgInMiLCAweDgwLCAxMjgpOwotICAgIHRl
c3RTZXRHZXRUcnVuY2F0ZSgiaTE2IiwgInMiLCAweDdGRkZfRkZGRiwgLTEpOwotICAgIHRlc3RT
ZXRHZXRUcnVuY2F0ZSgiaTE2IiwgInMiLCAweDQwMDBfMDAwMCwgMCk7Ci0gICAgdGVzdFNldEdl
dFRydW5jYXRlKCJpMTYiLCAicyIsIDB4ODAsIDEyOCk7Ci0gICAgdGVzdFNldEdldFRydW5jYXRl
KCJpMTYiLCAicyIsIDB4ODAwMCwgLTMyNzY4KTsKLSAgICB0ZXN0U2V0R2V0VHJ1bmNhdGUoImkx
NiIsICJzIiwgMHhhYWFhX2FhYWEsIC0yMTg0Nik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RBcnJheUdl
dFVucmVhY2hhYmxlKCkgewotLyoKLShtb2R1bGUKLSAgICh0eXBlIChhcnJheSAobXV0IGk4KSkp
Ci0gICAoZnVuYyAoZXhwb3J0ICJmIikgKHJlc3VsdCBpMzIpCi0gICAgICAocmV0dXJuKQotICAg
ICAgKGFycmF5Lm5ld19jYW5vbl9kZWZhdWx0IDAgKGkzMi5jb25zdCA1KSkKLSAgICAgIChpMzIu
Y29uc3QgMikKLSAgICAgIChhcnJheS5nZXRfcyAtMSkpKQotKi8KLSAgICBhc3NlcnQudGhyb3dz
KCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NkRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NUVceDdBXHgwMVx4
NjBceDAwXHgwMVx4N0ZceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDdceDg1XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAxXHg2Nlx4MDBceDAwXHgwQVx4OTVceDgwXHg4MFx4ODBceDAw
XHgwMVx4OEZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDJBXHgwRlx4NDFceDA1XHhGQlx4MTJc
eDAwXHg0MVx4MDJceEZCXHgxNFx4RkZceEZGIikpLAotICAgICAgICAgICAgICAgICAgV2ViQXNz
ZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAgICAgICAgICAgIldlYkFzc2VtYmx5Lk1vZHVs
ZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTU6IGNhbid0IGdldCB0eXBlIGluZGV4IGltbWVkaWF0
ZSBmb3IgYXJyYXkuZ2V0X3MgaW4gdW5yZWFjaGFibGUgY29udGV4dCIpOwotLyoKLShtb2R1bGUK
LSAgICh0eXBlIChhcnJheSAobXV0IGk4KSkpCi0gICAoZnVuYyAoZXhwb3J0ICJmIikgKHJlc3Vs
dCBpMzIpCi0gICAgICAocmV0dXJuKQotICAgICAgKGFycmF5Lm5ld19jYW5vbl9kZWZhdWx0IDAg
KGkzMi5jb25zdCA1KSkKLSAgICAgIChpMzIuY29uc3QgMikKLSAgICAgIChhcnJheS5nZXRfdSAt
MSkpKQotKi8KLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NkRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4
MFx4ODBceDAwXHgwMlx4NUVceDdBXHgwMVx4NjBceDAwXHgwMVx4N0ZceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMVx4MDdceDg1XHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHg2Nlx4MDBc
eDAwXHgwQVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMVx4OEZceDgwXHg4MFx4ODBceDAwXHgwMFx4
NDFceDJBXHgwRlx4NDFceDA1XHhGQlx4MTJceDAwXHg0MVx4MDJceEZCXHgxNVx4RkZceEZGIikp
LAotICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAotICAgICAgICAg
ICAgICAgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTU6IGNh
bid0IGdldCB0eXBlIGluZGV4IGltbWVkaWF0ZSBmb3IgYXJyYXkuZ2V0X3UgaW4gdW5yZWFjaGFi
bGUgY29udGV4dCIpOwotfQotCi10ZXN0QXJyYXlHZXRQYWNrZWQoKTsKLXRlc3RBcnJheUdldFVX
aXRoTmV3Q2Fub25QYWNrZWQoKTsKLXRlc3RBcnJheUdldFNXaXRoTmV3Q2Fub25QYWNrZWQoKTsK
LXRlc3RUeXBlTWlzbWF0Y2g2NCgpOwotdGVzdFR5cGVNaXNtYXRjaEFycmF5R2V0KCk7Ci10ZXN0
UGFja2VkVHlwZU91dE9mQ29udGV4dCgpOwotdGVzdEFycmF5U2V0KCk7Ci10ZXN0QXJyYXlHZXRV
bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVz
dHMvd2FzbS93YXNtLmpzb24KaW5kZXggMTdiMmZlMmM2NjExLi4xMTRiMTdkNzg2ZTggMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNv
bgpAQCAtMjUsMTAgKzI1LDYgQEAKICAgICAgICAgInJlYyI6ICAgICAgIHsgInR5cGUiOiAidmFy
aW50NyIsICJ2YWx1ZSI6ICAtNDksICJiM3R5cGUiOiAiQjM6OlZvaWQiLCAgICJ3aWR0aCI6IDAg
fSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAt
NjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiLCAgICJ3aWR0aCI6IDAgfQogICAgIH0sCi0gICAgInBh
Y2tlZF90eXBlIjogewotICAgICAgICAiaTgiOiAgICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3Iiwg
InZhbHVlIjogIC02fSwKLSAgICAgICAgImkxNiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtN30KLSAgICB9LAogICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0Iiwg
ImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiLCAidjEyOCJdLAogICAgICJibG9j
a190eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAidm9pZCIsICJleHRlcm5yZWYi
LCAiZnVuY3JlZiIsICJ2MTI4Il0sCiAgICAgInJlZl90eXBlIjogWyJmdW5jcmVmIiwgImV4dGVy
bnJlZiIsICJyZWYiLCAicmVmX251bGwiXSwKQEAgLTI2Nyw4ICsyNjMsNiBAQAogICAgICAgICAi
YXJyYXkubmV3IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUi
OiAyNTEsICJyZXR1cm4iOiBbImFycmF5cmVmIl0sICAgICAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlciI6IFsiYW55IiwgImkzMiIsICJydHQiXSwgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAx
NyB9LAogICAgICAgICAiYXJyYXkubmV3X2RlZmF1bHQiOiAgIHsgImNhdGVnb3J5IjogImdjIiwg
ICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImFycmF5cmVmIl0sICAgICAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlciI6IFsiaTMyIiwgInJ0dCJdLCAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ImV4dGVuZGVkT3AiOiAxOCB9LAogICAgICAgICAiYXJyYXkuZ2V0IjogICAgICAgICAgIHsgImNh
dGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImFueSJdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXlyZWYiLCAiaTMyIl0s
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAxOSB9LAotICAgICAgICAiYXJyYXkuZ2V0X3Mi
OiAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1
cm4iOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJy
YXlyZWYiLCAiaTMyIl0sICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9p
bmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAyMCB9LAotICAgICAg
ICAiYXJyYXkuZ2V0X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFs
dWUiOiAyNTEsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiYXJyYXlyZWYiLCAiaTMyIl0sICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3Ai
OiAyMSB9LAogICAgICAgICAiYXJyYXkuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImdj
IiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXlyZWYiLCAiaTMyIiwgImFueSJdLCAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgImV4dGVuZGVkT3AiOiAyMiB9LAogICAgICAgICAiYXJyYXkubGVuIjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImkzMiJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYXJyYXlyZWYiXSwgICAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwgImV4dGVuZGVkT3AiOiAyMyB9LAogICAgICAgICAiaTMxLm5ldyI6
ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJy
ZXR1cm4iOiBbImkzMXJlZiJdLCAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAiZXh0ZW5kZWRP
cCI6IDMyIH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>