<?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>168925</bug_id>
          
          <creation_ts>2017-02-27 13:07:33 -0800</creation_ts>
          <short_desc>REGRESSION(r213019): &quot;It broke 32-bit jsc tests in debug builds&quot; (Requested by saamyjoon on #webkit).</short_desc>
          <delta_ts>2017-02-27 13:10:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162124</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281492</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-27 13:07:33 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/213019 broke the build:
&quot;It broke 32-bit jsc tests in debug builds&quot; (Requested by saamyjoon 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>1281494</commentid>
    <comment_count>1</comment_count>
      <attachid>302866</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-27 13:07:56 -0800</bug_when>
    <thetext>Created attachment 302866
ROLLOUT of r213019

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>1281496</commentid>
    <comment_count>2</comment_count>
      <attachid>302866</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-27 13:10:31 -0800</bug_when>
    <thetext>Comment on attachment 302866
ROLLOUT of r213019

Clearing flags on attachment: 302866

Committed r213088: &lt;http://trac.webkit.org/changeset/213088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281497</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-27 13:10:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302866</attachid>
            <date>2017-02-27 13:07:56 -0800</date>
            <delta_ts>2017-02-27 13:10:31 -0800</delta_ts>
            <desc>ROLLOUT of r213019</desc>
            <filename>bug-168925-20170227160501.patch</filename>
            <type>text/plain</type>
            <size>67589</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTFjNTY1MmVmYTRmMzRmYmVjMThlOTk0NWM3NzJiNGJkOTgwN2Y5Li4zYzJhYTgzZTRlMjFjNGFi
YjFmM2M0NzBkZmNhOWQ5MDc0NmJmZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wMi0yNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMzAxOS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODkyNQorCisgICAg
ICAgICJJdCBicm9rZSAzMi1iaXQganNjIHRlc3RzIGluIGRlYnVnIGJ1aWxkcyIgKFJlcXVlc3Rl
ZCBieQorICAgICAgICBzYWFteWpvb24gb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgorCisgICAgICAgICJvcF9nZXRfYnlfaWRfd2l0aF90aGlzIHNob3VsZCB1c2Ug
aW5saW5lIGNhY2hpbmciCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjIxMjQKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MjEzMDE5CisKIDIwMTctMDItMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkFzc2VtYmx5OiBtaXNjZWxsYW5lb3VzIHNwZWMgZml4ZXMgcGFydCBkZXV4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
N2M1NjE3YWViYTNkYmZmNmU4MjMyMTk2ODUyMzFlMjI3OTgwNDg3Zi4uNjU4ZWEwZjFlYTRkMzU5
NzAwZGE4OTJmNWEwMGZlNmFmNDg3YTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDE4LDcgKzQxOCw2IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSAqc3RhdGUuaWRlbnQ7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzID0gc3RhdGUudmFsdWVSZWdzOwogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGUuYmFzZUdQ
UjsKLSAgICBHUFJSZWcgdGhpc0dQUiA9IHN0YXRlLnRoaXNHUFIgIT0gSW52YWxpZEdQUlJlZyA/
IHN0YXRlLnRoaXNHUFIgOiBiYXNlR1BSOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGUu
c2NyYXRjaEdQUjsKIAogICAgIEFTU0VSVChtX2NvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJl
VmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKTsKQEAgLTY2Niw3ICs2
NjUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSLCBjYWxsZWVGcmFtZS53
aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikpKTsKIAog
ICAgICAgICAgICAgaml0LnN0b3JlQ2VsbCgKLSAgICAgICAgICAgICAgICB0aGlzR1BSLAorICAg
ICAgICAgICAgICAgIGJhc2VHUFIsCiAgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWUud2l0aE9m
ZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwKS5vZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikpKTsKIAogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBTZXR0ZXIpIHsKQEAgLTcyNiwz
MSArNzI1LDI4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAvLyB0byBtYWtlIHNvbWUgc3BhY2UgaGVyZS4K
ICAgICAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKIAotICAgICAgICAg
ICAgLy8gQ2hlY2sgaWYgaXQgaXMgYSBzdXBlciBhY2Nlc3MKLSAgICAgICAgICAgIEdQUlJlZyBi
YXNlRm9yQ3VzdG9tR2V0R1BSID0gYmFzZUdQUiAhPSB0aGlzR1BSID8gdGhpc0dQUiA6IGJhc2VG
b3JHZXRHUFI7Ci0KICAgICAgICAgICAgIC8vIGdldHRlcjogRW5jb2RlZEpTVmFsdWUgKCpHZXRW
YWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKICAgICAgICAgICAgIC8vIHNldHRlcjogdm9pZCAoKlB1dFZhbHVlRnVuYykoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpOwog
ICAgICAgICAgICAgLy8gQ3VzdG9tIHZhbHVlcyBhcmUgcGFzc2VkIHRoZSBzbG90QmFzZSAodGhl
IHByb3BlcnR5IGhvbGRlciksIGN1c3RvbSBhY2Nlc3NvcnMgYXJlIHBhc3NlZCB0aGUgdGhpc1Zh
dWxlIChyZWNpZXZlcikuCiAgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGlmZmVy
ZW5jZXMgaW4gY3VzdG9tIHZhbHVlcyBhbmQgY3VzdG9tIGFjY2Vzc29ycy4KICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMTQKLSAgICAg
ICAgICAgIEdQUlJlZyBiYXNlRm9yQ3VzdG9tID0gbV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVy
IHx8IG1fdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciA/IGJhc2VGb3JBY2Nlc3NHUFIgOiBiYXNl
Rm9yQ3VzdG9tR2V0R1BSOyAKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlRm9yQ3VzdG9tVmFsdWUg
PSBtX3R5cGUgPT0gQ3VzdG9tVmFsdWVHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbVZhbHVlU2V0
dGVyID8gYmFzZUZvckFjY2Vzc0dQUiA6IGJhc2VGb3JHZXRHUFI7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gQ3VzdG9tVmFsdWVHZXR0ZXIgfHwgbV90eXBl
ID09IEN1c3RvbUFjY2Vzc29yR2V0dGVyKSB7CiAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgYmFzZUZvckN1c3RvbSwK
KyAgICAgICAgICAgICAgICAgICAgYmFzZUZvckN1c3RvbVZhbHVlLAogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnQuaW1wbCgpKSk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGJhc2VGb3JDdXN0b20sIHZhbHVlUmVncy5ncHIoKSk7CisgICAgICAgICAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlRm9yQ3VzdG9tVmFsdWUsIHZhbHVlUmVn
cy5ncHIoKSk7CiAjZWxzZQogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdl
dHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JHZXR0ZXIpIHsKICAgICAgICAgICAgICAg
ICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKAotICAgICAgICAgICAgICAgICAgICBF
QUJJXzMyQklUX0RVTU1ZX0FSRyBiYXNlRm9yQ3VzdG9tLAorICAgICAgICAgICAgICAgICAgICBF
QUJJXzMyQklUX0RVTU1ZX0FSRyBiYXNlRm9yQ3VzdG9tVmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnQuaW1wbCgpKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICAgICAgICAgIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGJhc2VGb3JDdXN0b20sCisgICAgICAgICAgICAgICAgICAgIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGJhc2VGb3JDdXN0b21WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksCiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIHZhbHVlUmVncy50YWdHUFIoKSk7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAppbmRleCAwY2E5Y2YxODVhNDU2NzBiMDU4YzRiMDNkOTA1ODg4MDg1ZGVkOTEyLi40YTdj
MzA5ZTIxYTIyYjRjMmE5N2U0MDEzZGVjOGIwNWJjZWM2ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTM0Mywx
NCArMzQzLDExIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUoCiAgICAgc3RhdGUuaWRlbnQgPSAmaWRlbnQ7CiAgICAgCiAgICAgc3RhdGUuYmFz
ZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7Ci0gICAg
c3RhdGUudGhpc0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudGhpc0dQ
Uik7CiAgICAgc3RhdGUudmFsdWVSZWdzID0gc3R1YkluZm8udmFsdWVSZWdzKCk7CiAKICAgICBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdp
c3RlcnMpOwogICAgIHN0YXRlLmFsbG9jYXRvciA9ICZhbGxvY2F0b3I7CiAgICAgYWxsb2NhdG9y
LmxvY2soc3RhdGUuYmFzZUdQUik7Ci0gICAgaWYgKHN0YXRlLnRoaXNHUFIgIT0gSW52YWxpZEdQ
UlJlZykKLSAgICAgICAgYWxsb2NhdG9yLmxvY2soc3RhdGUudGhpc0dQUik7CiAgICAgYWxsb2Nh
dG9yLmxvY2soc3RhdGUudmFsdWVSZWdzKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGFs
bG9jYXRvci5sb2NrKHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZVRhZ0dQ
UikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuaAppbmRleCBiMjVjZGQ0ZTYwYzgzODJmNzA3YTIxYTcwZTJmMTNhNGVjMDFiNTZjLi5k
MTg1MmM3YjU0NTNkMWUxZTU1NDA5YTJiYTBlNGI4ZjhhZDhlODlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTkyLDcg
KzE5Miw2IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBmYWlsQW5kUmVwYXRjaDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgZmFpbEFuZElnbm9yZTsKICAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsK
LSAgICBHUFJSZWcgdGhpc0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3M7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCAxZGIxM2FjMjc3ZDM1Y2JhYzM1
OGVhN2MzY2I5YWY5MTRhYmRhN2E4Li43MGI3NjdjNTc3Mzg1OWRhYzIwMzhjNDkxNTlhYTA1Mzhk
ZTI4MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKQEAgLTIyMiw5ICsyMjIsNiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJ
bmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKICAgICAgICAgcmVzZXRHZXRCeUlEKGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5SURLaW5kOjpO
b3JtYWwpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFdpdGhUaGlz
OgotICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlJREtpbmQ6Oldp
dGhUaGlzKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXQ6CiAgICAg
ICAgIHJlc2V0UHV0QnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmlu
ZGV4IDlhNTEyMWQ5YWI4YTZhNzY5YzUyNTFjODI0ZWNjMmU2OWFkZjM3ODkuLmIwOTFlMjE1N2E2
NDMxMjZjYWIwZjdkZWM0ZWM4OTFmNjBlYzE3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNs
YXNzIFBvbHltb3JwaGljQWNjZXNzOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Qg
ewogICAgIEdldCwKLSAgICBHZXRXaXRoVGhpcywKICAgICBUcnlHZXQsCiAgICAgUHV0LAogICAg
IEluCkBAIC0xNzgsMTEgKzE3Nyw5IEBAIHB1YmxpYzoKIAogICAgICAgICBpbnQ4X3QgYmFzZUdQ
UjsKICAgICAgICAgaW50OF90IHZhbHVlR1BSOwotICAgICAgICBpbnQ4X3QgdGhpc0dQUjsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBpbnQ4X3QgdmFsdWVUYWdHUFI7CiAgICAgICAg
IGludDhfdCBiYXNlVGFnR1BSOwotICAgICAgICBpbnQ4X3QgdGhpc1RhZ0dQUjsKICNlbmRpZgog
ICAgIH0gcGF0Y2g7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCmluZGV4IDQzOGQ2YzE5Njg1YWRkMmQ2N2RjM2I0Yjc0OGNkMTA2N2I0ZjljOGYuLjNjZTY0
OTQ4NGZhN2NiOTgwYTM2ZmU1ZTg3NGMwMWYyMGJmMDFiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTI1MCwxNCArMTI1MCw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY2FzZSBHZXRC
eUlkV2l0aFRoaXM6IHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlQ2VsbCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAKICAgICAgICAgY2FzZSBQdXRCeUlk
OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKQEAgLTE4ODUsNiArMTg3Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAg
IGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAg
ICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggMTVmOTAwNmM3MzQxODBkYTg0ZTE5ZmVhMTVmODcx
N2ExMDg3NmVmMS4uZGI1ZTUyNWZmZGFhOTU3Y2RhZTBjNzdkZDk5MjhjMzEzYzY1YTdlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI1Myw4
ICsyNTMsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dldEJ5SWRzLnNpemUoKTsgaS0tOykKICAgICAg
ICAgbV9nZXRCeUlkc1tpXS5maW5hbGl6ZShsaW5rQnVmZmVyKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2dldEJ5SWRzV2l0aFRoaXMuc2l6ZSgpOyBpLS07KQotICAgICAgICBtX2dldEJ5SWRz
V2l0aFRoaXNbaV0uZmluYWxpemUobGlua0J1ZmZlcik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9wdXRCeUlkcy5zaXplKCk7IGktLTspCiAgICAgICAgIG1fcHV0QnlJZHNbaV0uZmluYWxpemUo
bGlua0J1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAppbmRleCA0MjVkZmNkOGI4YmVkYTY3Zjg5NGZkYzEzMjZiZGIxZWQ5ZjU1Mzc4Li5kODY4MDEy
ZjhkZjMwMGZjNjBjMGI1MzUzMDUwODY0NzFlNDQxZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xOTcsMTEgKzE5Nyw2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRHZW5l
cmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhZGRHZXRCeUlk
V2l0aFRoaXMoY29uc3QgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRo
R2VuZXJhdG9yKiBzbG93UGF0aCkKLSAgICB7Ci0gICAgICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5h
cHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4oZ2Vu
LCBzbG93UGF0aCkpOwotICAgIH0KLSAgICAKICAgICB2b2lkIGFkZFB1dEJ5SWQoY29uc3QgSklU
UHV0QnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCiAgICAg
ewogICAgICAgICBtX3B1dEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJ
ZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwpAQCAtMzQ0LDcgKzMzOSw2IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICAKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRH
ZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzOwotICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAg
IFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fcHV0
QnlJZHM7CiAgICAgVmVjdG9yPEluUmVjb3JkLCA0PiBtX2luczsKICAgICBWZWN0b3I8SlNDYWxs
UmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGY1ODM3ZDY0YmYxZjI0YWI3M2Q1MTNkMjEwZGM1MDBi
MmY2ODNlZjYuLjE5NTRjZjQ2NzhjMDRkODViZWJlNWQ1NThiNWIyNTM2NmUwYmJjYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0x
MDYzLDExICsxMDYzLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8
aW50OF90PihiYXNlR1BSKTsKICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9
IHN0YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5w
YXRjaC50aGlzR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BS
ID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlVGFnR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVn
KTsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC50aGlzVGFnR1BSID0gc3RhdGljX2Nhc3Q8
aW50OF90PihJbnZhbGlkR1BSUmVnKTsKICNlbmRpZgogICAgICAgICAgICAgc3R1YkluZm8tPnBh
dGNoLnVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAxY2E3ZWMyYzg0N2Q3YTNmOTk5
NDQ1Nzc2YWQ4M2RjNzc1MzhjMWIxLi4yMjZlZTMxNzdkNGU5MjNiZTAyMDcyZmEwZTYwNjlhYWVj
MDlmMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCkBAIC03NzAsMTEgKzc3MCw5IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBO
ZWVkVG9TcGlsbCwgQWNjZXNzVHlwZSA9IEFjY2Vzc1R5cGU6OkdldCk7CiAgICAgdm9pZCBjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0
ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRH
UFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFn
R1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVn
aXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0KTsK
ICAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
LCBHUFJSZWcgdmFsdWVUYWdHUFIsIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJz
TW9kZSA9IE5lZWRUb1NwaWxsKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBH
UFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVz
dWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6
Okp1bXBMaXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUq
KTsKQEAgLTE1NjMsMTEgKzE1NjEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3Rl
ZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0
cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKQEAgLTIxMzMsMjYgKzIxMjYsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU1ZhbHVlUmVncyBhcmcx
LCBKU1ZhbHVlUmVncyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQotICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1Yklu
Zm8pLCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCks
IGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRh
Z0dQUigpKTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2Fk
LCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcp
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCBy
ZXN1bHQudGFnR1BSKCkpOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBhcmcx
UGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBh
eWxvYWQsIFRydXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQ
UigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgaW50MzJfdCBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQsIGludDMyX3QgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3Rl
ZEltbTMyKGFyZzFUYWcpLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzJUYWcpLCBUcnVz
dGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7Ci0gICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9w
ZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRy
KHVpZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKaW5kZXggNGE2ZGNiMTk0Y2YwMjgyZjUxZTA4NDBkYzI0ODEzODc5NGU1
NmIwOS4uZDkxZGRkNDZhYjYyMjVjMGJhOTk2MGMyNTZmN2E3ZjczMDYxMDI5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CkBAIC0yMzAsNDUgKzIzMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCi0gICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
LCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0
VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwKLSAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhUYXJnZXQpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKLSAgICAKLSAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwotICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRl
bnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwg
YmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiks
IEFjY2Vzc1R5cGU6OkdldFdpdGhUaGlzKTsKLSAgICAKLSAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAg
ICBpZiAoIXNsb3dQYXRoVGFyZ2V0LmVtcHR5KCkpCi0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
c2xvd1BhdGhUYXJnZXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Ci0g
ICAgaWYgKGJhc2VUYWdHUFJPck5vbmUgPT0gSW52YWxpZEdQUlJlZyAmJiB0aGlzVGFnR1BSID09
IEludmFsaWRHUFJSZWcpIHsKLSAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
LAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
KSwgZ2VuLnN0dWJJbmZvKCksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihKU1Zh
bHVlOjpDZWxsVGFnKSwgYmFzZVBheWxvYWRHUFIsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQzMl90PihKU1ZhbHVlOjpDZWxsVGFnKSwgdGhpc1BheWxvYWRHUFIsCi0gICAgICAgICAgICBp
ZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBB
U1NFUlQoYmFzZVRhZ0dQUk9yTm9uZSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNTRVJU
KHRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIAotICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFz
ZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0
aGlzUGF5bG9hZEdQUiksIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwotICAgIH0K
LQotICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKLSAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7Ci19Ci0KIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyB2YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVlUGF5bG9hZEdQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQg
cHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMt
PnVzZWRSZWdpc3RlcnMoKTsKQEAgLTQzMzAsNDIgKzQyOTEsMjEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOiB7Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSAm
JiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKLSAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgdGhpc0dQ
UiA9IHRoaXNWYWx1ZS5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBy
ZXN1bHRUYWcuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJl
c3VsdFBheWxvYWQuZ3ByKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJhc2VHUFIs
IEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwg
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdFBheWxvYWQodGhpcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyBiYXNl
VGFnR1BSID0gYmFzZS50YWdHUFIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiA9IGJhc2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIHRoaXNUYWdHUFIgPSB0
aGlzVmFsdWUudGFnR1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgdGhpc1BheWxvYWRHUFIgPSB0
aGlzVmFsdWUucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9
IHJlc3VsdFRhZy5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0g
cmVzdWx0UGF5bG9hZC5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IG5vdENlbGxMaXN0OwotICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpKTsKLSAgICAgICAgICAg
IG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwodGhpc1ZhbHVlLmpzVmFs
dWVSZWdzKCkpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhU
aGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHRo
aXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIs
IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbExpc3QpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwg
bm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLSAgICAgICAgfQotICAgICAgICAK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBK
U1ZhbHVlUmVncyB0aGlzUmVncyA9IHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpOworCisgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CisgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRQ
YXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRh
Z0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywgSlNWYWx1ZVJlZ3Mo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAyMzZj
OGM4YmNjYTFkNGNlNGQxYmU1Njc1MmE0ZDVmNDFjODNjZmQ5Li44NDhmYTRhMTA3MzBkZjQzZDIy
ZDdjMDA3MTY3Nzk0NzhiZWNhODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE4OCwzNCArMTg4LDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dQYXRoVGFyZ2V0KQotewotICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2pp
dC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVk
ZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7Ci0gICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKLSAgICAvLyBXZSd2ZSBhbHJlYWR5IGZs
dXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVz
ZS4KLSAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7Ci0gICAgdXNlZFJlZ2lz
dGVycy5zZXQodGhpc0dQUiwgZmFsc2UpOwotICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQ
UiwgZmFsc2UpOwotICAgIAotICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIp
LCBBY2Nlc3NUeXBlOjpHZXRXaXRoVGhpcyk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9q
aXQpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgaWYg
KCFzbG93UGF0aFRhcmdldC5lbXB0eSgpKQotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQ
YXRoVGFyZ2V0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0g
ICAgCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKLSAgICAgICAgRG9udFNw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVz
dWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllclVJRChp
ZGVudGlmaWVyTnVtYmVyKSk7Ci0gICAgCi0gICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdl
biwgc2xvd1BhdGguZ2V0KCkpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xv
d1BhdGgpKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0
ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwg
bV9zdHJlYW0tPnNpemUoKSk7CkBAIC00MzM4LDQxICs0MzEwLDE5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIEdldEJ5SWRXaXRo
VGhpczogewotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2Ug
JiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIEdQ
UlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCgpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNW
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVl
R1BSID0gdGhpc1ZhbHVlLmdwcigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgbm90
Q2VsbExpc3Q7Ci0gICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7Ci0gICAgICAgICAgICBub3RDZWxsTGlzdC5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbExpc3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRo
aXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVH
UFIgPSB0aGlzVmFsdWUuZ3ByKCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzLCByZXN1bHRHUFIsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDVhYThlNWQwNzZkZGExODk2ZjRkMTFiN2M5MzIwNTAzYThl
OGRmYTAuLjJlNzMzZTA1ZGY5ZjU3OTdiMjQ2OGMzYjE3MDMzNzk3NWQ0YTUwZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTI4NjcsNDAg
KzI4NjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZUdldEJ5SWRXaXRoVGhpcygp
CiAgICAgewotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVz
ZSAmJiBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQotICAgICAgICAgICAg
c2V0SlNWYWx1ZShnZXRCeUlkV2l0aFRoaXMobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93
Q2VsbChtX25vZGUtPmNoaWxkMigpKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBiYXNlQ2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgdGhpc1ZhbHVlQ2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgICAgIGlzQ2VsbChiYXNlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGJhc2VDZWxsQ2FzZSksIHVuc3VyZShub3RDZWxsQ2FzZSkpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJhc2VD
ZWxsQ2FzZSwgdGhpc1ZhbHVlQ2VsbENhc2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgaXNDZWxsKHRoaXNWYWx1ZSwgcHJvdmVuVHlw
ZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZSh0aGlzVmFsdWVDZWxsQ2FzZSksIHVuc3VyZShu
b3RDZWxsQ2FzZSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyh0
aGlzVmFsdWVDZWxsQ2FzZSwgbm90Q2VsbENhc2UpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZXRCeUlkV2l0aFRoaXMoYmFzZSwgdGhpc1Zh
bHVlKSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCi0g
ICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXMpLAotICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsCi0g
ICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21f
bm9kZS0+aWRlbnRpZmllck51bWJlcigpXSkpKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJ
bnQ2NCwgY2VsbFJlc3VsdCwgbm90Q2VsbFJlc3VsdCkpOwotICAgICAgICB9Ci0gICAgICAgIAor
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlJZFdpdGhUaGlzKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgbV9vdXQu
Y29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJl
cigpXSkpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxXaXRoVGhpcygpCkBAIC04MTA3LDcgKzgwNzcsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFz
ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJlc3Vs
dEdQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudGhpc0dQUiA9
IHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlBhdGNo
YWJsZUp1bXAganVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CkBAIC05NzkxLDc0ICs5NzYwLDYg
QEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICB9Ci0gICAgCi0g
ICAgTFZhbHVlIGdldEJ5SWRXaXRoVGhpcyhMVmFsdWUgYmFzZSwgTFZhbHVlIHRoaXNWYWx1ZSkK
LSAgICB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJl
cigpXTsKLQotICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQu
cGF0Y2hwb2ludChJbnQ2NCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cihiYXNlKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1
ZSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKLQotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRF
eGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9Ci0gICAgICAgICAgICBwcmVwYXJlUGF0
Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7Ci0KLSAgICAgICAgU3RhdGUqIHN0YXRl
ID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAg
ICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotCi0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNv
bW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJh
dGlvbiBjYWxscy4KLSAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4g
ZXhjZXB0aW9ucyA9Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKLQotICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGV4aXQgZm9yIGNhbGwgSUMncyBjcmVhdGVkIGJ5IHRoZSBnZXRCeUlkIGZv
ciBnZXR0ZXJzLiBXZSBkb24ndCBoYXZlCi0gICAgICAgICAgICAgICAgLy8gdG8gZG8gYW55dGhp
bmcgd2VpcmQgb3RoZXIgdGhhbiBjYWxsIHRoaXMsIHNpbmNlIGl0IHdpbGwgYXNzb2NpYXRlIHRo
ZSBleGl0IHdpdGgKLSAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCi0gICAg
ICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2lu
ZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwotCi0gICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIHVpZCwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdw
cigpKSwgQWNjZXNzVHlwZTo6R2V0V2l0aFRoaXMpOwotCi0gICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7Ci0KLSAgICAgICAgICAgICAgICBwYXJhbXMuYWRk
TGF0ZVBhdGgoCi0gICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgSl9KSVRPcGVyYXRp
b25fRVNzaUpKSSBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0u
Z3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih1aWQpKS5jYWxsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBwYXRjaHBvaW50OwotICAgIH0KIAogICAgIExW
YWx1ZSBpc0Zhc3RUeXBlZEFycmF5KExWYWx1ZSBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjI4OGY5ZTdhODRjY2YzMjE0OTllM2M0
ZDEwMDMxNzI3Y2JiNWZhNi4uN2VlMjliMDA0OTQxNzQ2MDk4MTRjNzdmNTcxZjNjOWVhOTIwZWFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC03MjQsMTgg
KzcyNCw2IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwogICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CiAgICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJn
NSwgVHJ1c3RlZEltbVB0ciBhcmc2KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmc0KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNik7Ci0gICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IFRydXN0ZWRJbW1QdHIgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewpAQCAtNzQ3LDE4ICs3MzUs
NiBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUsIFRydXN0ZWRJbW1QdHIgYXJnNikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzYpOwotICAgIH0KLQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgcmVz
ZXRDYWxsQXJndW1lbnRzKCk7CkBAIC0xNzE3LDIyICsxNjkzLDYgQEAgcHVibGljOgogICAgICAg
ICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KLSAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUsIFRydXN0ZWRJbW1QdHIgYXJnNikKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNiwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsK
LSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwot
ICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUsIFRydXN0ZWRJbW1QdHIgYXJnNikKLSAg
ICB7Ci0gICAgICAgIHBva2UoYXJnNiwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKLSAgICAg
ICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IGU3NWNmZGY0ZDRkOWQ3ZGNiZjFh
MzFhOTgyOTQxOTJlNTViOWNmYjAuLjk0OTljOTE1YTU0ODNhNjNhMzE0OGJiZDM5YTNhZDFhODk2
MDNmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC00OCw3ICs0OCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKSBcCiAg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSkgXAotICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uSW5PcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9w
ZXJhdGlvbkluKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uR2VuZXJpY0luKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggMDA0N2RlMzI5MzE3OTRhMWM4YmE5OGMyOWJkNDI2OTM0Mzdm
YTY0ZS4uZTc0MjE5YjYyYjQ1OGRlOTMxMjBjOWM1ZDk1ZGNjNTUxNTA1NmUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtODMsNyArODMsNiBAQCBKSVQ6OkpJVChWTSogdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCkK
ICAgICAsIG1fbGFiZWxzKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+bnVtYmVyT2ZJbnN0cnVjdGlv
bnMoKSA6IDApCiAgICAgLCBtX2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKICAgICAsIG1fZ2V0QnlJZEluZGV4KFVJTlRfTUFYKQotICAgICwgbV9n
ZXRCeUlkV2l0aFRoaXNJbmRleChVSU5UX01BWCkKICAgICAsIG1fcHV0QnlJZEluZGV4KFVJTlRf
TUFYKQogICAgICwgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgoVUlOVF9NQVgpCiAgICAgLCBtX2Nh
bGxMaW5rSW5mb0luZGV4KFVJTlRfTUFYKQpAQCAtNDM4LDcgKzQzNyw2IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAKICAgICBtX2dldEJ5
SWRJbmRleCA9IDA7Ci0gICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRC
eUlkSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2Nh
bGxMaW5rSW5mb0luZGV4ID0gMDsKQEAgLTQ5NCw3ICs0OTIsNiBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90b19sb2Fk
OgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2dldF9ieV9pZCkKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9i
eV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFs
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQpAQCAtNTU0LDcgKzU1MSw2IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgfQogCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9nZXRCeUlkSW5kZXggPT0gbV9nZXRCeUlkcy5zaXplKCkpOwotICAgIFJFTEVB
U0VfQVNTRVJUKG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPT0gbV9nZXRCeUlkc1dpdGhUaGlzLnNp
emUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9wdXRCeUlkSW5kZXggPT0gbV9wdXRCeUlkcy5z
aXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxs
Q29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzID09IG1fY29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CkBAIC03
NzcsOCArNzczLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fZ2V0QnlJZHMuc2l6ZSgpOyBpLS07KQogICAgICAgICBtX2dldEJ5SWRz
W2ldLmZpbmFsaXplKHBhdGNoQnVmZmVyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dldEJ5
SWRzV2l0aFRoaXMuc2l6ZSgpOyBpLS07KQotICAgICAgICBtX2dldEJ5SWRzV2l0aFRoaXNbaV0u
ZmluYWxpemUocGF0Y2hCdWZmZXIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHV0QnlJZHMu
c2l6ZSgpOyBpLS07KQogICAgICAgICBtX3B1dEJ5SWRzW2ldLmZpbmFsaXplKHBhdGNoQnVmZmVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYWViN2Y3NTQ2MGEwZGIxZTA3ZDE4N2Uz
MGExZTFkMzk3OWU1NTJhNi4uZDhlNzRkNDVhMDViM2VjZmYzNWNjMDM5NWRlYzk2MDkxNjE4MGFj
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC02MjMsNyArNjIzLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF90cnlfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKQEAgLTc2MCwxMSArNzU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIFVu
aXF1ZWRTdHJpbmdJbXBsKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRp
b25fRVNzaUpKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZywgR1BSUmVnLCBVbmlx
dWVkU3RyaW5nSW1wbCopOwogI2Vsc2UKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1YkluZm8q
LCBHUFJSZWcsIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25f
RVNzaUpJLCBpbnQsIFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnLCBHUFJSZWcsIFVuaXF1ZWRT
dHJpbmdJbXBsKik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VTc2lKSkksIGludCwgU3RydWN0dXJlU3R1
YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBs
Kik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkksIGludCwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VK
SiwgaW50LCBHUFJSZWcsIEdQUlJlZyk7CkBAIC05MzUsNyArOTMyLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBWZWN0b3I8
TGFiZWw+IG1fbGFiZWxzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9n
ZXRCeUlkczsKLSAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9n
ZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdlbmVyYXRvcj4gbV9w
dXRCeUlkczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxs
Q29tcGlsYXRpb25JbmZvOwpAQCAtOTUwLDcgKzk0Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBMYWJlbCBtX2V4Y2VwdGlvbkhhbmRsZXI7CiAKICAgICAgICAgdW5zaWduZWQgbV9nZXRC
eUlkSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXg7CiAgICAg
ICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleDsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHAKaW5kZXggOWRkODI0ZGFhMWJlZjllMTdmMjY1MjdlZTVkODNkNTQxNDQ2ODUyYi4uMDQx
NzkzOTRhOTlkOTMyMTZhYjQ1ZmI5NTRkYWY0MjE1MjdmMGExYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTYy
LDExICs2Miw5IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAgICAgCiAg
ICAgbV9zdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFzZS5w
YXlsb2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90Pih2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIG1fc3R1YkluZm8tPnBhdGNoLnRo
aXNHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+cGF0Y2guYmFzZVRhZ0dQUiA9IHN0YXRpY19jYXN0
PGludDhfdD4oYmFzZS50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+cGF0Y2gudmFsdWVUYWdH
UFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlLnRhZ0dQUigpKTsKLSAgICBtX3N0dWJJbmZv
LT5wYXRjaC50aGlzVGFnR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsK
ICNlbmRpZgogfQogCkBAIC0xMTgsMjQgKzExNiw2IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogICAgIGdlbmVyYXRlRmFz
dENvbW1vbihqaXQsIG1faXNMZW5ndGhBY2Nlc3MgPyBJbmxpbmVBY2Nlc3M6OnNpemVGb3JMZW5n
dGhBY2Nlc3MoKSA6IElubGluZUFjY2Vzczo6c2l6ZUZvclByb3BlcnR5QWNjZXNzKCkpOwogfQog
Ci1KSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAg
ICBVbmlxdWVkU3RyaW5nSW1wbCosIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB0aGlzUmVncywgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQotICAgIDogSklU
QnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCh0aGlz
UmVncy5wYXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BSKCkpOwotCi0gICAgbV9zdHViSW5m
by0+cGF0Y2gudGhpc0dQUiA9IHN0YXRpY19jYXN0PGludDhfdD4odGhpc1JlZ3MucGF5bG9hZEdQ
UigpKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIG1fc3R1YkluZm8tPnBhdGNoLnRoaXNU
YWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHRoaXNSZWdzLnRhZ0dQUigpKTsKLSNlbmRpZgot
fQotCi12b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQotewotICAgIGdlbmVyYXRlRmFzdENvbW1vbihqaXQsIElubGlu
ZUFjY2Vzczo6c2l6ZUZvclByb3BlcnR5QWNjZXNzKCkpOwotfQotCiBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc2NyYXRjaCwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggNjQwOGVhMGIxZWEyZmRiZjBlMDMyODY4
ZjlkOGY3MDhmMzVlODIwZS4uNDY5MjkwZGI1NzE3ZTQ2NTc4MGI2MDM3Njk4ODM3OWI4N2M2NDky
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaApAQCAtMTA3LDE3ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0xl
bmd0aEFjY2VzczsKIH07CiAKLWNsYXNzIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3IoKSB7IH0KLQotICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsCi0gICAg
ICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlz
UmVncywgQWNjZXNzVHlwZSk7Ci0KLSAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImKTsKLX07Ci0KIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJ
ZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyOWMyMzYwNWZhMmNjZDg3NjYx
YzE2NzI3NDIzMDZlMmE0YzBiMTRjLi41ZDJkNjg4MmU1YjM5MzEyMWIwZGJlNDI2ODJlZGYyMzJh
ZGI3ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNTE4LDEy
ICs1MTgsNiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9w
ZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVAogICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlvbiwg
ZHN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxP
cGVyYXRpb24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVy
YXRpb24sIGludCBkc3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQotewotICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1
c3RlZEltbVB0cih1aWQpKTsKLSAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShvcGVyYXRpb24sIGRzdCk7Ci19Ci0KIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0
aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7CkBAIC03MTAsMTIgKzcwNCw2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRp
CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0
KG9wZXJhdGlvbiwgZHN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25f
RVNzaUpKSSBvcGVyYXRpb24sIGludCBkc3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
R1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJl
ZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKLXsKLSAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJv
ZmlsZShvcGVyYXRpb24sIGRzdCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIGlu
dCBkc3QsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFn
LCBHUFJSZWcgYXJnMlBheWxvYWQpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwg
YXJnMlRhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCBkMjlhMWM2ZDVhZDJkY2I4YzMzZTYxYzhlMTFlNDkwZmNlNzliMDkzLi5hMWQ0ZTczNTFi
MjYyMmZmZDAwYzFkZGNhNDY0MDZlMjhhNGEwNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTI2NSw0MyArMjY1LDYgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUKICAgICB9KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc0VuY29kZWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCi17Ci0gICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotCi0gICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7Ci0KLSAgICBzdHVi
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLQotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNFbmNvZGVkKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Ci19Ci0KLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNFbmNvZGVkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQotewotICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAg
ICAKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgdWlkKTsKLQotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGJhc2UpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNFbmNv
ZGVkKTsKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCp2bSksIGlkZW50KSk7Ci0KLSAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpIC0+IEpTVmFsdWUgewotICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhl
eGVjLT5jb2RlQmxvY2soKSwgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKLSAgICAgICAg
ICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5m
bywgR2V0QnlJREtpbmQ6OldpdGhUaGlzKTsKLSAgICAgICAgcmV0dXJuIGZvdW5kID8gc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpOwotICAgIH0pKTsKLX0KLQogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKiBrZXkpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRl
eCAxNGUzZDhkMjNjNDhkYjA4MTIyYjU0ZmMxMzgyMTViMjNhOGFjZTQ5Li5kNzJmZmJlOTZmZTA0
NTBiYTg2YjBiNjExODE3ZDU2NzJmZGY0N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaApAQCAtMTcwLDcgKzE3MCw2IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VSZW9Kc3MpKEV4ZWNTdGF0ZSosIFJl
Z0V4CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5n
SW1wbCopOwotdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9w
ZXJhdGlvbl9FWkljZlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIElubGluZUNhbGxGcmFtZSosIGlu
dDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKQEAgLTMzOCw4ICszMzcs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRp
bWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJpYyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZW5lcmljSW4oRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggZjViOGE0
MDllYTE2ODJjNTI4ZTQ2Y2ZmODUzOTBjOTQ3MzgyNWU5Mi4uYmZmNTM2MDhkN2E1NDBjOTQ4NjEz
NmFlODNkNWU4YzBjZmExNzVkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTYzMiwyNSArNjMyLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKLSAgICBpbnQgdGhpc1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwot
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlz
VlJlZywgcmVnVDEpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFz
ZVZSZWcpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgdGhpc1ZSZWcp
OwotCi0gICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgQWNjZXNzVHlwZTo6R2V0V2l0aFRoaXMpOwotICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwotICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKLQotICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZS
ZWcpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY3NywyNiArNjYwLDYgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2UKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIGNhbGwpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwotICAgIGludCB0aGlzVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKLQotICAgIGxpbmtT
bG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2VWUmVnKTsKLSAgICBsaW5rU2xvd0Nhc2VJZk5v
dEpTQ2VsbChpdGVyLCB0aGlzVlJlZyk7Ci0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotCi0gICAg
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9n
ZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKLSAgICAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxl
LCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwgcmVzdWx0VlJlZywgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QwLCByZWdUMSwgaWRlbnQtPmltcGwoKSk7Ci0KLSAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgYmFz
ZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzYz
MmE5NWM2OTgwMGRkNzg4YTA2ZTljN2VjOWE2ZTQzOWU3MTVlYS4uYmMzNGIzMDAwN2UzZjNiYzEz
OGVlNzUwZjcwNTI0YTkxMmMwZjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC02NjMsNDkgKzY2Myw2IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGludCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGludCBiYXNlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICBpbnQgdGhpc1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVC
bG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7Ci0gICAg
Ci0gICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0TG9hZCh0aGlzVlJl
ZywgcmVnVDQsIHJlZ1QzKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwg
cmVnVDEpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCh0aGlzVlJlZywgcmVnVDQp
OwotCi0gICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgoY3VycmVu
dEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpLCBBY2Nl
c3NUeXBlOjpHZXRXaXRoVGhpcyk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0gICAgbV9nZXRCeUlkc1dpdGhU
aGlzLmFwcGVuZChnZW4pOwotCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwotICAgIGVt
aXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgaW50IHJlc3VsdFZSZWcg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGludCBiYXNlVlJlZyA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgaW50IHRoaXNWUmVnID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCkpOwotCi0gICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZVZSZWcpOwotICAg
IGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHRoaXNWUmVnKTsKLSAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7Ci0KLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwotICAgIAotICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLCByZXN1
bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCByZWdUNCwgcmVnVDMsIGlkZW50
LT5pbXBsKCkpOwotICAgIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcGF0
Y2ggYm90aCB0aGUgU3RydWN0dXJlLCBhbmQgdGhlIG9iamVjdCBvZmZzZXQsIHdlIHN0b3JlIG9u
ZSBwb2ludGVyLApAQCAtMTIwOSw2ICsxMTY2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90
b19hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzdG9yZTMy
KHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSAr
IGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBQYXlsb2FkT2Zmc2V0KSk7
CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV92YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAppbmRleCA1NjAxYjY1NDU0NGNkN2UyNTU1OTQwYWE4MmQ2OGMxNmM1ZjlmMjgzLi5l
Zjg1OTYzMDBhYzMyN2Q2NDE5NGY2YzE4MGEwOTIyZDllMzk2ZTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEzOSwyMSArMTM5LDE3IEBAIHN0YXRpYyBib29sIGZv
cmNlSUNGYWlsdXJlKEV4ZWNTdGF0ZSopCiAjZW5kaWYKIH0KIAotaW5saW5lIEZ1bmN0aW9uUHRy
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQor
aW5saW5lIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlk
RnVuY3Rpb24oR2V0QnlJREtpbmQga2luZCkKIHsKICAgICBpZiAoa2luZCA9PSBHZXRCeUlES2lu
ZDo6Tm9ybWFsKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAg
IGVsc2UgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6OldpdGhUaGlzKQotICAgICAgICByZXR1cm4g
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemU7CiAgICAgcmV0dXJuIG9wZXJhdGlvblRy
eUdldEJ5SWRPcHRpbWl6ZTsKIH0KIAotaW5saW5lIEZ1bmN0aW9uUHRyIGFwcHJvcHJpYXRlR2Vu
ZXJpY0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQoraW5saW5lIEpfSklUT3BlcmF0
aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24oR2V0QnlJREtpbmQg
a2luZCkKIHsKICAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6Tm9ybWFsKQogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uR2V0QnlJZDsKLSAgICBlbHNlIGlmIChraW5kID09IEdldEJ5SURLaW5k
OjpXaXRoVGhpcykKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc0dlbmVy
aWM7CiAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWQ7CiB9CiAKQEAgLTMwOCwxMCArMzA0
LDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1ZUdldHRlcjsKIAot
ICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGVtaXQgSUMgZm9yIERPTUpJVCB3aGVuIG9wIGlz
IGdldF9ieV9pZF93aXRoX3RoaXMKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlRE9N
SklUKCkgJiYga2luZCA9PSBHZXRCeUlES2luZDo6V2l0aFRoaXMgJiYgdHlwZSA9PSBBY2Nlc3ND
YXNlOjpDdXN0b21BY2Nlc3NvckdldHRlciAmJiBkb21KSVQpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOwotCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVC
bG9jaywgdHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9hZFRhcmdldEZy
b21Qcm94eSwKICAgICAgICAgICAgICAgICAgICAgc2xvdC53YXRjaHBvaW50U2V0KCksIHNsb3Qu
aXNDYWNoZWFibGVDdXN0b20oKSA/IHNsb3QuY3VzdG9tR2V0dGVyKCkgOiBudWxscHRyLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCBjNjFiNjU4NGMzZGFmYzczNGU4ODMxZDRl
ZDM5NDQ4ZmNlMTFkMmM2Li41MmEwNjBjZTRkNWU1ZjcyYzE4M2I1YzcwZDFjYWYxZmY4NTA0NWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtMzYsOCArMzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRCeUlES2luZCB7CiAgICAgTm9ybWFsLAotICAg
IFRyeSwKLSAgICBXaXRoVGhpcworICAgIFRyeQogfTsKIAogdm9pZCByZXBhdGNoR2V0QnlJRChF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUlES2luZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDBhZDcyMjRlNTVjZjUyODg0MDk1NDI1MDRkNzNkOWJlOTM5NzlkYzUuLmFlZGY0MmUxN2Nj
MmJkZTAxNGFkNWI4ZDYyODYyMmFlYzE0NWU3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0z
NjksMTIgKzM2OSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3Vz
dG9tKHRoaXNPYmplY3QsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCB0aGlzT2Jq
ZWN0LT5jdXN0b21HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gUHJvcGVydHlOYW1lKElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImN1c3RvbUdldHRlckFjY2Vzc29yIikpKSB7Ci0gICAg
ICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSB8IEN1c3RvbUFjY2Vzc29yLCB0aGlzT2JqZWN0LT5jdXN0b21H
ZXR0ZXJBY2Vzc29yKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIAogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KIApAQCAtMzkyLDIwICszODYs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDEwMCkpOwog
ICAgIH0KLSAgICAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyQWNlc3Nv
cihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICAKLSAgICAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgICAgICBib29sIHNob3VsZFRo
cm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFuKGV4ZWMpOwotICAgICAgICBp
ZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMTAwKSk7
Ci0gICAgfQogfTsKIAogY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjYTM3
ZDY4ZTQxMjlmMTNjOWM5YmU2OGU0YmE2MmQzYzdmYzYxYjY3Li42NDIxNTMyOTU5Y2Q3MTYzZDIw
ZTIwMzRjMTQ1MDhhZDk4YTg5ZDVmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAyLTI3ICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjEzMDE5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4OTI1CisKKyAgICAgICAgIkl0IGJyb2tlIDMyLWJpdCBqc2MgdGVzdHMg
aW4gZGVidWcgYnVpbGRzIiAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHNhYW15am9vbiBvbiAjd2Vi
a2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIm9wX2dldF9i
eV9pZF93aXRoX3RoaXMgc2hvdWxkIHVzZSBpbmxpbmUgY2FjaGluZyIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEyNAorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTMwMTkKKwogMjAxNy0wMi0yNyAgSkYgQmFzdGll
biAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IG1pc2NlbGxh
bmVvdXMgc3BlYyBmaXhlcyBwYXJ0IGRldXgKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3N1cGVyLWdldHRlci5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N1cGVyLWdl
dHRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg4MjE3N2MwYzFhZWMyN2Vi
MGQwOTUxNTQ0MTg1NmU2MjBhMTdlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zdXBlci1nZXR0ZXIuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1jbGFzcyBBIHsKLSAgICBnZXQgZigpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2Y7Ci0gICAgfQotfQotCi1jbGFzcyBCIGV4dGVuZHMgQSB7Ci0g
ICAgZ2V0IGYoKSB7Ci0gICAgICAgIHJldHVybiBzdXBlci5mOwotICAgIH0KLX0KLQotKGZ1bmN0
aW9uKCkgewotICAgIHZhciBvID0gbmV3IEIoKTsKLQotICAgIG8uX2YgPSA0MjsKLSAgICB2YXIg
cmVzdWx0ID0gMDsKLSAgICB2YXIgbiA9IDIwMDAwMDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpCi0gICAgICAgIHJlc3VsdCArPSBvLmY7Ci0gICAgaWYgKHJlc3VsdCAhPSBuICog
NDIpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKLX0pKCk7
Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N1cGVyLWZvcmNlLWljLWZhaWwuanMgYi9K
U1Rlc3RzL3N0cmVzcy9zdXBlci1mb3JjZS1pYy1mYWlsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkYmZmODhkM2FmZWQ0YTdjYmZmZTAzYTgzMjg2YTEwZjExZGVjMDQ5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNz
L3N1cGVyLWZvcmNlLWljLWZhaWwuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1s
ZXQgYXNzZXJ0ID0gKGEpID0+IHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IEVycm9yKCJC
YWQgQXNzZXJ0aW9uIik7Ci19Ci0KLWxldCBhT2JqID0gIHsKLSAgICBnZXQgZm9vKCkgeyByZXR1
cm4gdGhpcy5hOyB9Ci19OwotCi1sZXQgb2JqID0gewotICAgIGpheigpIHsKLSAgICAgICAgcmV0
dXJuIHN1cGVyLmZvbzsKLSAgICB9Ci19Owotb2JqLmEgPSAiZm9vIjsKLQotT2JqZWN0LnNldFBy
b3RvdHlwZU9mKG9iaiwgYU9iaik7Ci0KLW5vSW5saW5lKG9iai5qYXopOwotCi1mb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICBpZiAoaSA9PSA5OTk5KSB7Ci0gICAgICAgIGRl
bGV0ZSBhT2JqLmZvbzsKLSAgICAgICAgYXNzZXJ0KG9iai5qYXooKSA9PT0gdW5kZWZpbmVkKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQob2JqLmpheigpID09ICJmb28iKTsKLSAgICB9
Ci0KLX0KLQotbGV0IGJPYmogPSAgewotICAgIGdldCBmb28oKSB7IHJldHVybiB0aGlzLmE7IH0K
LX07Ci0KLWxldCBvYmoyID0gewotICAgIGZvbygpIHsKLSAgICAgICAgcmV0dXJuIHN1cGVyLmZv
bzsKLSAgICB9Ci19Owotb2JqMi5hID0gImZvbyI7Ci0KLU9iamVjdC5zZXRQcm90b3R5cGVPZihv
YmoyLCBiT2JqKTsKLQotbm9JbmxpbmUob2JqLmpheik7Ci0KLWZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgewotICAgIGlmIChpID09IDk5OTkpIHsKLSAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGJPYmosICJmb28iLCB7Ci0gICAgICAgICAgICBnZXQ6ICgpID0+IHtyZXR1cm4g
ImJvbyI7IH0KLSAgICAgICAgfSk7Ci0gICAgICAgIGFzc2VydChvYmoyLmZvbygpID09ICJib28i
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQob2JqMi5mb28oKSA9PSAiZm9vIik7Ci0g
ICAgfQotfQotCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdXBlci1nZXQtYnktaWQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9zdXBlci1nZXQtYnktaWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI0ZWEyY2MwNWE0NmRmMGVlYzU3N2IyNzkwY2QzZDQxOTY4OWE5ZWMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
c3VwZXItZ2V0LWJ5LWlkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLSJ1c2Ug
c3RyaWN0IjsKLQotZnVuY3Rpb24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkISIpOwotfQotCi12YXIgQmFzZSA9IGNsYXNzIEJhc2UgewotICAg
IGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9uYW1lID0gIk5hbWUiOyB9Ci0gICAgZ2V0IG5hbWUoKSB7
IHJldHVybiB0aGlzLl9uYW1lOyB9IC8vIElmIHRoaXMgaW5zdGVhZCByZXR1cm5zIGEgc3RhdGlj
OiByZXR1cm4gIkZvbyIgdGhpbmdzIHNvbWV3aGF0IHdvcmsuCi0gICAgc2V0IG5hbWUoeCkgeyB0
aGlzLl9uYW1lID0geDsgfQotfTsKLQotdmFyIFN1YmNsYXNzID0gY2xhc3MgU3ViY2xhc3MgZXh0
ZW5kcyBCYXNlIHsKLSAgICBnZXQgbmFtZSgpIHsgcmV0dXJuIHN1cGVyLm5hbWU7IH0KLX07Ci0K
LWZ1bmN0aW9uIGdldHRlck5hbWUoaW5zdGFuY2UpIHsKLSAgICByZXR1cm4gaW5zdGFuY2UubmFt
ZTsKLX0KLQotbm9JbmxpbmUoZ2V0dGVyTmFtZSk7Ci0KLWZ1bmN0aW9uIGdldHRlclZhbHVlKGlu
c3RhbmNlKSB7Ci0gICAgcmV0dXJuIGluc3RhbmNlLnZhbHVlOwotfQotCi1ub0lubGluZShnZXR0
ZXJWYWx1ZSk7Ci0KLS8vIEJhc2UgY2FzZQotdmFyIGluc3RhbmNlID0gbmV3IFN1YmNsYXNzOwot
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDtpKyspCi0gIGFzc2VydChnZXR0ZXJOYW1lKGluc3Rh
bmNlKSA9PSAiTmFtZSIpOwotCi0vLyBQb2x5bW9ycGhpYyBjYXNlCi0KLWNsYXNzIFBvbHltb3Jw
aGljU3ViY2xhc3MgewotICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHN1cGVyLnZhbHVlOyB9Ci19
OwotCi1sZXQgbnVtUG9seW1vcnBoaWNDbGFzc2VzID0gNDsKLWxldCBzdWJjbGFzc2VzID0gbmV3
IEFycmF5KG51bVBvbHltb3JwaGljQ2xhc3Nlcyk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IG51bVBv
bHltb3JwaGljQ2xhc3NlczsgaSsrKSB7Ci0gICAgbGV0IEJhc2VDb2RlID0gYAotICAgICAgIGNs
YXNzIEJhc2Uke2l9IHsKLSAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3Zh
bHVlOyB9Ci0gICAgICAgIH07Ci0gICAgYDsKLQotICAgIGxldCBCYXNlID0gZXZhbChCYXNlQ29k
ZSk7Ci0gICAgc3ViY2xhc3Nlc1tpXSA9IG5ldyBQb2x5bW9ycGhpY1N1YmNsYXNzKCk7Ci0gICAg
c3ViY2xhc3Nlc1tpXS5fdmFsdWUgPSBpOwotCi0gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1
YmNsYXNzZXNbaV0sIEJhc2UucHJvdG90eXBlKTsKLX0KLQotZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDAwOyBpKyspIHsKLSAgICBsZXQgaW5kZXggPSBpICUgbnVtUG9seW1vcnBoaWNDbGFzc2Vz
OwotICAgIGxldCB2YWx1ZSA9IGdldHRlclZhbHVlKHN1YmNsYXNzZXNbaW5kZXhdKTsKLSAgICBh
c3NlcnQodmFsdWUgPT0gaW5kZXgpOwotfQotCi0vLyBNZWdhbW9ycGhpYyBjYXNlCi0KLWxldCBu
Q2xhc3NlcyA9IDEwMDA7Ci1jbGFzcyBNZWdhbW9ycGhpY1N1YmNsYXNzIHsKLSAgICBnZXQgdmFs
dWUoKSB7IHJldHVybiBzdXBlci52YWx1ZTsgfQotfTsKLQotc3ViY2xhc3NlcyA9IG5ldyBBcnJh
eShuQ2xhc3Nlcyk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IG5DbGFzc2VzOyBpKyspIHsKLSAgICBs
ZXQgQmFzZUNvZGUgPSBgCi0gICAgICAgY2xhc3MgQmFzZSR7aSArIDR9IHsKLSAgICAgICAgICAg
IGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlOyB9Ci0gICAgICAgIH07Ci0gICAgYDsK
LQotICAgIGxldCBCYXNlID0gZXZhbChCYXNlQ29kZSk7Ci0gICAgc3ViY2xhc3Nlc1tpXSA9IG5l
dyBNZWdhbW9ycGhpY1N1YmNsYXNzKCk7Ci0gICAgc3ViY2xhc3Nlc1tpXS5fdmFsdWUgPSBpOwot
Ci0gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YmNsYXNzZXNbaV0sIEJhc2UucHJvdG90eXBl
KTsKLX0KLQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKLSAgICBsZXQgaW5k
ZXggPSBpICUgbkNsYXNzZXM7Ci0gICAgbGV0IHZhbHVlID0gZ2V0dGVyVmFsdWUoc3ViY2xhc3Nl
c1tpbmRleF0pOwotICAgIGFzc2VydCh2YWx1ZSA9PSBpbmRleCk7Ci19Ci0KLS8vIEN1c3RvbUdl
dHRlciBjYXNlCi0KLWxldCBjdXN0b21HZXR0ZXIgPSBjcmVhdGVDdXN0b21HZXR0ZXJPYmplY3Qo
KTsKLU9iamVjdC5zZXRQcm90b3R5cGVPZihjdXN0b21HZXR0ZXIsIE9iamVjdC5wcm90b3R5cGUp
OwotCi1sZXQgc3ViT2JqID0gewotICAgIF9fcHJvdG9fXzogY3VzdG9tR2V0dGVyLAotICAgIGdl
dCB2YWx1ZSAoKSB7Ci0gICAgICAgIHJldHVybiBzdXBlci5jdXN0b21HZXR0ZXJBY2Nlc3NvcjsK
LSAgICB9Ci19Ci0KLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7Ci0gICAgbGV0
IHZhbHVlID0gZ2V0dGVyVmFsdWUoc3ViT2JqKTsKLSAgICBhc3NlcnQodmFsdWUgPT0gMTAwKTsK
LX0KLQotc3ViT2JqLnNob3VsZFRocm93ID0gdHJ1ZTsKLWZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwMDsgaSsrKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgZ2V0dGVyVmFsdWUoc3ViT2JqKTsKLSAg
ICAgICAgYXNzZXJ0KGZhbHNlKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgYXNzZXJ0KGUg
aW5zdGFuY2VvZiBUeXBlRXJyb3IpOwotICAgIH07Ci19Ci0KLS8vIEN1c3RvbVZhbHVlIGNhc2UK
LQotY3VzdG9tR2V0dGVyID0gY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KCk7Ci1PYmplY3Quc2V0
UHJvdG90eXBlT2YoY3VzdG9tR2V0dGVyLCBPYmplY3QucHJvdG90eXBlKTsKLQotc3ViT2JqID0g
ewotICAgIF9fcHJvdG9fXzogY3VzdG9tR2V0dGVyLAotICAgIGdldCB2YWx1ZSAoKSB7Ci0gICAg
ICAgIHJldHVybiBzdXBlci5jdXN0b21HZXR0ZXI7Ci0gICAgfQotfQotCi1mb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDA7IGkrKykgewotICAgIGxldCB2YWx1ZSA9IGdldHRlclZhbHVlKHN1Yk9i
aik7Ci0gICAgYXNzZXJ0KHZhbHVlID09IDEwMCk7Ci19Ci0KLXN1Yk9iai5zaG91bGRUaHJvdyA9
IHRydWU7Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewotICAgIGxldCB2YWx1
ZSA9IGdldHRlclZhbHVlKHN1Yk9iaik7Ci0gICAgYXNzZXJ0KHZhbHVlID09IDEwMCk7Ci19Ci0K
LS8vIEV4Y2VwdGlvbiBoYW5kbGluZyBjYXNlCi0KLWNsYXNzIEJhc2VFeGNlcHRpb24gewotICAg
IGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9uYW1lID0gIk5hbWUiOyB9Ci0gICAgZ2V0IG5hbWUoKSB7
Ci0gICAgICAgIGlmICh0aGlzLnNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJGb3JjZWQgRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAg
IH0KLX07Ci0KLWNsYXNzIFN1YmNsYXNzRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7
Ci0gICAgZ2V0IG5hbWUoKSB7IHJldHVybiBzdXBlci5uYW1lOyB9Ci19OwotCi1sZXQgZU9iaiA9
IG5ldyBTdWJjbGFzc0V4Y2VwdGlvbjsKLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7aSsrKQot
ICBhc3NlcnQoZ2V0dGVyTmFtZShlT2JqKSA9PSAiTmFtZSIpOwotCi1lT2JqLnNob3VsZFRocm93
ID0gdHJ1ZTsKLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7Ci0gICAgdHJ5IHsK
LSAgICAgICAgZ2V0dGVyVmFsdWUoZU9iaik7Ci0gICAgICAgIGFzc2VydChmYWxzZSk7Ci0gICAg
fSBjYXRjaChlKSB7Ci0gICAgICAgIGVPYmouc2hvdWxkVGhyb3cgPSBmYWxzZTsKLSAgICAgICAg
YXNzZXJ0KGdldHRlck5hbWUoZU9iaikgPT0gIk5hbWUiKTsKLSAgICB9OwotfQotCi0vLyBJbiBn
ZXR0ZXIgZXhjZXB0aW9uIGhhbmRsaW5nCi0KLWNsYXNzIEJhc2VFeGNlcHRpb25Db21wbGV4IHsK
LSAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fbmFtZSA9ICJOYW1lIjsgfQotICAgIGZvbyAoKSB7
Ci0gICAgICAgIGlmICh0aGlzLnNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJGb3JjZWQgRXhjZXB0aW9uIik7Ci0gICAgfQotICAgIGdldCBuYW1lKCkgewotICAgICAg
ICB0aGlzLmZvbygpOwotICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9Ci19OwotCi1j
bGFzcyBTdWJjbGFzc0V4Y2VwdGlvbkNvbXBsZXggZXh0ZW5kcyBCYXNlRXhjZXB0aW9uQ29tcGxl
eCB7Ci0gICAgZ2V0IG5hbWUoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4g
c3VwZXIubmFtZTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICB0aGlzLnNob3Vs
ZFRocm93ID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIubmFtZTsKLSAgICAgICAg
fQotICAgIH0KLX07Ci0KLWVPYmogPSBuZXcgU3ViY2xhc3NFeGNlcHRpb25Db21wbGV4OwotZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDtpKyspCi0gIGFzc2VydChnZXR0ZXJOYW1lKGVPYmopID09
ICJOYW1lIik7Ci0KLWVPYmouc2hvdWxkVGhyb3cgPSB0cnVlOwotZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyBpKyspCi0gICAgYXNzZXJ0KGdldHRlck5hbWUoZU9iaikgPT0gIk5hbWUiKTsK
LQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3VwZXItZ2V0dGVyLXJlc2V0LWljLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvc3VwZXItZ2V0dGVyLXJlc2V0LWljLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzNWMzMzViOThiODdlYWE0NDAxZmJmMDNiODI1M2Q1MDE4MjY5NDlkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL3N1cGVyLWdldHRlci1yZXNldC1pYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAg
QEAKLWxldCBhc3NlcnQgPSAoYSkgPT4gewotICAgIGlmICghYSkKLSAgICAgICAgdGhyb3cgIkJh
ZCEiOwotfQotCi1sZXQgbiA9IDIwMDsKLQotbGV0IEEgPSAgewotICAgIGM6IDQyCi19Ci0KLWxl
dCBDID0gewotICAgIF9fcHJvdG9fXzogQQotfQotCi1sZXQgQiA9IHsKLSAgICBfX3Byb3RvX186
IEMsCi0gICAgZihpKSB7Ci0gICAgICAgIHJldHVybiBzdXBlci5jOwotICAgIH0KLX0KLQotdmFy
IHJlc3VsdCA9IDA7Ci1mb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgewotICAgIGlmIChpID09
IG4gLyAyICkgewotICAgICAgICAvLyBUaGlzIG9wZXJhdGlvbiBpcyBnb2luZyB0byBmb3JjZSBv
cF9nZXRfYnlfaWRfd2l0aF90aGlzIHRvIGJlIHJlZ2VuZXJhdGVkIAotICAgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoQSwgImMiLCB7Z2V0OiAoKSA9PiAxMn0pOwotICAgIH0KLSAgICByZXN1
bHQgKz0gQi5mKGkpOwotfQotCi1hc3NlcnQocmVzdWx0LCA1NDAwKTsKLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>