<?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>171139</bug_id>
          
          <creation_ts>2017-04-21 13:29:22 -0700</creation_ts>
          <short_desc>REGRESSION(r215620): broke arm64 build (Requested by keith_miller on #webkit).</short_desc>
          <delta_ts>2017-04-21 14:28:24 -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>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>171142</dependson>
          <blocked>170976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1299828</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-21 13:29:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/215620 broke the build:
broke arm64 build (Requested by keith_miller on #webkit).

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>1299830</commentid>
    <comment_count>1</comment_count>
      <attachid>307786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-21 13:29:30 -0700</bug_when>
    <thetext>Created attachment 307786
ROLLOUT of r215620

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 rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout 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>1299832</commentid>
    <comment_count>2</comment_count>
      <attachid>307786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-21 13:31:43 -0700</bug_when>
    <thetext>Comment on attachment 307786
ROLLOUT of r215620

Clearing flags on attachment: 307786

Committed r215634: &lt;http://trac.webkit.org/changeset/215634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299833</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-21 13:31:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299882</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-21 14:14:24 -0700</bug_when>
    <thetext>Committed r215637: &lt;http://trac.webkit.org/changeset/215637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299886</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-21 14:19:01 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 171142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299899</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-21 14:28:24 -0700</bug_when>
    <thetext>Reverted r215634 for reason:

underlying build issues should have been fixed

Committed r215638: &lt;http://trac.webkit.org/changeset/215638&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307786</attachid>
            <date>2017-04-21 13:29:30 -0700</date>
            <delta_ts>2017-04-21 13:31:43 -0700</delta_ts>
            <desc>ROLLOUT of r215620</desc>
            <filename>bug-171139-20170421162929.patch</filename>
            <type>text/plain</type>
            <size>59142</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZTY4MDM4MjBiZGFjZDZkNTk2OTM5YzNjY2E5ZWFmNDA3NmVlNTM5Li5hZGQ4ODliZjM2MWJhZTIx
ODUzZTY5ZWYyZWFiMjIzOWViY2I4ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0wNC0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTYyMCBhbmQgcjIx
NTYyMy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTEzOQorCisgICAgICAgIGJyb2tlIGFybTY0IGJ1aWxkIChSZXF1ZXN0ZWQgYnkga2VpdGhfbWls
bGVyIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAg
ICAgIkFkZCBzaWduYWxpbmcgQVBJIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcwOTc2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzIxNTYyMAorCisgICAgICAgICJVbnJldmlld2VkLCBmaXggQ2xvb3AgYnVpbGQuIgor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTU2MjMKKwogMjAxNy0w
NC0yMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggQ2xvb3AgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhMTUzMTRhMDZmYzU5ODljZmJhM2Q2
ODM0NTI0ZmE4ZjkzZDQ2Y2QuLmFiNmFkYzFjZTBjY2Y2YzMzNGMxMThmMzJjYjc0ZjIxMGIwNTEx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDQtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MTU2MjAgYW5kIHIyMTU2MjMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzExMzkKKworICAgICAgICBicm9rZSBhcm02NCBidWlsZCAoUmVxdWVzdGVk
IGJ5IGtlaXRoX21pbGxlciBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2Vz
ZXRzOgorCisgICAgICAgICJBZGQgc2lnbmFsaW5nIEFQSSIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDk3NgorICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMTU2MjAKKworICAgICAgICAiVW5yZXZpZXdlZCwgZml4IENs
b29wIGJ1aWxkLiIKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE1
NjIzCisKIDIwMTctMDQtMjAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHNpZ25hbGluZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggNTdjOGIwNTFiN2Q3NTE0ZDIyZWRhNzQz
ZDc2YWE3OGE2YjIzMWJjNi4uNmVlNmZlMjgxODdiOWFhNDlkZWEzYzIzNzFlM2NjYmM0MzQ3MTAx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmgKQEAgLTgxLDEyICs4MSw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgZXhlY3V0YWJsZVBvb2xS
ZXNlcnZhdGlvbkZyYWN0aW9uID0gMC4yNTsKIGV4dGVybiBKU19FWFBPUlREQVRBIHVpbnRwdHJf
dCBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbDsKIGV4dGVybiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2w7CiAKLWlubGluZSBib29s
IGlzSklUUEModm9pZCogcGMpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSA8PSBwYwotICAgICAgICAmJiBwYyA8
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCk7
Ci19Ci0KIHR5cGVkZWYgdm9pZCAoKkpJVFdyaXRlU2VwYXJhdGVIZWFwc0Z1bmN0aW9uKShvZmZf
dCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiBleHRlcm4gSlNfRVhQT1JUREFUQSBKSVRXcml0ZVNl
cGFyYXRlSGVhcHNGdW5jdGlvbiBqaXRXcml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlvbjsKIApAQCAt
MTQ5LDkgKzE0Myw2IEBAIHByaXZhdGU6CiAgICAgfkV4ZWN1dGFibGVBbGxvY2F0b3IoKTsKIH07
CiAKLSNlbHNlCi1pbmxpbmUgYm9vbCBpc0pJVFBDKHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmIC8vIEVOQUJMRShKSVQpICYmIEVOQUJMRShBU1NFTUJMRVIpCiAKLQogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRy
YXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCmluZGV4
IDkwNWU2YzllNzdhNzljMzAwYmI5MWNlZTJjZGM3OTIxODQ4ODg5Y2IuLmU2Mjg1YTMwYzIyMmE1
YWNhZGMzOGYwYzliMWI3YWU3YTQ3N2U3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNVHJhcHMuY3BwCkBAIC00MCw4ICs0MCwxMCBAQAogI2luY2x1ZGUgIlZNSW5zcGVjdG9y
LmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+Ci0j
aW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9TaWdu
YWxzLmg+CisKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUyLDYgKzU0LDkgQEAgQUxXQVlTX0lOTElORSBWTSYgVk1U
cmFwczo6dm0oKSBjb25zdAogCiAjaWYgRU5BQkxFKFNJR05BTF9CQVNFRF9WTV9UUkFQUykKIAor
c3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ3VzcjFBY3Rpb247CitzdHJ1Y3Qgc2lnYWN0aW9u
IG9yaWdpbmFsU2lndHJhcEFjdGlvbjsKKwogc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIFNp
Z25hbENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCiAgICAgICAgIDogbWNvbnRleHQobWNv
bnRleHQpCkBAIC0xMjcsMzUgKzEzMiw4NyBAQCBzdGF0aWMgRXhwZWN0ZWQ8Vk1BbmRTdGFja0Jv
dW5kcywgVk1UcmFwczo6RXJyb3I+IGZpbmRBY3RpdmVWTUFuZFN0YWNrQm91bmRzKFNpZwogICAg
IHJldHVybiBWTUFuZFN0YWNrQm91bmRzIHsgYWN0aXZlVk0sIHN0YWNrQm91bmRzIH07CiB9CiAK
LXN0YXRpYyB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVyKCkKK3N0YXRpYyB2b2lkIGhhbmRsZVNp
Z3VzcjEoaW50IHNpZ25hbE51bWJlciwgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1YXApCiB7Ci0g
ICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpUcmFwLCBbXSAoaW50LCBzaWdpbmZvX3Qq
LCB2b2lkKiB1YXApIC0+IFNpZ25hbEFjdGlvbiB7Ci0gICAgICAgIFNpZ25hbENvbnRleHQgY29u
dGV4dChzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKS0+dWNfbWNvbnRleHQpOwotCi0gICAg
ICAgIGlmICghaXNKSVRQQyhjb250ZXh0LnRyYXBQQykpCi0gICAgICAgICAgICByZXR1cm4gU2ln
bmFsQWN0aW9uOjpOb3RIYW5kbGVkOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGN1cnJlbnRs
eSBlYXRzIGFsbCB0cmFwcyBpbmNsdWRpbmcgaml0IGFzc2VydHMgd2Ugc2hvdWxkIG1ha2Ugc3Vy
ZSB0aGlzCi0gICAgICAgIC8vIGFsd2F5cyB3b3Jrcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTAzOQotICAgICAgICBhdXRvIGFjdGl2ZVZNQW5kU3RhY2tCb3Vu
ZHMgPSBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhjb250ZXh0KTsKLSAgICAgICAgaWYgKCFh
Y3RpdmVWTUFuZFN0YWNrQm91bmRzKQotICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6
SGFuZGxlZDsgLy8gTGV0IHRoZSBTaWduYWxTZW5kZXIgdHJ5IGFnYWluIGxhdGVyLgotCisgICAg
U2lnbmFsQ29udGV4dCBjb250ZXh0KHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19t
Y29udGV4dCk7CisgICAgYXV0byBhY3RpdmVWTUFuZFN0YWNrQm91bmRzID0gZmluZEFjdGl2ZVZN
QW5kU3RhY2tCb3VuZHMoY29udGV4dCk7CisgICAgaWYgKGFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMp
IHsKICAgICAgICAgVk0qIHZtID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnZtOwog
ICAgICAgICBpZiAodm0pIHsKKyAgICAgICAgICAgIFN0YWNrQm91bmRzIHN0YWNrQm91bmRzID0g
YWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnN0YWNrQm91bmRzOwogICAgICAgICAgICAg
Vk1UcmFwcyYgdHJhcHMgPSB2bS0+dHJhcHMoKTsKLSAgICAgICAgICAgIGlmICghdHJhcHMubmVl
ZFRyYXBIYW5kbGluZygpKQotICAgICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Okhh
bmRsZWQ7IC8vIFRoZSBwb2xsaW5nIGNvZGUgYmVhdCB1cyB0byBoYW5kbGluZyB0aGUgdHJhcCBh
bHJlYWR5LgotCi0gICAgICAgICAgICBhdXRvIGV4cGVjdGVkU3VjY2VzcyA9IHRyYXBzLnRyeUpl
dHRpc29uQ29kZUJsb2Nrc09uU3RhY2soY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoIWV4cGVj
dGVkU3VjY2VzcykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVk
OyAvLyBMZXQgdGhlIFNpZ25hbFNlbmRlciB0cnkgYWdhaW4gbGF0ZXIuCi0gICAgICAgICAgICBp
ZiAoZXhwZWN0ZWRTdWNjZXNzLnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25h
bEFjdGlvbjo6SGFuZGxlZDsgLy8gV2UndmUgc3VjY2VzcyBqZXR0aXNvbiB0aGUgY29kZUJsb2Nr
cy4KKyAgICAgICAgICAgIGlmICh0cmFwcy5uZWVkVHJhcEhhbmRsaW5nKCkpCisgICAgICAgICAg
ICAgICAgdHJhcHMudHJ5SW5zdGFsbFRyYXBCcmVha3BvaW50cyhjb250ZXh0LCBzdGFja0JvdW5k
cyk7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFu
ZGxlZDsKLSAgICB9KTsKKyAgICBhdXRvIG9yaWdpbmFsQWN0aW9uID0gb3JpZ2luYWxTaWd1c3Ix
QWN0aW9uLnNhX3NpZ2FjdGlvbjsKKyAgICBpZiAob3JpZ2luYWxBY3Rpb24pCisgICAgICAgIG9y
aWdpbmFsQWN0aW9uKHNpZ25hbE51bWJlciwgaW5mbywgdWFwKTsKK30KKworc3RhdGljIHZvaWQg
aGFuZGxlU2lndHJhcChpbnQgc2lnbmFsTnVtYmVyLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVh
cCkKK3sKKyAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+
KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBhdXRvIGFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMgPSBm
aW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhjb250ZXh0KTsKKyAgICBpZiAoIWFjdGl2ZVZNQW5k
U3RhY2tCb3VuZHMpCisgICAgICAgIHJldHVybjsgLy8gTGV0IHRoZSBTaWduYWxTZW5kZXIgdHJ5
IGFnYWluIGxhdGVyLgorCisgICAgVk0qIHZtID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1
ZSgpLnZtOworICAgIGlmICh2bSkgeworICAgICAgICBWTVRyYXBzJiB0cmFwcyA9IHZtLT50cmFw
cygpOworICAgICAgICBpZiAoIXRyYXBzLm5lZWRUcmFwSGFuZGxpbmcoKSkKKyAgICAgICAgICAg
IHJldHVybjsgLy8gVGhlIHBvbGxpbmcgY29kZSBiZWF0IHVzIHRvIGhhbmRsaW5nIHRoZSB0cmFw
IGFscmVhZHkuCisKKyAgICAgICAgYXV0byBleHBlY3RlZFN1Y2Nlc3MgPSB0cmFwcy50cnlKZXR0
aXNvbkNvZGVCbG9ja3NPblN0YWNrKGNvbnRleHQpOworICAgICAgICBpZiAoIWV4cGVjdGVkU3Vj
Y2VzcykKKyAgICAgICAgICAgIHJldHVybjsgLy8gTGV0IHRoZSBTaWduYWxTZW5kZXIgdHJ5IGFn
YWluIGxhdGVyLgorICAgICAgICBpZiAoZXhwZWN0ZWRTdWNjZXNzLnZhbHVlKCkpCisgICAgICAg
ICAgICByZXR1cm47IC8vIFdlJ3ZlIHN1Y2Nlc3MgamV0dGlzb24gdGhlIGNvZGVCbG9ja3MuCisg
ICAgfQorCisgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhpcyBTSUdUUkFQIGlzIG5vdCBk
dWUgdG8gYSBWTVRyYXAuIExldCdzIGRvIHRoZSBkZWZhdWx0IGFjdGlvbi4KKyAgICBhdXRvIG9y
aWdpbmFsQWN0aW9uID0gb3JpZ2luYWxTaWd0cmFwQWN0aW9uLnNhX3NpZ2FjdGlvbjsKKyAgICBp
ZiAob3JpZ2luYWxBY3Rpb24pIHsKKyAgICAgICAgLy8gSXQgaXMgYWx3YXlzIHNhZmUgdG8ganVz
dCBpbnZva2UgdGhlIG9yaWdpbmFsIGhhbmRsZXIgdXNpbmcgdGhlIHNhX3NpZ2FjdGlvbiBmb3Jt
CisgICAgICAgIC8vIHdpdGhvdXQgY2hlY2tpbmcgZm9yIHRoZSBTQV9TSUdJTkZPIGZsYWcuIElm
IHRoZSBvcmlnaW5hbCBoYW5kbGVyIGlzIG9mIHRoZQorICAgICAgICAvLyBzYV9oYW5kbGVyIGZv
cm0sIGl0IHdpbGwganVzdCBpZ25vcmUgdGhlIDJuZCBhbmQgM3JkIGFyZ3VtZW50cyBzaW5jZSBz
YV9oYW5kbGVyIGlzIGEKKyAgICAgICAgLy8gc3Vic2V0IG9mIHNhX3NpZ2FjdGlvbi4gVGhpcyBp
cyB3aGF0IHRoZSBtYW4gcGFnZXMgc2F5cyB0aGUgT1MgZG9lcyBhbnl3YXkuCisgICAgICAgIG9y
aWdpbmFsQWN0aW9uKHNpZ25hbE51bWJlciwgaW5mbywgdWFwKTsKKyAgICB9CisgICAgCisgICAg
Ly8gUHJlLWVtcHRpdmVseSByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgYnV0IHdlIG1heSBy
b2xsIGl0IGJhY2sgYmVsb3cuCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjdXJyZW50QWN0aW9uOwor
ICAgIHN0cnVjdCBzaWdhY3Rpb24gZGVmYXVsdEFjdGlvbjsKKyAgICBkZWZhdWx0QWN0aW9uLnNh
X2hhbmRsZXIgPSBTSUdfREZMOworICAgIHNpZ2ZpbGxzZXQoJmRlZmF1bHRBY3Rpb24uc2FfbWFz
ayk7CisgICAgZGVmYXVsdEFjdGlvbi5zYV9mbGFncyA9IDA7CisgICAgc2lnYWN0aW9uKFNJR1RS
QVAsICZkZWZhdWx0QWN0aW9uLCAmY3VycmVudEFjdGlvbik7CisgICAgCisgICAgaWYgKGN1cnJl
bnRBY3Rpb24uc2Ffc2lnYWN0aW9uICE9IGhhbmRsZVNpZ3RyYXApIHsKKyAgICAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IHRoZXJlJ3MgYSBjbGllbnQgaGFuZGxlciBpbnN0YWxsZWQgYWZ0ZXIgdXMu
IFRoaXMgYWxzbyBtZWFucworICAgICAgICAvLyB0aGF0IHRoZSBjbGllbnQgaGFuZGxlciB0aGlu
a3MgaXQgd2FzIGFibGUgdG8gcmVjb3ZlciBmcm9tIHRoZSBTSUdUUkFQLCBhbmQKKyAgICAgICAg
Ly8gZGlkIG5vdCB1bmluc3RhbGwgaXRzZWxmLiBXZSBjYW4ndCBhcmd1ZSB3aXRoIHRoaXMgYmVj
YXVzZSB0aGUgc2lnbmFsIGlzbid0CisgICAgICAgIC8vIGtub3duIHRvIGJlIGZyb20gYSBWTVRy
YXBzIHNpZ25hbC4gSGVuY2UsIHJlc3RvcmUgdGhlIGNsaWVudCBoYW5kbGVyCisgICAgICAgIC8v
IGFuZCBrZWVwIGdvaW5nLgorICAgICAgICBzaWdhY3Rpb24oU0lHVFJBUCwgJmN1cnJlbnRBY3Rp
b24sIG51bGxwdHIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRs
ZXJzKCkKK3sKKyAgICB0eXBlZGVmIHZvaWQgKCogU2lnYWN0aW9uSGFuZGxlcikoaW50LCBzaWdp
bmZvX3QgKiwgdm9pZCAqKTsKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKKworICAgIGFj
dGlvbi5zYV9zaWdhY3Rpb24gPSByZWludGVycHJldF9jYXN0PFNpZ2FjdGlvbkhhbmRsZXI+KGhh
bmRsZVNpZ3VzcjEpOworICAgIHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICBhY3Rp
b24uc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOworICAgIHNpZ2FjdGlvbihTSUdVU1IxLCAmYWN0aW9u
LCAmb3JpZ2luYWxTaWd1c3IxQWN0aW9uKTsKKworICAgIGFjdGlvbi5zYV9zaWdhY3Rpb24gPSBy
ZWludGVycHJldF9jYXN0PFNpZ2FjdGlvbkhhbmRsZXI+KGhhbmRsZVNpZ3RyYXApOworICAgIHNp
Z2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9TSUdJ
TkZPOworICAgIHNpZ2FjdGlvbihTSUdUUkFQLCAmYWN0aW9uLCAmb3JpZ2luYWxTaWd0cmFwQWN0
aW9uKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGF0aWMgQ2FsbEZyYW1lKiBzYW5pdGl6ZWRUb3BD
YWxsRnJhbWUoQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpCkBAIC0zNDMsNyArNDAwLDcgQEAgVk1U
cmFwczo6Vk1UcmFwcygpCiAgICAgaWYgKCFPcHRpb25zOjp1c2VQb2xsaW5nVHJhcHMoKSkgewog
ICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKICAgICAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZSwgW10gewotICAgICAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoKTsKKyAgICAg
ICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVycygpOwogICAgICAgICB9KTsKICAgICB9CiAjZW5k
aWYKQEAgLTQwMywxOSArNDYwLDcgQEAgdm9pZCBWTVRyYXBzOjpTaWduYWxTZW5kZXI6OnNlbmQo
KQogICAgICAgICAgICAgVk0mIHZtID0gKm1fdm07CiAgICAgICAgICAgICBhdXRvIG9wdGlvbmFs
T3duZXJUaHJlYWQgPSB2bS5vd25lclRocmVhZCgpOwogICAgICAgICAgICAgaWYgKG9wdGlvbmFs
T3duZXJUaHJlYWQpIHsKLSAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZSgqb3B0aW9uYWxPd25l
clRocmVhZC52YWx1ZSgpLmdldCgpLCBbXSAoc2lnaW5mb190KiwgdWNvbnRleHRfdCogdWNvbnRl
eHQpIC0+IHZvaWQgewotICAgICAgICAgICAgICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQo
dWNvbnRleHQtPnVjX21jb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhY3RpdmVW
TUFuZFN0YWNrQm91bmRzID0gZmluZEFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMoY29udGV4dCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVWTUFuZFN0YWNrQm91bmRzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBWTSogdm0gPSBhY3RpdmVWTUFuZFN0YWNrQm91bmRzLnZhbHVlKCku
dm07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodm0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdGFja0JvdW5kcyBzdGFja0JvdW5kcyA9IGFjdGl2ZVZNQW5kU3RhY2tCb3Vu
ZHMudmFsdWUoKS5zdGFja0JvdW5kczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWTVRy
YXBzJiB0cmFwcyA9IHZtLT50cmFwcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0cmFwcy5uZWVkVHJhcEhhbmRsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYXBzLnRyeUluc3RhbGxUcmFwQnJlYWtwb2ludHMoY29udGV4dCwgc3RhY2tCb3VuZHMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgb3B0aW9uYWxPd25lclRocmVhZC52YWx1
ZSgpLT5zaWduYWwoU0lHVVNSMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAppbmRleCA1NDI1YjE4
ODMzMjdmYWQ4M2VjNjAyNDI2YWU5NjgxMzVmY2IwNTgxLi5mZGJhMmFmZDgzMWYwMGRiZTJiYjU1
NmFiYTEzYzVhZGJkODEwYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTVRyYXBzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFw
cy5oCkBAIC00Miw4ICs0Miw3IEBAIGNsYXNzIFZNVHJhcHMgewogcHVibGljOgogICAgIGVudW0g
Y2xhc3MgRXJyb3IgewogICAgICAgICBOb25lLAotICAgICAgICBMb2NrVW5hdmFpbGFibGUsCi0g
ICAgICAgIE5vdEpJVENvZGUKKyAgICAgICAgTG9ja1VuYXZhaWxhYmxlCiAgICAgfTsKIAogICAg
IGVudW0gRXZlbnRUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9T
aWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCBlYjg2ZWU0MGMyZTUwMjNjYjBlNmZhMTE4NTM2
MzZhNDFiYWQyYzZkLi4yNjVjNjYxNTVkMWFkYjhkYTk4YmQ3ODk0MjAyOTI5ODNkNjEyNzNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXpl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6
ZXIuY3BwCkBAIC0zNyw3ICszNyw5IEBACiAjaW5jbHVkZSAiQTY0RE9wY29kZS5oIgogI2VuZGlm
CiAKLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9TaWduYWxzLmg+CisjaWYgSEFWRShTSUdOQUxfSCkK
KyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTM5
LDE5ICsxNDEsNjAgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIHZvaWQqIGZyYW1lUG9p
bnRlcjsKIH07CiAKLXN0YXRpYyB2b2lkIGluc3RhbGxDcmFzaEhhbmRsZXIoKQorc3RydWN0IHNp
Z2FjdGlvbiBvcmlnaW5hbFNpZ0lsbEFjdGlvbjsKKworc3RhdGljIHZvaWQgaGFuZGxlQ3Jhc2go
aW50IHNpZ25hbE51bWJlciwgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1YXApCiB7Ci0jaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6
SWxsLCBbXSAoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1YXApIHsKLSAgICAgICAgU2lnbmFsQ29u
dGV4dCBjb250ZXh0KHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4dCk7
CisgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXAp
LT51Y19tY29udGV4dCk7CisgICAgU2lnaWxsQ3Jhc2hBbmFseXplciYgYW5hbHl6ZXIgPSBTaWdp
bGxDcmFzaEFuYWx5emVyOjppbnN0YW5jZSgpOworICAgIGF1dG8gY3Jhc2hTb3VyY2UgPSBhbmFs
eXplci5hbmFseXplKGNvbnRleHQpOworCisgICAgYXV0byBvcmlnaW5hbEFjdGlvbiA9IG9yaWdp
bmFsU2lnSWxsQWN0aW9uLnNhX3NpZ2FjdGlvbjsKKyAgICBpZiAob3JpZ2luYWxBY3Rpb24pIHsK
KyAgICAgICAgLy8gSXQgaXMgYWx3YXlzIHNhZmUgdG8ganVzdCBpbnZva2UgdGhlIG9yaWdpbmFs
IGhhbmRsZXIgdXNpbmcgdGhlIHNhX3NpZ2FjdGlvbiBmb3JtCisgICAgICAgIC8vIHdpdGhvdXQg
Y2hlY2tpbmcgZm9yIHRoZSBTQV9TSUdJTkZPIGZsYWcuIElmIHRoZSBvcmlnaW5hbCBoYW5kbGVy
IGlzIG9mIHRoZQorICAgICAgICAvLyBzYV9oYW5kbGVyIGZvcm0sIGl0IHdpbGwganVzdCBpZ25v
cmUgdGhlIDJuZCBhbmQgM3JkIGFyZ3VtZW50cyBzaW5jZSBzYV9oYW5kbGVyIGlzIGEKKyAgICAg
ICAgLy8gc3Vic2V0IG9mIHNhX3NpZ2FjdGlvbi4gVGhpcyBpcyB3aGF0IHRoZSBtYW4gcGFnZXMg
c2F5cyB0aGUgT1MgZG9lcyBhbnl3YXkuCisgICAgICAgIG9yaWdpbmFsQWN0aW9uKHNpZ25hbE51
bWJlciwgaW5mbywgdWFwKTsKKyAgICB9CiAKLSAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQu
bWFjaGluZVBDKSkKLSAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7
CisgICAgaWYgKGNyYXNoU291cmNlID09IFNpZ2lsbENyYXNoQW5hbHl6ZXI6OkNyYXNoU291cmNl
OjpKYXZhU2NyaXB0Q29yZSkgeworICAgICAgICAvLyBSZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRs
ZXIgc28gdGhhdCB3ZSBjYW4gZ2V0IGEgY29yZSBkdW1wLgorICAgICAgICBzdHJ1Y3Qgc2lnYWN0
aW9uIGRlZmF1bHRBY3Rpb247CisgICAgICAgIGRlZmF1bHRBY3Rpb24uc2FfaGFuZGxlciA9IFNJ
R19ERkw7CisgICAgICAgIHNpZ2ZpbGxzZXQoJmRlZmF1bHRBY3Rpb24uc2FfbWFzayk7CisgICAg
ICAgIGRlZmF1bHRBY3Rpb24uc2FfZmxhZ3MgPSAwOworICAgICAgICBzaWdhY3Rpb24oU0lHSUxM
LCAmZGVmYXVsdEFjdGlvbiwgbnVsbHB0cik7CisgICAgfSBlbHNlIGlmICghb3JpZ2luYWxBY3Rp
b24pIHsKKyAgICAgICAgLy8gUHJlLWVtcHRpdmVseSByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRs
ZXIgYnV0IHdlIG1heSByb2xsIGl0IGJhY2sgYmVsb3cuCisgICAgICAgIHN0cnVjdCBzaWdhY3Rp
b24gY3VycmVudEFjdGlvbjsKKyAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBkZWZhdWx0QWN0aW9u
OworICAgICAgICBkZWZhdWx0QWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfREZMOworICAgICAgICBz
aWdmaWxsc2V0KCZkZWZhdWx0QWN0aW9uLnNhX21hc2spOworICAgICAgICBkZWZhdWx0QWN0aW9u
LnNhX2ZsYWdzID0gMDsKKyAgICAgICAgc2lnYWN0aW9uKFNJR0lMTCwgJmRlZmF1bHRBY3Rpb24s
ICZjdXJyZW50QWN0aW9uKTsKKworICAgICAgICBpZiAoY3VycmVudEFjdGlvbi5zYV9zaWdhY3Rp
b24gIT0gaGFuZGxlQ3Jhc2gpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGVy
ZSdzIGEgY2xpZW50IGhhbmRsZXIgaW5zdGFsbGVkIGFmdGVyIHVzLiBUaGlzIGFsc28gbWVhbnMK
KyAgICAgICAgICAgIC8vIHRoYXQgdGhlIGNsaWVudCBoYW5kbGVyIHRoaW5rcyBpdCB3YXMgYWJs
ZSB0byByZWNvdmVyIGZyb20gdGhlIFNJR0lMTCwgYW5kCisgICAgICAgICAgICAvLyBkaWQgbm90
IHVuaW5zdGFsbCBpdHNlbGYuIFdlIGNhbid0IGFyZ3VlIHdpdGggdGhpcyBiZWNhdXNlIHRoZSBj
cmFzaCBpc24ndAorICAgICAgICAgICAgLy8ga25vd24gdG8gYmUgZnJvbSBhIEphdmFTY3JpcHRD
b3JlIHNvdXJjZS4gSGVuY2UsIHJlc3RvcmUgdGhlIGNsaWVudCBoYW5kbGVyCisgICAgICAgICAg
ICAvLyBhbmQga2VlcCBnb2luZy4KKyAgICAgICAgICAgIHNpZ2FjdGlvbihTSUdJTEwsICZjdXJy
ZW50QWN0aW9uLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KK30KIAotICAgICAgICBTaWdp
bGxDcmFzaEFuYWx5emVyJiBhbmFseXplciA9IFNpZ2lsbENyYXNoQW5hbHl6ZXI6Omluc3RhbmNl
KCk7Ci0gICAgICAgIGFuYWx5emVyLmFuYWx5emUoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBT
aWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7Ci0gICAgfSk7CitzdGF0aWMgdm9pZCBpbnN0YWxsQ3Jh
c2hIYW5kbGVyKCkKK3sKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisgICAgc3RydWN0
IHNpZ2FjdGlvbiBhY3Rpb247CisgICAgYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCAoKikoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKT4oaGFuZGxlQ3Jhc2gpOwor
ICAgIHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICBhY3Rpb24uc2FfZmxhZ3MgPSBT
QV9TSUdJTkZPOworICAgIHNpZ2FjdGlvbihTSUdJTEwsICZhY3Rpb24sICZvcmlnaW5hbFNpZ0ls
bEFjdGlvbik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShoYW5kbGVDcmFzaCk7CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2ln
bmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWdu
YWxIYW5kbGVyLmNwcAppbmRleCAyZTBjOTlhMzliZWJkMzE3OGI5MTQ4ZDk1OGZlNTNlNTdhNjIy
OTdlLi44OTgxMDRiZDQ4YWRiMTE4ODY1YTljOGRlZTViNTZmNGU2NmJlYTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNw
cApAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJX
YXNtVGh1bmtzLmgiCiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRz
L1NpZ25hbHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAtNTAs
OSArNTAsMTEgQEAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoU2V0PHN0ZDo6dHVwbGU8
dm9pZCosIHZvaWQqPj4+IGNvZGVMb2NhdGlvbnM7IC8vICgKIAogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWV9GQVNUX01FTU9SWSkKIAorc3RhdGljIHN0cnVjdCBzaWdhY3Rpb24gb2xkU2lnQnVzSGFu
ZGxlcjsKK3N0YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZFNpZ1NlZ3ZIYW5kbGVyOwogc3RhdGlj
IGJvb2wgZmFzdEhhbmRsZXJJbnN0YWxsZWQgeyBmYWxzZSB9OwogCi1zdGF0aWMgU2lnbmFsQWN0
aW9uIHRyYXBIYW5kbGVyKGludCwgc2lnaW5mb190KiBzaWdJbmZvLCB2b2lkKiB1Y29udGV4dCkK
K3N0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywg
dm9pZCogdWNvbnRleHQpCiB7CiAgICAgbWNvbnRleHRfdCYgY29udGV4dCA9IHN0YXRpY19jYXN0
PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwogICAgIHZvaWQqIGZhdWx0aW5n
SW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQp
OwpAQCAtNjEsNyArNjMsOSBAQCBzdGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKGludCwg
c2lnaW5mb190KiBzaWdJbmZvLCB2b2lkKiB1Y29udGV4dCkKICAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZv
aWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBv
b2wpKSk7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBj
b2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdl
IG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBv
ZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBhcXVpcmUuCi0gICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJ
bnN0cnVjdGlvbikpIHsKKyAgICBpZiAocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZp
eGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpIDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24KKyAgICAgICAg
JiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4
ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpIHsKKwogICAgICAgICBib29sIGZhdWx0ZWRJbkFjdGl2
ZUZhc3RNZW1vcnkgPSBmYWxzZTsKICAgICAgICAgewogICAgICAgICAgICAgdm9pZCogZmF1bHRp
bmdBZGRyZXNzID0gc2lnSW5mby0+c2lfYWRkcjsKQEAgLTg1LDEyICs4OSwxNyBAQCBzdGF0aWMg
U2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKGludCwgc2lnaW5mb190KiBzaWdJbmZvLCB2b2lkKiB1
Y29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5k
IHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2lu
dGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlwZTo6
T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29u
dGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFj
dGlvbjo6SGFuZGxlZDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gU2lnbmFs
QWN0aW9uOjpOb3RIYW5kbGVkOworCisgICAgLy8gU2luY2Ugd2Ugb25seSB1c2UgZmFzdCBtZW1v
cnkgaW4gcHJvY2Vzc2VzIHdlIGNvbnRyb2wsIGlmIHdlIHJlc3RvcmUgd2Ugd2lsbCBqdXN0IGZh
bGwgYmFjayB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLgorICAgIGlmIChzaWduYWwgPT0gU0lHQlVT
KQorICAgICAgICBzaWdhY3Rpb24oc2lnbmFsLCAmb2xkU2lnQnVzSGFuZGxlciwgbnVsbHB0cik7
CisgICAgZWxzZQorICAgICAgICBzaWdhY3Rpb24oc2lnbmFsLCAmb2xkU2lnU2VndkhhbmRsZXIs
IG51bGxwdHIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZX0ZBU1RfTUVNT1JZ
KQpAQCAtMTI0LDEzICsxMzMsMjIgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKLSAgICAg
ICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCdXMsIFtdIChpbnQgc2lnbmFsLCBzaWdp
bmZvX3QqIHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJh
cEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6U2VnViwgW10gKGludCBzaWduYWwsIHNp
Z2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiB0
cmFwSGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHVjb250ZXh0KTsKLSAgICAgICAgfSk7CisgICAg
ICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworCisgICAgICAgIGFjdGlvbi5zYV9zaWdhY3Rp
b24gPSB0cmFwSGFuZGxlcjsKKyAgICAgICAgc2lnZmlsbHNldCgmYWN0aW9uLnNhX21hc2spOwor
ICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOworICAgICAgICAKKyAgICAgICAg
Ly8gSW5zdGFsbGluZyBzaWduYWwgaGFuZGxlcnMgZmFpbHMgd2hlbgorICAgICAgICAvLyAxLiBz
cGVjaWZpY2llZCBzaWcgaXMgaW5jb3JyZWN0IChpbnZhbGlkIHZhbHVlcyBvciBzaWduYWwgbnVt
YmVycyB3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCksIG9yCisgICAgICAgIC8vIDIuIHNlY29uZCBv
ciB0aGlyZCBwYXJhbWV0ZXIgcG9pbnRzIGluY29ycmVjdCBwb2ludGVycy4KKyAgICAgICAgLy8g
VGh1cywgd2UgbXVzdCBub3QgZmFpbCBpbiB0aGUgZm9sbG93aW5nIGF0dGVtcHRzLgorICAgICAg
ICBpbnQgcmV0ID0gMDsKKyAgICAgICAgcmV0ID0gc2lnYWN0aW9uKFNJR0JVUywgJmFjdGlvbiwg
Jm9sZFNpZ0J1c0hhbmRsZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmV0KTsKKworICAg
ICAgICByZXQgPSBzaWdhY3Rpb24oU0lHU0VHViwgJmFjdGlvbiwgJm9sZFNpZ1NlZ3ZIYW5kbGVy
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJldCk7CiAKICAgICAgICAgY29kZUxvY2F0aW9u
cy5jb25zdHJ1Y3QoKTsKICAgICAgICAgZmFzdEhhbmRsZXJJbnN0YWxsZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI3YTkwMWZhMjczMTQ4
M2Y0ZTM2YWRjZjMyYWVlODNlZmZkMjQxYy4uOTRjMTE2YmYxMjMxNGFiMDAxODY5YzY3YTA1OTAx
YTAxNjgwZmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDksMTEgKzE0OSw2IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLzsgfTsKIAkJ
NTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTU1MUNGRDNBNjkwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi87IH07CiAJCTUyMTgzMDEyQzk5RTQ3NkE4NEVF
QkVBOCAvKiBTeW1ib2xJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAq
LzsgfTsKLQkJNTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNBRDAw
NTI1MjgxIC8qIFNpZ25hbHMuY3BwICovOyB9OwotCQk1MzExQkQ1NjFFQTdFMTVBMDA1MjUyODEg
LyogTG9ja2xlc3NCYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMTFCRDU1MUVBN0UxNUEwMDUyNTI4MSAvKiBMb2NrbGVzc0JhZy5oICovOyB9Owot
CQk1MzExQkQ1ODFFQTdFMUExMDA1MjUyODEgLyogU2lnbmFscy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTcxRUE3RTFBMTAwNTI1MjgxIC8q
IFNpZ25hbHMuaCAqLzsgfTsKLQkJNTMxMUJENUExRUE4MUE5NjAwNTI1MjgxIC8qIFRocmVhZE1l
c3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
MTFCRDU5MUVBODFBOTYwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmggKi87IH07Ci0JCTUzMTFC
RDVDMUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDVCMUVBODIyRjkwMDUyNTI4MSAv
KiBUaHJlYWRNZXNzYWdlLmNwcCAqLzsgfTsKIAkJNTM5RUIwNjMxRDU1Mjg0MjAwQzgyRUY3IC8q
IExFQkRlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzOUVCMDYyMUQ1NTI4NDIwMEM4MkVGNyAvKiBMRUJEZWNvZGVyLmggKi87IH07CiAJCTUz
RUMyNTNFMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VDMjUzQzFFOTVBRDMwMDAwODMxQjkg
LyogUHJpb3JpdHlRdWV1ZS5oICovOyB9OwogCQk1NTMwNzFDQTFDNDA0MjcyMDAzODQ4OTggLyog
VGlueUxSVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi87IH07CkBA
IC01NTMsMTEgKzU0OCw2IEBACiAJCTUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVh
ZENvcGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVGNzk0RDFDRkM5RjRB
MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyb3NzVGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MzExQkQ1NTFFQTdFMTVBMDA1MjUyODEgLyogTG9ja2xl
c3NCYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9ja2xlc3NCYWcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTMxMUJENTcxRUE3RTFBMTAwNTI1MjgxIC8q
IFNpZ25hbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lnbmFscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzExQkQ1OTFFQTgxQTk2MDA1MjUyODEgLyog
VGhyZWFkTWVzc2FnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRN
ZXNzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzMTFCRDVCMUVBODIyRjkw
MDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRocmVhZE1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzlFQjA2MjFENTUyODQyMDBDODJFRjcgLyogTEVCRGVjb2Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMRUJEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW9yaXR5UXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNo
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzQsNyArMTA2NCw2IEBACiAJCQkJMEY2MEYz
MkQxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjYw
RjMyRTFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0
NzJDMzE1MUE4MjVBMDA0MTIzRkYgLyogTG9ja2VyLmggKi8sCi0JCQkJNTMxMUJENTUxRUE3RTE1
QTAwNTI1MjgxIC8qIExvY2tsZXNzQmFnLmggKi8sCiAJCQkJNTEzRTE3MEExQ0Q3RDVCRjAwRTM2
NTBCIC8qIExvZ2dpbmdBY2N1bXVsYXRvci5oICovLAogCQkJCTBGMzBCQThDMUU3ODcwOEUwMDJD
QTg0NyAvKiBMb2dnaW5nSGFzaElELmggKi8sCiAJCQkJMEYzMEJBOEQxRTc4NzA4RTAwMkNBODQ3
IC8qIExvZ2dpbmdIYXNoTWFwLmggKi8sCkBAIC0xMjAwLDggKzExODksNiBAQAogCQkJCUUzMjAw
QUI1MUU5QTUzNkQwMDNCNTlEMiAvKiBUaHJlYWRIb2xkZXIuY3BwICovLAogCQkJCUUzMjAwQUI2
MUU5QTUzNkQwMDNCNTlEMiAvKiBUaHJlYWRIb2xkZXIuaCAqLywKIAkJCQlBOEE0NzMzMDE1MUE4
MjVCMDA0MTIzRkYgLyogVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwICovLAotCQkJCTUzMTFCRDVC
MUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCAqLywKLQkJCQk1MzExQkQ1OTFF
QTgxQTk2MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5oICovLAogCQkJCUE4QTQ3MzMyMTUxQTgy
NUIwMDQxMjNGRiAvKiBUaHJlYWRpbmcuY3BwICovLAogCQkJCUE4QTQ3MzMzMTUxQTgyNUIwMDQx
MjNGRiAvKiBUaHJlYWRpbmcuaCAqLywKIAkJCQlBOEE0NzMzNTE1MUE4MjVCMDA0MTIzRkYgLyog
VGhyZWFkaW5nUHJpbWl0aXZlcy5oICovLApAQCAtMTMyOSw4ICsxMzE2LDYgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUE4QTQ3MzNBMTUxQTgyNUIwMDQxMjNGRiAvKiBCaW5hcnlTZW1hcGhvcmUu
Y3BwICovLAogCQkJCUE4QTQ3MzNCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaW5hcnlTZW1hcGhvcmUu
aCAqLywKLQkJCQk1MzExQkQ1MTFFQTcxQ0FEMDA1MjUyODEgLyogU2lnbmFscy5jcHAgKi8sCi0J
CQkJNTMxMUJENTcxRUE3RTFBMTAwNTI1MjgxIC8qIFNpZ25hbHMuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gdGhyZWFkczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDc2LDcgKzE0
NjEsNiBAQAogCQkJCURFNUEwOUZDMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEYyQjkxMTcyRTAwRkMwMDdEQkRBNSAvKiBDb21waWxh
dGlvblRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOTgxNTFBODI1QjAwNDEyM0ZG
IC8qIENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MzExQkQ1NjFFQTdFMTVBMDA1MjUy
ODEgLyogTG9ja2xlc3NCYWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREI2OThFMUI3QzY0M0Ew
MDBDMTA3OCAvKiBDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDhDMTUxQTgy
NjQwMDQxMjNGRiAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEYyQjlDMTcyRjI1
OTYwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTQyLDcg
KzE1MjYsNiBAQAogCQkJCUE3MERBMDg0MTc5OUYwNEQwMDUyOUE5QiAvKiBJbnNlcnRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0REN0ZGODE4NkQyOTFFMDA3
NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTMxMUJENTgx
RUE3RTFBMTAwNTI1MjgxIC8qIFNpZ25hbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDREQ3RkZB
MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0FDOTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
OUVCMDYzMUQ1NTI4NDIwMEM4MkVGNyAvKiBMRUJEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTE2NTAsNyArMTYzMyw2IEBACiAJCQkJQTc0ODc0NTQxN0EwQkRBRTAwRkEwNENCIC8qIFN0cmlu
Z0hhc2hEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NDExNTFBODI1QjAw
NDEyM0ZGIC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDQyMTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdPcGVyYXRvcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzMTFC
RDVBMUVBODFBOTYwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkREQkZBODE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNkVCMUUwMTg3RDBCRDMwMDMwMTI2RiAvKiBTdHJpbmdWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzNCODE1MUE4MjVCMDA0MTIzRkYgLyogc3RydG9kLmggaW4g
SGVhZGVycyAqLywKQEAgLTE4NzUsMTAgKzE4NTcsOCBAQAogCQkJCUZFREFDRDNEMTYzMEY4M0Yw
MEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDNDMTUx
QTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
QkExNUZCMTgyNDM1QTYwMEE4MkU2OSAvKiBTdHJpbmdDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ0MDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNUJBMTVGQzE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nSW1wbENG
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzMTFCRDUzMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWdu
YWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAvKiBT
dHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RjMxODI0MzNBOTAwQTgy
RTY5IC8qIFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMw
MEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaApp
bmRleCA5OTA3YjMyYmY0ZTRiYzM0MDZhMDViMzk4MGFjN2QzYzA2M2NmZDI4Li43NzJlNmZlYmJk
MmU3MTY5ZDQzZDUwNzk1YzFlYWZjNThlYTY4ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9BdG9taWNzLmgKKysrIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCkBAIC0xNzQsMTIgKzE3
NCw2IEBAIHN0cnVjdCBBdG9taWMgewogICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24oZnVuYywg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCwgYWJvcnRMaWtlbGlob29kKTsKICAgICB9CiAKLSAg
ICBBdG9taWMoKSA9IGRlZmF1bHQ7Ci0gICAgY29uc3RleHByIEF0b21pYyhUIGluaXRpYWwpCi0g
ICAgICAgIDogdmFsdWUoc3RkOjpmb3J3YXJkPFQ+KGluaXRpYWwpKQotICAgIHsKLSAgICB9Ci0K
ICAgICBzdGQ6OmF0b21pYzxUPiB2YWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NzQyZTY1NTU2MjMyNDQxODY4ZjYyMDkyNWUxZGZiNDdlYTI0NjZlOS4uZjg4YTU3MmU5ZTE2YzBm
MjljZTlhMjE0MGI0NGVkOTkxMDYyMjliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTYyLDcg
KzYyLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgTG9ja0FsZ29yaXRobS5oCiAgICAgTG9ja2Vk
UHJpbnRTdHJlYW0uaAogICAgIExvY2tlci5oCi0gICAgTG9ja2xlc3NCYWcuaAogICAgIExvZ2dp
bmdIYXNoSUQuaAogICAgIExvZ2dpbmdIYXNoTWFwLmgKICAgICBMb2dnaW5nSGFzaFNldC5oCkBA
IC0xMzEsNyArMTMwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0u
aAogICAgIFN5c3RlbVRyYWNpbmcuaAogICAgIFRocmVhZEhvbGRlci5jcHAKLSAgICBUaHJlYWRN
ZXNzYWdlLmgKICAgICBUaHJlYWRTYWZlUmVmQ291bnRlZC5oCiAgICAgVGhyZWFkU3BlY2lmaWMu
aAogICAgIFRocmVhZGluZy5oCkBAIC0xODcsNyArMTg1LDYgQEAgc2V0KFdURl9IRUFERVJTCiAg
ICAgdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKIAogICAgIHRocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmgKLSAgICB0aHJlYWRzL1NpZ25hbHMuaAogCiAgICAgdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oCiAgICAgdW5pY29kZS9Db2xsYXRvci5oCkBAIC0yNDIsNyArMjM5LDYgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgU3RhY2tCb3VuZHMuY3BwCiAgICAgU3RhY2tTdGF0cy5jcHAKICAgICBT
dHJpbmdQcmludFN0cmVhbS5jcHAKLSAgICBUaHJlYWRNZXNzYWdlLmNwcAogICAgIFRocmVhZGlu
Zy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgV1RGVGhyZWFkRGF0
YS5jcHAKQEAgLTI4Myw3ICsyNzksNiBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICB0ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAK
LSAgICB0aHJlYWRzL1NpZ25hbHMuY3BwCiAKICAgICB1bmljb2RlL1VURjguY3BwCiApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrbGVzc0JhZy5oIGIvU291cmNlL1dURi93dGYvTG9j
a2xlc3NCYWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTljYWMwMzJkYmU5Zjc4
NWI3M2RkNjIxYmVjZGM4MmRlMzAzNjAyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrbGVzc0JhZy5oCisrKyAvZGV2L251
bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXRvbWljcy5oIgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotLy8gVGhpcyBhIHNpbXBsZSBzaW5nbGUgY29uc3VtZXIsIG11bHRpcGxlIHBy
b2R1Y2VyIEJhZyBkYXRhIHN0cnVjdHVyZS4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNz
IExvY2tsZXNzQmFnIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NrbGVzc0JhZyk7Ci0K
LSAgICBzdHJ1Y3QgTm9kZSB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAg
IHB1YmxpYzoKLSAgICAgICAgVCBkYXRhOwotICAgICAgICBOb2RlKiBuZXh0OwotICAgIH07Ci1w
dWJsaWM6Ci0gICAgTG9ja2xlc3NCYWcoKQotICAgICAgICA6IG1faGVhZChudWxscHRyKQotICAg
IHsKLSAgICB9Ci0KLSAgICBlbnVtIFB1c2hSZXN1bHQgeyBFbXB0eSwgTm9uRW1wdHkgfTsKLSAg
ICBQdXNoUmVzdWx0IGFkZChUJiYgZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIE5vZGUqIG5ld05v
ZGUgPSBuZXcgTm9kZSgpOwotICAgICAgICBuZXdOb2RlLT5kYXRhID0gc3RkOjpmb3J3YXJkPFQ+
KGVsZW1lbnQpOwotCi0gICAgICAgIE5vZGUqIG9sZEhlYWQ7Ci0gICAgICAgIG1faGVhZC50cmFu
c2FjdGlvbihbJl0gKE5vZGUqJiBoZWFkKSB7Ci0gICAgICAgICAgICBvbGRIZWFkID0gaGVhZDsK
LSAgICAgICAgICAgIG5ld05vZGUtPm5leHQgPSBoZWFkOwotICAgICAgICAgICAgaGVhZCA9IG5l
d05vZGU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
cmV0dXJuIG9sZEhlYWQgPT0gbnVsbHB0ciA/IEVtcHR5IDogTm9uRW1wdHk7Ci0gICAgfQotCi0g
ICAgLy8gQ09OU1VNRVIgRlVOQ1RJT05TOiBFdmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgb25seSBz
YWZlIHRvIGNhbGwgZnJvbSB0aGUgY29uc3VtZXIgdGhyZWFkLgotCi0gICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBhY3R1YWxseSBzYWZlIHRvIGNhbGwgZnJvbSBtb3JlIHRoYW4gb25lIHRocmVhZCwg
YnV0IE9OTFkgaWYgbm8gdGhyZWFkIGNhbiBjYWxsIGNvbnN1bWVBbGwuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYgZnVuYykK
LSAgICB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2hlYWQubG9hZCgpOwotICAgICAgICB3aGls
ZSAobm9kZSkgewotICAgICAgICAgICAgY29uc3QgVCYgZGF0YSA9IG5vZGUtPmRhdGE7Ci0gICAg
ICAgICAgICBmdW5jKGRhdGEpOwotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQg
Y29uc3VtZUFsbChjb25zdCBGdW5jdG9yJiBmdW5jKQotICAgIHsKLSAgICAgICAgTm9kZSogbm9k
ZSA9IG1faGVhZC5leGNoYW5nZShudWxscHRyKTsKLSAgICAgICAgd2hpbGUgKG5vZGUpIHsKLSAg
ICAgICAgICAgIGZ1bmMoV1RGTW92ZShub2RlLT5kYXRhKSk7Ci0gICAgICAgICAgICBOb2RlKiBv
bGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0OwotICAgICAgICAg
ICAgZGVsZXRlIG9sZE5vZGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXRv
bWljPE5vZGUqPiBtX2hlYWQ7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZE1lc3NhZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmY4YTdiMjI1
ZWNmYzYzMTcxNDM2NmVhYTY3ZmU1Yjk5MTZkOGVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGhyZWFk
TWVzc2FnZS5oIgotCi0jaWYgVVNFKFBUSFJFQURTKQotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNp
bmNsdWRlIDx1bmlzdGQuaD4KLQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8
d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVh
ZHMvU2lnbmFscy5oPgotCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBUaHJlYWRNZXNzYWdl
RGF0YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGhyZWFk
TWVzc2FnZURhdGEoY29uc3QgVGhyZWFkTWVzc2FnZSYgbSkKLSAgICAgICAgOiByYW4oZmFsc2Up
Ci0gICAgICAgICwgbWVzc2FnZShtKQotICAgIHsKLSAgICB9Ci0KLSAgICBBdG9taWM8Ym9vbD4g
cmFuOwotICAgIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2U7Ci19OwotCi1lbnVtIEZpbGVE
ZXNjcmlwdG9yIHsKLSAgICBSZWFkLAotICAgIFdyaXRlLAotICAgIE51bWJlck9mRmlsZURlc2Ny
aXB0b3JzLAotfTsKLQotc3RhdGljIGludCBmaWxlRGVzY3JpcHRvcnNbTnVtYmVyT2ZGaWxlRGVz
Y3JpcHRvcnNdOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG1hZ2ljQnl0ZSA9ICJkIjsKLQot
Ci12b2lkIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpCi17Ci0gICAgaW50IHJlc3VsdCA9IHBp
cGUoZmlsZURlc2NyaXB0b3JzKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKLQotICAg
IGludCBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwpOwotICAg
IHJlc3VsdCA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfU0VURkwsIGZsYWdzIHwg
T19OT05CTE9DSyB8IE9fQVBQRU5EKTsKLSAgICBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9y
c1tXcml0ZV0sIEZfR0VURkwpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCAhPSAtMSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoKGZsYWdzICYgT19OT05CTE9DSykgJiYgKGZsYWdzICYgT19BUFBF
TkQpKTsKLQotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZM
KTsKLSAgICByZXN1bHQgPSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZs
YWdzICYgfk9fTk9OQkxPQ0spOwotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1Jl
YWRdLCBGX0dFVEZMKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgIT0gLTEpOwotICAgIFJF
TEVBU0VfQVNTRVJUKCEoZmxhZ3MgJiBPX05PTkJMT0NLKSk7Ci19Ci0KLVNVUFBSRVNTX0FTQU4K
LU1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VTY29wZWQoVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRo
cmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCi17Ci0gICAgY29uc3RleHByIFNpZ25hbCBzaWduYWwgPSBT
aWduYWw6OlVzcjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNh
bGxfb25jZShvbmNlLCBbXSB7Ci0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKHNpZ25hbCwg
W10gKGludCwgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1YXApIHsKLSAgICAgICAgICAgIFRocmVh
ZCogdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50TWF5QmVOdWxsKCk7Ci0KLSAgICAgICAgICAgIGlm
ICghdGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXZSBzb21laG93IGdvdCBh
IG1lc3NhZ2Ugb24gYSB0aHJlYWQgdGhhdCBkaWRuJ3QgaGF2ZSBhIFdURjo6VGhyZWFkIGluaXRp
YWxpemVkLCB3ZSBwcm9iYWJseSBkZWFkbG9ja2VkLCBoYWxwLiIpOwotICAgICAgICAgICAgICAg
IHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHRocmVhZC0+dGhyZWFkTWVzc2FnZXMoKS5jb25zdW1lQWxsKFsmXSAoVGhyZWFkTWVz
c2FnZURhdGEqIGRhdGEpIHsKLSAgICAgICAgICAgICAgICBkYXRhLT5tZXNzYWdlKGluZm8sIHN0
YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApKTsKLSAgICAgICAgICAgICAgICBkYXRhLT5yYW4u
c3RvcmUodHJ1ZSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgd2hpbGUgKHdyaXRl
KGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIG1hZ2ljQnl0ZSwgMSkgPT0gLTEpCi0gICAgICAgICAg
ICAgICAgQVNTRVJUKGVycm5vID09IEVBR0FJTik7Ci0KLSAgICAgICAgICAgIHJldHVybiBTaWdu
YWxBY3Rpb246OkhhbmRsZWQ7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0KLSAgICAvLyBTaW5j
ZSB3ZSBhcmUgZ3VhcmVudGVlZCBub3QgdG8gcmV0dXJuIHVudGlsIHdlIGdldCBhIHJlc3BvbnNl
IGZyb20gdGhlIG90aGVyIHRocmVhZCB0aGlzIGlzIG9rLgotICAgIFRocmVhZE1lc3NhZ2VEYXRh
IGRhdGEobWVzc2FnZSk7Ci0KLSAgICB0aHJlYWQudGhyZWFkTWVzc2FnZXMoKS5hZGQoJmRhdGEp
OwotICAgIGJvb2wgcmVzdWx0ID0gdGhyZWFkLnNpZ25hbCh0b1N5c3RlbVNpZ25hbChzaWduYWwp
KTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VTdGF0dXM6OlRocmVh
ZEV4aXRlZDsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwotCi0gICAgc3RhdGljIFN0YXRp
Y0xvY2sgcmVhZExvY2s7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIocmVhZExvY2spOwotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IGJ1ZmZlclNpemUgPSAx
NjsKLSAgICAgICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV07Ci0KLSAgICAgICAgLy8gSXQncyBh
bHdheXMgc2FmZSB0byBjbGVhciB0aGUgcGlwZSBiZWNhdXNlIG9ubHkgb25lIHRocmVhZCBjYW4g
ZXZlciBibG9jayB0cnlpbmcgdG8gcmVhZAotICAgICAgICAvLyBmcm9tIHRoZSBwaXBlLiBUaHVz
LCBlYWNoIGJ5dGUgd2UgY2xlYXIgZnJvbSB0aGUgcGlwZSBhY3R1YWxseSBqdXN0IGNvcnJlc3Bv
bmRzIHRvIHNvbWUgdGFzawotICAgICAgICAvLyB0aGF0IGhhcyBhbHJlYWR5IGZpbmlzaGVkLiBX
ZSBhY3RpdmVseSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBwaXBlIGRvZXMgbm90IG92ZXJmaWxs
IGJlY2F1c2UKLSAgICAgICAgLy8gb3RoZXJ3aXNlIG91ciB3cml0ZXJzIG1pZ2h0IHNwaW4gdHJ5
aW5nIHRvIHdyaXRlLgotICAgICAgICBhdXRvIGNsZWFyUGlwZSA9IFsmXSB7Ci0gICAgICAgICAg
ICBpbnQgZmxhZ3MgPSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfR0VURkwpOwotICAg
ICAgICAgICAgQVNTRVJUKCEoZmxhZ3MgJiBPX05PTkJMT0NLKSk7Ci0gICAgICAgICAgICBmY250
bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdzIHwgT19OT05CTE9DSyk7Ci0K
LSAgICAgICAgICAgIHdoaWxlIChyZWFkKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgYnVmZmVyLCBi
dWZmZXJTaXplKSAhPSAtMSkgeyB9Ci0gICAgICAgICAgICBBU1NFUlQoZXJybm8gPT0gRUFHQUlO
KTsKLQotICAgICAgICAgICAgZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX1NFVEZMLCBm
bGFncyk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKGRhdGEucmFuLmxvYWQoKSkgewotICAg
ICAgICAgICAgY2xlYXJQaXBlKCk7Ci0gICAgICAgICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6
TWVzc2FnZVJhbjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlYWQoZmlsZURlc2NyaXB0b3JzW1Jl
YWRdLCBidWZmZXIsIDEpOwotICAgICAgICBBU1NFUlQoYnVmZmVyWzBdID09IG1hZ2ljQnl0ZVsw
XSk7Ci0gICAgICAgIGNsZWFyUGlwZSgpOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShQVEhS
RUFEUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuaCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWFlNTNmMjljZjdlOGZiMDBlZjkyMTFkMTZjZTJjZGVkNjAzZWMxYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNz
YWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KLQotI2lmIFVTRShQVEhSRUFEUykKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQg
aW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7Ci0KLWNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwot
dXNpbmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKHNpZ2luZm9fdCosIHVjb250
ZXh0X3QqKT47Ci0KLWVudW0gY2xhc3MgTWVzc2FnZVN0YXR1cyB7Ci0gICAgTWVzc2FnZVJhbiwK
LSAgICBUaHJlYWRFeGl0ZWQsCi19OwotCi0vLyBUaGlzIG1ldGhvZCBhbGxvd3MgdXMgdG8gc2Vu
ZCBhIG1lc3NhZ2Ugd2hpY2ggd2lsbCBiZSBydW4gaW4gYSBzaWduYWwgaGFuZGxlciBvbiB0aGUg
ZGVzaXJlZCB0aHJlYWQuCi0vLyBUaGVyZSBhcmUgc2V2ZXJhbCBjYXZlYXRlcyB0byB0aGlzIG1l
dGhvZCBob3dldmVyLCBUaGlzIGZ1bmN0aW9uIHVzZXMgc2lnbmFscyBzbyB5b3VyIG1lc3NhZ2Ug
c2hvdWxkCi0vLyBiZSBzeW5jIHNpZ25hbCBzYWZlLgotTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2Fn
ZVNjb3BlZChUaHJlYWQmLCBjb25zdCBUaHJlYWRNZXNzYWdlJik7Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+Ci1NZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlKFRocmVhZCYgdGFyZ2V0VGhy
ZWFkLCBjb25zdCBGdW5jdG9yJiBmdW5jKQotewotICAgIGF1dG8gbGFtYmRhID0gc2NvcGVkTGFt
YmRhUmVmPHZvaWQoc2lnaW5mb190KiwgdWNvbnRleHRfdCopPihmdW5jKTsKLSAgICByZXR1cm4g
c2VuZE1lc3NhZ2VTY29wZWQodGFyZ2V0VGhyZWFkLCBsYW1iZGEpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotdXNpbmcgV1RGOjpzZW5kTWVzc2FnZTsKLQotI2VuZGlmIC8vIFVTRShQVEhS
RUFEUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IDE1YTVjNjg5YWU4NTFiNmZmYTkzODNjNTFjNjZm
ODE1NTdkNDE4MzguLmZlZjU4MTFhN2Q1N2JiODlkYzAzNzVmOTExMjJkNWEyNDhjYjIyODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0
aC5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXJTZWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZEhvbGRlci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAK
QEAgLTE3OSw5ICsxNzgsNiBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICB3
dGZUaHJlYWREYXRhKCk7CiAgICAgICAgIGluaXRpYWxpemVEYXRlcygpOwogICAgICAgICBUaHJl
YWQ6OmluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygpOwotI2lmIFVTRShQVEhSRUFEUykKLSAg
ICAgICAgaW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7Ci0jZW5kaWYKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaAppbmRleCBjMjBhNjVlMjJiZmQ1MDNkNmI1NjUxNWQ5NDg0NjcwNjY2MjgxMTZi
Li5iZDFmOGYzM2UyYWFiNWI1Y2RmYjRjY2I0NjliODU4NWU5YTI0NjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgotI2luY2x1ZGUgPHd0Zi9M
b2NrbGVzc0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAt
NTcsOCArNTYsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgVGhyZWFkTWVzc2FnZURh
dGE7Ci0KIHVzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHR5cGVkZWYgdm9pZCAo
KlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CiAKQEAgLTc4LDcgKzc1LDYgQEAgcHVi
bGljOgogCiAgICAgLy8gUmV0dXJucyBUaHJlYWQgb2JqZWN0LgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgVGhyZWFkJiBjdXJyZW50KCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBUaHJlYWQqIGN1cnJlbnRNYXlCZU51bGwoKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFk
SWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMg
YWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNo
b3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5z
dXJlCkBAIC0xMzYsMTEgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVQbGF0Zm9ybVRocmVhZGluZygpOwogCi0jaWYgVVNFKFBUSFJFQURTKQotICAgIExvY2ts
ZXNzQmFnPFRocmVhZE1lc3NhZ2VEYXRhKj4mIHRocmVhZE1lc3NhZ2VzKCkgeyByZXR1cm4gbV90
aHJlYWRNZXNzYWdlczsgfQotI2VuZGlmCi0KLXByb3RlY3RlZDoKK3ByaXZhdGU6CiAgICAgVGhy
ZWFkKCk7CiAKICAgICAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQ6OmNyZWF0
ZSBpbXBsZW1lbnRhdGlvbi4KQEAgLTE4NSw4ICsxNzcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX2RpZEV4aXQgeyBmYWxzZSB9OwogI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX3Qg
bV9oYW5kbGU7Ci0KLSAgICBMb2NrbGVzc0JhZzxUaHJlYWRNZXNzYWdlRGF0YSo+IG1fdGhyZWFk
TWVzc2FnZXM7CiAjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IG1fcGxhdGZvcm1UaHJl
YWQ7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMu
Y3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDFhNWQ5OWY2
MTRmNWQ5NWFjZjYxNzFlZjAxZDAzZDE0YzIxYzdmZDAuLjNlZTlhNWY1NDVlYWYxMjg5OTBlNWE5
YTNjMDE1NDg4NTI1YmZmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAg
LTI2NCwxOCArMjY0LDExIEBAIHZvaWQgVGhyZWFkOjpkZXRhY2goKQogICAgICAgICBkaWRCZWNv
bWVEZXRhY2hlZCgpOwogfQogCi1UaHJlYWQqIFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpCitU
aHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCiB7CiAgICAgVGhyZWFkSG9sZGVyKiBkYXRhID0gVGhy
ZWFkSG9sZGVyOjpjdXJyZW50KCk7CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIHJldHVybiAmZGF0
YS0+dGhyZWFkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVRocmVhZCYgVGhyZWFkOjpj
dXJyZW50KCkKLXsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJlTnVsbCgp
KQotICAgICAgICByZXR1cm4gKmN1cnJlbnQ7CisgICAgICAgIHJldHVybiBkYXRhLT50aHJlYWQo
KTsKIAogICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRocmVhZCwgVGhyZWFkSWRlbnRpZmllciBp
cyBub3QgZXN0YWJsaXNoZWQgeWV0LgogICAgIFJlZlB0cjxUaHJlYWQ+IHRocmVhZCA9IGFkb3B0
UmVmKG5ldyBUaHJlYWQoKSk7CkBAIC0yOTMsOCArMjg2LDYgQEAgVGhyZWFkSWRlbnRpZmllciBU
aHJlYWQ6OmN1cnJlbnRJRCgpCiBib29sIFRocmVhZDo6c2lnbmFsKGludCBzaWduYWxOdW1iZXIp
CiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgaWYgKGhhc0V4aXRlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW50IGVyck5v
ID0gcHRocmVhZF9raWxsKG1faGFuZGxlLCBzaWduYWxOdW1iZXIpOwogICAgIHJldHVybiAhZXJy
Tm87IC8vIEEgMCBlcnJObyBtZWFucyBzdWNjZXNzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFs
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YzUzZGNkYTIyMjNjNDcyZTky
YzQ2MmM4NjM2OTM0OTIxNTg0MzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNpZ25hbHMuaCIKLQot
I2lmIFVTRShQVEhSRUFEUykKLQotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHNpZ25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNp
bmNsdWRlIDx3dGYvTG9ja2xlc3NCYWcuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXN0YXRpYyBM
b2NrbGVzc0JhZzxTaWduYWxIYW5kbGVyPiBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KFNp
Z25hbDo6TnVtYmVyT2ZTaWduYWxzKV0gPSB7IH07Ci1zdGF0aWMgc3RydWN0IHNpZ2FjdGlvbiBv
bGRBY3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXTsK
LXN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNp
emVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXTsKLQotc3RhdGljIHZvaWQganNjU2lnbmFs
SGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQotewotICAg
IFNpZ25hbCBzaWduYWwgPSBmcm9tU3lzdGVtU2lnbmFsKHNpZyk7Ci0KLSAgICBhdXRvIHJlc3Rv
cmVEZWZhdWx0ID0gWyZdIHsKLSAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBkZWZhdWx0QWN0aW9u
OwotICAgICAgICBkZWZhdWx0QWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfREZMOwotICAgICAgICBz
aWdmaWxsc2V0KCZkZWZhdWx0QWN0aW9uLnNhX21hc2spOwotICAgICAgICBkZWZhdWx0QWN0aW9u
LnNhX2ZsYWdzID0gMDsKLSAgICAgICAgYXV0byByZXN1bHQgPSBzaWdhY3Rpb24oc2lnLCAmZGVm
YXVsdEFjdGlvbiwgbnVsbHB0cik7Ci0gICAgICAgIGRhdGFMb2dMbklmKCFyZXN1bHQsICJVbmFi
bGUgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5kbGVyIHdoaWxlIHByb2NjZXNzaW5nIHNpZ25h
bCAiLCBzaWcsICIgdGhlIHByb2Nlc3MgaXMgcHJvYmFibHkgZGVhZGxvY2tlZC4iKTsKLSAgICB9
OwotCi0gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGJl
IGNhcmVmdWwuCi0gICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVua25vd24pIHsKLSAgICAgICAg
ZGF0YUxvZ0xuKCJXZSBzb21laG93IGdvdCBjYWxsZWQgZm9yIGFuIHVua25vd24gc2lnbmFsICIs
IHNpZywgIiwgaGFscC4iKTsKLSAgICAgICAgcmVzdG9yZURlZmF1bHQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGJvb2wgZGlkSGFuZGxlID0gZmFsc2U7Ci0gICAgYm9vbCByZXN0
b3JlRGVmYXVsdEhhbmRsZXIgPSBmYWxzZTsKLSAgICBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpZ25hbCldLml0ZXJhdGUoWyZdIChjb25zdCBTaWduYWxIYW5kbGVyJiBoYW5kbGVyKSB7
Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlcihzaWcsIGluZm8sIG1jb250ZXh0KSkgewotICAgICAg
ICBjYXNlIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDoKLSAgICAgICAgICAgIGRpZEhhbmRsZSA9IHRy
dWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTaWduYWxBY3Rpb246OkZvcmNl
RGVmYXVsdDoKLSAgICAgICAgICAgIHJlc3RvcmVEZWZhdWx0SGFuZGxlciA9IHRydWU7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfSk7Ci0KLSAgICBpZiAocmVzdG9yZURlZmF1bHRIYW5kbGVyKSB7Ci0gICAg
ICAgIHJlc3RvcmVEZWZhdWx0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdHJ1
Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4o
c2lnbmFsKV07Ci0gICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikgewotICAgICAgICBpZiAo
b2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKLSAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rp
b24oc2lnLCBpbmZvLCBtY29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWRpZEhhbmRsZSkgewotICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikgewot
ICAgICAgICAgICAgb2xkQWN0aW9uLnNhX3NpZ2FjdGlvbihzaWcsIGluZm8sIG1jb250ZXh0KTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlc3RvcmVEZWZhdWx0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgaW5zdGFsbFNpZ25hbEhhbmRs
ZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCi17Ci0gICAgQVNTRVJU
KHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7Ci0gICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihzaWduYWwpXS5hZGQoV1RGTW92ZShoYW5kbGVyKSk7Ci0KLSAgICBzdGQ6OmNhbGxfb25j
ZShpbml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0sIFsmXSB7
Ci0gICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotICAgICAgICBhY3Rpb24uc2Ffc2ln
YWN0aW9uID0ganNjU2lnbmFsSGFuZGxlcjsKLSAgICAgICAgYXV0byByZXN1bHQgPSBzaWdmaWxs
c2V0KCZhY3Rpb24uc2FfbWFzayk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwot
ICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOwotICAgICAgICByZXN1bHQgPSBz
aWdhY3Rpb24odG9TeXN0ZW1TaWduYWwoc2lnbmFsKSwgJmFjdGlvbiwgJm9sZEFjdGlvbnNbc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1
bHQpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShQ
VEhSRUFEUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oIGIv
U291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAzYTFkMmU1ODA4ODFiYWU5MzM5ZTE2NzgxOGE3YjllZjFiODBmYzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBV
U0UoUFRIUkVBRFMpCi0KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWVudW0gY2xhc3MgU2lnbmFsIHsKLSAgICAvLyBV
c3Igd2lsbCBhbHdheXMgY2hhaW4gdG8gYW55IG5vbi1kZWZhdWx0IGhhbmRsZXIgaW5zdGFsbCBi
ZWZvcmUgdXMuIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93Ci0gICAgLy8gaWYgYSBzaWdu
YWwgd2FzIGludGVuZGVkIGV4Y2x1c2l2ZWx5IGZvciB1cy4KLSAgICBVc3IsCi0KLSAgICAvLyBU
aGVzZSBzaWduYWxzIHdpbGwgb25seSBjaGFpbiBpZiB3ZSBkb24ndCBoYXZlIGEgaGFuZGxlciB0
aGF0IGNhbiBwcm9jZXNzIHRoZW0uIElmIHRoZXJlIGlzIG5vdGhpbmcKLSAgICAvLyB0byBjaGFp
biB0byB3ZSByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgYW5kIGNyYXNoLgotICAgIFRyYXAs
Ci0gICAgSWxsLAotICAgIFNlZ1YsCi0gICAgQnVzLAotICAgIE51bWJlck9mU2lnbmFscywKLSAg
ICBVbmtub3duID0gTnVtYmVyT2ZTaWduYWxzCi19OwotCi1pbmxpbmUgaW50IHRvU3lzdGVtU2ln
bmFsKFNpZ25hbCBzaWduYWwpCi17Ci0gICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNp
Z25hbDo6U2VnVjogcmV0dXJuIFNJR1NFR1Y7Ci0gICAgY2FzZSBTaWduYWw6OkJ1czogcmV0dXJu
IFNJR0JVUzsKLSAgICBjYXNlIFNpZ25hbDo6SWxsOiByZXR1cm4gU0lHSUxMOwotICAgIGNhc2Ug
U2lnbmFsOjpVc3I6IHJldHVybiBTSUdVU1IyOwotICAgIGNhc2UgU2lnbmFsOjpUcmFwOiByZXR1
cm4gU0lHVFJBUDsKLSAgICBkZWZhdWx0OiBicmVhazsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotaW5saW5lIFNpZ25hbCBmcm9tU3lzdGVtU2lnbmFsKGlu
dCBzaWduYWwpCi17Ci0gICAgc3dpdGNoIChzaWduYWwpIHsKLSAgICBjYXNlIFNJR1NFR1Y6IHJl
dHVybiBTaWduYWw6OlNlZ1Y7Ci0gICAgY2FzZSBTSUdCVVM6IHJldHVybiBTaWduYWw6OkJ1czsK
LSAgICBjYXNlIFNJR0lMTDogcmV0dXJuIFNpZ25hbDo6SWxsOwotICAgIGNhc2UgU0lHVVNSMjog
cmV0dXJuIFNpZ25hbDo6VXNyOwotICAgIGNhc2UgU0lHVFJBUDogcmV0dXJuIFNpZ25hbDo6VHJh
cDsKLSAgICBkZWZhdWx0OiByZXR1cm4gU2lnbmFsOjpVbmtub3duOwotICAgIH0KLX0KLQotZW51
bSBjbGFzcyBTaWduYWxBY3Rpb24gewotICAgIEhhbmRsZWQsCi0gICAgTm90SGFuZGxlZCwKLSAg
ICBGb3JjZURlZmF1bHQKLX07Ci0KLXVzaW5nIFNpZ25hbEhhbmRsZXIgPSBGdW5jdGlvbjxTaWdu
YWxBY3Rpb24oaW50LCBzaWdpbmZvX3QqLCB2b2lkKik+OwotCi0vLyBDYWxsIHRoaXMgbWV0aG9k
IHdoZW5ldmVyIHlvdSB3YW50IHRvIGluc3RhbGwgYSBzaWduYWwgaGFuZGxlci4gSXQncyBvayB0
byBjYWxsIHRoaXMgZnVuY3Rpb24gbGF6aWx5LgotLy8gTm90ZTogWW91ciBzaWduYWwgaGFuZGxl
ciB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBoYW5kbGVyIGZvciB0aGUgZGVzaXJlZCBz
aWduYWwgaXMgY2FsbGVkLgotLy8gVGh1cyBpdCBpcyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGRp
c2Nlcm4gaWYgdGhlIHNpZ25hbCBmaXJlZCB3YXMgeW91cnMuCi0vLyBUaGlzIGZ1bmN0aW9uIGlz
IGN1cnJlbnRseSBhIG9uZSB3YXkgc3RyZWV0IGkuZS4gb25jZSBpbnN0YWxsZWQsIGEgc2lnbmFs
IGhhbmRsZXIgY2Fubm90IGJlIHVuaW5zdGFsbGVkLgotdm9pZCBpbnN0YWxsU2lnbmFsSGFuZGxl
cihTaWduYWwsIFNpZ25hbEhhbmRsZXImJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2lu
ZyBXVEY6OlNpZ25hbDsKLXVzaW5nIFdURjo6dG9TeXN0ZW1TaWduYWw7Ci11c2luZyBXVEY6OmZy
b21TeXN0ZW1TaWduYWw7Ci11c2luZyBXVEY6OlNpZ25hbEFjdGlvbjsKLXVzaW5nIFdURjo6aW5z
dGFsbFNpZ25hbEhhbmRsZXI7Ci0KLSNlbmRpZiAvLyBVU0UoUFRIUkVBRFMpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTVmZjdlZGU1NGY0Mzlk
Yzc3NDJkZmU4Y2EyNGQ0NjU0MGNmYWM4YS4uYTFjMTZkNGY5ODdjNTIzOWI0NWYyOGZjN2U0MjJm
OTNmY2MyOGUwNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA0LTIxICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE1
NjIwIGFuZCByMjE1NjIzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxMTM5CisKKyAgICAgICAgYnJva2UgYXJtNjQgYnVpbGQgKFJlcXVlc3RlZCBi
eSBrZWl0aF9taWxsZXIgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0
czoKKworICAgICAgICAiQWRkIHNpZ25hbGluZyBBUEkiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA5NzYKKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjE1NjIwCisKKyAgICAgICAgIlVucmV2aWV3ZWQsIGZpeCBDbG9v
cCBidWlsZC4iCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNTYy
MworCiAyMDE3LTA0LTIwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBzaWduYWxpbmcgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYz
NzhiNmRhMDEyYTY3NmYwZjE0YThiZWRiODdlNWZlZDI2MjJhZDguLjBkODViMmI0OGNmNWNjODM1
Zjg3ZDY2OTgxNTZkYzczMWU0ZGI0NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzQs
NyArMTc0LDYgQEAKIAkJNTJCOENGOTgxNTg2OEQ5MTAwMjgxMDUzIC8qIFNldERvY3VtZW50VVJJ
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJCOENGOTQxNTg2OENGMDAwMjgxMDUzIC8qIFNldERvY3VtZW50VVJJLmh0bWwgKi87IH07
CiAJCTUyRDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0
aEZpbHRlcmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MkQ2NzNFQzFBRkIxMjY4MDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdp
dGhGaWx0ZXJpbmcuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIxRUFCMDAzQjJCRDggLyogUGFy
ZW50RnJhbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUu
Y3BwICovOyB9OwotCQk1MzExQkQ1RTFFQTk0OTBFMDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJE
NUQxRUE5NDkwRDAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCAqLzsgfTsKIAkJNTMxQzFE
OEUxREY4RUY3MjAwNkU5NzlGIC8qIExFQkRlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxQzFEOEQxREY4RUY3MjAwNkU5NzlGIC8qIExF
QkRlY29kZXIuY3BwICovOyB9OwogCQk1MzY3NzAzNDFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2Ny
aXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0
RGVzY3JpcHRpb24ubW0gKi87IH07CiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwpAQCAtMTExNyw3ICsxMTE2LDYgQEAK
IAkJNTJENjczRUMxQUZCMTI2ODAwRkExOUZFIC8qIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRo
RmlsdGVyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFn
ZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFNUNFNDgxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVu
dEZyYW1lX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YXJlbnRGcmFtZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzEx
QkQ1RDFFQTk0OTBEMDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkTWVzc2FnZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzFDMUQ4RDFERjhFRjcyMDA2RTk3OUYgLyogTEVCRGVjb2Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMRUJEZWNvZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM2NzcwMzMxQ0M4MDIyODAwRDQyNUIxIC8q
IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2ViU2Ny
aXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxNzksNyArMjE3Nyw2IEBACiAJCQkJN0M3NEQ0MkQxODgyMjhGMzAwRTVFRDU3IC8qIFN0cmlu
Z1ZpZXcuY3BwICovLAogCQkJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6
ZWRGaXhlZFF1ZXVlLmNwcCAqLywKIAkJCQk5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4
dEJyZWFrSXRlcmF0b3IuY3BwICovLAotCQkJCTUzMTFCRDVEMUVBOTQ5MEQwMDUyNTI4MSAvKiBU
aHJlYWRNZXNzYWdlcy5jcHAgKi8sCiAJCQkJMEYyQzIwQjcxRENENTQ0ODAwNTQyRDlFIC8qIFRp
bWUuY3BwICovLAogCQkJCTVDNUU2MzNEMUQwQjY3OTQwMDg1QTAyNSAvKiBVbmlxdWVSZWYuY3Bw
ICovLAogCQkJCTdDRDBENUFBMUQ1NTM0REUwMDBDQzlFMSAvKiBWYXJpYW50LmNwcCAqLywKQEAg
LTI3MDAsNyArMjY5Nyw2IEBACiAJCQkJN0M4M0RFRTAxRDBBNTkwQzAwRkVCQ0YzIC8qIEludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxQzFEOEUxREY4
RUY3MjAwNkU5NzlGIC8qIExFQkRlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
RTgxRDBBNTkwQzAwRkVCQ0YzIC8qIExpc3RIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTUzMTFCRDVFMUVBOTQ5MEUwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREYxRDFEMEE1OTBDMDBGRUJDRjMgLyogTG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREVFRDFEMEE1OTBDMDBGRUJDRjMgLyogTWF0aEV4dHJhcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhy
ZWFkTWVzc2FnZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVz
c2FnZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWEyNzczZjIzNDFhYzlh
MzZkNWI0ZDQ1NWE3MzM2YmQwZjViNjQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3Nh
Z2VzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0jaW5jbHVkZSA8d3Rm
L0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkTWVzc2FnZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9TaWduYWxzLmg+Ci0KLXN0YXRpYyB2b2lkIHJ1blRo
cmVhZE1lc3NhZ2VUZXN0KHVuc2lnbmVkIG51bVNlbmRlcnMsIHVuc2lnbmVkIG51bU1lc3NhZ2Vz
KQotewotICAgIGJvb2wgcmVjZWl2ZXJTaG91bGRLZWVwUnVubmluZyA9IHRydWU7Ci0gICAgZGF0
YUxvZ0xuKCJzdGFydGluZyIpOwotICAgIFJlZlB0cjxUaHJlYWQ+IHJlY2VpdmVyVGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIlRocmVhZE1lc3NhZ2UgcmVjZWl2ZXIiLCBbJnJlY2VpdmVyU2hvdWxk
S2VlcFJ1bm5pbmddICgpIHsKLSAgICAgICAgd2hpbGUgKHJlY2VpdmVyU2hvdWxkS2VlcFJ1bm5p
bmcpIHsgfQotICAgIH0pOwotICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVyVGhyZWFkKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8VGhyZWFkPj4gc2VuZGVyVGhyZWFkcyhudW1TZW5kZXJzKTsKLSAgICBW
ZWN0b3I8dW5zaWduZWQ+IG1lc3NhZ2VzUnVuKG51bVNlbmRlcnMpOwotICAgIFZlY3Rvcjx1bnNp
Z25lZD4gaGFuZGxlcnNSdW4obnVtU2VuZGVycyk7Ci0gICAgbWVzc2FnZXNSdW4uZmlsbCgwKTsK
LSAgICBoYW5kbGVyc1J1bi5maWxsKDApOwotCi0gICAgZm9yICh1bnNpZ25lZCBzZW5kZXJJRCA9
IDA7IHNlbmRlcklEIDwgbnVtU2VuZGVyczsgKytzZW5kZXJJRCkgewotICAgICAgICBzZW5kZXJU
aHJlYWRzW3NlbmRlcklEXSA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRNZXNzYWdlIHNlbmRlciIs
IFtzZW5kZXJJRCwgbnVtTWVzc2FnZXMsIHJlY2VpdmVyVGhyZWFkLCAmbWVzc2FnZXNSdW4sICZo
YW5kbGVyc1J1bl0gKCkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bU1lc3NhZ2VzOyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNlbmRNZXNz
YWdlKCpyZWNlaXZlclRocmVhZC5nZXQoKSwgW3NlbmRlcklELCAmaGFuZGxlcnNSdW5dIChzaWdp
bmZvX3QqLCB1Y29udGV4dF90KikgewotICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1J1bltz
ZW5kZXJJRF0rKzsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShyZXN1bHQgPT0gV1RGOjpNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuKTsKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlc1J1bltzZW5kZXJJRF0rKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHNlbmRlclRocmVhZHNbc2VuZGVySURdKTsKLSAgICB9
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU2VuZGVyczsgKytpKQotICAgICAg
ICBzZW5kZXJUaHJlYWRzW2ldLT53YWl0Rm9yQ29tcGxldGlvbigpOwotCi0gICAgcmVjZWl2ZXJT
aG91bGRLZWVwUnVubmluZyA9IGZhbHNlOwotICAgIHJlY2VpdmVyVGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVNlbmRlcnM7ICsr
aSkgewotICAgICAgICBFWFBFQ1RfRVEobnVtTWVzc2FnZXMsIG1lc3NhZ2VzUnVuW2ldKTsKLSAg
ICAgICAgRVhQRUNUX0VRKG51bU1lc3NhZ2VzLCBoYW5kbGVyc1J1bltpXSk7Ci0gICAgfQotfQot
Ci1URVNUKFRocmVhZE1lc3NhZ2UsIEJhc2ljKQotewotICAgIHJ1blRocmVhZE1lc3NhZ2VUZXN0
KDEsIDEpOwotICAgIHJ1blRocmVhZE1lc3NhZ2VUZXN0KDEsIDEwMCk7Ci19Ci0KLVRFU1QoVGhy
ZWFkTWVzc2FnZSwgTXVsdGlwbGVTZW5kZXJzKQotewotICAgIHJ1blRocmVhZE1lc3NhZ2VUZXN0
KDEwLCAxKTsKLSAgICBydW5UaHJlYWRNZXNzYWdlVGVzdCgxMCwgMTAwKTsKLSAgICBydW5UaHJl
YWRNZXNzYWdlVGVzdCgxMCwgMTAwMDApOwotfQotCi1jbGFzcyBSZWZsZWN0ZWRUaHJlYWQgOiBw
dWJsaWMgVGhyZWFkIHsKLXB1YmxpYzoKLSAgICB1c2luZyBUaHJlYWQ6Om1fbXV0ZXg7Ci0gICAg
dXNpbmcgVGhyZWFkOjptX2hhbmRsZTsKLSAgICB1c2luZyBUaHJlYWQ6Omhhc0V4aXRlZDsKLX07
Ci0KLVRFU1QoVGhyZWFkTWVzc2FnZSwgU2lnbmFsc1dvcmtPbkV4aXQpCi17Ci0gICAgc3RhdGlj
IGJvb2wgaGFuZGxlclJhbiA9IGZhbHNlOwotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25h
bDo6VXNyLCBbXSAoaW50LCBzaWdpbmZvX3QqLCB2b2lkKikgLT4gU2lnbmFsQWN0aW9uIHsKLSAg
ICAgICAgZGF0YUxvZ0xuKCJoZXJlIik7Ci0gICAgICAgIGhhbmRsZXJSYW4gPSB0cnVlOwotICAg
ICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwotICAgIH0pOwotCi0gICAgYm9vbCBy
ZWNlaXZlclNob3VsZEtlZXBSdW5uaW5nID0gdHJ1ZTsKLSAgICBSZWZQdHI8VGhyZWFkPiByZWNl
aXZlclRocmVhZCA9IChUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFkTWVzc2FnZSByZWNlaXZlciIsCi0g
ICAgICAgIFsmcmVjZWl2ZXJTaG91bGRLZWVwUnVubmluZ10gKCkgewotICAgICAgICAgICAgd2hp
bGUgKHJlY2VpdmVyU2hvdWxkS2VlcFJ1bm5pbmcpIHsgfQotICAgIH0pKTsKLSAgICBBU1NFUlRf
VFJVRShyZWNlaXZlclRocmVhZCk7Ci0KLSAgICBib29sIHNpZ25hbEZpcmVkOwotICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIoc3RhdGljX2Nhc3Q8UmVm
bGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0KCkpLT5tX211dGV4KTsKLSAgICAgICAg
cmVjZWl2ZXJTaG91bGRLZWVwUnVubmluZyA9IGZhbHNlOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0KCkpLT5oYXNF
eGl0ZWQoKSk7Ci0gICAgICAgIHNsZWVwKDEpOwotICAgICAgICBzaWduYWxGaXJlZCA9ICFwdGhy
ZWFkX2tpbGwoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0
KCkpLT5tX2hhbmRsZSwgdG9TeXN0ZW1TaWduYWwoU2lnbmFsOjpVc3IpKTsKLSAgICB9Ci0KLSAg
ICByZWNlaXZlclRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKLSAgICBFWFBFQ1RfVFJVRSho
YW5kbGVyUmFuIHx8ICFzaWduYWxGaXJlZCk7Ci19Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>