<?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>244062</bug_id>
          
          <creation_ts>2022-08-17 15:20:01 -0700</creation_ts>
          <short_desc>REGRESSION(253491@main): Revert WASM GC patch</short_desc>
          <delta_ts>2022-08-17 16:12:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=244061</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>239666</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>asumu</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1892063</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-08-17 15:20:01 -0700</bug_when>
    <thetext>https://commits.webkit.org/253491@main introduced a regression:
Revert WASM GC patch

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>1892065</commentid>
    <comment_count>1</comment_count>
      <attachid>461697</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-08-17 15:20:07 -0700</bug_when>
    <thetext>Created attachment 461697
REVERT of 253491@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>1892081</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-17 16:11:34 -0700</bug_when>
    <thetext>Committed 253541@main (be774cf81a91): &lt;https://commits.webkit.org/253541@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461697.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892082</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-17 16:12:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/98803997&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461697</attachid>
            <date>2022-08-17 15:20:07 -0700</date>
            <delta_ts>2022-08-17 16:11:34 -0700</delta_ts>
            <desc>REVERT of 253491@main</desc>
            <filename>bug-244062-20220817152006.patch</filename>
            <type>text/plain</type>
            <size>75488</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBiODYyZWE1NTVmNWI2ZTJlZGIyYWI2MGE5ODJmYzFmYzVlYTJjZmM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBXZWQsIDE3IEF1ZyAyMDIyIDE1OjIwOjA1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTM0OTFAbWFpbi4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQwNjIKClJldmVydCBXQVNNIEdDIHBhdGNoCgpSZXZlcnRl
ZCBjaGFuZ2VzZXQ6CgoiQWRkIHN1cHBvcnQgZm9yIFdlYkFzc2VtYmx5IEdDIHJlY3Vyc2lvbiBn
cm91cHMiCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk2NjYKaHR0
cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjUzNDkxQG1haW4KLS0tCiAuLi4vd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwICAgICAgICAgICAgICAgfCAgIDggKy0KIC4uLi9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCB8ICAgNSArLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGVlLmggICAgICAgfCAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Gb3JtYXQuaCAgICAgICB8ICAgNCAtCiAuLi4vd2FzbS9XYXNtRnVuY3Rpb25D
b2RlQmxvY2tHZW5lcmF0b3IuY3BwICAgfCAgIDIgKy0KIC4uLi93YXNtL1dhc21GdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvci5oICAgICB8ICAgNiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmggIHwgIDM2ICstLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluc3RhbmNlLmNwcCAgIHwgICAyICstCiAuLi4vd2FzbS9XYXNtTExJbnRHZW5lcmF0
b3IuY3BwICAgICAgICAgICAgICAgfCAgMjEgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MTEludFBsYW4uY3BwICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUxpbWl0cy5oICAgICAgIHwgICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYXJzZXIuaCAgICAgICB8ICAyNyArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNl
Y3Rpb25QYXJzZXIuY3BwIHwgIDg2ICstLS0tLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuaCAgIHwgICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwICB8ICAgNCArLQogLi4uL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNw
cCAgICAgICAgICAgICAgIHwgMjY0ICstLS0tLS0tLS0tLS0tLS0tLQogLi4uL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmggIHwgIDk2ICstLS0tLS0KIC4uLi93YXNtL1dh
c21UeXBlRGVmaW5pdGlvbklubGluZXMuaCAgICAgICAgICB8ICAgOSArLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwICAgIHwgICA0ICstCiAuLi4vd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL3dhc20uanNvbiAgICAgICAgICB8ICAgMSAtCiBKU1Rlc3RzL3dhc20vZ2Mv
cmVjLmpzICAgICAgICAgICAgICAgICAgICAgICAgfCAyMzUgLS0tLS0tLS0tLS0tLS0tLQogSlNU
ZXN0cy93YXNtL3dhc20uanNvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIDI0IGZp
bGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDc2MyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vZ2MvcmVjLmpzCgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggZjA0NzEyMmFiMDQzLi4x
Y2VjZmQyZWE4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcApAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6
OnJlc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKEJhc2ljQmxvY2sqIGJsb2NrLCBUeXBlZFRtcCBp
bnN0CiAgICAgZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0YW5j
ZSk7CiB9CiAKLUFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvY2VkdXJlLCBJbnRlcm5hbEZ1bmN0aW9u
KiBjb21waWxhdGlvbiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdh
c21Ub1dhc21DYWxscywgTWVtb3J5TW9kZSBtb2RlLCB1bnNpZ25lZCBmdW5jdGlvbkluZGV4LCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0V4Y2VwdGlvbkhhbmRsZXJzLCBUaWVyVXBDb3VudCogdGll
clVwLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgb3JpZ2luYWxTaWduYXR1cmUsIHVuc2lnbmVkJiBv
c3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplKQorQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9y
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm9jZWR1cmUs
IEludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBNZW1vcnlNb2RlIG1vZGUsIHVuc2lnbmVk
IGZ1bmN0aW9uSW5kZXgsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzRXhjZXB0aW9uSGFuZGxlcnMs
IFRpZXJVcENvdW50KiB0aWVyVXAsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIHVu
c2lnbmVkJiBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplKQogICAgIDogbV9pbmZvKGluZm8pCiAg
ICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KQpA
QCAtMTA1Niw3ICsxMDU2LDYgQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICBtX21haW5F
bnRyeXBvaW50U3RhcnQgPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBtX2N1cnJlbnRCbG9jayA9
IG1fbWFpbkVudHJ5cG9pbnRTdGFydDsKIAotICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWdu
YXR1cmUgPSBvcmlnaW5hbFNpZ25hdHVyZS5leHBhbmQoKTsKICAgICBBU1NFUlQoIW1fbG9jYWxz
LnNpemUoKSk7CiAgICAgbV9sb2NhbHMuZ3JvdyhzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCktPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
Z25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsK
QEAgLTM3ODEsMTAgKzM3ODAsOSBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQz
Ml90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYQogICAgIHJldHVy
biB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgb3JpZ2luYWxTaWduYXR1cmUsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRp
YWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0
YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5kZXggPSBhcmdzLnRha2VMYXN0KCk7Ci0gICAg
Y29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IG9yaWdpbmFsU2lnbmF0dXJlLmV4cGFu
ZCgpOwogICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3Vt
ZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1faW5mby50YWJsZUNvdW50
KCkgPiB0YWJsZUluZGV4KTsKICAgICBBU1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50
eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CkBAIC0zODUxLDcgKzM4NDksNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgVHlwZURlZmluaXRpb24mCiAgICAgICAgIH0pOwogCiAgICAgICAgIEV4cHJlc3Np
b25UeXBlIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBnNjQoKTsKLSAgICAgICAgYXBwZW5kKE1v
dmUsIEFyZzo6YmlnSW1tKFR5cGVJbmZvcm1hdGlvbjo6Z2V0KG9yaWdpbmFsU2lnbmF0dXJlKSks
IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJ
bW0oVHlwZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSksIGV4cGVjdGVkU2lnbmF0dXJlSW5k
ZXgpOwogICAgICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgICAgIHJldHVybiBJbnN0KEJy
YW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSwg
Y2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpOwogICAgICAgICB9
LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDI3YTJjNWU4YWRmZi4uOGRlMTBmYTdjMjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0zMDY2
LDEwICszMDY2LDkgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXQKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgb3JpZ2luYWxTaWduYXR1cmUsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQK
K2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgs
IGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4m
IGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBWYWx1
ZSogY2FsbGVlSW5kZXggPSBnZXQoYXJncy50YWtlTGFzdCgpKTsKLSAgICBjb25zdCBUeXBlRGVm
aW5pdGlvbiYgc2lnbmF0dXJlID0gb3JpZ2luYWxTaWduYXR1cmUuZXhwYW5kKCk7CiAgICAgQVNT
RVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpID09
IGFyZ3Muc2l6ZSgpKTsKIAogICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CkBAIC0zMTI4LDcgKzMx
MjcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJs
ZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgbwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBz
aWduYXR1cmUgbWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgogICAgICAgICB7Ci0gICAgICAg
ICAgICBWYWx1ZSogZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBUeXBlSW5mb3JtYXRpb246Omdl
dChvcmlnaW5hbFNpZ25hdHVyZSkpOworICAgICAgICAgICAgVmFsdWUqIGV4cGVjdGVkU2lnbmF0
dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgVHlwZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSk7CiAgICAgICAgICAg
ICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBOb3RFcXVhbCwgb3JpZ2luKCksIGNhbGxlZVNp
Z25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25hdHVyZUluZGV4KSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA2NWQ0YWUxY2FjYTYuLmZiZDY4MjY4
MTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAt
MTM3LDcgKzEzNyw3IEBAIHZvaWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCBlZmZv
cnQpCiAKICAgICBzaXplX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9mdW5jdGlvbkluZGV4ICsg
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpOwogICAgIFR5cGVJbmRl
eCB0eXBlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uVHlwZUlu
ZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKLSAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0
dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KS5leHBhbmQoKTsKKyAgICBjb25z
dCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUlu
ZGV4KTsKICAgICBmdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8
Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9XQVNNX0NPREVfRk9SX01PREUoQ29tcGls
YXRpb25Nb2RlOjpCQlFNb2RlLCBsaW5rQnVmZmVyLCBKSVRDb21waWxhdGlvblB0clRhZywgIldl
YkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwg
c2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5h
bWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+
Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgIFdURk1v
dmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKQEAgLTIwNiw3ICsyMDYsNyBA
QCB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4KQog
ICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgp
IHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5jZWRGdW5jdGlvbnMoKS5jb250YWlucyhm
dW5jdGlvbkluZGV4KSkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgIFR5cGVJbmRleCB0eXBlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1
bmN0aW9uVHlwZUluZGljZXNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgIGNvbnN0IFR5cGVEZWZp
bml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFu
ZCgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlID0gVHlwZUluZm9y
bWF0aW9uOjpnZXQodHlwZUluZGV4KTsKIAogICAgICAgICBtX2NvbXBpbGF0aW9uQ29udGV4dHNb
ZnVuY3Rpb25JbmRleF0uZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhl
bHBlcnM+KCk7CiAgICAgICAgIGF1dG8gZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9uID0g
Y3JlYXRlSlNUb1dhc21XcmFwcGVyKCptX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRl
eF0uZW1iZWRkZXJFbnRyeXBvaW50SklULCBzaWduYXR1cmUsICZtX3VubGlua2VkV2FzbVRvV2Fz
bUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUs
IGZ1bmN0aW9uSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNhbGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCmlu
ZGV4IGI1ZDFhZTZjN2ZlMS4uZDhhZGY0YjEzMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNhbGxlZS5oCkBAIC0yNjUsNyArMjY1LDcgQEAgcHVibGljOgogCiAgICAgTExJbnRU
aWVyVXBDb3VudGVyJiB0aWVyVXBDb3VudGVyKCkgeyByZXR1cm4gbV90aWVyVXBDb3VudGVyOyB9
CiAKLSAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlKHVuc2lnbmVkIGluZGV4KSBj
b25zdAorICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUodW5zaWduZWQgaW5k
ZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKm1fc2lnbmF0dXJlc1tpbmRleF07CiAg
ICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdh
c21JbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgY29uc3Qgdm9pZCogbV9p
bnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIEZpeGVkVmVjdG9yPFdhc21J
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwotICAgIEZpeGVkVmVjdG9y
PGNvbnN0IFR5cGVEZWZpbml0aW9uKj4gbV9zaWduYXR1cmVzOworICAgIEZpeGVkVmVjdG9yPGNv
bnN0IEZ1bmN0aW9uU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9mTGluZUp1bXBU
YXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgTExJbnRUaWVyVXBDb3VudGVyIG1f
dGllclVwQ291bnRlcjsKICAgICBGaXhlZFZlY3RvcjxKdW1wVGFibGU+IG1fanVtcFRhYmxlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCBlOWVmYWU3Nzg5NTku
LjM2NmQ2NWIyZWI5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApA
QCAtNzQsMTAgKzc0LDYgQEAgaW5saW5lIGJvb2wgaXNWYWx1ZVR5cGUoVHlwZSB0eXBlKQogICAg
IGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAg
ICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
OwotICAgIC8vIFJlYyB0eXBlIGtpbmRzIGFyZSB1c2VkIGludGVybmFsbHkgdG8gcmVwcmVzZW50
IGByZWMuPGk+YCByZWZlcmVuY2VzCi0gICAgLy8gd2l0aGluIHJlY3Vyc2lvbiBncm91cHMuIFRo
ZXkgYXJlIGludmFsaWQgaW4gb3RoZXIgY29udGV4dHMuCi0gICAgY2FzZSBUeXBlS2luZDo6UmVj
OgotICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlHQygpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCmluZGV4
IDA4OGI3OWU4Yjc4Zi4uMGM2Zjc5YjZjMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgRnVuY3Rpb25D
b2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQoV2EKICAgICByZXR1cm4gbV9v
dXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCi11bnNpZ25lZCBG
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkU2lnbmF0dXJlKGNvbnN0IFR5cGVEZWZpbml0
aW9uJiBzaWduYXR1cmUpCit1bnNpZ25lZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRk
U2lnbmF0dXJlKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUpCiB7CiAgICAgdW5z
aWduZWQgaW5kZXggPSBtX3NpZ25hdHVyZXMuc2l6ZSgpOwogICAgIG1fc2lnbmF0dXJlcy5hcHBl
bmQoJnNpZ25hdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDAwM2M5OThhMjM2Yy4u
NDg5ZmU2NmM1N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNDgsNyArNDgsNyBAQCBj
bGFzcyBCeXRlY29kZUdlbmVyYXRvckJhc2U7CiBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIExM
SW50Q2FsbGVlOwotY2xhc3MgVHlwZURlZmluaXRpb247CitjbGFzcyBGdW5jdGlvblNpZ25hdHVy
ZTsKIHN0cnVjdCBHZW5lcmF0b3JUcmFpdHM7CiAKIHN0cnVjdCBKdW1wVGFibGVFbnRyeSB7CkBA
IC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgSGFzaE1hcDxXYXNtSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+JiB0aWVyVXBD
b3VudGVyKCkgeyByZXR1cm4gbV90aWVyVXBDb3VudGVyOyB9CiAKLSAgICB1bnNpZ25lZCBhZGRT
aWduYXR1cmUoY29uc3QgVHlwZURlZmluaXRpb24mKTsKKyAgICB1bnNpZ25lZCBhZGRTaWduYXR1
cmUoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmKTsKIAogICAgIEp1bXBUYWJsZSYgYWRkSnVtcFRh
YmxlKHNpemVfdCBudW1iZXJPZkVudHJpZXMpOwogICAgIHVuc2lnbmVkIG51bWJlck9mSnVtcFRh
YmxlcygpIGNvbnN0OwpAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgY29uc3Qg
dm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIFZlY3RvcjxX
YXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKLSAgICBWZWN0b3I8
Y29uc3QgVHlwZURlZmluaXRpb24qPiBtX3NpZ25hdHVyZXM7CisgICAgVmVjdG9yPGNvbnN0IEZ1
bmN0aW9uU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVzOwogICAgIE91dE9mTGluZUp1bXBUYXJnZXRz
IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgSGFzaE1hcDxXYXNtSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCwgTExJbnRUaWVyVXBDb3VudGVyOjpPU1JFbnRyeURhdGE+IG1fdGllclVwQ291
bnRlcjsKICAgICBWZWN0b3I8SnVtcFRhYmxlPiBtX2p1bXBUYWJsZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGRjYjFkZDk1MWE5
MS4uNGY2MDUzZDE2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaApAQCAtNDgsOSArNDgsOCBAQCBlbnVtIGNsYXNzIENhdGNoS2luZCB7
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNsb3NpbmdTdGFjaywgdHlwZW5hbWUgTmV3U3Rh
Y2s+Ci12b2lkIHNwbGl0U3RhY2soQmxvY2tTaWduYXR1cmUgb3JpZ2luYWxTaWduYXR1cmUsIEVu
Y2xvc2luZ1N0YWNrJiBlbmNsb3NpbmdTdGFjaywgTmV3U3RhY2smIG5ld1N0YWNrKQordm9pZCBz
cGxpdFN0YWNrKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgRW5jbG9zaW5nU3RhY2smIGVuY2xv
c2luZ1N0YWNrLCBOZXdTdGFjayYgbmV3U3RhY2spCiB7Ci0gICAgQmxvY2tTaWduYXR1cmUgc2ln
bmF0dXJlID0gJm9yaWdpbmFsU2lnbmF0dXJlLT5leHBhbmQoKTsKICAgICBuZXdTdGFjay5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpZ25hdHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFy
Z3VtZW50Q291bnQoKSk7CiAgICAgQVNTRVJUKGVuY2xvc2luZ1N0YWNrLnNpemUoKSA+PSBzaWdu
YXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkpOwogICAgIHVu
c2lnbmVkIG9mZnNldCA9IGVuY2xvc2luZ1N0YWNrLnNpemUoKSAtIHNpZ25hdHVyZS0+YXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKTsKQEAgLTIzMSw3ICsyMzAsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgogRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OkZ1bmN0
aW9uUGFyc2VyKENvbnRleHQmIGNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQs
IHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwg
Y29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCiAgICAgOiBQYXJzZXIoZnVuY3Rpb25TdGFy
dCwgZnVuY3Rpb25MZW5ndGgpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fc2ln
bmF0dXJlKHNpZ25hdHVyZS5leHBhbmQoKSkKKyAgICAsIG1fc2lnbmF0dXJlKHNpZ25hdHVyZSkK
ICAgICAsIG1faW5mbyhpbmZvKQogewogICAgIGlmICh2ZXJib3NlKQpAQCAtMjQ0LDcgKzI0Myw2
IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkgLT4gUmVzdWx0CiB7CiAg
ICAgdWludDMyX3QgbG9jYWxHcm91cHNDb3VudDsKIAotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IW1fc2lnbmF0dXJlLmlzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLCAidHlwZSBzaWduYXR1cmUgd2Fz
IG5vdCBhIGZ1bmN0aW9uIHNpZ25hdHVyZSIpOwogICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9
ICptX3NpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFtX2NvbnRleHQuYWRkQXJndW1lbnRzKG1fc2lnbmF0dXJlKSwgImNhbid0IGFkZCAi
LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50cyB0byBGdW5jdGlvbiIpOwog
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGxvY2FsR3JvdXBzQ291bnQp
LCAiY2FuJ3QgZ2V0IGxvY2FsIGdyb3VwcyBjb3VudCIpOwpAQCAtMTI2MCw3ICsxMjU4LDcgQEAg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5kZXgpKTsK
IAogICAgICAgICBUeXBlSW5kZXggY2FsbGVlVHlwZUluZGV4ID0gbV9pbmZvLnR5cGVJbmRleEZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7Ci0gICAgICAgIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVR5
cGVJbmRleCkuZXhwYW5kKCk7CisgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVm
aW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVR5cGVJbmRleCk7CiAgICAgICAg
IGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlv
blNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjYWxsZWVTaWduYXR1
cmUuYXJndW1lbnRDb3VudCgpID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbCBmdW5j
dGlvbiBpbmRleCAiLCBmdW5jdGlvbkluZGV4LCAiIGhhcyAiLCBjYWxsZWVTaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJl
bnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKQEAg
LTEyOTksNyArMTI5Nyw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZXNbdGFibGVJbmRl
eF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJjYWxsX2luZGlyZWN0IGlz
IG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGZ1bmNyZWYiKTsKIAogICAgICAgICBj
b25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBtX2luZm8udHlwZVNpZ25hdHVy
ZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOwotICAgICAgICBjb25zdCBhdXRvJiBjYWxsZWVTaWdu
YXR1cmUgPSAqdHlwZURlZmluaXRpb24uZXhwYW5kKCkuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5h
czxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBp
bmRleC4KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbV9leHBy
ZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9pbmRpcmVjdCBleHBlY3RzICIsIGFyZ3VtZW50Q291
bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRz
ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApAQCAtMTMzMSw3ICsx
MzI5LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAg
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzUmVmV2l0aFR5cGVJbmRleChtX2V4cHJlc3Np
b25TdGFjay5sYXN0KCkudHlwZSgpKSwgIm5vbi1mdW5jcmVmIGNhbGxfcmVmIHZhbHVlICIsIG1f
ZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkua2luZCk7CiAKICAgICAgICAgY29uc3QgVHlw
ZUluZGV4IGNhbGxlZVR5cGVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCku
aW5kZXg7Ci0gICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5
cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVR5cGVJbmRleCkuZXhwYW5kKCk7CisgICAgICAgIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0
KGNhbGxlZVR5cGVJbmRleCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9
ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgc2l6ZV90
IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8g
QWRkIHRoZSBjYWxsZWUncyB2YWx1ZS4KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1
bWVudENvdW50ID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhwZWN0cyAi
LCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1
cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CkBA
IC0xMzYxLDggKzEzNTksNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVf
Q0FTRSkKICAgICAgICAgQmxvY2tTaWduYXR1cmUgaW5saW5lU2lnbmF0dXJlQXNUeXBlOwogICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywgaW5s
aW5lU2lnbmF0dXJlQXNUeXBlKSwgImNhbid0IGdldCBibG9jaydzIHNpZ25hdHVyZSIpOwogCi0g
ICAgICAgIEJsb2NrU2lnbmF0dXJlIGV4cGFuZGVkU2lnbmF0dXJlID0gJmlubGluZVNpZ25hdHVy
ZUFzVHlwZS0+ZXhwYW5kKCk7Ci0gICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxp
bmVTaWduYXR1cmUgPSBleHBhbmRlZFNpZ25hdHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7
CisgICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBpbmxp
bmVTaWduYXR1cmVBc1R5cGUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOwogICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA8IGlubGluZVNpZ25h
dHVyZS0+YXJndW1lbnRDb3VudCgpLCAiVG9vIGZldyB2YWx1ZXMgb24gc3RhY2sgZm9yIGJsb2Nr
LiBCbG9jayBleHBlY3RzICIsIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiLCBi
dXQgb25seSAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBCbG9j
ayBoYXMgaW5saW5lU2lnbmF0dXJlOiAiLCBpbmxpbmVTaWduYXR1cmUtPnRvU3RyaW5nKCkpOwog
ICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBpbmxp
bmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEzNzMs
NyArMTM3MCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQog
ICAgICAgICBpbnQ2NF90IG9sZFNpemUgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7CiAgICAg
ICAgIFN0YWNrIG5ld1N0YWNrOwogICAgICAgICBDb250cm9sVHlwZSBibG9jazsKLSAgICAgICAg
V0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQmxvY2soZXhwYW5kZWRTaWduYXR1cmUsIG1fZXhw
cmVzc2lvblN0YWNrLCBibG9jaywgbmV3U3RhY2spKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RP
X0NPTlRFWFQoYWRkQmxvY2soaW5saW5lU2lnbmF0dXJlQXNUeXBlLCBtX2V4cHJlc3Npb25TdGFj
aywgYmxvY2ssIG5ld1N0YWNrKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU2l6ZSwgb2xk
U2l6ZSAtIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3Vt
ZW50Q291bnQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdGFjay5zaXplKCkgPT0gaW5saW5lU2ln
bmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogCkBAIC0xMzg2LDggKzEzODMsNyBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgQmxvY2tTaWduYXR1
cmUgaW5saW5lU2lnbmF0dXJlQXNUeXBlOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywgaW5saW5lU2lnbmF0dXJlQXNUeXBlKSwgImNhbid0
IGdldCBsb29wJ3Mgc2lnbmF0dXJlIik7CiAKLSAgICAgICAgQmxvY2tTaWduYXR1cmUgZXhwYW5k
ZWRTaWduYXR1cmUgPSAmaW5saW5lU2lnbmF0dXJlQXNUeXBlLT5leHBhbmQoKTsKLSAgICAgICAg
Y29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGV4cGFuZGVkU2lnbmF0
dXJlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICAgICAgY29uc3QgRnVuY3Rpb25TaWdu
YXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGlubGluZVNpZ25hdHVyZUFzVHlwZS0+YXM8RnVuY3Rp
b25TaWduYXR1cmU+KCk7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9leHByZXNz
aW9uU3RhY2suc2l6ZSgpIDwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksICJUb28g
ZmV3IHZhbHVlcyBvbiBzdGFjayBmb3IgbG9vcCBibG9jay4gTG9vcCBleHBlY3RzICIsIGlubGlu
ZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBtX2V4cHJlc3Npb25T
dGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBMb29wIGhhcyBpbmxpbmVTaWduYXR1cmU6ICIs
IGlubGluZVNpZ25hdHVyZS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3Vu
dCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lU2lnbmF0dXJlLT5h
cmd1bWVudENvdW50KCk7ICsraSkgewpAQCAtMTM5OCw3ICsxMzk0LDcgQEAgRk9SX0VBQ0hfV0FT
TV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGludDY0X3Qgb2xkU2l6ZSA9
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsKICAgICAgICAgU3RhY2sgbmV3U3RhY2s7CiAgICAg
ICAgIENvbnRyb2xUeXBlIGxvb3A7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFk
ZExvb3AoZXhwYW5kZWRTaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0YWNrLCBsb29wLCBuZXdTdGFj
aywgbV9sb29wSW5kZXgrKykpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRM
b29wKGlubGluZVNpZ25hdHVyZUFzVHlwZSwgbV9leHByZXNzaW9uU3RhY2ssIGxvb3AsIG5ld1N0
YWNrLCBtX2xvb3BJbmRleCsrKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU2l6ZSwgb2xk
U2l6ZSAtIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3Vt
ZW50Q291bnQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdGFjay5zaXplKCkgPT0gaW5saW5lU2ln
bmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogCkBAIC0xNDEzLDggKzE0MDksNyBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25hdHVyZUFzVHlw
ZSksICJjYW4ndCBnZXQgaWYncyBzaWduYXR1cmUiKTsKICAgICAgICAgV0FTTV9UUllfUE9QX0VY
UFJFU1NJT05fU1RBQ0tfSU5UTyhjb25kaXRpb24sICJpZiBjb25kaXRpb24iKTsKIAotICAgICAg
ICBCbG9ja1NpZ25hdHVyZSBleHBhbmRlZFNpZ25hdHVyZSA9ICZpbmxpbmVTaWduYXR1cmVBc1R5
cGUtPmV4cGFuZCgpOwotICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2ln
bmF0dXJlID0gZXhwYW5kZWRTaWduYXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAg
ICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2lnbmF0dXJlID0gaW5saW5lU2ln
bmF0dXJlQXNUeXBlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRighY29uZGl0aW9uLnR5cGUoKS5pc0kzMigpLCAiaWYgY29uZGl0aW9uIG11
c3QgYmUgaTMyLCBnb3QgIiwgY29uZGl0aW9uLnR5cGUoKS5raW5kKTsKICAgICAgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPCBpbmxpbmVTaWduYXR1
cmUtPmFyZ3VtZW50Q291bnQoKSwgIlRvbyBmZXcgYXJndW1lbnRzIG9uIHN0YWNrIGZvciBpZiBi
bG9jay4gSWYgZXhwZWN0cyAiLCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIiwg
YnV0IG9ubHkgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHdlcmUgcHJlc2VudC4gSWYg
YmxvY2sgaGFzIHNpZ25hdHVyZTogIiwgaW5saW5lU2lnbmF0dXJlLT50b1N0cmluZygpKTsKICAg
ICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gaW5saW5l
U2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CkBAIC0xNDI0LDcgKzE0MTksNyBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgaW50NjRfdCBvbGRT
aXplID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOwogICAgICAgICBTdGFjayBuZXdTdGFjazsK
ICAgICAgICAgQ29udHJvbFR5cGUgY29udHJvbDsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NP
TlRFWFQoYWRkSWYoY29uZGl0aW9uLCBleHBhbmRlZFNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3Rh
Y2ssIGNvbnRyb2wsIG5ld1N0YWNrKSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZElmKGNvbmRpdGlvbiwgaW5saW5lU2lnbmF0dXJlQXNUeXBlLCBtX2V4cHJlc3Npb25TdGFj
aywgY29udHJvbCwgbmV3U3RhY2spKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRTaXplLCBv
bGRTaXplIC0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpID09IGlubGluZVNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0YWNrLnNpemUoKSA9PSBpbmxpbmVT
aWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CiAKQEAgLTE0NTEsOCArMTQ0Niw3IEBAIEZPUl9F
QUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBCbG9ja1NpZ25h
dHVyZSBpbmxpbmVTaWduYXR1cmVBc1R5cGU7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlQmxvY2tTaWduYXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmVBc1R5cGUpLCAiY2Fu
J3QgZ2V0IHRyeSdzIHNpZ25hdHVyZSIpOwogCi0gICAgICAgIEJsb2NrU2lnbmF0dXJlIGV4cGFu
ZGVkU2lnbmF0dXJlID0gJmlubGluZVNpZ25hdHVyZUFzVHlwZS0+ZXhwYW5kKCk7Ci0gICAgICAg
IGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBleHBhbmRlZFNpZ25h
dHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIGNvbnN0IEZ1bmN0aW9uU2ln
bmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBpbmxpbmVTaWduYXR1cmVBc1R5cGUtPmFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVz
c2lvblN0YWNrLnNpemUoKSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiVG9v
IGZldyBhcmd1bWVudHMgb24gc3RhY2sgZm9yIHRyeSBibG9jay4gVHJ5ZSBleHBlY3RzICIsIGlu
bGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBtX2V4cHJlc3Np
b25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBUcnkgYmxvY2sgaGFzIHNpZ25hdHVyZTog
IiwgaW5saW5lU2lnbmF0dXJlLT50b1N0cmluZygpKTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENv
dW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmxpbmVTaWduYXR1cmUt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMTQ2MSw3ICsxNDU1LDcgQEAgRk9SX0VBQ0hfV0FT
TV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGludDY0X3Qgb2xkU2l6ZSA9
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsKICAgICAgICAgU3RhY2sgbmV3U3RhY2s7CiAgICAg
ICAgIENvbnRyb2xUeXBlIGNvbnRyb2w7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZFRyeShleHBhbmRlZFNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2ssIGNvbnRyb2wsIG5l
d1N0YWNrKSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRyeShpbmxpbmVT
aWduYXR1cmVBc1R5cGUsIG1fZXhwcmVzc2lvblN0YWNrLCBjb250cm9sLCBuZXdTdGFjaykpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFNpemUsIG9sZFNpemUgLSBtX2V4cHJlc3Npb25TdGFj
ay5zaXplKCkgPT0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogICAgICAgICBB
U1NFUlQobmV3U3RhY2suc2l6ZSgpID09IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgp
KTsKIApAQCAtMTQ3OCw3ICsxNDcyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1Ao
Q1JFQVRFX0NBU0UpCiAgICAgICAgIHVpbnQzMl90IGV4Y2VwdGlvbkluZGV4OwogICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRXhjZXB0aW9uSW5kZXgoZXhjZXB0aW9uSW5k
ZXgpKTsKICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1faW5mby50eXBlSW5kZXhGcm9t
RXhjZXB0aW9uSW5kZXhTcGFjZShleGNlcHRpb25JbmRleCk7Ci0gICAgICAgIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiBleGNlcHRpb25TaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBl
SW5kZXgpLmV4cGFuZCgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgZXhjZXB0aW9u
U2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KTsKIAogICAgICAgICBD
b250cm9sRW50cnkmIGNvbnRyb2xFbnRyeSA9IG1fY29udHJvbFN0YWNrLmxhc3QoKTsKICAgICAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNUcnlPckNhdGNoKGNvbnRyb2xFbnRyeS5jb250
cm9sRGF0YSksICJjYXRjaCBibG9jayBpc24ndCBhc3NvY2lhdGVkIHRvIGEgdHJ5Iik7CkBAIC0x
NzMyLDcgKzE3MjYsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVh
Y2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgdWludDMyX3QgZXhj
ZXB0aW9uSW5kZXg7CiAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VFeGNl
cHRpb25JbmRleChleGNlcHRpb25JbmRleCkpOwogICAgICAgICBUeXBlSW5kZXggdHlwZUluZGV4
ID0gbV9pbmZvLnR5cGVJbmRleEZyb21FeGNlcHRpb25JbmRleFNwYWNlKGV4Y2VwdGlvbkluZGV4
KTsKLSAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGV4Y2VwdGlvblNpZ25hdHVyZSA9IFR5
cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCkuZXhwYW5kKCk7CisgICAgICAgIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiBleGNlcHRpb25TaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0
eXBlSW5kZXgpOwogCiAgICAgICAgIGlmIChtX3VucmVhY2hhYmxlQmxvY2tzID4gMSkKICAgICAg
ICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3Rh
bmNlLmNwcAppbmRleCA0MjFiYTQ4NWZjM2QuLjgxNzE3OTg4NjQ0MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC0yMzIsNyArMjMyLDYgQEAgdm9p
ZCBJbnN0YW5jZTo6aW5pdEVsZW1lbnRTZWdtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIGNvbnN0
IEVsZW1lbnQmIHNlZ21lbnQsIHUKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTUxMAogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0g
c2VnbWVudC5mdW5jdGlvbkluZGljZXNbc3JjSW5kZXhdOwogICAgICAgICBUeXBlSW5kZXggdHlw
ZUluZGV4ID0gbV9tb2R1bGUtPnR5cGVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rp
b25JbmRleCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlv
bjo6Z2V0RnVuY3Rpb25TaWduYXR1cmUodHlwZUluZGV4KTsKICAgICAgICAgaWYgKGlzSW1wb3J0
RnVuY3Rpb24oZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlv
bkltcG9ydCA9IGltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9u
SW5kZXgpLT5nZXQoKTsKICAgICAgICAgICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uSW1wb3J0KSkgewpAQCAtMjU4LDYgKzI1Nyw3IEBAIHZvaWQgSW5zdGFuY2U6Omlu
aXRFbGVtZW50U2VnbWVudCh1aW50MzJfdCB0YWJsZUluZGV4LCBjb25zdCBFbGVtZW50JiBzZWdt
ZW50LCB1CiAKICAgICAgICAgQ2FsbGVlJiBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUgPSBjYWxs
ZWVHcm91cCgpLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNl
KGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpM
b2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNhbGxlZUdyb3VwKCktPmVudHJ5
cG9pbnRMb2FkTG9jYXRpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwor
ICAgICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldEZ1bmN0
aW9uU2lnbmF0dXJlKHR5cGVJbmRleCk7CiAgICAgICAgIC8vIEZJWE1FOiBTYXkgd2UgZXhwb3J0
IGxvY2FsIGZ1bmN0aW9uICJmb28iIGF0IGZ1bmN0aW9uIGluZGV4IDAuCiAgICAgICAgIC8vIFdo
YXQgaWYgd2UgYWxzbyBzZXQgaXQgdG8gdGhlIHRhYmxlIGFuIEVsZW1lbnQgdy8gaW5kZXggMC4K
ICAgICAgICAgLy8gRG9lcyAobmV3IEluc3RhbmNlKC4uLikpLmV4cG9ydHMuZm9vID09PSB0YWJs
ZS5nZXQoMCk/CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2Vu
ZXJhdG9yLmNwcAppbmRleCA5NTgyNWFhOTQzOWYuLmFlNzA5MGI1MzhkZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC02NjEs
NyArNjYxLDYgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVy
KGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6RnVuYzoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpJMzFyZWY6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzoKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNzIx
LDcgKzcyMCw2IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxl
cihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6STMxcmVmOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzUz
LDcgKzc1MSw2IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxl
cihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6STMxcmVmOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtODEz
LDcgKzgxMCw2IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxl
ZShjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6STMxcmVmOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtODY2
LDcgKzg2Miw2IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBUeXBl
RGVmaW5pdGlvbiYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzCiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6STMxcmVmOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM4
MSwxNyArMTM3NiwxNiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5z
aWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mCiB7CiAgICAgRXhwcmVzc2lv
blR5cGUgY2FsbGVlSW5kZXggPSBhcmdzLnRha2VMYXN0KCk7CiAKLSAgICBjb25zdCBhdXRvJiBm
dW5jdGlvblNpZ25hdHVyZSA9ICpzaWduYXR1cmUuZXhwYW5kKCkuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCk7Ci0gICAgQVNTRVJUKGZ1bmN0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSA9PSBh
cmdzLnNpemUoKSk7CisgICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKICAgICBBU1NFUlQobV9pbmZvLnRh
YmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOwogICAgIEFTU0VSVChtX2luZm8udGFibGVzW3RhYmxl
SW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKIAotICAgIExMSW50
Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoZnVuY3Rpb25T
aWduYXR1cmUpOworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRp
b25Gb3JDYWxsZXIoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CiAgICAgdW5p
ZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMsIGFyZ3MpOwogICAgIGlmIChDb250ZXh0
Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsSW5kaXJlY3Q6OmVtaXQodGhpcywgY2Fs
bGVlSW5kZXgsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFj
a09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKKyAgICAg
ICAgV2FzbUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2st
PmFkZFNpZ25hdHVyZSgqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSwgaW5mby5z
dGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKICAg
ICBlbHNlCi0gICAgICAgIFdhc21DYWxsSW5kaXJlY3ROb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWVJ
bmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zm
c2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOworICAgICAgICBX
YXNtQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2Nr
LT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSksIGluZm8u
c3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CiAg
ICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0
MDEsMTMgKzEzOTUsMTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBU
eXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2kKIHsKICAgICBFeHByZXNz
aW9uVHlwZSBjYWxsZWUgPSBhcmdzLnRha2VMYXN0KCk7CiAKLSAgICBjb25zdCBhdXRvJiBmdW5j
dGlvblNpZ25hdHVyZSA9ICpzaWduYXR1cmUuZXhwYW5kKCkuYXM8RnVuY3Rpb25TaWduYXR1cmU+
KCk7Ci0gICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNh
bGxlcihmdW5jdGlvblNpZ25hdHVyZSk7CisgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9
IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcigqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJl
PigpKTsKICAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CiAg
ICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgV2FzbUNhbGxSZWY6OmVtaXQo
dGhpcywgY2FsbGVlLCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8u
c3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAgICAgIFdhc21D
YWxsUmVmOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZSgqc2ln
bmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5u
dW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKICAgICBlbHNlCi0gICAgICAgIFdhc21DYWxsUmVmTm9U
bHM6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVy
ZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAg
ICAgIFdhc21DYWxsUmVmTm9UbHM6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVCbG9jay0+YWRk
U2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpLCBpbmZvLnN0YWNr
T2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOwogICAgIGluZm8uY29tbWl0UmVz
dWx0cyhyZXN1bHRzKTsKIAogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludFBsYW4uY3BwCmluZGV4IDNkMTc0NWQ1NDk0Ni4uNTgxNDI2NzFlOGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcApAQCAt
MTUyLDcgKzE1Miw3IEBAIHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkK
ICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CiAg
ICAgICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5k
ZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5jZWRGdW5jdGlvbnMoKS5jb250YWlu
cyhmdW5jdGlvbkluZGV4KSkgewogICAgICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1f
bW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1tmdW5jdGlvbklu
ZGV4XTsKLSAgICAgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBl
SW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpOworICAgICAgICAgICAgY29uc3Qg
VHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRl
eCk7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAgICAgICAgICAgLy8gVGhlIExM
SW50IGFsd2F5cyBib3VuZHMgY2hlY2tzCiAgICAgICAgICAgICBNZW1vcnlNb2RlIG1vZGUgPSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21MaW1pdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
aW1pdHMuaAppbmRleCBjMjg0OTU3ZDEzYTEuLjU4NzAzNDczNDY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaApAQCAtNDUsNyArNDUsNiBAQCBjb25zdGV4cHIgc2l6
ZV90IG1heEV4Y2VwdGlvbnMgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heEdsb2JhbHMg
PSAxMDAwMDAwOwogY29uc3RleHByIHNpemVfdCBtYXhEYXRhU2VnbWVudHMgPSAxMDAwMDA7CiBj
b25zdGV4cHIgc2l6ZV90IG1heFN0cnVjdEZpZWxkQ291bnQgPSAxMDAwMDsKLWNvbnN0ZXhwciBz
aXplX3QgbWF4UmVjdXJzaW9uR3JvdXBDb3VudCA9IDEwMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90
IG1heFN0cmluZ1NpemUgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heE1vZHVsZVNpemUg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2Vy
LmgKaW5kZXggOGExMGZjMGZiOGFlLi4zZmQwM2E1NTcwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTY0LDEyICs2NCw2IEBAIHB1YmxpYzoKICAgICBzaXpl
X3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KIAogcHJvdGVjdGVkOgotICAg
IHN0cnVjdCBSZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uIHsKLSAgICAgICAgYm9vbCBpblJlY3Vy
c2lvbkdyb3VwOwotICAgICAgICB1aW50MzJfdCBzdGFydDsKLSAgICAgICAgdWludDMyX3QgZW5k
OwotICAgIH07Ci0KICAgICBQYXJzZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOwpAQCAtMTE5LDEw
ICsxMTMsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3NvdXJjZUxlbmd0aDsKICAgICAvLyBX
ZSBrZWVwIGEgbG9jYWwgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgdGFibGUgc28gd2UgZG9uJ3Qg
aGF2ZSB0byBmZXRjaCBpdCB0byBmaW5kIHRodW5rIHR5cGVzLgogICAgIGNvbnN0IFR5cGVJbmZv
cm1hdGlvbiYgbV90eXBlSW5mb3JtYXRpb247Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBVc2VkIHRv
IHRyYWNrIHdoZXRoZXIgd2UgYXJlIGluIGEgcmVjdXJzaW9uIGdyb3VwIGFuZCB0aGUgZ3JvdXAn
cyB0eXBlIGluZGljZXMsIGlmIGFueS4KLSAgICBSZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uIG1f
cmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN1Y2Nl
c3NUeXBlPgpAQCAtMTMwLDcgKzEyMCw2IEBAIEFMV0FZU19JTkxJTkUgUGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6UGFyc2VyKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZUJ1ZmZlciwgc2l6ZV90IHNvCiAgICAg
OiBtX3NvdXJjZShzb3VyY2VCdWZmZXIpCiAgICAgLCBtX3NvdXJjZUxlbmd0aChzb3VyY2VMZW5n
dGgpCiAgICAgLCBtX3R5cGVJbmZvcm1hdGlvbihUeXBlSW5mb3JtYXRpb246OnNpbmdsZXRvbigp
KQotICAgICwgbV9yZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uKHsgfSkKIHsKIH0KIApAQCAtMzIz
LDcgKzMxMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJz
ZUhlYXBUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkgPj0gaW5m
by50eXBlQ291bnQoKSAmJiAoIW1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbi5pblJlY3Vyc2lv
bkdyb3VwIHx8ICEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBlKSA+PSBtX3JlY3Vyc2lv
bkdyb3VwSW5mb3JtYXRpb24uc3RhcnQgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBl
KSA8PSBtX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24uZW5kKSkpCisgICAgaWYgKHN0YXRpY19j
YXN0PHNpemVfdD4oaGVhcFR5cGUpID49IGluZm8udHlwZUNvdW50KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJlc3VsdCA9IGhlYXBUeXBlOwpAQCAtMzUwLDE5ICszMzksNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29u
c3QgTW9kdWxlSW5mb3JtYXRpb24mCiAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7CiAgICAgICAg
IGlmICghcGFyc2VIZWFwVHlwZShpbmZvLCBoZWFwVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmIChoZWFwVHlwZSA8IDApCi0gICAgICAgICAgICB0eXBlSW5kZXgg
PSBzdGF0aWNfY2FzdDxUeXBlSW5kZXg+KGhlYXBUeXBlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBGb3IgcmVjdXJzaXZlIHJlZmVyZW5jZXMgaW5zaWRlIHJlY3Vyc2lvbiBncm91
cHMsIHdlIHJlLXVzZSB0aGUKLSAgICAgICAgICAgIC8vIGByZWNgIHR5cGUgY29kZSB0byBiZSB0
aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYHJlYy48aT5gCi0gICAgICAgICAgICAvLyBp
biB0aGUgZm9ybWFsIHNlbWFudGljcy4gVGhlc2Ugc2hvdWxkIG5vdCBsZWFrIG91dCwgYXMgdGhl
eSBhcmUKLSAgICAgICAgICAgIC8vIHJlcGxhY2VkIHdpdGggcmVhbCB0eXBlIGluZGljZXMgZHVy
aW5nIHR5cGUgdW5yb2xsaW5nL2V4cGFuc2lvbi4KLSAgICAgICAgICAgIGlmIChtX3JlY3Vyc2lv
bkdyb3VwSW5mb3JtYXRpb24uaW5SZWN1cnNpb25Hcm91cCAmJiBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaGVhcFR5cGUpID49IG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbi5zdGFydCkgewotICAg
ICAgICAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlYzsKLSAgICAgICAgICAgICAgICB0
eXBlSW5kZXggPSBzdGF0aWNfY2FzdDxUeXBlSW5kZXg+KGhlYXBUeXBlIC0gbV9yZWN1cnNpb25H
cm91cEluZm9ybWF0aW9uLnN0YXJ0KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIHR5cGVJbmRleCA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGluZm8udHlwZVNpZ25hdHVyZXNb
aGVhcFR5cGVdLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICB0eXBlSW5kZXggPSBoZWFwVHlw
ZSA8IDAgPyBzdGF0aWNfY2FzdDxUeXBlSW5kZXg+KGhlYXBUeXBlKSA6IFR5cGVJbmZvcm1hdGlv
bjo6Z2V0KGluZm8udHlwZVNpZ25hdHVyZXNbaGVhcFR5cGVdLmdldCgpKTsKICAgICB9CiAKICAg
ICBUeXBlIHR5cGUgPSB7IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJs
ZSksIHR5cGVJbmRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNl
Y3Rpb25QYXJzZXIuY3BwCmluZGV4IDIxYzA5ZDg3ODk2Ny4uOWZiMmRkYWQ2MDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0z
Niw3ICszNiw2IEBACiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUgIldhc21UeXBlRGVm
aW5pdGlvbklubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8
d3RmL1NldEZvclNjb3BlLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
QEAgLTY0LDIzICs2MywxMiBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VT
dHJ1Y3RUeXBlKGksIHNpZ25hdHVyZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOiB7Ci0gICAgICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5R0MoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChpLCAidGgg
dHlwZSBmYWlsZWQgdG8gcGFyc2UgYmVjYXVzZSByZWMgdHlwZXMgYXJlIG5vdCBlbmFibGVkIik7
Ci0KLSAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VSZWN1cnNpb25H
cm91cChpLCBzaWduYXR1cmUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFpbChpLCAidGggVHlwZSBpcyBub24t
RnVuYyBhbmQgbm9uLVN0cnVjdCAiLCB0eXBlS2luZCk7CisgICAgICAgICAgICByZXR1cm4gZmFp
bChpLCAidGggVHlwZSBpcyBub24tRnVuYyAiLCB0eXBlS2luZCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0ZSBlbm91
Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0gICAg
ICAgIC8vIFJlY3Vyc2lvbiBncm91cCBwYXJzaW5nIHdpbGwgYXBwZW5kIHRoZSBlbnRyaWVzIGl0
c2VsZiwgYXMgdGhlcmUgbWF5Ci0gICAgICAgIC8vIGJlIG11bHRpcGxlIGVudHJpZXMgdGhhdCBu
ZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0eXBlIHNlY3Rpb24gZm9yCi0gICAgICAgIC8vIGVhY2gg
cmVjdXJzaW9uIGdyb3VwLgotICAgICAgICBpZiAoIXNpZ25hdHVyZS0+aXM8UmVjdXJzaW9uR3Jv
dXA+KCkpCi0gICAgICAgICAgICBtX2luZm8tPnR5cGVTaWduYXR1cmVzLnVuY2hlY2tlZEFwcGVu
ZChzaWduYXR1cmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1faW5mby0+dHlwZVNpZ25h
dHVyZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTUwMyw3ICs0OTEsNyBAQCBhdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgY2FzZSAweDA1OiB7
CiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUg
aW4gZWxlbSBzZWN0aW9uIik7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFpc0Z1
bmNyZWYocmVmVHlwZSkgJiYgcmVmVHlwZS5pc051bGxhYmxlKCksICJyZWZ0eXBlIGluIGVsZW1l
bnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcmVmVHlwZS5pc0Z1bmNyZWYoKSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9u
IHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7
CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZv
ckVsZW1lbnRTZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKQEAgLTUyNSw3ICs1MTMs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQK
IAogICAgICAgICAgICAgVHlwZSByZWZUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgcmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBl
IGluIGVsZW0gc2VjdGlvbiIpOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNG
dW5jcmVmKHJlZlR5cGUpICYmIHJlZlR5cGUuaXNOdWxsYWJsZSgpLCAicmVmdHlwZSBpbiBlbGVt
ZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlv
biBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50
OwogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRG
b3JFbGVtZW50U2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7CkBAIC01NDEsNyArNTI5
LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0
CiAgICAgICAgIGNhc2UgMHgwNzogewogICAgICAgICAgICAgVHlwZSByZWZUeXBlOwogICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgcmVmVHlwZSks
ICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwotICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighaXNGdW5jcmVmKHJlZlR5cGUpICYmIHJlZlR5cGUuaXNOdWxsYWJs
ZSgpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKyAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0
eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAgICAg
ICB1aW50MzJfdCBpbmRleENvdW50OwogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9G
QUlMUyhwYXJzZUluZGV4Q291bnRGb3JFbGVtZW50U2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50
TnVtKSk7CkBAIC03MzcsNzAgKzcyNSw2IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VTdHJ1
Y3RUeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBSZWZQdHI8VHlwZURlZmluaXRpb24+JiBzCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVJlY3Vyc2lvbkdyb3Vw
KHVpbnQzMl90IHBvc2l0aW9uLCBSZWZQdHI8VHlwZURlZmluaXRpb24+JiByZWN1cnNpb25Hcm91
cCkgLT4gUGFydGlhbFJlc3VsdAotewotICAgIEFTU0VSVChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUdDKCkpOwotCi0gICAgdWludDMyX3QgdHlwZUNvdW50OwotICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVmFyVUludDMyKHR5cGVDb3VudCksICJjYW4ndCBnZXQgIiwgcG9zaXRpb24sICJ0
aCByZWN1cnNpb24gZ3JvdXAncyB0eXBlIGNvdW50Iik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rih0eXBlQ291bnQgPiBtYXhSZWN1cnNpb25Hcm91cENvdW50LCAibnVtYmVyIG9mIHR5cGVzIGZv
ciByZWN1cnNpb24gZ3JvdXAgYXQgcG9zaXRpb24gIiwgcG9zaXRpb24sICIgaXMgdG9vIGJpZyAi
LCB0eXBlQ291bnQsICIgbWF4aW11bSAiLCBtYXhSZWN1cnNpb25Hcm91cENvdW50KTsKLSAgICBW
ZWN0b3I8VHlwZUluZGV4PiB0eXBlczsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCF0eXBlcy50
cnlSZXNlcnZlQ2FwYWNpdHkodHlwZUNvdW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1v
cnkgZm9yIHJlY3Vyc2lvbiBncm91cCAiLCB0eXBlQ291bnQsICIgZW50cmllcyIpOwotICAgIFJl
ZlB0cjxUeXBlRGVmaW5pdGlvbj4gZmlyc3RTaWduYXR1cmU7Ci0KLSAgICBTZXRGb3JTY29wZTxS
ZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uPiByZWN1cnNpb25Hcm91cEluZm8obV9yZWN1cnNpb25H
cm91cEluZm9ybWF0aW9uLCBSZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uIHsgdHJ1ZSwgbV9pbmZv
LT50eXBlQ291bnQoKSwgbV9pbmZvLT50eXBlQ291bnQoKSArIHR5cGVDb3VudCB9KTsKLQotICAg
IGZvciAodWludDMyX3QgaSA9IDA7IGkgPCB0eXBlQ291bnQ7ICsraSkgewotICAgICAgICBpbnQ4
X3QgdHlwZUtpbmQ7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBl
S2luZCksICJjYW4ndCBnZXQgcmVjdXJzaW9uIGdyb3VwJ3MgIiwgaSwgInRoIFR5cGUncyB0eXBl
Iik7Ci0gICAgICAgIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gc2lnbmF0dXJlOwotICAgICAgICBz
d2l0Y2ggKHN0YXRpY19jYXN0PFR5cGVLaW5kPih0eXBlS2luZCkpIHsKLSAgICAgICAgY2FzZSBU
eXBlS2luZDo6RnVuYzogewotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhw
YXJzZUZ1bmN0aW9uVHlwZShpLCBzaWduYXR1cmUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDogewotICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZVN0cnVjdFR5cGUoaSwgc2lnbmF0dXJlKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogQWRkIEFycmF5
IHR5cGVzIHdoZW4gdGhleSBhcmUgaW1wbGVtZW50ZWQuCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gZmFpbChpLCAidGggVHlwZSBpcyBub24tRnVuYyBhbmQgbm9uLVN0cnVj
dCAiLCB0eXBlS2luZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciByZWN1cnNpb24g
Z3JvdXAncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0gICAgICAgIHR5cGVzLnVuY2hlY2tlZEFw
cGVuZChzaWduYXR1cmUtPmluZGV4KCkpOwotCi0gICAgICAgIGlmICghaSkKLSAgICAgICAgICAg
IGZpcnN0U2lnbmF0dXJlID0gc2lnbmF0dXJlOwotICAgIH0KLQotICAgIHJlY3Vyc2lvbkdyb3Vw
ID0gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvclJlY3Vyc2lvbkdyb3VwKHR5cGVz
KTsKLQotICAgIC8vIFR5cGUgZGVmaW5pdGlvbnMgYXJlIG5vcm1hbGl6ZWQgc3VjaCB0aGF0IG5v
bi1yZWN1cnNpdmUsIHNpbmdsZXRvbiByZWN1cnNpb24gZ3JvdXBzCi0gICAgLy8gYXJlIHN0b3Jl
ZCBhcyB0aGUgdW5kZXJseWluZyBjb25jcmV0ZSB0eXBlIHdpdGhvdXQgYSBwcm9qZWN0aW9uLiBP
dGhlcndpc2Ugd2Ugd2lsbAotICAgIC8vIHN0b3JlIHByb2plY3Rpb25zIGZvciBlYWNoIHJlY3Vy
c2lvbiBncm91cCBpbmRleCBpbiB0aGUgdHlwZSBzZWN0aW9uLgotICAgIGlmICh0eXBlQ291bnQg
PiAxKSB7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby0+dHlwZVNpZ25hdHVy
ZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1faW5mby0+dHlwZVNpZ25hdHVyZXMuY2FwYWNpdHkoKSAr
IHR5cGVDb3VudCAtIDEpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgcmVjdXJz
aW9uIGdyb3VwJ3MgIiwgdHlwZUNvdW50LCAiIHR5cGUgaW5kaWNlcyIpOwotICAgICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgdHlwZUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxUeXBlRGVmaW5pdGlvbj4gcHJvamVjdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURlZmlu
aXRpb25Gb3JQcm9qZWN0aW9uKHJlY3Vyc2lvbkdyb3VwLT5pbmRleCgpLCBpKTsKLSAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXByb2plY3Rpb24sICJjYW4ndCBhbGxvY2F0ZSBlbm91
Z2ggbWVtb3J5IGZvciByZWN1cnNpb24gZ3JvdXAncyAiLCBpLCAidGggcHJvamVjdGlvbiIpOwot
ICAgICAgICAgICAgbV9pbmZvLT50eXBlU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQocHJvamVj
dGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIElmIGEgdHlwZSBkZWZpbml0aW9uIGlzIGlkZW1wb3RlbnQgZm9yIHRoZSBiZWxvdyByZXBs
YWNlbWVudCwgdGhlbiBpdCBpcyBub24tcmVjdXJzaXZlIGFuZCBkb2Vzbid0IG5lZWQgYSBwcm9q
ZWN0aW9uLgotICAgICAgICBpZiAoKmZpcnN0U2lnbmF0dXJlID09IGZpcnN0U2lnbmF0dXJlLT5y
ZXBsYWNlUGxhY2Vob2xkZXJzKHJlY3Vyc2lvbkdyb3VwLT5pbmRleCgpKSkKLSAgICAgICAgICAg
IG1faW5mby0+dHlwZVNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKGZpcnN0U2lnbmF0dXJlLnJl
bGVhc2VOb25OdWxsKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUeXBl
RGVmaW5pdGlvbj4gcHJvamVjdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURlZmluaXRpb25G
b3JQcm9qZWN0aW9uKHJlY3Vyc2lvbkdyb3VwLT5pbmRleCgpLCAwKTsKLSAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXByb2plY3Rpb24sICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciByZWN1cnNpb24gZ3JvdXAncyAwdGggcHJvamVjdGlvbiIpOwotICAgICAgICAgICAg
bV9pbmZvLT50eXBlU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQocHJvamVjdGlvbi5yZWxlYXNl
Tm9uTnVsbCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKHN0ZDo6
b3B0aW9uYWw8STMySW5pdEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAogewogICAg
IHJldHVybiBwYXJzZUkzMkluaXRFeHByKGluaXRFeHByLCAiRWxlbWVudCBpbml0X2V4cHIgbXVz
dCBwcm9kdWNlIGFuIGkzMiJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuaAppbmRleCBlMTk3N2Y4YTc5ZWQuLmVlYzQwZDU3MTlkMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCkBAIC03MSw3
ICs3MSw2IEBAIHByaXZhdGU6CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBwYXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0
aW9uPiYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlU3RydWN0
VHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiYpOwotICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlUmVjdXJzaW9uR3JvdXAodWludDMy
X3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mKTsKIAogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9y
RWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggOWM5NjMxZmQ2OGIwLi5l
ZDIwN2M5NTIzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0
aHMuY3BwCkBAIC01MDAsNyArNTAwLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dh
c21DYWxsSW5kaXJlY3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFdhc206Okluc3RhbmMKICAgICAg
ICAgV0FTTV9USFJPVyhXYXNtOjpFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CiAKICAg
ICBjb25zdCBhdXRvJiBjYWxsU2lnbmF0dXJlID0gQ0FMTEVFKCktPnNpZ25hdHVyZSh0eXBlSW5k
ZXgpOwotICAgIGlmIChjYWxsU2lnbmF0dXJlLmluZGV4KCkgIT0gZnVuY3Rpb24udHlwZUluZGV4
KQorICAgIGlmIChjYWxsU2lnbmF0dXJlICE9IFdhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVu
Y3Rpb25TaWduYXR1cmUoZnVuY3Rpb24udHlwZUluZGV4KSkKICAgICAgICAgV0FTTV9USFJPVyhX
YXNtOjpFeGNlcHRpb25UeXBlOjpCYWRTaWduYXR1cmUpOwogCiAgICAgaWYgKHRhcmdldEluc3Rh
bmNlICE9IGluc3RhbmNlKQpAQCAtNTQxLDcgKzU0MSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgZG9XYXNtQ2FsbFJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2Uq
IGNhCiAgICAgaWYgKGNhbGxlZUluc3RhbmNlICE9IGNhbGxlckluc3RhbmNlKQogICAgICAgICBj
YWxsZWVJbnN0YW5jZS0+c2V0Q2FjaGVkU3RhY2tMaW1pdChjYWxsZXJJbnN0YW5jZS0+Y2FjaGVk
U3RhY2tMaW1pdCgpKTsKIAotICAgIEFTU0VSVChmdW5jdGlvbi50eXBlSW5kZXggPT0gQ0FMTEVF
KCktPnNpZ25hdHVyZSh0eXBlSW5kZXgpLmluZGV4KCkpOworICAgIEFTU0VSVChXYXNtOjpUeXBl
SW5mb3JtYXRpb246OmdldEZ1bmN0aW9uU2lnbmF0dXJlKGZ1bmN0aW9uLnR5cGVJbmRleCkgPT0g
Q0FMTEVFKCktPnNpZ25hdHVyZSh0eXBlSW5kZXgpKTsKICAgICBVTlVTRURfUEFSQU0odHlwZUlu
ZGV4KTsKICAgICBXQVNNX0NBTExfUkVUVVJOKGNhbGxlZUluc3RhbmNlLCBmdW5jdGlvbi5lbnRy
eXBvaW50TG9hZExvY2F0aW9uLT5leGVjdXRhYmxlQWRkcmVzcygpLCBXYXNtRW50cnlQdHJUYWcp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZp
bml0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlv
bi5jcHAKaW5kZXggZWRjMzJmN2ZmMDBmLi5iNDQ4OTFjYzMxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcApAQCAtNDUsMTQgKzQ1
LDggQEAgdm9pZCBUeXBlRGVmaW5pdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgIGlmIChpczxGdW5jdGlvblNpZ25hdHVyZT4oKSkKICAgICAgICAgcmV0dXJuIGFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpLT5kdW1wKG91dCk7CiAKLSAgICBpZiAoaXM8U3RydWN0VHlwZT4oKSkK
LSAgICAgICAgcmV0dXJuIGFzPFN0cnVjdFR5cGU+KCktPmR1bXAob3V0KTsKLQotICAgIGlmIChp
czxSZWN1cnNpb25Hcm91cD4oKSkKLSAgICAgICAgcmV0dXJuIGFzPFJlY3Vyc2lvbkdyb3VwPigp
LT5kdW1wKG91dCk7Ci0KLSAgICBBU1NFUlQoaXM8UHJvamVjdGlvbj4oKSk7Ci0gICAgcmV0dXJu
IGFzPFByb2plY3Rpb24+KCktPmR1bXAob3V0KTsKKyAgICBBU1NFUlQoaXM8U3RydWN0VHlwZT4o
KSk7CisgICAgcmV0dXJuIGFzPFN0cnVjdFR5cGU+KCktPmR1bXAob3V0KTsKIH0KIAogU3RyaW5n
IEZ1bmN0aW9uU2lnbmF0dXJlOjp0b1N0cmluZygpIGNvbnN0CkBAIC05NSwzNiArODksNiBAQCB2
b2lkIFN0cnVjdFR5cGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJp
bnQoIikiKTsKIH0KIAotU3RyaW5nIFJlY3Vyc2lvbkdyb3VwOjp0b1N0cmluZygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFdURjo6dG9TdHJpbmcoKnRoaXMpOwotfQotCi12b2lkIFJlY3Vyc2lvbkdy
b3VwOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCIoIik7
Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hOwotICAgIGZvciAoUmVjdXJzaW9uR3JvdXBDb3VudCB0
eXBlSW5kZXggPSAwOyB0eXBlSW5kZXggPCB0eXBlQ291bnQoKTsgKyt0eXBlSW5kZXgpIHsKLSAg
ICAgICAgb3V0LnByaW50KGNvbW1hKTsKLSAgICAgICAgVHlwZUluZm9ybWF0aW9uOjpnZXQodHlw
ZSh0eXBlSW5kZXgpKS5kdW1wKG91dCk7Ci0gICAgfQotICAgIG91dC5wcmludCgiKSIpOwotfQot
Ci1TdHJpbmcgUHJvamVjdGlvbjo6dG9TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6
OnRvU3RyaW5nKCp0aGlzKTsKLX0KLQotdm9pZCBQcm9qZWN0aW9uOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCIoIik7Ci0gICAgQ29tbWFQcmludGVyIGNv
bW1hOwotICAgIFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHJlY3Vyc2lvbkdyb3VwKCkpLmR1bXAob3V0
KTsKLSAgICBvdXQucHJpbnQoIi4iLCBpbmRleCgpKTsKLSAgICBvdXQucHJpbnQoIikiKTsKLX0K
LQogc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVTaWduYXR1cmVIYXNoKHNpemVfdCByZXR1cm5Db3Vu
dCwgY29uc3QgVHlwZSogcmV0dXJuVHlwZXMsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBU
eXBlKiBhcmd1bWVudFR5cGVzKQogewogICAgIHVuc2lnbmVkIGFjY3VtdWxhdG9yID0gMHhhMWJj
ZWRkOHU7CkBAIC0xNTMsMjIgKzExNyw2IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlU3RydWN0
VHlwZUhhc2goc2l6ZV90IGZpZWxkQ291bnQsIGNvbnN0IFN0cnVjdEZpZWxkKiBmaWVsCiAgICAg
cmV0dXJuIGFjY3VtdWxhdG9yOwogfQogCi1zdGF0aWMgdW5zaWduZWQgY29tcHV0ZVJlY3Vyc2lv
bkdyb3VwSGFzaChzaXplX3QgdHlwZUNvdW50LCBjb25zdCBUeXBlSW5kZXgqIHR5cGVzKQotewot
ICAgIHVuc2lnbmVkIGFjY3VtdWxhdG9yID0gMHg5Y2ZiODliYjsKLSAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgdHlwZUNvdW50OyArK2kpCi0gICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpw
YWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPFR5cGVJbmRleD46Omhhc2goc3Rh
dGljX2Nhc3Q8VHlwZUluZGV4Pih0eXBlc1tpXSkpKTsKLSAgICByZXR1cm4gYWNjdW11bGF0b3I7
Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHJvamVjdGlvbkhhc2goVHlwZUluZGV4IHJl
Y3Vyc2lvbkdyb3VwLCBQcm9qZWN0aW9uSW5kZXggaW5kZXgpCi17Ci0gICAgdW5zaWduZWQgYWNj
dW11bGF0b3IgPSAweGJlYWU2ZDRlOwotICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFz
aChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPFR5cGVJbmRleD46Omhhc2goc3RhdGljX2Nhc3Q8
VHlwZUluZGV4PihyZWN1cnNpb25Hcm91cCkpKTsKLSAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFp
ckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50MzJfdD46Omhhc2goc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGluZGV4KSkpOwotICAgIHJldHVybiBhY2N1bXVsYXRvcjsKLX0KLQog
dW5zaWduZWQgVHlwZURlZmluaXRpb246Omhhc2goKSBjb25zdAogewogICAgIGlmIChpczxGdW5j
dGlvblNpZ25hdHVyZT4oKSkgewpAQCAtMTc2LDE5ICsxMjQsOSBAQCB1bnNpZ25lZCBUeXBlRGVm
aW5pdGlvbjo6aGFzaCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBjb21wdXRlU2lnbmF0dXJlSGFz
aChzaWduYXR1cmUtPnJldHVybkNvdW50KCksIHNpZ25hdHVyZS0+c3RvcmFnZSgwKSwgc2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KCksIHNpZ25hdHVyZS0+c3RvcmFnZShzaWduYXR1cmUtPnJldHVy
bkNvdW50KCkpKTsKICAgICB9CiAKLSAgICBpZiAoaXM8U3RydWN0VHlwZT4oKSkgewotICAgICAg
ICBjb25zdCBTdHJ1Y3RUeXBlKiBzdHJ1Y3RUeXBlID0gYXM8U3RydWN0VHlwZT4oKTsKLSAgICAg
ICAgcmV0dXJuIGNvbXB1dGVTdHJ1Y3RUeXBlSGFzaChzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCks
IHN0cnVjdFR5cGUtPnN0b3JhZ2UoMCkpOwotICAgIH0KLQotICAgIGlmIChpczxSZWN1cnNpb25H
cm91cD4oKSkgewotICAgICAgICBjb25zdCBSZWN1cnNpb25Hcm91cCogcmVjdXJzaW9uR3JvdXAg
PSBhczxSZWN1cnNpb25Hcm91cD4oKTsKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVSZWN1cnNpb25H
cm91cEhhc2gocmVjdXJzaW9uR3JvdXAtPnR5cGVDb3VudCgpLCByZWN1cnNpb25Hcm91cC0+c3Rv
cmFnZSgwKSk7Ci0gICAgfQotCi0gICAgQVNTRVJUKGlzPFByb2plY3Rpb24+KCkpOwotICAgIGNv
bnN0IFByb2plY3Rpb24qIHByb2plY3Rpb24gPSBhczxQcm9qZWN0aW9uPigpOwotICAgIHJldHVy
biBjb21wdXRlUHJvamVjdGlvbkhhc2gocHJvamVjdGlvbi0+cmVjdXJzaW9uR3JvdXAoKSwgcHJv
amVjdGlvbi0+aW5kZXgoKSk7CisgICAgQVNTRVJUKGlzPFN0cnVjdFR5cGU+KCkpOworICAgIGNv
bnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUgPSBhczxTdHJ1Y3RUeXBlPigpOworICAgIHJldHVy
biBjb21wdXRlU3RydWN0VHlwZUhhc2goc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpLCBzdHJ1Y3RU
eXBlLT5zdG9yYWdlKDApKTsKIH0KIAogUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlRGVmaW5p
dGlvbjo6dHJ5Q3JlYXRlRnVuY3Rpb25TaWduYXR1cmUoRnVuY3Rpb25BcmdDb3VudCByZXR1cm5D
b3VudCwgRnVuY3Rpb25BcmdDb3VudCBhcmd1bWVudENvdW50KQpAQCAtMTk4LDcgKzEzNiw3IEBA
IFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRpb246OnRyeUNyZWF0ZUZ1bmN0aW9u
U2lnbmF0dXJlKEZ1bmN0aW9uQXJnQ291CiAgICAgdm9pZCogbWVtb3J5ID0gbnVsbHB0cjsKICAg
ICBpZiAoIXJlc3VsdC5nZXRWYWx1ZShtZW1vcnkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChOb3ROdWxsLCBtZW1vcnkpIFR5
cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6RnVuY3Rpb25TaWduYXR1cmUsIHJldHVy
bkNvdW50LCBhcmd1bWVudENvdW50KTsKKyAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0g
bmV3IChOb3ROdWxsLCBtZW1vcnkpIFR5cGVEZWZpbml0aW9uKHJldHVybkNvdW50LCBhcmd1bWVu
dENvdW50KTsKICAgICByZXR1cm4gYWRvcHRSZWYoc2lnbmF0dXJlKTsKIH0KIApAQCAtMjA5LDEw
MSArMTQ3LDEwIEBAIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRpb246OnRyeUNy
ZWF0ZVN0cnVjdFR5cGUoU3RydWN0RmllbGRDb3VudCBmaWVsCiAgICAgdm9pZCogbWVtb3J5ID0g
bnVsbHB0cjsKICAgICBpZiAoIXJlc3VsdC5nZXRWYWx1ZShtZW1vcnkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChOb3ROdWxs
LCBtZW1vcnkpIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6U3RydWN0VHlwZSwg
ZmllbGRDb3VudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7Ci19Ci0KLVJlZlB0
cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVJlY3Vyc2lvbkdyb3Vw
KFJlY3Vyc2lvbkdyb3VwQ291bnQgdHlwZUNvdW50KQotewotICAgIC8vIFdlIHVzZSBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRCBmb3IgdGhpcyBjbGFzcy4KLSAgICBhdXRvIHJlc3VsdCA9IHRyeUZh
c3RNYWxsb2MoYWxsb2NhdGVkUmVjdXJzaW9uR3JvdXBTaXplKHR5cGVDb3VudCkpOwotICAgIHZv
aWQqIG1lbW9yeSA9IG51bGxwdHI7Ci0gICAgaWYgKCFyZXN1bHQuZ2V0VmFsdWUobWVtb3J5KSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgVHlwZURlZmluaXRpb24qIHNpZ25hdHVyZSA9
IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5pdGlvbktpbmQ6
OlJlY3Vyc2lvbkdyb3VwLCB0eXBlQ291bnQpOworICAgIFR5cGVEZWZpbml0aW9uKiBzaWduYXR1
cmUgPSBuZXcgKE5vdE51bGwsIG1lbW9yeSkgVHlwZURlZmluaXRpb24oZmllbGRDb3VudCk7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7CiB9CiAKLVJlZlB0cjxUeXBlRGVmaW5pdGlv
bj4gVHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVByb2plY3Rpb24oKQotewotICAgIC8vIFdlIHVz
ZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBmb3IgdGhpcyBjbGFzcy4KLSAgICBhdXRvIHJlc3Vs
dCA9IHRyeUZhc3RNYWxsb2MoYWxsb2NhdGVkUHJvamVjdGlvblNpemUoKSk7Ci0gICAgdm9pZCog
bWVtb3J5ID0gbnVsbHB0cjsKLSAgICBpZiAoIXJlc3VsdC5nZXRWYWx1ZShtZW1vcnkpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3
IChOb3ROdWxsLCBtZW1vcnkpIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6UHJv
amVjdGlvbik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7Ci19Ci0KLS8vIFJlY3Vy
c2l2ZSB0eXBlcyBhcmUgc3RvcmVkICJ0aWVkIiBpbiB0aGUgc2Vuc2UgdGhhdCB0aGUgc3BlYyBy
ZWZlcnMgdG8gaGVyZToKLS8vCi0vLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9n
Yy9ibG9iL21haW4vcHJvcG9zYWxzL2djL01WUC5tZCNlcXVpdmFsZW5jZQotLy8KLS8vIFRoYXQg
aXMsIHRoZSByZWN1cnNpdmUgImJhY2sgZWRnZXMiIGFyZSBzdG9yZWQgYXMgYSBzcGVjaWFsIHR5
cGUgaW5kZXguIFRoZXNlCi0vLyBuZWVkIHRvIGJlIHN1YnN0aXR1dGVkIGJhY2sgb3V0IHRvIGEg
UHJvamVjdGlvbiBldmVudHVhbGx5IHNvIHRoYXQgdGhlIHR5cGUKLS8vIGNhbiBiZSBmdXJ0aGVy
IGV4cGFuZGVkIGlmIG5lY2Vzc2FyeS4gVGhlIHN1YnN0aXR1dGUgYW5kIHJlcGxhY2VQbGFjZWhv
bGRlcnMKLS8vIGZ1bmN0aW9ucyBiZWxvdyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgdGhpcyBzdWJz
dGl0dXRpb24uCi1UeXBlIFR5cGVEZWZpbml0aW9uOjpzdWJzdGl0dXRlKFR5cGUgdHlwZSwgVHlw
ZUluZGV4IHByb2plY3RlZSkKLXsKLSAgICBpZiAodHlwZS5raW5kID09IFR5cGVLaW5kOjpSZWMp
IHsKLSAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBwcm9qZWN0aW9uID0gVHlwZUluZm9y
bWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvclByb2plY3Rpb24ocHJvamVjdGVlLCBzdGF0aWNfY2Fz
dDxQcm9qZWN0aW9uSW5kZXg+KHR5cGUuaW5kZXgpKTsKLSAgICAgICAgVHlwZUtpbmQga2luZCA9
IHR5cGUuaXNOdWxsYWJsZSgpID8gVHlwZUtpbmQ6OlJlZk51bGwgOiBUeXBlS2luZDo6UmVmOwot
ICAgICAgICByZXR1cm4gVHlwZSB7IGtpbmQsIHR5cGUubnVsbGFibGUsIHByb2plY3Rpb24tPmlu
ZGV4KCkgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHlwZTsKLX0KLQotLy8gVGhpcyBvcGVyYXRp
b24gaXMgYSBoZWxwZXIgZm9yIGV4cGFuZCgpIHRoYXQgY2FsbHMgc3Vic3RpdHV0ZSgpIGluIG9y
ZGVyCi0vLyB0byByZXBsYWNlIHBsYWNlaG9sZGVyIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGluIHN0
cnVjdHVyYWwgdHlwZXMuCi1jb25zdCBUeXBlRGVmaW5pdGlvbiYgVHlwZURlZmluaXRpb246OnJl
cGxhY2VQbGFjZWhvbGRlcnMoVHlwZUluZGV4IHByb2plY3RlZSkgY29uc3QKLXsKLSAgICBpZiAo
aXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpIHsKLSAgICAgICAgY29uc3QgRnVuY3Rpb25TaWduYXR1
cmUqIGZ1bmMgPSBhczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKLSAgICAgICAgVmVjdG9yPFR5cGU+
IG5ld0FyZ3VtZW50czsKLSAgICAgICAgVmVjdG9yPFR5cGUsIDE+IG5ld1JldHVybnM7Ci0gICAg
ICAgIG5ld0FyZ3VtZW50cy50cnlSZXNlcnZlQ2FwYWNpdHkoZnVuYy0+YXJndW1lbnRDb3VudCgp
KTsKLSAgICAgICAgbmV3UmV0dXJucy50cnlSZXNlcnZlQ2FwYWNpdHkoZnVuYy0+cmV0dXJuQ291
bnQoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmdW5jLT5hcmd1bWVudENv
dW50KCk7ICsraSkKLSAgICAgICAgICAgIG5ld0FyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQoc3Vi
c3RpdHV0ZShmdW5jLT5hcmd1bWVudFR5cGUoaSksIHByb2plY3RlZSkpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuYy0+cmV0dXJuQ291bnQoKTsgKytpKQotICAgICAgICAg
ICAgbmV3UmV0dXJucy51bmNoZWNrZWRBcHBlbmQoc3Vic3RpdHV0ZShmdW5jLT5yZXR1cm5UeXBl
KGkpLCBwcm9qZWN0ZWUpKTsKLQotICAgICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IGRlZiA9
IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURlZmluaXRpb25Gb3JGdW5jdGlvbihuZXdSZXR1cm5zLCBu
ZXdBcmd1bWVudHMpOwotICAgICAgICByZXR1cm4gKmRlZjsKLSAgICB9Ci0KLSAgICBpZiAoaXM8
U3RydWN0VHlwZT4oKSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBjYXNlIHNob3VsZCBiZSBm
aWxsZWQgd2hlbiBzdHJ1Y3Qgb3BlcmF0aW9ucyBhcmUgaW1wbGVtZW50ZWQuCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
cmV0dXJuICp0aGlzOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9uIGNvcnJlc3BvbmRzIHRvIHRoZSBl
eHBhbmQgbWV0YWZ1bmN0aW9uIGZyb20gdGhlIHNwZWM6Ci0vLwotLy8gIGh0dHBzOi8vZ2l0aHVi
LmNvbS9XZWJBc3NlbWJseS9nYy9ibG9iL21haW4vcHJvcG9zYWxzL2djL01WUC5tZCNhdXhpbGlh
cnktZGVmaW5pdGlvbnMKLS8vCi0vLyBJdCBleHBhbmRzIGEgcG90ZW50aWFsbHkgcmVjdXJzaXZl
IGNvbnRleHQgdHlwZSBhbmQgcmV0dXJucyB0aGUgY29uY3JldGUgc3RydWN0dXJhbAotLy8gdHlw
ZSBkZWZpbml0aW9uIHRoYXQgaXQgY29ycmVzcG9uZHMgdG8uIEl0IHNob3VsZCBiZSBjYWxsZWQg
d2hlbmV2ZXIgdGhlIGNvbmNyZXRlCi0vLyB0eXBlIGlzIG5lZWRlZCBkdXJpbmcgdmFsaWRhdGlv
biBvciBvdGhlciBwaGFzZXMuCi0vLwotLy8gQ2FjaGluZyB0aGUgcmVzdWx0IG9mIHRoaXMgbG9v
a3VwIG1heSBiZSB1c2VmdWwgaWYgdGhpcyBiZWNvbWVzIGEgYm90dGxlbmVjay4KLWNvbnN0IFR5
cGVEZWZpbml0aW9uJiBUeXBlRGVmaW5pdGlvbjo6ZXhwYW5kKCkgY29uc3QKLXsKLSAgICBpZiAo
aXM8UHJvamVjdGlvbj4oKSkgewotICAgICAgICBjb25zdCBQcm9qZWN0aW9uJiBwcm9qZWN0aW9u
ID0gKmFzPFByb2plY3Rpb24+KCk7Ci0gICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBwcm9q
ZWN0ZWUgPSBUeXBlSW5mb3JtYXRpb246OmdldChwcm9qZWN0aW9uLnJlY3Vyc2lvbkdyb3VwKCkp
OwotICAgICAgICBjb25zdCBSZWN1cnNpb25Hcm91cCYgcmVjdXJzaW9uR3JvdXAgPSAqcHJvamVj
dGVlLmFzPFJlY3Vyc2lvbkdyb3VwPigpOwotICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYg
dW5kZXJseWluZ1R5cGUgPSBUeXBlSW5mb3JtYXRpb246OmdldChyZWN1cnNpb25Hcm91cC50eXBl
KHByb2plY3Rpb24uaW5kZXgoKSkpOwotICAgICAgICByZXR1cm4gdW5kZXJseWluZ1R5cGUucmVw
bGFjZVBsYWNlaG9sZGVycyhwcm9qZWN0ZWUuaW5kZXgoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
ICp0aGlzOwotfQotCiBUeXBlSW5mb3JtYXRpb246OlR5cGVJbmZvcm1hdGlvbigpCiB7CiAjZGVm
aW5lIE1BS0VfVEhVTktfU0lHTkFUVVJFKHR5cGUsIGVuYywgc3RyLCB2YWwsIF8pIFwKQEAgLTMz
OSw3ICsxODYsNyBAQCBzdHJ1Y3QgRnVuY3Rpb25QYXJhbWV0ZXJUeXBlcyB7CiAKICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBUeXBlSGFzaCYgc2lnLCBjb25zdCBGdW5jdGlvblBhcmFtZXRl
clR5cGVzJiBwYXJhbXMpCiAgICAgewotICAgICAgICBpZiAoIXNpZy5rZXktPmlzPEZ1bmN0aW9u
U2lnbmF0dXJlPigpKQorICAgICAgICBpZiAoc2lnLmtleS0+aXM8U3RydWN0VHlwZT4oKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVy
ZSogc2lnbmF0dXJlID0gc2lnLmtleS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CkBAIC0zNjAs
OSArMjA3LDYgQEAgc3RydWN0IEZ1bmN0aW9uUGFyYW1ldGVyVHlwZXMgewogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICAvLyBUaGUgdHJhbnNsYXRlIG1ldGhvZCAoaGVyZSBhbmQg
aW4gc3RydWN0cyBiZWxvdykgaXMgdXNlZCBhcyBhIHBhcnQgb2YgdGhlCi0gICAgLy8gSGFzaFRy
YW5zbGF0b3IgaW50ZXJmYWNlIGluIG9yZGVyIHRvIGNvbnN0cnVjdCBhIGhhc2ggc2V0IGVudHJ5
IHdoZW4gdGhlIGVudHJ5Ci0gICAgLy8gaXMgbm90IGFscmVhZHkgaW4gdGhlIHNldC4gU2VlIEhh
c2hTZXQuaCBmb3IgZGV0YWlscy4KICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVHlwZUhhc2gm
IGVudHJ5LCBjb25zdCBGdW5jdGlvblBhcmFtZXRlclR5cGVzJiBwYXJhbXMsIHVuc2lnbmVkKQog
ICAgIHsKICAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBzaWduYXR1cmUgPSBUeXBlRGVm
aW5pdGlvbjo6dHJ5Q3JlYXRlRnVuY3Rpb25TaWduYXR1cmUocGFyYW1zLnJldHVyblR5cGVzLnNp
emUoKSwgcGFyYW1zLmFyZ3VtZW50VHlwZXMuc2l6ZSgpKTsKQEAgLTM4OCw3ICsyMzIsNyBAQCBz
dHJ1Y3QgU3RydWN0UGFyYW1ldGVyVHlwZXMgewogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgVHlwZUhhc2gmIHNpZywgY29uc3QgU3RydWN0UGFyYW1ldGVyVHlwZXMmIHBhcmFtcykKICAg
ICB7Ci0gICAgICAgIGlmICghc2lnLmtleS0+aXM8U3RydWN0VHlwZT4oKSkKKyAgICAgICAgaWYg
KHNpZy5rZXktPmlzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGNvbnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUgPSBzaWcua2V5LT5h
czxTdHJ1Y3RUeXBlPigpOwpAQCAtNDE2LDc4ICsyNjAsNiBAQCBzdHJ1Y3QgU3RydWN0UGFyYW1l
dGVyVHlwZXMgewogICAgIH0KIH07CiAKLXN0cnVjdCBSZWN1cnNpb25Hcm91cFBhcmFtZXRlclR5
cGVzIHsKLSAgICBjb25zdCBWZWN0b3I8VHlwZUluZGV4PiYgdHlwZXM7Ci0KLSAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBSZWN1cnNpb25Hcm91cFBhcmFtZXRlclR5cGVzJiBwYXJhbXMp
Ci0gICAgewotICAgICAgICByZXR1cm4gY29tcHV0ZVJlY3Vyc2lvbkdyb3VwSGFzaChwYXJhbXMu
dHlwZXMuc2l6ZSgpLCBwYXJhbXMudHlwZXMuZGF0YSgpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBUeXBlSGFzaCYgc2lnLCBjb25zdCBSZWN1cnNpb25Hcm91cFBhcmFt
ZXRlclR5cGVzJiBwYXJhbXMpCi0gICAgewotICAgICAgICBpZiAoIXNpZy5rZXktPmlzPFJlY3Vy
c2lvbkdyb3VwPigpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNvbnN0
IFJlY3Vyc2lvbkdyb3VwKiByZWN1cnNpb25Hcm91cCA9IHNpZy5rZXktPmFzPFJlY3Vyc2lvbkdy
b3VwPigpOwotICAgICAgICBpZiAocmVjdXJzaW9uR3JvdXAtPnR5cGVDb3VudCgpICE9IHBhcmFt
cy50eXBlcy5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3Vyc2lvbkdyb3VwLT50eXBlQ291bnQoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAocmVjdXJzaW9uR3JvdXAtPnR5cGUoaSkgIT0gcGFyYW1zLnR5cGVz
W2ldKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUeXBlSGFz
aCYgZW50cnksIGNvbnN0IFJlY3Vyc2lvbkdyb3VwUGFyYW1ldGVyVHlwZXMmIHBhcmFtcywgdW5z
aWduZWQpCi0gICAgewotICAgICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IHNpZ25hdHVyZSA9
IFR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVSZWN1cnNpb25Hcm91cChwYXJhbXMudHlwZXMuc2l6
ZSgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2lnbmF0dXJlKTsKLQotICAgICAgICBSZWN1
cnNpb25Hcm91cCogcmVjdXJzaW9uR3JvdXAgPSBzaWduYXR1cmUtPmFzPFJlY3Vyc2lvbkdyb3Vw
PigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1zLnR5cGVzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgcmVjdXJzaW9uR3JvdXAtPmdldFR5cGUoaSkgPSBwYXJhbXMu
dHlwZXNbaV07Ci0KLSAgICAgICAgZW50cnkua2V5ID0gV1RGTW92ZShzaWduYXR1cmUpOwotICAg
IH0KLX07Ci0KLXN0cnVjdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXMgewotICAgIGNvbnN0IFR5
cGVJbmRleCByZWN1cnNpb25Hcm91cDsKLSAgICBjb25zdCBQcm9qZWN0aW9uSW5kZXggaW5kZXg7
Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlw
ZXMmIHBhcmFtcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb21wdXRlUHJvamVjdGlvbkhhc2go
cGFyYW1zLnJlY3Vyc2lvbkdyb3VwLCBwYXJhbXMuaW5kZXgpOwotICAgIH0KLQotICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFR5cGVIYXNoJiBzaWcsIGNvbnN0IFByb2plY3Rpb25QYXJhbWV0
ZXJUeXBlcyYgcGFyYW1zKQotICAgIHsKLSAgICAgICAgaWYgKCFzaWcua2V5LT5pczxQcm9qZWN0
aW9uPigpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNvbnN0IFByb2pl
Y3Rpb24qIHByb2plY3Rpb24gPSBzaWcua2V5LT5hczxQcm9qZWN0aW9uPigpOwotICAgICAgICBp
ZiAocHJvamVjdGlvbi0+cmVjdXJzaW9uR3JvdXAoKSAhPSBwYXJhbXMucmVjdXJzaW9uR3JvdXAg
fHwgcHJvamVjdGlvbi0+aW5kZXgoKSAhPSBwYXJhbXMuaW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgdHJhbnNsYXRlKFR5cGVIYXNoJiBlbnRyeSwgY29uc3QgUHJvamVjdGlvblBhcmFtZXRlclR5
cGVzJiBwYXJhbXMsIHVuc2lnbmVkKQotICAgIHsKLSAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0
aW9uPiBzaWduYXR1cmUgPSBUeXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlUHJvamVjdGlvbigpOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzaWduYXR1cmUpOwotCi0gICAgICAgIFByb2plY3Rpb24q
IHByb2plY3Rpb24gPSBzaWduYXR1cmUtPmFzPFByb2plY3Rpb24+KCk7Ci0gICAgICAgIHByb2pl
Y3Rpb24tPmdldFJlY3Vyc2lvbkdyb3VwKCkgPSBwYXJhbXMucmVjdXJzaW9uR3JvdXA7Ci0gICAg
ICAgIHByb2plY3Rpb24tPmdldEluZGV4KCkgPSBwYXJhbXMuaW5kZXg7Ci0KLSAgICAgICAgZW50
cnkua2V5ID0gV1RGTW92ZShzaWduYXR1cmUpOwotICAgIH0KLX07Ci0KIFJlZlB0cjxUeXBlRGVm
aW5pdGlvbj4gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvckZ1bmN0aW9uKGNvbnN0
IFZlY3RvcjxUeXBlLCAxPiYgcmVzdWx0cywgY29uc3QgVmVjdG9yPFR5cGU+JiBhcmdzKQogewog
ICAgIGlmIGNvbnN0ZXhwciAoQVNTRVJUX0VOQUJMRUQpIHsKQEAgLTUxMCwyNCArMjgyLDYgQEAg
UmVmUHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9y
U3RydWN0KGNvbnN0IFZlY3RvcjxTdHIKICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5r
ZXk7CiB9CiAKLVJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVm
aW5pdGlvbkZvclJlY3Vyc2lvbkdyb3VwKGNvbnN0IFZlY3RvcjxUeXBlSW5kZXg+JiB0eXBlcykK
LXsKLSAgICBUeXBlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgaW5mby5tX2xvY2sgfTsKLQotICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3R5
cGVTZXQudGVtcGxhdGUgYWRkPFJlY3Vyc2lvbkdyb3VwUGFyYW1ldGVyVHlwZXM+KFJlY3Vyc2lv
bkdyb3VwUGFyYW1ldGVyVHlwZXMgeyB0eXBlcyB9KTsKLSAgICByZXR1cm4gYWRkUmVzdWx0Lml0
ZXJhdG9yLT5rZXk7Ci19Ci0KLVJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZUluZm9ybWF0aW9u
Ojp0eXBlRGVmaW5pdGlvbkZvclByb2plY3Rpb24oVHlwZUluZGV4IHJlY3Vyc2lvbkdyb3VwLCBQ
cm9qZWN0aW9uSW5kZXggaW5kZXgpCi17Ci0gICAgVHlwZUluZm9ybWF0aW9uJiBpbmZvID0gc2lu
Z2xldG9uKCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07Ci0KLSAgICBhdXRv
IGFkZFJlc3VsdCA9IGluZm8ubV90eXBlU2V0LnRlbXBsYXRlIGFkZDxQcm9qZWN0aW9uUGFyYW1l
dGVyVHlwZXM+KFByb2plY3Rpb25QYXJhbWV0ZXJUeXBlcyB7IHJlY3Vyc2lvbkdyb3VwLCBpbmRl
eCB9KTsKLSAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXk7Ci19Ci0KIHZvaWQgVHlw
ZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKIHsKICAgICBUeXBlSW5mb3JtYXRpb24mIGluZm8g
PSBzaW5nbGV0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21UeXBlRGVmaW5pdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVE
ZWZpbml0aW9uLmgKaW5kZXggZTU3NWI3MTBiOTY5Li44Njk2YWNmMGYzNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5oCkBAIC00NCw4ICs0
NCw2IEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogdXNpbmcgRnVuY3Rpb25BcmdDb3VudCA9IHVpbnQz
Ml90OwogdXNpbmcgU3RydWN0RmllbGRDb3VudCA9IHVpbnQzMl90OwotdXNpbmcgUmVjdXJzaW9u
R3JvdXBDb3VudCA9IHVpbnQzMl90OwotdXNpbmcgUHJvamVjdGlvbkluZGV4ID0gdWludDMyX3Q7
CiAKIGNsYXNzIEZ1bmN0aW9uU2lnbmF0dXJlIHsKIHB1YmxpYzoKQEAgLTEyNSw5MyArMTIzLDIw
IEBAIHByaXZhdGU6CiAgICAgU3RydWN0RmllbGRDb3VudCBtX2ZpZWxkQ291bnQ7CiB9OwogCi1j
bGFzcyBSZWN1cnNpb25Hcm91cCB7Ci1wdWJsaWM6Ci0gICAgUmVjdXJzaW9uR3JvdXAoVHlwZUlu
ZGV4KiBwYXlsb2FkLCBSZWN1cnNpb25Hcm91cENvdW50IHR5cGVDb3VudCkKLSAgICAgICAgOiBt
X3BheWxvYWQocGF5bG9hZCkKLSAgICAgICAgLCBtX3R5cGVDb3VudCh0eXBlQ291bnQpCi0gICAg
ewotICAgIH0KLQotICAgIFJlY3Vyc2lvbkdyb3VwQ291bnQgdHlwZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlQ291bnQ7IH0KLSAgICBUeXBlSW5kZXggdHlwZShSZWN1cnNpb25Hcm91cENv
dW50IGkpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVjdXJzaW9uR3JvdXAqPih0aGlzKS0+
Z2V0VHlwZShpKTsgfQotCi0gICAgV1RGOjpTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICB2
b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotICAgIFR5cGVJbmRleCYg
Z2V0VHlwZShSZWN1cnNpb25Hcm91cENvdW50IGkpIHsgQVNTRVJUKGkgPCB0eXBlQ291bnQoKSk7
OyByZXR1cm4gKnN0b3JhZ2UoaSk7IH0KLSAgICBUeXBlSW5kZXgqIHN0b3JhZ2UoUmVjdXJzaW9u
R3JvdXBDb3VudCBpKSB7IHJldHVybiBpICsgbV9wYXlsb2FkOyB9Ci0gICAgY29uc3QgVHlwZUlu
ZGV4KiBzdG9yYWdlKFJlY3Vyc2lvbkdyb3VwQ291bnQgaSkgY29uc3QgeyByZXR1cm4gY29uc3Rf
Y2FzdDxSZWN1cnNpb25Hcm91cCo+KHRoaXMpLT5zdG9yYWdlKGkpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgVHlwZUluZGV4KiBtX3BheWxvYWQ7Ci0gICAgUmVjdXJzaW9uR3JvdXBDb3VudCBtX3R5cGVD
b3VudDsKLX07Ci0KLS8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHByb2plY3Rpb24gaW50byBh
IHJlY3Vyc2lvbiBncm91cC4gVGhhdCBpcywgaWYgYSByZWN1cnNpb24KLS8vIGdyb3VwIGlzIGRl
ZmluZWQgYXMgJHIgPSAocmVjICh0eXBlICRzIC4uLikgKHR5cGUgJHQgLi4uKSksIHRoZW4gYSBw
cm9qZWN0aW9uIGFjY2Vzc2VzCi0vLyB0aGUgaW5uZXIgdHlwZXMuIEZvciBleGFtcGxlICRyLiRz
IG9yICRyLiR0LCBvciAkci4wIG9yICRyLjEgd2l0aCBudW1lcmljIGluZGljZXMuCi0vLwotLy8g
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9nYy9ibG9iL21haW4vcHJvcG9zYWxz
L2djL01WUC5tZCN0eXBlLWNvbnRleHRzCi0vLwotLy8gV2Ugc3RvcmUgcHJvamVjdGlvbnMgcmF0
aGVyIHRoYW4gdGhlIGltcGxpZWQgdW5mb2xkaW5nIGJlY2F1c2UgdGhlIGFjdHVhbCB0eXBlIGJl
aW5nCi0vLyByZXByZXNlbnRlZCBtYXkgYmUgcmVjdXJzaXZlIGFuZCBpbmZpbml0ZS4gUHJvamVj
dGlvbnMgYXJlIHVuZm9sZGVkIGludG8gYSBjb25jcmV0ZSB0eXBlCi0vLyB3aGVuIG9wZXJhdGlv
bnMgb24gdGhlIHR5cGUgcmVxdWlyZSBhIHNwZWNpZmljIGNvbmNyZXRlIHR5cGUuCi1jbGFzcyBQ
cm9qZWN0aW9uIHsKLXB1YmxpYzoKLSAgICBQcm9qZWN0aW9uKFR5cGVJbmRleCogcGF5bG9hZCkK
LSAgICAgICAgOiBtX3BheWxvYWQocGF5bG9hZCkKLSAgICB7Ci0gICAgfQotCi0gICAgVHlwZUlu
ZGV4IHJlY3Vyc2lvbkdyb3VwKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQcm9qZWN0aW9u
Kj4odGhpcyktPmdldFJlY3Vyc2lvbkdyb3VwKCk7IH0KLSAgICBQcm9qZWN0aW9uSW5kZXggaW5k
ZXgoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFByb2plY3Rpb24qPih0aGlzKS0+Z2V0SW5k
ZXgoKTsgfQotCi0gICAgV1RGOjpTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICB2b2lkIGR1
bXAoV1RGOjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotICAgIFR5cGVJbmRleCYgZ2V0UmVj
dXJzaW9uR3JvdXAoKSB7IHJldHVybiAqc3RvcmFnZSgwKTsgfQotICAgIFByb2plY3Rpb25JbmRl
eCYgZ2V0SW5kZXgoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxQcm9qZWN0aW9uSW5kZXgq
PihzdG9yYWdlKDEpKTsgfQotICAgIFR5cGVJbmRleCogc3RvcmFnZSh1aW50MzJfdCBpKSB7IEFT
U0VSVChpIDw9IDEpOyByZXR1cm4gaSArIG1fcGF5bG9hZDsgfQotICAgIGNvbnN0IFR5cGVJbmRl
eCogc3RvcmFnZSh1aW50MzJfdCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFByb2plY3Rp
b24qPih0aGlzKS0+c3RvcmFnZShpKTsgfQotCi1wcml2YXRlOgotICAgIFR5cGVJbmRleCogbV9w
YXlsb2FkOwotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFByb2plY3Rpb25JbmRleCkgPD0gc2l6
ZW9mKFR5cGVJbmRleCkpOwotCi1lbnVtIGNsYXNzIFR5cGVEZWZpbml0aW9uS2luZCA6IHVpbnQ4
X3QgewotICAgIEZ1bmN0aW9uU2lnbmF0dXJlLAotICAgIFN0cnVjdFR5cGUsCi0gICAgUmVjdXJz
aW9uR3JvdXAsCi0gICAgUHJvamVjdGlvbgotfTsKLQogY2xhc3MgVHlwZURlZmluaXRpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHlwZURlZmluaXRpb24+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIAogICAgIFR5cGVEZWZpbml0aW9uKCkgPSBkZWxldGU7CiAgICAg
VHlwZURlZmluaXRpb24oY29uc3QgVHlwZURlZmluaXRpb24mKSA9IGRlbGV0ZTsKIAotICAgIFR5
cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZCBraW5kLCBGdW5jdGlvbkFyZ0NvdW50IHJl
dENvdW50LCBGdW5jdGlvbkFyZ0NvdW50IGFyZ0NvdW50KQorICAgIFR5cGVEZWZpbml0aW9uKEZ1
bmN0aW9uQXJnQ291bnQgcmV0Q291bnQsIEZ1bmN0aW9uQXJnQ291bnQgYXJnQ291bnQpCiAgICAg
ICAgIDogbV90eXBlSGVhZGVyIHsgRnVuY3Rpb25TaWduYXR1cmUgeyBzdGF0aWNfY2FzdDxUeXBl
Kj4ocGF5bG9hZCgpKSwgYXJnQ291bnQsIHJldENvdW50IH0gfQogICAgIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoa2luZCA9PSBUeXBlRGVmaW5pdGlvbktpbmQ6OkZ1bmN0aW9uU2lnbmF0dXJl
KTsKLSAgICB9Ci0KLSAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5pdGlvbktpbmQga2luZCwg
dWludDMyX3QgZmllbGRDb3VudCkKLSAgICAgICAgOiBtX3R5cGVIZWFkZXIgeyBTdHJ1Y3RUeXBl
IHsgc3RhdGljX2Nhc3Q8U3RydWN0RmllbGQqPihwYXlsb2FkKCkpLCBzdGF0aWNfY2FzdDxTdHJ1
Y3RGaWVsZENvdW50PihmaWVsZENvdW50KSB9IH0KLSAgICB7Ci0gICAgICAgIGlmIChraW5kID09
IFR5cGVEZWZpbml0aW9uS2luZDo6UmVjdXJzaW9uR3JvdXApCi0gICAgICAgICAgICBtX3R5cGVI
ZWFkZXIgPSB7IFJlY3Vyc2lvbkdyb3VwIHsgc3RhdGljX2Nhc3Q8VHlwZUluZGV4Kj4ocGF5bG9h
ZCgpKSwgc3RhdGljX2Nhc3Q8UmVjdXJzaW9uR3JvdXBDb3VudD4oZmllbGRDb3VudCkgfSB9Owot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IFR5cGVEZWZp
bml0aW9uS2luZDo6U3RydWN0VHlwZSk7CiAgICAgfQogCi0gICAgVHlwZURlZmluaXRpb24oVHlw
ZURlZmluaXRpb25LaW5kIGtpbmQpCi0gICAgICAgIDogbV90eXBlSGVhZGVyIHsgUHJvamVjdGlv
biB7IHN0YXRpY19jYXN0PFR5cGVJbmRleCo+KHBheWxvYWQoKSkgfSB9CisgICAgVHlwZURlZmlu
aXRpb24oU3RydWN0RmllbGRDb3VudCBmaWVsZENvdW50KQorICAgICAgICA6IG1fdHlwZUhlYWRl
ciB7IFN0cnVjdFR5cGUgeyBzdGF0aWNfY2FzdDxTdHJ1Y3RGaWVsZCo+KHBheWxvYWQoKSksIGZp
ZWxkQ291bnQgfSB9CiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IFR5cGVE
ZWZpbml0aW9uS2luZDo6UHJvamVjdGlvbik7CiAgICAgfQogCiAgICAgLy8gUGF5bG9hZCBzdGFy
dHMgcGFzdCBlbmQgb2YgdGhpcyBvYmplY3QuCkBAIC0yMTksOCArMTQ0LDYgQEAgY2xhc3MgVHlw
ZURlZmluaXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHlwZURlZmluaXRpb24+
IHsKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGVkRnVuY3Rpb25TaXplKENoZWNrZWQ8RnVu
Y3Rpb25BcmdDb3VudD4gcmV0Q291bnQsIENoZWNrZWQ8RnVuY3Rpb25BcmdDb3VudD4gYXJnQ291
bnQpIHsgcmV0dXJuIHNpemVvZihUeXBlRGVmaW5pdGlvbikgKyAocmV0Q291bnQgKyBhcmdDb3Vu
dCkgKiBzaXplb2YoVHlwZSk7IH0KICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRlZFN0cnVjdFNp
emUoQ2hlY2tlZDxTdHJ1Y3RGaWVsZENvdW50PiBmaWVsZENvdW50KSB7IHJldHVybiBzaXplb2Yo
VHlwZURlZmluaXRpb24pICsgZmllbGRDb3VudCAqIHNpemVvZihTdHJ1Y3RGaWVsZCk7IH0KLSAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRlZFJlY3Vyc2lvbkdyb3VwU2l6ZShDaGVja2VkPFJlY3Vy
c2lvbkdyb3VwQ291bnQ+IHR5cGVDb3VudCkgeyByZXR1cm4gc2l6ZW9mKFR5cGVEZWZpbml0aW9u
KSArIHR5cGVDb3VudCAqIHNpemVvZihUeXBlSW5kZXgpOyB9Ci0gICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0ZWRQcm9qZWN0aW9uU2l6ZSgpIHsgcmV0dXJuIHNpemVvZihUeXBlRGVmaW5pdGlvbikg
KyAyICogc2l6ZW9mKFR5cGVJbmRleCk7IH0KIAogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgpAQCAtMjM5LDkgKzE2Miw2IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVHlwZURlZmluaXRpb24mIHJocykgY29uc3QgeyByZXR1cm4gdGhpcyA9PSAmcmhzOyB9
CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCi0gICAgY29uc3QgVHlwZURlZmluaXRpb24m
IHJlcGxhY2VQbGFjZWhvbGRlcnMoVHlwZUluZGV4KSBjb25zdDsKLSAgICBjb25zdCBUeXBlRGVm
aW5pdGlvbiYgZXhwYW5kKCkgY29uc3Q7Ci0KICAgICAvLyBUeXBlIGRlZmluaXRpb25zIGFyZSB1
bmlxdWVkIGFuZCwgZm9yIGNhbGxfaW5kaXJlY3QsIHZhbGlkYXRlZCBhdCBydW50aW1lLiBUYWJs
ZXMgY2FuIGNyZWF0ZSBpbnZhbGlkIFR5cGVJbmRleCB2YWx1ZXMgd2hpY2ggY2F1c2UgY2FsbF9p
bmRpcmVjdCB0byBmYWlsLiBXZSB1c2UgMCBhcyB0aGUgaW52YWxpZEluZGV4IHNvIHRoYXQgdGhl
IGNvZGVnZW4gY2FuIGVhc2lseSB0ZXN0IGZvciBpdCBhbmQgdHJhcCwgYW5kIHdlIGFkZCBhIHRv
a2VuIGludmFsaWQgZW50cnkgaW4gVHlwZUluZm9ybWF0aW9uLgogICAgIHN0YXRpYyBjb25zdCBj
b25zdGV4cHIgVHlwZUluZGV4IGludmFsaWRJbmRleCA9IDA7CiAKQEAgLTI0OSwxNyArMTY5LDEx
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFR5cGVJbmZvcm1hdGlvbjsKICAgICBmcmll
bmQgc3RydWN0IEZ1bmN0aW9uUGFyYW1ldGVyVHlwZXM7CiAgICAgZnJpZW5kIHN0cnVjdCBTdHJ1
Y3RQYXJhbWV0ZXJUeXBlczsKLSAgICBmcmllbmQgc3RydWN0IFJlY3Vyc2lvbkdyb3VwUGFyYW1l
dGVyVHlwZXM7Ci0gICAgZnJpZW5kIHN0cnVjdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXM7CiAK
ICAgICBzdGF0aWMgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiB0cnlDcmVhdGVGdW5jdGlvblNpZ25h
dHVyZShGdW5jdGlvbkFyZ0NvdW50IHJldHVybkNvdW50LCBGdW5jdGlvbkFyZ0NvdW50IGFyZ3Vt
ZW50Q291bnQpOwogICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHRyeUNyZWF0ZVN0
cnVjdFR5cGUoU3RydWN0RmllbGRDb3VudCk7Ci0gICAgc3RhdGljIFJlZlB0cjxUeXBlRGVmaW5p
dGlvbj4gdHJ5Q3JlYXRlUmVjdXJzaW9uR3JvdXAoUmVjdXJzaW9uR3JvdXBDb3VudCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHJ5Q3JlYXRlUHJvamVjdGlvbigpOwotCi0g
ICAgc3RhdGljIFR5cGUgc3Vic3RpdHV0ZShUeXBlLCBUeXBlSW5kZXgpOwogCi0gICAgc3RkOjp2
YXJpYW50PEZ1bmN0aW9uU2lnbmF0dXJlLCBTdHJ1Y3RUeXBlLCBSZWN1cnNpb25Hcm91cCwgUHJv
amVjdGlvbj4gbV90eXBlSGVhZGVyOworICAgIHN0ZDo6dmFyaWFudDxGdW5jdGlvblNpZ25hdHVy
ZSwgU3RydWN0VHlwZT4gbV90eXBlSGVhZGVyOwogICAgIC8vIFBheWxvYWQgaXMgc3RvcmVkIGhl
cmUuCiB9OwogCkBAIC0zMDksOCArMjIzLDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0
cjxUeXBlRGVmaW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JGdW5jdGlvbihjb25zdCBWZWN0b3I8
VHlwZSwgMT4mIHJldHVyblR5cGVzLCBjb25zdCBWZWN0b3I8VHlwZT4mIGFyZ3VtZW50VHlwZXMp
OwogICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHR5cGVEZWZpbml0aW9uRm9yU3Ry
dWN0KGNvbnN0IFZlY3RvcjxTdHJ1Y3RGaWVsZD4mIGZpZWxkcyk7Ci0gICAgc3RhdGljIFJlZlB0
cjxUeXBlRGVmaW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JSZWN1cnNpb25Hcm91cChjb25zdCBW
ZWN0b3I8VHlwZUluZGV4PiYgdHlwZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRp
b24+IHR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbihUeXBlSW5kZXgsIFByb2plY3Rpb25JbmRl
eCk7CiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBUeXBlRGVmaW5pdGlvbiogdGh1bmtGb3IoVHlw
ZSB0eXBlKSBjb25zdCB7IHJldHVybiB0aHVua1R5cGVzW2xpbmVhcml6ZVR5cGUodHlwZS5raW5k
KV07IH0KIAogICAgIHN0YXRpYyBjb25zdCBUeXBlRGVmaW5pdGlvbiYgZ2V0KFR5cGVJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRp
b25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRp
b25JbmxpbmVzLmgKaW5kZXggNDczOGQ0ZDE4NjhiLi5hMzU2MzY5ZDQwNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb25JbmxpbmVz
LmgKQEAgLTUxLDE0ICs1MSw3IEBAIGlubGluZSBjb25zdCBUeXBlRGVmaW5pdGlvbiYgVHlwZUlu
Zm9ybWF0aW9uOjpnZXQoVHlwZUluZGV4IGluZGV4KQogCiBpbmxpbmUgY29uc3QgRnVuY3Rpb25T
aWduYXR1cmUmIFR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVuY3Rpb25TaWduYXR1cmUoVHlwZUluZGV4
IGluZGV4KQogewotICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBnZXQoaW5k
ZXgpOwotICAgIGlmIChzaWduYXR1cmUuaXM8UHJvamVjdGlvbj4oKSkgewotICAgICAgICBjb25z
dCBUeXBlRGVmaW5pdGlvbiYgZXhwYW5kZWQgPSBzaWduYXR1cmUuZXhwYW5kKCk7Ci0gICAgICAg
IEFTU0VSVChleHBhbmRlZC5pczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7Ci0gICAgICAgIHJldHVy
biAqZXhwYW5kZWQuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7Ci0gICAgfQotICAgIEFTU0VSVChz
aWduYXR1cmUuaXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpOwotICAgIHJldHVybiAqc2lnbmF0dXJl
LmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgIHJldHVybiAqZ2V0KGluZGV4KS5hczxGdW5j
dGlvblNpZ25hdHVyZT4oKTsKIH0KIAogaW5saW5lIFR5cGVJbmRleCBUeXBlSW5mb3JtYXRpb246
OmdldChjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCBmNmE1MTNjNzE5ZmUuLjE1M2RhM2U1ZmI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtNTksNyArNTks
NyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgIC8vIEl0J2QgYmUgc3VwZXIgZWFzeSB0
byBkbyBzbzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQwMQog
ICAgIGNvbnN0IGF1dG8mIHdhc21DQyA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwogICAgIGNv
bnN0IGF1dG8mIGpzQ0MgPSBqc0NhbGxpbmdDb252ZW50aW9uKCk7Ci0gICAgY29uc3QgVHlwZURl
ZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4
KS5leHBhbmQoKTsKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBU
eXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpOwogICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVy
ZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICB1bnNpZ25l
ZCBhcmdDb3VudCA9IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7CiAgICAgSklUIGppdDsKQEAg
LTExNyw3ICsxMTcsNiBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5
UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMXJlZjoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAv
LyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKQEAgLTIwMyw3ICsyMDIsNiBAQCBFeHBlY3Rl
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+
IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkkzMXJlZjoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzoKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJlZjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA4MTc0YmVhMjMyZDkuLmNiZWRkZGM4ZWZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmluaXRpYWxpemVFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtb2R1bGVJbmZvcm1h
dGlvbi5pbnRlcm5hbEV4Y2VwdGlvblR5cGVJbmRpY2VzLnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICBXYXNtOjpUeXBlSW5kZXggdHlwZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW50ZXJu
YWxFeGNlcHRpb25UeXBlSW5kaWNlc1tpbmRleF07Ci0gICAgICAgIG1faW5zdGFuY2UtPmluc3Rh
bmNlKCkuc2V0VGFnKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEV4Y2VwdGlvbkNvdW50KCkgKyBp
bmRleCwgV2FzbTo6VGFnOjpjcmVhdGUoV2FzbTo6VHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUlu
ZGV4KS5leHBhbmQoKSkpOworICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldFRhZyht
b2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRFeGNlcHRpb25Db3VudCgpICsgaW5kZXgsIFdhc206OlRh
Zzo6Y3JlYXRlKFdhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCkpKTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50ID0gY2FsbGVlR3JvdXAtPmZ1bmN0
aW9uSW1wb3J0Q291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCAw
N2E2NWE2ZDYwMDEuLmRlMmY1M2FkOGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbgpAQCAtMTgsNyArMTgsNiBAQAogICAgICAgICAiaTMxcmVmIjogICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIC0yMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAg
ImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUi
OiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJzdHJ1Y3QiOiAgICB7ICJ0eXBlIjogInZhcmludDci
LCAidmFsdWUiOiAgLTMzLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAotICAgICAgICAicmVjIjog
ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC00OSwgImIzdHlwZSI6ICJCMzo6
Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAogICAgICJ2YWx1ZV90eXBl
IjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9nYy9yZWMuanMgYi9KU1Rlc3RzL3dhc20vZ2MvcmVj
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjA3Njc5NzJkNDYuLjAwMDAwMDAw
MDAwMAotLS0gYS9KU1Rlc3RzL3dhc20vZ2MvcmVjLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjM1
ICswLDAgQEAKLS8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdlYkFzc2VtYmx5VHlwZWRG
dW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdlYkFzc2VtYmx5R0M9dHJ1ZSIpCi0KLWlt
cG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOwotaW1wb3J0IHsgY29tcGlsZSwg
aW5zdGFudGlhdGUgfSBmcm9tICIuL3dhc3Qtd3JhcHBlci5qcyI7Ci0KLWZ1bmN0aW9uIG1vZHVs
ZShieXRlcywgdmFsaWQgPSB0cnVlKSB7Ci0gIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
Ynl0ZXMubGVuZ3RoKTsKLSAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOwotICBm
b3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmlld1tpXSA9IGJ5
dGVzLmNoYXJDb2RlQXQoaSk7Ci0gIH0KLSAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YnVmZmVyKTsKLX0KLQotZnVuY3Rpb24gdGVzdFJlY0RlY2xhcmF0aW9uKCkgewotICBpbnN0YW50
aWF0ZShgCi0gICAgKG1vZHVsZQotICAgICAgKHJlYyAodHlwZSAoZnVuYykpICh0eXBlIChzdHJ1
Y3QpKSkKLSAgICApCi0gIGApOwotCi0gIGluc3RhbnRpYXRlKGAKLSAgICAobW9kdWxlCi0gICAg
ICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkpKQotICAgICAgKGZ1bmMgKHR5cGUg
MCkpCi0gICAgKQotICBgKTsKLQotICBhc3NlcnQudGhyb3dzKAotICAgICgpID0+IGNvbXBpbGUo
YAotICAgICAgKG1vZHVsZQotICAgICAgICAocmVjICh0eXBlIChzdHJ1Y3QpKSAodHlwZSAoZnVu
YykpKQotICAgICAgICAoZnVuYyAodHlwZSAwKSkKLSAgICAgICkKLSAgICBgKSwKLSAgICBXZWJB
c3NlbWJseS5Db21waWxlRXJyb3IsCi0gICAgInR5cGUgc2lnbmF0dXJlIHdhcyBub3QgYSBmdW5j
dGlvbiBzaWduYXR1cmUiCi0gICk7Ci0KLSAgaW5zdGFudGlhdGUoYAotICAgIChtb2R1bGUKLSAg
ICAgIChyZWMKLSAgICAgICAgKHR5cGUgKGZ1bmMgKHJlc3VsdCAocmVmIDEpKSkpCi0gICAgICAg
ICh0eXBlIChmdW5jIChyZXN1bHQgKHJlZiAwKSkpKSkKLSAgICApCi0gIGApOwotCi0gIGluc3Rh
bnRpYXRlKGAKLSAgICAobW9kdWxlCi0gICAgICAocmVjCi0gICAgICAgICh0eXBlIChmdW5jKSkK
LSAgICAgICAgKHR5cGUgKGZ1bmMgKHJlc3VsdCAocmVmIDApKSkpKQotICAgICkKLSAgYCk7Ci0K
LSAgaW5zdGFudGlhdGUoYAotICAgIChtb2R1bGUKLSAgICAgIChyZWMgKHR5cGUgKGZ1bmMpKSAo
dHlwZSAoc3RydWN0KSkpCi0gICAgICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkp
KQotICAgICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKLSAgICAgIChmdW5j
ICh0eXBlIDApKQotICAgICAgKGZ1bmMgKHJlc3VsdCAocmVmIDIpKSAocmVmLmZ1bmMgMCkpCi0g
ICAgKQotICBgKTsKLQotICB7Ci0gICAgbGV0IG0xID0gaW5zdGFudGlhdGUoYAotICAgICAgKG1v
ZHVsZQotICAgICAgICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkpKQotICAgICAg
ICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgMCkpCi0gICAgICApCi0gICAgYCk7Ci0gICAgaW5z
dGFudGlhdGUoYAotICAgICAgKG1vZHVsZQotICAgICAgICAocmVjICh0eXBlIChmdW5jKSkgKHR5
cGUgKHN0cnVjdCkpKQotICAgICAgICAoZnVuYyAoaW1wb3J0ICJtIiAiZiIpICh0eXBlIDApKQot
ICAgICAgICAoc3RhcnQgMCkKLSAgICAgICkKLSAgICBgLCB7IG06IHsgZjogbTEuZXhwb3J0cy5m
IH0gfSk7Ci0gIH0KLQotICB7Ci0gICAgbGV0IG0xID0gaW5zdGFudGlhdGUoYAotICAgICAgKG1v
ZHVsZQotICAgICAgICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkpKQotICAgICAg
ICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgMCkpCi0gICAgICApCi0gICAgYCk7Ci0gICAgYXNz
ZXJ0LnRocm93cygKLSAgICAgICgpID0+IGluc3RhbnRpYXRlKGAKLSAgICAgICAgKG1vZHVsZQot
ICAgICAgICAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChmdW5jKSkpCi0gICAgICAgICAg
KGZ1bmMgKGltcG9ydCAibSIgImYiKSAodHlwZSAxKSkKLSAgICAgICAgICAoc3RhcnQgMCkKLSAg
ICAgICAgKQotICAgICAgYCwgeyBtOiB7IGY6IG0xLmV4cG9ydHMuZiB9IH0pLAotICAgICAgV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLAotICAgICAgImltcG9ydGVkIGZ1bmN0aW9uIG06ZiBzaWduYXR1
cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWdu
YXR1cmUiCi0gICAgKTsKLSAgfQotCi0gIHsKLSAgICBsZXQgbTEgPSBpbnN0YW50aWF0ZShgCi0g
ICAgICAobW9kdWxlCi0gICAgICAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkp
Ci0gICAgICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgMCkpCi0gICAgICAgIChm
dW5jKQotICAgICAgICAoZnVuYyAoZXhwb3J0ICJmIikgKHJlc3VsdCAocmVmIDApKSAocmVmLmZ1
bmMgMCkpCi0gICAgICApCi0gICAgYCk7Ci0gICAgYXNzZXJ0LnRocm93cygKLSAgICAgICgpID0+
IGluc3RhbnRpYXRlKGAKLSAgICAgICAgKG1vZHVsZQotICAgICAgICAgIChyZWMgKHR5cGUgKHN0
cnVjdCkpICh0eXBlIChmdW5jKSkpCi0gICAgICAgICAgKGZ1bmMgKGltcG9ydCAibSIgImYiKSAo
dHlwZSAxKSkKLSAgICAgICAgKQotICAgICAgYCwgeyBtOiB7IGY6IG0xLmV4cG9ydHMuZiB9IH0p
LAotICAgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAotICAgICAgImltcG9ydGVkIGZ1bmN0aW9u
IG06ZiBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVu
Y3Rpb24ncyBzaWduYXR1cmUiCi0gICAgKTsKLSAgfQotCi0gIGFzc2VydC50aHJvd3MoCi0gICAg
KCkgPT4gY29tcGlsZShgCi0gICAgICAobW9kdWxlCi0gICAgICAgIChyZWMgKHR5cGUgKGZ1bmMp
KSAodHlwZSAoc3RydWN0KSkpCi0gICAgICAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChm
dW5jKSkpCi0gICAgICAgIChnbG9iYWwgKHJlZiAwKSAocmVmLmZ1bmMgMCkpCi0gICAgICAgIChm
dW5jICh0eXBlIDMpKQotICAgICAgKQotICAgIGApLAotICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwKLSAgICAiR2xvYmFsIGluaXRfZXhwciBvcGNvZGUgb2YgdHlwZSBSZWYgZG9lc24ndCBt
YXRjaCBnbG9iYWwncyB0eXBlIFJlZiIKLSAgKTsKLQotICBpbnN0YW50aWF0ZShgCi0gICAgKG1v
ZHVsZQotICAgICAgKHJlYyAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMSkpKSkKLSAgICAgICAg
ICAgKHR5cGUgKGZ1bmMgKHJlc3VsdCAocmVmIDApKSkpKQotICAgICAgKGVsZW0gZGVjbGFyZSBm
dW5jcmVmIChyZWYuZnVuYyAwKSkKLSAgICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1
bmMgMSkpCi0gICAgICAoZnVuYyAodHlwZSAwKSAocmVmLmZ1bmMgMSkpCi0gICAgICAoZnVuYyAo
dHlwZSAxKSAocmVmLmZ1bmMgMCkpCi0gICAgKQotICBgKTsKLQotICBhc3NlcnQudGhyb3dzKAot
ICAgICgpID0+IGNvbXBpbGUoYAotICAgICAgKG1vZHVsZQotICAgICAgICAocmVjICh0eXBlIChm
dW5jIChyZXN1bHQgKHJlZiAxKSkpKQotICAgICAgICAgICAgICh0eXBlIChmdW5jIChyZXN1bHQg
KHJlZiAwKSkpKSkKLSAgICAgICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkK
LSAgICAgICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAxKSkKLSAgICAgICAgKGZ1
bmMgKHR5cGUgMCkgKHJlZi5mdW5jIDEpKQotICAgICAgICAoZnVuYyAodHlwZSAxKSAocmVmLmZ1
bmMgMSkpCi0gICAgICApCi0gICAgYCksCi0gICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAot
ICAgICJjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVuZXhwZWN0ZWQgdHlwZS4gUmVmIGlzIG5v
dCBhIFJlZiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMSIKLSAgKTsKLQotICBpbnN0YW50aWF0ZShg
Ci0gICAgKG1vZHVsZQotICAgICAgKHJlYyAodHlwZSAoZnVuYyAocGFyYW0gaTMyKSkpICh0eXBl
IChzdHJ1Y3QpKSkKLSAgICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgMCkpCi0g
ICAgICAoZnVuYyAodHlwZSAwKSkKLSAgICAgIChmdW5jIChjYWxsX3JlZiAoaTMyLmNvbnN0IDQy
KSAocmVmLmZ1bmMgMCkpKQotICAgICAgKHN0YXJ0IDEpCi0gICAgKQotICBgKTsKLQotICBpbnN0
YW50aWF0ZShgCi0gICAgKG1vZHVsZQotICAgICAgKHJlYyAodHlwZSAoZnVuYyAocmVzdWx0IGkz
MikpKSAodHlwZSAoc3RydWN0KSkpCi0gICAgICAocmVjICh0eXBlIChzdHJ1Y3QpKSAodHlwZSAo
ZnVuYyAocmVzdWx0IGkzMikpKSkKLSAgICAgIChmdW5jICh0eXBlIDApCi0gICAgICAgIChibG9j
ayAodHlwZSAzKQotICAgICAgICAgIChpMzIuY29uc3QgNDIpKSkKLSAgICApCi0gIGApOwotCi0g
IGluc3RhbnRpYXRlKGAKLSAgICAobW9kdWxlCi0gICAgICAocmVjICh0eXBlIChmdW5jIChyZXN1
bHQgaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKLSAgICAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0
eXBlIChmdW5jIChyZXN1bHQgaTMyKSkpKQotICAgICAgKGZ1bmMgKHR5cGUgMCkKLSAgICAgICAg
KGxvb3AgKHR5cGUgMykKLSAgICAgICAgICAoaTMyLmNvbnN0IDQyKSkpCi0gICAgKQotICBgKTsK
LQotICBpbnN0YW50aWF0ZShgCi0gICAgKG1vZHVsZQotICAgICAgKHJlYyAodHlwZSAoZnVuYyAo
cmVzdWx0IGkzMikpKSAodHlwZSAoc3RydWN0KSkpCi0gICAgICAocmVjICh0eXBlIChzdHJ1Y3Qp
KSAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSkKLSAgICAgIChmdW5jICh0eXBlIDApCi0gICAg
ICAgIChpMzIuY29uc3QgMSkKLSAgICAgICAgKGlmICh0eXBlIDMpICh0aGVuIChpMzIuY29uc3Qg
NDIpKSAoZWxzZSAoaTMyLmNvbnN0IDQzKSkpKQotICAgICkKLSAgYCk7Ci0KLSAgaW5zdGFudGlh
dGUoYAotICAgIChtb2R1bGUKLSAgICAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0
KSkpCi0gICAgICAodGFibGUgNSBmdW5jcmVmKQotICAgICAgKGVsZW0gKG9mZnNldCAoaTMyLmNv
bnN0IDApKSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKLSAgICAgIChmdW5jICh0eXBlIDApKQotICAg
ICAgKGZ1bmMgKGNhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25zdCAwKSkpCi0gICAgICAo
c3RhcnQgMSkKLSAgICApCi0gIGApOwotCi0gIC8vIEVuc3VyZSBpbXBsaWNpdCByZWMgZ3JvdXBz
IGFyZSBhY2NvdW50ZWQgZm9yLCBhbmQgdHJlYXRlZAotICAvLyBjb3JyZWN0bHkgd2l0aCByZWdh
cmRzIHRvIGVxdWFsaXR5LgotICBpbnN0YW50aWF0ZShgCi0gICAgKG1vZHVsZQotICAgICAgKHR5
cGUgJGEgKHN0cnVjdCAoZmllbGQgaTMyKSkpCi0gICAgICAocmVjICh0eXBlICRiIChzdHJ1Y3Qg
KGZpZWxkIGkzMikpKSkKLSAgICAgICh0eXBlICRjIChzdHJ1Y3QgKGZpZWxkIGkzMikpKQotCi0g
ICAgICAoZnVuYyAocmVzdWx0IChyZWYgbnVsbCAkYSkpIChyZWYubnVsbCAkYikpCi0gICAgICAo
ZnVuYyAocmVzdWx0IChyZWYgbnVsbCAkYSkpIChyZWYubnVsbCAkYykpCi0gICAgICAoZnVuYyAo
cmVzdWx0IChyZWYgbnVsbCAkYikpIChyZWYubnVsbCAkYSkpCi0gICAgICAoZnVuYyAocmVzdWx0
IChyZWYgbnVsbCAkYikpIChyZWYubnVsbCAkYykpCi0gICAgICAoZnVuYyAocmVzdWx0IChyZWYg
bnVsbCAkYykpIChyZWYubnVsbCAkYSkpCi0gICAgICAoZnVuYyAocmVzdWx0IChyZWYgbnVsbCAk
YykpIChyZWYubnVsbCAkYikpKQotICBgKTsKLQotICAvLyBUaGlzIGlzIHRoZSBzYW1lIHRlc3Qg
YXMgYWJvdmUsIGJ1dCB1c2luZyBhIHBhcnRpY3VsYXIgYmluYXJ5IGVuY29kaW5nLgotICAvLyBU
aGUgZW5jb2RpbmcgZm9yIHRoaXMgdGVzdCBzcGVjaWZpY2FsbHkgdXNlcyBib3RoIHNob3J0aGFu
ZCBhbmQgdGhlIGZ1bGwKLSAgLy8gcmVjIGZvcm0gdG8gdGVzdCB0aGUgZXF1aXZhbGVuY2Ugb2Yg
dGhlIHR3by4KLSAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg5ZVx4ODBceDgwXHg4MFx4MDBceDA2XHg1Zlx4MDFc
eDdmXHgwMFx4NGZceDAxXHg1Zlx4MDFceDdmXHgwMFx4NWZceDAxXHg3Zlx4MDBceDYwXHgwMFx4
MDFceDZjXHgwMFx4NjBceDAwXHgwMVx4NmNceDAxXHg2MFx4MDBceDAxXHg2Y1x4MDJceDAzXHg4
N1x4ODBceDgwXHg4MFx4MDBceDA2XHgwM1x4MDNceDA0XHgwNFx4MDVceDA1XHgwYVx4YjdceDgw
XHg4MFx4ODBceDAwXHgwNlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4ZDBceDAxXHgwYlx4ODRc
eDgwXHg4MFx4ODBceDAwXHgwMFx4ZDBceDAyXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
ZDBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4ZDBceDAyXHgwYlx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMFx4ZDBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4ZDBceDAx
XHgwYiIpKTsKLX0KLQotdGVzdFJlY0RlY2xhcmF0aW9uKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCAwN2E2NWE2ZDYw
MDEuLmRlMmY1M2FkOGU1OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysg
Yi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xOCw3ICsxOCw2IEBACiAgICAgICAgICJpMzFy
ZWYiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIyLCAiYjN0eXBlIjogIkIz
OjpWb2lkIiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInN0cnVjdCI6ICAg
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZvaWQi
IH0sCi0gICAgICAgICJyZWMiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAg
LTQ5LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgICAgeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAg
IH0sCiAgICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRl
cm5yZWYiLCAiZnVuY3JlZiJdLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>