<?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>156465</bug_id>
          
          <creation_ts>2016-04-11 05:42:29 -0700</creation_ts>
          <short_desc>REGRESSION(r199290): broke 300 tests (Requested by mcatanzaro on #webkit).</short_desc>
          <delta_ts>2016-04-12 13:21:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155456</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>sabouhallawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182674</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 05:42:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/199290 broke the build:
broke 300 tests (Requested by mcatanzaro 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>1182676</commentid>
    <comment_count>1</comment_count>
      <attachid>276141</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 05:43:07 -0700</bug_when>
    <thetext>Created attachment 276141
ROLLOUT of r199290

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>1182678</commentid>
    <comment_count>2</comment_count>
      <attachid>276141</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 05:46:26 -0700</bug_when>
    <thetext>Comment on attachment 276141
ROLLOUT of r199290

Clearing flags on attachment: 276141

Committed r199294: &lt;http://trac.webkit.org/changeset/199294&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182679</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 05:46:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183197</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-12 13:21:30 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183198</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-04-12 13:21:57 -0700</bug_when>
    <thetext>Wrong bug. Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276141</attachid>
            <date>2016-04-11 05:43:07 -0700</date>
            <delta_ts>2016-04-12 13:21:27 -0700</delta_ts>
            <desc>ROLLOUT of r199290</desc>
            <filename>bug-156465-20160411054315.patch</filename>
            <type>text/plain</type>
            <size>59764</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY0MzM2NzJmMzhkMDYy
NTVhNWJiNzk4NGJjMmNmYTNkODUwZjdkMC4uMWEzMDk1ZWUxOGNmYjM1YTc2NTBmMDlhZjlkNzdh
ODRhNWUzN2YzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA0LTExICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTk5MjkwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2NDY1CisKKyAgICAgICAgYnJva2UgMzAwIHRlc3RzIChSZXF1ZXN0
ZWQgYnkgbWNhdGFuemFybyBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2Vz
ZXQ6CisKKyAgICAgICAgIk1lcmdlIENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gaW4KKyAgICAgICAgb25lIGZpbGUiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NTYKKyAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTk5MjkwCisKIDIwMTYtMDQtMTEgIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJlbmRlck1hdGhNTFVu
ZGVyT3ZlciBsYXlvdXQgZnVuY3Rpb25zIHRvIGF2b2lkIHVzaW5nIGZsZXhib3gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCA5NDIxNTgxZjRiZDA0ODBmZWI0NWVhNzdhYTcwZjA0MzIwNTkyNjY0Li5jNzc5N2Q1MWUz
MzUxZTA3OGFkM2MzNDZmNWExZDYyZmE1OGU3Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTYtMDQtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgor
CisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTkyOTAuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0NjUKKworICAgICAgICBicm9r
ZSAzMDAgdGVzdHMgKFJlcXVlc3RlZCBieSBtY2F0YW56YXJvIG9uICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiTWVyZ2UgQ0cgSW1hZ2VTb3VyY2Ug
YW5kIG5vbiBDRyBJbWFnZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBpbgorICAgICAgICBvbmUgZmls
ZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1
NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTkyOTAKKwogMjAx
Ni0wNC0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgogCiAg
ICAgICAgIE1lcmdlIENHIEltYWdlU291cmNlIGFuZCBub24gQ0cgSW1hZ2VTb3VyY2UgaW1wbGVt
ZW50YXRpb24gaW4gb25lIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2MyMzE1ZTI1ZTAz
ZDA0ZDI4Yjk3NWZiODRkM2ZlOGU4YWE4NzNmZS4uZjhkYTRmMzAyYjYwNDcxYTE2YTcwZjY1NTUy
OWUzMTc0N2JjYWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMTQsNyArMjIxNCw2IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9yaWVudGF0aW9uLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDA5YzgwOTRlNzdjNGJmMzJhY2Y0
N2FhOTNlOWRiYWU5OTYyOTdlNmMuLmM2NzJjYzcwN2ZhODc4NWJhNTI3NDQyZTkwNGIxY2ZhZGIy
NTE1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNzIsNiArNzIs
NyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQ
b2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYWVhMzU3MTA1OTA5YjdjN2VlMjA1NTI3NTllYWM5OWY0
NTZkNWEwMC4uYjcyZjJlMTVjOGI1MmVhZTFhM2U2ZDZhNGVhNmFkMTJiMTJhMjhlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQwNiw2ICs0MDYsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI1ODljMzUxZWE1OTc1OTllZThhMDcw
MTFlNjBmYjNhNzVhMjIzY2MuLjY1ZjYyODZiNjM0OWQyZjk0NzU5ZTJhM2I0ZTAzNzAyZTI5N2Iw
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ5ODYsNiArNDk4Niw3IEBACiAJCUIyNzUzNTVBMEIwNTM4MTQwMDJDRTY0RiAv
KiBGbG9hdFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovOyB9
OwogCQlCMjc1MzU1QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkQwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NUUwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovOyB9Owor
CQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi87IH07CiAJCUIyNzUzNTYwMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAq
LzsgfTsKIAkJQjI3NTM1NjEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzMzBCMDUzODE0
MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCAqLzsgfTsKIAkJQjI3NTM1NjIwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFNpemVDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjc1MzUzNDBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLzsg
fTsKQEAgLTEyODc2LDYgKzEyODc3LDcgQEAKIAkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0UmVjdENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
bG9hdFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJEMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmxvYXRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZVNvdXJjZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzIwQjA1MzgxNDAwMkNFNjRG
IC8qIEludFBvaW50Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEludFBvaW50Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUzMzBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRSZWN0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjc1MzUzNDBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjE3ODMsNiArMjE3ODUsNyBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUg
LyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAv
KiBJbWFnZURlY29kZXJDRy5oICovLAorCQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bWFnZVNvdXJjZUNHLmNwcCAqLywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1h
Z2VTb3VyY2VDRy5oICovLAogCQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNv
dXJjZUNHTWFjLm1tICovLAogCQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2lu
dENHLmNwcCAqLywKQEAgLTMwMDAxLDYgKzMwMDA0LDcgQEAKIAkJCQkyRDVBNTkyRjE1MjUyNTIz
MDAzNkVFNTEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTFB
MkY0MTE3RDdENURFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291
cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8q
IEltYWdlU291cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBFNkUxREE3
MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5
NjFDNTQxOEFEMzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAppbmRleCA5YzU5MmYzNzRiMzRlN2Y5
Njc5ZTlkZmY0OGZhMTBhZTY4MDBlMzE3Li42MGE2MTlhY2RhMTNhYTQ3YmExMmViMDNiNGUyMjVm
MjQxZmMzYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAKQEAgLTQ0LDEwICs0NCwx
MCBAQCBJbnRQb2ludCBkZXRlcm1pbmVIb3RTcG90KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9p
bnQmIHNwZWNpZmllZEhvdFNwb3QpCiAgICAgICAgIHJldHVybiBzcGVjaWZpZWRIb3RTcG90Owog
CiAgICAgLy8gSWYgaG90IHNwb3QgaXMgbm90IHNwZWNpZmllZCBleHRlcm5hbGx5LCBpdCBjYW4g
YmUgZXh0cmFjdGVkIGZyb20gc29tZSBpbWFnZSBmb3JtYXRzIChlLmcuIC5jdXIpLgotICAgIGlm
IChhdXRvIGludHJpbnNpY0hvdFNwb3QgPSBpbWFnZS0+aG90U3BvdCgpKSB7Ci0gICAgICAgIGlm
IChpbWFnZVJlY3QuY29udGFpbnMoaW50cmluc2ljSG90U3BvdC52YWx1ZSgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBpbnRyaW5zaWNIb3RTcG90LnZhbHVlKCk7Ci0gICAgfQorICAgIEludFBvaW50
IGludHJpbnNpY0hvdFNwb3Q7CisgICAgYm9vbCBpbWFnZUhhc0ludHJpbnNpY0hvdFNwb3QgPSBp
bWFnZS0+Z2V0SG90U3BvdChpbnRyaW5zaWNIb3RTcG90KTsKKyAgICBpZiAoaW1hZ2VIYXNJbnRy
aW5zaWNIb3RTcG90ICYmIGltYWdlUmVjdC5jb250YWlucyhpbnRyaW5zaWNIb3RTcG90KSkKKyAg
ICAgICAgcmV0dXJuIGludHJpbnNpY0hvdFNwb3Q7CiAKICAgICByZXR1cm4gSW50UG9pbnQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAppbmRleCA3Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcyZjU1YTllZGJkNmNkZTMzLi5hNDdhOTcy
OTUyODUxYWE1NGQzNjE5ZTY4YTZlMDk2MDMwMzY1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yNTQsOSArMjU0LDkgQEAg
SW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKIH0KIAotT3B0aW9uYWw8SW50
UG9pbnQ+IEJpdG1hcEltYWdlOjpob3RTcG90KCkgY29uc3QKK2Jvb2wgQml0bWFwSW1hZ2U6Omdl
dEhvdFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CiB7Ci0gICAgYXV0byByZXN1bHQgPSBt
X3NvdXJjZS5ob3RTcG90KCk7CisgICAgYm9vbCByZXN1bHQgPSBtX3NvdXJjZS5nZXRIb3RTcG90
KGhvdFNwb3QpOwogICAgIGRpZERlY29kZVByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggN2M4ZWNhY2ZjNmM2MWM5NDQ0ZDYxYWRkNGUyNzk3NmNiMjAyMWQ1MC4uNTExM2Q1ZDUy
Nzc4MTU0ZWFmY2Y5YTM0MjdiNTJlYjE1Y2ZlOTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGlj
OgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBzaXpl
UmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZWRTaXplOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCmluZGV4IDUwZjc3ZTMxNjIxMDczNDZhMDc1MDYyMWNkMzdlMmVmNDc5ZDY0N2IuLmMz
MTQyYWRlYzdhMjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
TmF0aXZlSW1hZ2VQdHIuaCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtMTA4LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0K
ICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAg
ZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIE51bGxvcHQ7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBGbG9hdFNpemUgb3Jp
Z2luYWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggN2VkOWZkMWQwNzY3OTNk
ZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4Yi4uMGQxMDA5NjFmZjI3NjE1MzY5OTUwZmNiYmZlMWVj
NWVjODMxODRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9y
YS5jby51az4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jCkBA
IC0yOSwxNiArMjksMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNv
dXJjZS5oIgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jZWxz
ZQorI2lmICFVU0UoQ0cpCisKICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLSNlbmRpZgogCiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1h
Z2UgPSAxMDI0ICogMTAyNDsKKyNlbmRpZgorCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1h
Z2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2Fs
cGhhT3B0aW9uKGFscGhhT3B0aW9uKQogICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bihnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKQEAgLTQ3LDIxICs1MCwxNCBAQCBJbWFnZVNv
dXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJ
bWFnZVNvdXJjZTo6R2FtbQogCiBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHsKKyAgICBj
bGVhcih0cnVlKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFy
QmVmb3JlRnJhbWUpOwotfQotCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lB
bGxGcmFtZXMsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95
QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKLSAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0
aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAotICAgIC8vIHRvIGRlc3Ry
b3kgYWxsIG9mIHRoZSBmcmFtZXMuCi0gICAgaWYgKCFkZXN0cm95QWxsRnJhbWVzKSB7Ci0gICAg
ICAgIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKKyAgICBpZiAoIWRl
c3Ryb3lBbGwpIHsKKyAgICAgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgICAgIG1fZGVjb2Rl
ci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC03MSwxMiArNjcsMjAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIo
Ym9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnUK
ICAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdl
U291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKiBk
YXRhKQogewogICAgIGlmIChpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgbV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoZGF0YSwgbV9hbHBoYU9wdGlvbiwg
bV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgLy8gTWFrZSB0aGUgZGVjb2RlciBi
eSBzbmlmZmluZyB0aGUgYnl0ZXMuCisgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFtaW5lIHRo
ZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgZGVj
b2RlciBwbHVnaW4uCisgICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFibGUg
dG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJlCisg
ICAgLy8gbWFkZS4KKyAgICBtX2RlY29kZXIgPSBJbWFnZURlY29kZXI6OmNyZWF0ZSgqZGF0YSwg
bV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisjaWYgRU5BQkxF
KElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBpZiAobV9kZWNvZGVyICYmIHNfbWF4
UGl4ZWxzUGVyRGVjb2RlZEltYWdlKQorICAgICAgICBtX2RlY29kZXItPnNldE1heE51bVBpeGVs
cyhzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbWFnZVNv
dXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpA
QCAtODQsNyArODgsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgZW5zdXJlRGVjb2RlcklzQ3JlYXRlZCgqZGF0YSk7CisgICAgZW5zdXJl
RGVjb2RlcklzQ3JlYXRlZChkYXRhKTsKICAgICAKICAgICBpZiAoIWluaXRpYWxpemVkKCkpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05Miw0OCArOTYsMjUgQEAgdm9pZCBJ
bWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogICAgIH0KIAogICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0
RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRh
KGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3Vy
Y2U6OmNhbGN1bGF0ZU1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKK1N0cmluZyBJbWFn
ZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIGlmICghbV9hbGxvd1N1
YnNhbXBsaW5nIHx8ICFhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIHdhcyBjaG9zZW4gdG8g
YmUgYXBwcm9wcmlhdGUgZm9yIGlPUyBzaW5jZSB0aGUgaW1hZ2UKLSAgICAvLyBzdWJzYW1wbGlu
ZyBpcyBvbmx5IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBpT1MuIENob29zZSBhIGRpZmZlcmVudCB2
YWx1ZQotICAgIC8vIGlmIGltYWdlIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQgb24gb3RoZXIgcGxh
dGZvcm0uCi0gICAgY29uc3QgaW50IG1heGltdW1JbWFnZUFyZWFCZWZvcmVTdWJzYW1wbGluZyA9
IDUgKiAxMDI0ICogMTAyNDsKLSAgICBjb25zdCBTdWJzYW1wbGluZ0xldmVsIG1heFN1YnNhbXBs
aW5nTGV2ZWwgPSAzOwotICAgIAotICAgIGZvciAoU3Vic2FtcGxpbmdMZXZlbCBsZXZlbCA9IDA7
IGxldmVsIDwgbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytsZXZlbCkgewotICAgICAgICBpZiAoZnJh
bWVTaXplQXRJbmRleCgwLCBsZXZlbCkuYXJlYSgpIDwgbWF4aW11bUltYWdlQXJlYUJlZm9yZVN1
YnNhbXBsaW5nKQotICAgICAgICAgICAgcmV0dXJuIGxldmVsOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gbWF4U3Vic2FtcGxpbmdMZXZlbDsKKyAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNv
ZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2
ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSkgY29u
c3QKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZShmbG9hdCkgY29uc3QKIHsKLSAgICBpZiAoIShzY2FsZSA+IDAgJiYgc2NhbGUgPD0gMSkpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwgPSBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpOwotICAgIGlm
ICghbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8g
VGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0g
MC4yNXgsIDMgPSAwLjEyNXguCi0gICAgU3Vic2FtcGxpbmdMZXZlbCByZXN1bHQgPSBzdGQ6OmNl
aWwoc3RkOjpsb2cyKDEgLyBzY2FsZSkpOwotICAgIHJldHVybiBzdGQ6Om1pbihyZXN1bHQsIG1h
eGltdW1TdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gMDsKIH0KIAotc2l6ZV90IEltYWdl
U291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQorYm9vbCBJbWFnZVNv
dXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMo
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWls
YWJsZSgpIGNvbnN0Citib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQogewogICAg
IHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CiB9
CkBAIC0xNDgsNzEgKzEyOSw5NyBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVD
b3VudCgpIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdAogewotICAgIHJldHVybiBpbml0aWFs
aXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwotfQorICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotaW50IEltYWdlU291cmNlOjpyZXBldGl0
aW9uQ291bnQoKQotewotICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5yZXBl
dGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOworICAgIEludFNpemUgc2l6ZSA9IG1fZGVj
b2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb24oKTsKKyAgICAKKyAgICByZXR1cm4gc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gJiYg
b3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3NlZFNpemUoKSA6
IHNpemU7CiB9CiAKLVN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dAorYm9vbCBJbWFnZVNvdXJjZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3QK
IHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNp
b24oKSA6IFN0cmluZygpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+
aG90U3BvdChob3RTcG90KTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlU291cmNlOjpo
b3RTcG90KCkgY29uc3QKK3NpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1p
bmVQcm9wZXJ0aWVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+aG90U3BvdCgpIDogTnVsbG9wdDsKKyAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBJbWFn
ZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCitpbnQgSW1hZ2VT
b3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9u
ZTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIWluaXRpYWxpemVkKCkgfHwgbV9kZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRl
eCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6
IDA7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0CitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogewotICAg
IHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJh
bWVBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVt
cyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KKyAgICAvLyBlbXB0eSBpbWFnZSBkaW1l
bnNpb24sIGp1c3QgYmFpbC4KKyAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1l
QnVmZmVyQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9y
IHNvbWUgcG9ydHMsIHRoZSBkYXRhCisgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250
YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAgcmV0dXJu
IGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogfQogCi1JbnRTaXplIEltYWdlU291cmNlOjpm
cmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pIGNvbnN0CitmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBJbnRTaXplIHNpemUgPSBtX2RlY29kZXIt
PmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotICAgIGlmIChzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiAhPSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKLSAg
ICAgICAgcmV0dXJuIHNpemU7CisgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5m
cmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOworICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3Rh
dHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gb3JpZW50YXRpb25BdEluZGV4KGluZGV4KS51c2VzV2lkdGhBc0hlaWdodCgpID8g
c2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6ZTsKKyAgICAvLyBNYW55IGFubm95aW5nIGFkcyBz
cGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoIGFzIHF1aWNrbHkgYXMg
cG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNlIGEg
ZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgIC8vIGEg
ZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgor
ICAgIGNvbnN0IGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyLT5kdXJhdGlvbigpIC8gMTAwMC4wZjsK
KyAgICBpZiAoZHVyYXRpb24gPCAwLjAxMWYpCisgICAgICAgIHJldHVybiAwLjEwMGY7CisgICAg
cmV0dXJuIGR1cmF0aW9uOwogfQogCi11bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNv
bnN0CitJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90KSBjb25zdAogewotICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKS5hcmVhKCkgKiA0OworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNv
ZGVyLT5vcmllbnRhdGlvbigpIDogSW1hZ2VPcmllbnRhdGlvbigpOwogfQogCi1mbG9hdCBJbWFn
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBJbWFnZVNv
dXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAw
OworICAgIHJldHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1lSGFzQWxwaGFB
dEluZGV4KGluZGV4KTsKIH0KIAotSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1l
SXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpID8gbV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogSW1hZ2VPcmllbnRh
dGlvbigpOworICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgo
aW5kZXgpOworICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZy
YW1lOjpGcmFtZUNvbXBsZXRlOwogfQotICAgIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsKQorCit1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewotICAgIHJldHVybiBp
bml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCkgOiAwOwogfQogCiB2b2lkIEltYWdl
U291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdApAQCAtMjI2LDMgKzIzMyw1IEBAIHZv
aWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB9CiAgICAgCiB9CisK
KyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCBhODk4MDc2MWI0NDE3MmE2ODgzMzVhYjk3OTBiODk0OGQ3MzEw
M2Y5Li5jZDliMzlkYWExYzg1ZTE4MGYyYzY0MTVhMGVkMjNmM2U0ZDc3N2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDEwLCAyMDEyLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjgsMTUgKzI4LDE4IEBACiAjZGVmaW5lIEltYWdlU291cmNl
X2gKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgog
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
LSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNp
ZiBVU0UoQ0cpCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CkBAIC04MCw3ICs4
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkCiAgICAg
fTsKIAotICAgIEltYWdlU291cmNlKEFscGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7
CisgICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRp
cGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKICAgICB+SW1hZ2VTb3VyY2UoKTsK
IAogICAgIC8vIFRlbGxzIHRoZSBJbWFnZVNvdXJjZSB0aGF0IHRoZSBJbWFnZSBubyBsb25nZXIg
Y2FyZXMgYWJvdXQgZGVjb2RlZCBmcmFtZQpAQCAtMTA0LDYxICsxMDcsNzYgQEAgcHVibGljOgog
ICAgIC8vIHdobyBzZXQgfGRlc3Ryb3lBbGx8IHRvIHRydWUgaWYgdGhleSB3aXNoIHRvIGJlIGFi
bGUgdG8gY29udGludWUgdXNpbmcKICAgICAvLyB0aGUgSW1hZ2VTb3VyY2UuICBUaGlzIHdheSBp
bXBsZW1lbnRhdGlvbnMgd2hpY2ggY2hvb3NlIHRvIGRlc3Ryb3kgdGhlaXIKICAgICAvLyBkZWNv
ZGVycyBpbiBzb21lIGNhc2VzIGNhbiByZWNvbnN0cnVjdCB0aGVtIGNvcnJlY3RseS4KLSAgICB2
b2lkIGNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUgPSAwLCBT
aGFyZWRCdWZmZXIqIGRhdGEgPSBudWxscHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNl
KTsKKyAgICB2b2lkIGNsZWFyKGJvb2wgZGVzdHJveUFsbCwKKyAgICAgICAgICAgICAgIHNpemVf
dCBjbGVhckJlZm9yZUZyYW1lID0gMCwKKyAgICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0
YSA9IE5VTEwsCisgICAgICAgICAgICAgICBib29sIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlKTsK
IAogICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAogICAgIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdDsKKyAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IHZvaWQgc2V0QWxsb3dTdWJzYW1wbGluZyhib29sIGFsbG93U3Vic2FtcGxpbmcpIHsgbV9hbGxv
d1N1YnNhbXBsaW5nID0gYWxsb3dTdWJzYW1wbGluZzsgfQotICAgIHN0YXRpYyBzaXplX3QgYnl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CisgICAgU3Vic2FtcGxpbmdMZXZlbCBt
YXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OworCisgICAgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKTsKICAgICAKLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OwogICAgIC8vIEFs
d2F5cyBvcmlnaW5hbCBzaXplLCB3aXRob3V0IHN1YnNhbXBsaW5nLgogICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0OwogICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0
OworICAgIAorICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgorICAg
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KSBjb25zdDsKKworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworCisgICAg
c2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0OwogCi0gICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKICAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCk7Ci0g
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdDsKIAotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVk
LgorICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisKKyAgICAvLyBDYWxsZXJzIHNob3Vs
ZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4
OworICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgorICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAp
OworCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZy
YW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBh
Y3R1YWxseSB1c2VkIGFueSBhbHBoYS4KLSAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBz
dWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKLSAgICAKKyAgICBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIGNvbXBs
ZXRlbHkgZGVjb2RlZC4KKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChz
aXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCisKICAgICAvLyBSZXR1cm4g
dGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlz
IG5vdCB5ZXQKICAgICAvLyBkZWNvZGVkIHRoZW4gcmV0dXJuIDAuCiAgICAgdW5zaWduZWQgZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7Ci0gICAg
Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9y
aWVudGF0aW9uCi0gICAgCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRl
ciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKLSAgICAvLyBzZWUgY29tbWVu
dHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKLSAgICAKKworI2lmIEVOQUJM
RShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgc3RhdGljIHVuc2lnbmVkIG1heFBp
eGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
OyB9CisgICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVk
IG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQor
I2VuZGlmCisKIHByaXZhdGU6Ci0gICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
KTsKLSAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciopOwogICAgIFN1
YnNhbXBsaW5nTGV2ZWwgY2FsY3VsYXRlTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdDsK
ICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKLQotICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVl
IG9mIG1fYWxsb3dTdWJzYW1wbGluZyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdEltYWdl
U3Vic2FtcGxpbmdFbmFibGVkIGluIFNldHRpbmdzLmNwcAorICAgIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyB7IHRydWUgfTsKICNlbHNlCiAgICAgYm9v
bCBtX2FsbG93U3Vic2FtcGxpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQog
ICAgIEFscGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKKyNlbmRpZgorI2lmIEVOQUJMRShJ
TUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgc3RhdGljIHVuc2lnbmVkIHNfbWF4UGl4
ZWxzUGVyRGVjb2RlZEltYWdlOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMjUy
NTlkYWFmOTIzOTFmNmNlNzE5N2EwN2Q1NzJjYjRjYjI0NjJhYi4uN2ZiZDM0MWI5ODhkYzI1ZDZk
MWYxMWQ4ZWEzNjdhMzY5ZDBkZGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMTIyLDYgKzEyMiwxNSBA
QCBJbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcigpCiAgICAgbV9uYXRpdmVEZWNvZGVyID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwobnVsbHB0cikpOwogfQogCitTdWJz
YW1wbGluZ0xldmVsIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0
IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKQoreworICAg
IC8vIFRoZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwg
MiA9IDAuMjV4LCAzID0gMC4xMjV4LgorICAgIGZsb2F0IGNsYW1wZWRTY2FsZSA9IHN0ZDo6bWF4
PGZsb2F0PigwLjEyNSwgc3RkOjptaW48ZmxvYXQ+KDEsIHNjYWxlKSk7CisgICAgU3Vic2FtcGxp
bmdMZXZlbCByZXN1bHQgPSBjZWlsZihsb2cyZigxIC8gY2xhbXBlZFNjYWxlKSk7CisgICAgQVNT
RVJUKHJlc3VsdCA+PTAgJiYgcmVzdWx0IDw9IDMpOworICAgIHJldHVybiBzdGQ6Om1pbihyZXN1
bHQsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKK30KKwogc2l6ZV90IEltYWdlRGVjb2Rlcjo6
Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKICAgICAvLyBNZWFzdXJlZCBi
eSB0cmFjaW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9TIDEwLjYuNiwgeDg2XzY0LgpA
QCAtMjAxLDI1ICsyMTAsMjYgQEAgaW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkg
Y29uc3QKICAgICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50
PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAorYm9vbCBJbWFnZURlY29kZXI6OmhvdFNw
b3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJ
bmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgp
KSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGludCB4ID0gLTEsIHkgPSAtMTsKICAgICBDRk51
bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RYIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIG51bSA9IChDRk51bWJlclJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFkiKSk7
CiAgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmeSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgaWYgKHggPCAwIHx8IHkgPCAwKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBJbnRQb2ludCh4LCB5KTsKKyAg
ICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEludFNp
emUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdApAQCAtMzc2LDIxICszODYsMjEgQEAgdm9p
ZCBJbWFnZURlY29kZXI6OnNldERhdGEoQ0ZEYXRhUmVmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwg
ZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRo
ZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNo
YXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJp
bGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5z
dXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJl
ZEJ1ZmZlci4KLSAgICBzZXREYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgc2V0RGF0YShkYXRhLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3Jh
cCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgZGF0YS0+cmVmKCk7CiAg
ICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4g
dGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJh
bnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBm
b3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVy
RGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
KyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoZGF0YSwgZGF0YS0+c2l6ZSgpLCAmcHJvdmlkZXJD
YWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAppbmRleCAzNzRiOGI2NzM4MGU1Nzk5ZTQyNzQ5MzRkYmVmMTZjMWFlMmEx
NDM4Li44YzZhOWUyMjc4MDQzZmE1YWM3MjEyNjE3ZjFlMDkzMTQ3MWZkNGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgK
QEAgLTI5LDIzICsyOSwxOSBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLQotdHlwZWRlZiBzdHJ1
Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0
IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1h
Z2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXIoKTsKICAgICAKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VEZWNv
ZGVyPigpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0
ZXJtaW5lUHJvcGVydGllcygpOworICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vi
c2FtcGxpbmdMZXZlbCk7CiAgICAgCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKQEAgLTU0LDcgKzUwLDcgQEAg
cHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3Q7CiAgICAgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwotICAgIE9wdGlvbmFs
PEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CisgICAgYm9vbCBob3RTcG90KEludFBvaW50JiBo
b3RTcG90KSBjb25zdDsKICAgICAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKQEAgLTY4LDkgKzY0LDcgQEAgcHVibGljOgogICAgIE5hdGl2ZUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXREYXRhKENGRGF0YVJlZiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7Ci0gICAgCi0gICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0K
KyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIAogcHJvdGVjdGVkOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ5ZDRlMTVjOWZmZTc5MGMyZTY4NTI0NmZlOGY4NWViNTYxNjA4M2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcApAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKKworI2lmIFVTRShDRykKKyNpbmNsdWRl
ICJJbWFnZVNvdXJjZUNHLmgiCisKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2U6
OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCit7
CisgICAgLy8gRklYTUU6IEFscGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBhcmUgaWdub3JlZC4KK30KKworSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCit7CisgICAg
Y2xlYXIodHJ1ZSk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFs
bEZyYW1lcywgc2l6ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQoreworICAgIC8vIFJlY2VudCB2ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNs
eSBkZWNvZGVkIGltYWdlIGZyYW1lcyBpZiB0aGUgY2xpZW50CisgICAgLy8gYXBwbGljYXRpb24g
bm8gbG9uZ2VyIGhvbGRzIHJlZmVyZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUncyBubyBuZWVkIHRv
IHRocm93IGF3YXkKKyAgICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBh
c2tlZCB0byBkZXN0cm95IGFsbCBvZiB0aGUgZnJhbWVzLgorICAgIGlmICghZGVzdHJveUFsbEZy
YW1lcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKKyAgICAK
KyAgICBpZiAoZGF0YSkKKyAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwor
fQorICAgIAordm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRC
dWZmZXIqKQoreworICAgIGlmIChpbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKTsKK30KKwordm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorewor
ICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGVuc3VyZURlY29kZXJJ
c0NyZWF0ZWQoZGF0YSk7CisgICAgCisgICAgaWYgKCFpbml0aWFsaXplZCgpKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworfQorCitTdHJpbmcg
SW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwor
fQorICAgIAorU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6Y2FsY3VsYXRlTWF4aW11bVN1
YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAoreworICAgIGlmICghbV9hbGxvd1N1YnNhbXBsaW5nIHx8
ICFhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoMCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgLy8gVmFsdWVzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TLgorICAgIGNv
bnN0IGludCBjTWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAx
MDI0OworICAgIGNvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgbWF4U3Vic2FtcGxpbmdMZXZlbCA9IDM7
CisKKyAgICBTdWJzYW1wbGluZ0xldmVsIGN1cnJlbnRMZXZlbCA9IDA7CisgICAgZm9yICggOyBj
dXJyZW50TGV2ZWwgPD0gbWF4U3Vic2FtcGxpbmdMZXZlbDsgKytjdXJyZW50TGV2ZWwpIHsKKyAg
ICAgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdEluZGV4KDAsIGN1cnJlbnRMZXZl
bCk7CisgICAgICAgIGlmIChmcmFtZVNpemUuYXJlYSgpIDwgY01heGltdW1JbWFnZUFyZWFCZWZv
cmVTdWJzYW1wbGluZykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBj
dXJyZW50TGV2ZWw7Cit9CisgICAgCitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhp
bXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJl
dHVybiBjYWxjdWxhdGVNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpOworI2VuZGlmCisgICAgcmV0
dXJuIDA7Cit9CisKK1N1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVy
OjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGltdW1TdWJzYW1wbGluZ0xldmVs
KCkpOworfQorCitib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQoreworICAgIHJl
dHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7Cit9CisK
K2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5h
bGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoaW5kZXgpOworfQorCitJbnRTaXplIEltYWdl
U291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFpbml0aWFsaXplZCgpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIAorICAgIEludFNpemUgc2l6ZSA9IG1fZGVjb2Rlci0+ZnJh
bWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiA9IG1fZGVjb2Rlci0+b3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsK
KyAgICAKKyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNp
emUudHJhbnNwb3NlZFNpemUoKSA6IHNpemU7Cit9CisKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VT
b3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkg
OiBJbWFnZU9yaWVudGF0aW9uKCk7Cit9CisKK0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDApOworfQorICAgIAorSW50
U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
OworfQorCitib29sIEltYWdlU291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBj
b25zdAoreworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+aG90U3BvdCho
b3RTcG90KTsKK30KKworc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWlu
ZVByb3BlcnRpZXMoKSBjb25zdAoreworICAgIHJldHVybiBJbWFnZURlY29kZXI6OmJ5dGVzRGVj
b2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOworfQorICAgIAoraW50IEltYWdlU291cmNlOjpy
ZXBldGl0aW9uQ291bnQoKQoreworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Mb29wT25jZTsKK30KKworc2l6ZV90IElt
YWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQo
KSA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKK30KKworUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwpIDogbnVsbHB0cjsKK30KKworYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYg
bV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKK30KKworZmxvYXQgSW1h
Z2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgp
IDogMDsKK30KKworYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KQoreworICAgIHJldHVybiAhaW5pdGlhbGl6ZWQoKSB8fCBtX2RlY29kZXItPmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKK30KKwordW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsKSBjb25zdAoreworICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS5hcmVhKCkgKiA0
OworfQorICAgIAordm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QK
K3sKKyAgICBpZiAobV9hbGxvd1N1YnNhbXBsaW5nKQorICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImFsbG93LXN1YnNhbXBsaW5nIiwgbV9hbGxvd1N1YnNhbXBsaW5nKTsKKyAgICAKKyAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gb3JpZW50YXRpb25BdEluZGV4KDApOworICAgIGlm
IChvcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQorICAgICAgICB0cy5kdW1wUHJvcGVydHko
Im9yaWVudGF0aW9uIiwgb3JpZW50YXRpb24pOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCBjZjExNzVkNDkzNjhkNDk2MTk2YzA0NzAyMzk1MDNiNmIzNzk4
ODI1Li42ZmUyOTBlMjI2MThmYmQ3NmM3NWM4NDQ5MjQ0NzJlMzE5N2ZmZjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHAKQEAgLTEsNSArMSw0IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3Jj
aCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI3MSwxNiArMjcwLDEz
IEBAIHRlbXBsYXRlIDxNYXRjaFR5cGUgdHlwZT4gaW50IGdldFNjYWxlZFZhbHVlKGNvbnN0IFZl
Y3RvcjxpbnQ+JiBzY2FsZWRWYWx1ZXMsIGluCiAKIH0KIAotYm9vbCBJbWFnZURlY29kZXI6OmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0gSW1hZ2VGcmFt
ZTo6RnJhbWVDb21wbGV0ZTsKLX0KLQogYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoaW5kZXgpIHx8IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uaGFzQWxwaGEoKTsK
KyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uc3RhdHVzKCkgPT0g
SW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVCdWZmZXJD
YWNoZVtpbmRleF0uaGFzQWxwaGEoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdW5zaWduZWQg
SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkBAIC0y
OTEsNDIgKzI4Nyw2IEBAIHVuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBtX3NpemUuYXJlYSgpICogc2l6ZW9mKElt
YWdlRnJhbWU6OlBpeGVsRGF0YSk7CiB9CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuc2l6ZSgpIDw9IGluZGV4KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGVbaW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBh
IDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxl
LgotICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9u
IG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKLSAgICAvLyBhIGR1cmF0aW9u
IG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dl
YmtpdC5vcmcvYi8zNjA4Mj4KLSAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBjb25z
dCBmbG9hdCBkdXJhdGlvbiA9IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uZHVyYXRpb24oKSAv
IDEwMDAuMGY7Ci0gICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICByZXR1cm4gMC4x
MDBmOwotICAgIHJldHVybiBkdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNh
biBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbgotICAgIC8vIGVt
cHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgotICAgIGlmIChzaXplKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVb
aW5kZXhdLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRp
dmUgaW1hZ2UuIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4g
YSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50
LgotICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmFzTmV3TmF0aXZlSW1hZ2Uo
KTsKLX0KLQogdm9pZCBJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgp
CiB7CiAgICAgbV9zY2FsZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNWJjNmIwMjU0MmRiNGIx
NTA0ODRiZmE4Y2RjM2FmZjE1ODkxMjRhYy4uNTM0N2E0N2I3MjNjZDVmMDNiNjJkM2IzNTJjZjk0
NTE0N2RhMGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0yMzYsMTQgKzIzNSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgICAgICAgICAgOiBtX3ByZW11bHRpcGx5QWxwaGEo
YWxwaGFPcHRpb24gPT0gSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCkKKyAgICAgICAg
ICAgIDogbV9zY2FsZWQoZmFsc2UpCisgICAgICAgICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYShh
bHBoYU9wdGlvbiA9PSBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkKQogICAgICAgICAg
ICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uID09IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQpCi0gICAgICAg
IHsKLSAgICAgICAgfQorICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCisgICAg
ICAgICAgICAsIG1fbWF4TnVtUGl4ZWxzKC0xKQorICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJl
Y2VpdmVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX2ZhaWxlZChmYWxzZSkgeyB9CiAKLSAgICAg
ICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkKLSAgICAgICAgewotICAgICAgICB9CisgICAgICAg
IHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQogCiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxs
ZXItb3duZWQgZGVjb2RlciBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZS4gIFJldHVybnMgMCBpZgog
ICAgICAgICAvLyB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3Zp
ZGVkIGRhdGEgKHBvc3NpYmx5CkBAIC0yNTQsMTEgKzI1NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBbGxEYXRhUmVjZWl2ZWQ7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9kYXRhID0gJmRhdGE7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRh
OwogICAgICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKICAg
ICAgICAgfQogCkBAIC0yODIsNyArMjgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBzaXplcy4gIFRoaXMgZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNp
bmNlIGRlY29kaW5nIEdJRnMKICAgICAgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFt
ZXMgYWdhaW5zdCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCiAgICAgICAgIC8vIHNp
emUgZnJhbWVzLgotICAgICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IHNpemUoKTsKICAgICAgICAgfQpAQCAtMzEwLDI0ICszMTAsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAgICAgdmly
dHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAKLSAgICAg
ICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0KICAgICAgICAg
Ly8gTWFrZSB0aGUgYmVzdCBlZmZvcnQgZ3Vlc3MgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBm
cmFtZSBoYXMgYWxwaGEgY2hhbm5lbC4KLSAgICAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKIAogICAgICAgICAvLyBOdW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRl
Y29kZWQgZnJhbWUgcmVxdWVzdGVkLiBSZXR1cm4gMCBpZiBub3QgeWV0IGRlY29kZWQuCi0gICAg
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgICAgIAot
ICAgICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgICAg
ICAKLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0SWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQogCi0gICAgICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1
cm4gbV9vcmllbnRhdGlvbjsgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBhbGxvd1N1YnNhbXBs
aW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRh
dGlvbjsgfQogCiAgICAgICAgIGVudW0geyBpY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGggPSAx
MjggfTsKIApAQCAtMzM4LDEwICszMzAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICByZXR1cm4gIW1lbWNtcCgmcHJvZmlsZURhdGFbMTZdLCAiUkdCICIsIDQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMoKSB7IHJldHVybiAwOyB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwp
IHsgcmV0dXJuIDA7IH0KLQogICAgICAgICBzdGF0aWMgYm9vbCBpbnB1dERldmljZUNvbG9yUHJv
ZmlsZShjb25zdCBjaGFyKiBwcm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxl
TGVuZ3RoID49IGljY0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7CkBAIC0zNjYsOSArMzU0LDEz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY29tcG9zaXRpbmcpLgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CiAKKyNpZiBF
TkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgICAgICB2b2lkIHNldE1heE51
bVBpeGVscyhpbnQgbSkgeyBtX21heE51bVBpeGVscyA9IG07IH0KKyNlbmRpZgorCiAgICAgICAg
IC8vIElmIHRoZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0aGUg
YXJndW1lbnQKICAgICAgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMg
ZmFsc2UuCi0gICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCB7IHJldHVybiBOdWxsb3B0OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBob3RTcG90KEludFBv
aW50JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTM4Miw3ICszNzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1l
QnVmZmVyQ2FjaGU7CiAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIG1fY29sb3JQcm9maWxl
IGFueSBtb3JlLCBmb3IgYW55IHBvcnQ/CiAgICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJv
ZmlsZTsKLSAgICAgICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9z
Y2FsZWQ7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKICAgICAgICAgVmVj
dG9yPGludD4gbV9zY2FsZWRSb3dzOwogICAgICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsK
QEAgLTQwMCwxNCArMzkyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAg
ICAgICAgIEludFNpemUgbV9zaXplOwotICAgICAgICBib29sIG1fc2l6ZUF2YWlsYWJsZSB7IGZh
bHNlIH07Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICAgICAg
c3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07Ci0jZWxzZQot
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgLTEgfTsKLSNlbmRpZgot
ICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgICAgICBib29s
IG1fZmFpbGVkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX3NpemVBdmFpbGFibGU7CisgICAg
ICAgIGludCBtX21heE51bVBpeGVsczsKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVk
OworICAgICAgICBib29sIG1fZmFpbGVkOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggY2FmMzVjOTdmMTdlZGQzNGJjOWRm
ODlhYjA5ZTg3MDBhZWU2YzdkZi4uM2Q3NmJjMmE5NzRkZWFmNzMxOGQ1NzBiMWVlYzMxNjI2MDk5
ODA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQCBC
TVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sCiB7CiB9CiAKLXZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgaWYgKG1fcmVhZGVyKQotICAgICAg
ICBtX3JlYWRlci0+c2V0RGF0YSgmZGF0YSk7CisgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKGRh
dGEpOwogfQogCiBib29sIEJNUEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuaAppbmRleCBiMmM0Nzg5NTYxOWJlY2FmMjVkMTBhMzBjMmU4M2FlMzU1
ODg3NmM0Li4xYzg4MmUxMzk5NTJlNDc0ODMyYmNiYzIyMDUwYTYwZmI0ZmZiYjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAiYm1wIjsgfQotICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwogICAgICAgICB2aXJ0
dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpOwogICAgICAg
ICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuICBCZSBjYXJlZnVs
IHRvIGF2b2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDc5MTUxNTYwNzJkNzE3
MDQ0MzcyNTczMDZiMDk1OTA4ZjM0OTg5MjIuLmNkNTZlNjdlYjkxOGIxNjkzYzRlY2NmNzQwYWY4
MGM4NTkzNmE3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC00MiwxNCArNDIs
MTQgQEAgR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkKIHsKIH0KIAotdm9pZCBH
SUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBJbWFnZURlY29kZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICBpZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKCZkYXRhKTsK
KyAgICAgICAgbV9yZWFkZXItPnNldERhdGEoZGF0YSk7CiB9CiAKIGJvb2wgR0lGSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgR0lGSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5KQogCiAg
ICAgaWYgKCFtX3JlYWRlcikgewogICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOwotICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEu
Z2V0KCkpOworICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEpOwogICAgIH0KIAogICAg
IGlmIChxdWVyeSA9PSBHSUZTaXplUXVlcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRl
eCBjNGM0OWFjMzRlOGM4MmNhMjkwMzhhY2VkYzAzOWY1OTBmMzgxYmQzLi40MDYxMDg5NTM5NWQ5
YjEyY2M2OWQxOTFjYzMwNTIyMDljYzA2ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJbWFnZURl
Y29kZXIKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7
IHJldHVybiAiZ2lmIjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCBib29sIHNl
dFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwg
c2l6ZV90IGZyYW1lQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggZWE0MmIxMWE3
OGMzOGViZTY1YzJjMjhiOTFjOGFmYjYyNjM1YTk5OS4uZmI4NzhlZDA4ZTI4ZDQwMmVlZjM3MGRj
YTM5MmNmOWYyNmVkMDQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTI0Niw3ICsyNDYs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqIGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9
CiAgICAgLy8gRklYTUU6IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBk
ZWNvZGUoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGE2MDNhMTA3NmY5ZGZj
ZDE5NGU2YmQ5Y2YyYjgxZDRiM2I5ZGI3N2IuLjU2YWM5MjFjZDA4NDY4MjNiODExMThlYTZmM2Fk
ZjIxMWRhN2EwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpCiB7CiB9CiAKLXZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiAgICAgZm9yIChCTVBSZWFk
ZXJzOjppdGVyYXRvciBpKG1fYm1wUmVhZGVycy5iZWdpbigpKTsgaSAhPSBtX2JtcFJlYWRlcnMu
ZW5kKCk7ICsraSkgewogICAgICAgICBpZiAoKmkpCi0gICAgICAgICAgICAoKmkpLT5zZXREYXRh
KCZkYXRhKTsKKyAgICAgICAgICAgICgqaSktPnNldERhdGEoZGF0YSk7CiAgICAgfQogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbmdEZWNvZGVycy5zaXplKCk7ICsraSkKICAgICAgICAg
c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGkpOwpAQCAtMTI4LDIwICsxMjgsMjEgQEAgYm9v
bCBJQ09JbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6
c2V0RmFpbGVkKCk7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6Omhv
dFNwb3QoKSBjb25zdAorYm9vbCBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoSW50UG9pbnQmIGhv
dFNwb3QpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiB1bnNwZWNpZmllZCwgdGhlIGRlZmF1bHQgZnJh
bWUgaXMgYWx3YXlzIGZyYW1lIDAuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoCiAgICAgLy8gQml0
bWFwSW1hZ2Ugd2hlcmUgY3VycmVudEZyYW1lKCkgc3RhcnRzIGF0IDAgYW5kIG9ubHkgaW5jcmVh
c2VzIHdoZW4gYW5pbWF0aW9uIGlzCiAgICAgLy8gcmVxdWVzdGVkLgotICAgIHJldHVybiBob3RT
cG90QXRJbmRleCgwKTsKKyAgICByZXR1cm4gaG90U3BvdEF0SW5kZXgoMCwgaG90U3BvdCk7CiB9
CiAKLU9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChz
aXplX3QgaW5kZXgsIEludFBvaW50JiBob3RTcG90KSBjb25zdAogewogICAgIGlmIChpbmRleCA+
PSBtX2RpckVudHJpZXMuc2l6ZSgpIHx8IG1fZmlsZVR5cGUgIT0gQ1VSU09SKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZGly
RW50cmllc1tpbmRleF0ubV9ob3RTcG90OworICAgIGhvdFNwb3QgPSBtX2RpckVudHJpZXNbaW5k
ZXhdLm1faG90U3BvdDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCkBAIC0xNjQsNyArMTY1LDcg
QEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChzaXpl
X3QgaW5kZXgpCiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5H
IGRlY29kZXIgYWJsZSB0byB0YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+
ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5
Lm1faW1hZ2VPZmZzZXQpKTsKLSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5n
RGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CisgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNl
dERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oCmluZGV4IDlmNDdhMDhkMzk0NjY1ZDBjZGI3YjMxODUzNTE2MDBjN2Q3
YzYzYmEuLjE0OTQ3OTdhOWJmMzFjM2U2NGI4MWRiNmNlMzMzZDkxMjdmYjg5ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFt
ZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJpY28iOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCkgY29uc3Q7CkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gYXZvaWQgYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lh
bGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20KICAgICAgICAgLy8gaW5zaWRlIEJNUEltYWdlUmVh
ZGVyIQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCk7Ci0gICAgICAgIHZpcnR1YWwg
T3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29s
IGhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0g
SW1hZ2VUeXBlIHsKQEAgLTExNiw4ICsxMTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIC8vIGNvdWxkIGJlIGRlY29kZWQuCiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpcmVjdG9yeUVu
dHJpZXMoKTsKIAotICAgICAgICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwg
cmV0dXJucyBOdWxsb3B0IGlmIHRoZXJlIGlzIG5vbmUuCi0gICAgICAgIE9wdGlvbmFsPEludFBv
aW50PiBob3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICAvLyBTdG9yZXMgdGhl
IGhvdC1zcG90IGZvciB8aW5kZXh8IGluIHxob3RTcG90fCBhbmQgcmV0dXJucyB0cnVlLAorICAg
ICAgICAvLyBvciByZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vbmUuCisgICAgICAgIGJvb2wg
aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4LCBJbnRQb2ludCYgaG90U3BvdCkgY29uc3Q7CiAK
ICAgICAgICAgLy8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUg
Y3VycmVudCBvZmZzZXQgaW50bwogICAgICAgICAvLyB8ZGF0YXwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IGNhZjBkNzIzZjA2NTk2OWUwYzA4
YzQ2ZTAyYzI0YTZlNDdjMTE5ZDguLmNhZmRkOTgwYWI4MThmOWFmNWE5NjJlMGYxNTVkOWY0N2Mw
Y2YyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CkBAIC00NTAsOSArNDUwLDEwIEBAIHZvaWQgRXdrVmlldzo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNv
ciYgY3Vyc29yKQogICAgICAgICBpZiAoY3Vyc29ySW1hZ2UgPT0gbV9jdXJzb3JJZGVudGlmaWVy
LmltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIAotICAgICAgICBPcHRpb25h
bDxJbnRQb2ludD4gaG90U3BvdCA9IGN1cnNvckltYWdlLT5ob3RTcG90KCk7Ci0gICAgICAgIEVj
b3JlX1hfQ3Vyc29yIGN1c3RvbUN1cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcih3aW5kb3csIGN1
cnNvckltYWdlLCBJbnRTaXplKGN1cnNvckltYWdlLT5zaXplKCkpLCBob3RTcG90ID8gaG90U3Bv
dC52YWx1ZSgpIDogSW50UG9pbnQoKSk7CisgICAgICAgIEludFBvaW50IGhvdFNwb3Q7CisgICAg
ICAgIGN1cnNvckltYWdlLT5nZXRIb3RTcG90KGhvdFNwb3QpOworCisgICAgICAgIEVjb3JlX1hf
Q3Vyc29yIGN1c3RvbUN1cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcih3aW5kb3csIGN1cnNvcklt
YWdlLCBJbnRTaXplKGN1cnNvckltYWdlLT5zaXplKCkpLCBob3RTcG90KTsKICAgICAgICAgaWYg
KCFjdXN0b21DdXJzb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZThlOTkxNjEw
OGNkYTVhZmY1ZGIxZTQ1YzE1NWJmYzU5ODA1MzQzLi5kOGNlZjk1NzQ1ZmY0ZWM2YjgxMTFjMWUx
N2Y0N2JjYmZkMzJhZTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDQtMTEgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxOTkyOTAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTY0NjUKKworICAgICAgICBicm9rZSAzMDAgdGVzdHMgKFJlcXVlc3Rl
ZCBieSBtY2F0YW56YXJvIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNl
dDoKKworICAgICAgICAiTWVyZ2UgQ0cgSW1hZ2VTb3VyY2UgYW5kIG5vbiBDRyBJbWFnZVNvdXJj
ZSBpbXBsZW1lbnRhdGlvbiBpbgorICAgICAgICBvbmUgZmlsZSIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ1NgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTkyOTAKKwogMjAxNi0wNC0xMSAgRnJlZGVyaWMgV2Fu
ZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyIGxheW91dCBmdW5jdGlvbnMgdG8gYXZvaWQgdXNpbmcgZmxleGJveApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXN1YnNhbXBsaW5nLWV4cGVjdGVkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMzEzYmViOGRiNzk0MTk1YTZiZWMy
MmRmMGI4MTFjN2IyMzA5MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmctZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgot
PGh0bWw+Ci08aGVhZD4KLSAgICA8c3R5bGU+Ci0gICAgICAgIGRpdiB7Ci0gICAgICAgICAgICB3
aWR0aDogMTAwcHg7Ci0gICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICAgICAgbWFy
Z2luOiAxMHB4OwotICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgICAgICB9
Ci0gICAgPC9zdHlsZT4KLTxoZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotICAgIGZ1bmN0aW9uIGNy
ZWF0ZURpdihjb2xvcikgewotICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBkaXZFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xv
ciA9IGNvbG9yOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQp
OwotICAgIH0KLQotICAgIGNyZWF0ZURpdigicmVkIik7Ci0gICAgY3JlYXRlRGl2KCJncmVlbiIp
OwotICAgIGNyZWF0ZURpdigiYmx1ZSIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Utc3Vic2FtcGxpbmcuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI4YWUzYmU5ZGY1MzAxZGIyYTE4ZDgyOTM0ZTczYmE1
ZDk4OTQ3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1zdWJzYW1wbGluZy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLTxoZWFkPgotICAg
IDxzdHlsZT4KLSAgICAgICAgZGl2IHsKLSAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAg
ICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAgICAgICAgICBtYXJnaW46IDEwcHg7Ci0gICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgICAgIH0KLSAgICAgICAgaW1nIHsKLSAg
ICAgICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAg
ICAgIH0KLSAgICA8L3N0eWxlPgotPGhlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1h
Z2VTdWJzYW1wbGluZ0VuYWJsZWQodHJ1ZSk7Ci0KLSAgICBmdW5jdGlvbiBjcmVhdGVJbWFnZShj
b2xvcikgewotICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7Ci0gICAgICAgIGNhbnZhcy53aWR0aCA9IDEwMjQgKiAzOwotICAgICAgICBjYW52YXMu
aGVpZ2h0ID0gMTAyNCAqIDM7Ci0gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgi
MmQiKTsKLSAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yOwotICAgICAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKLQotICAgICAgICB2YXIgaW1n
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgICAgICBpbWdFbGVt
ZW50LnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpOwotCi0gICAgICAgIHZhciBk
aXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGRpdkVs
ZW1lbnQuYXBwZW5kQ2hpbGQoaW1nRWxlbWVudCk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZGl2RWxlbWVudCk7Ci0gICAgfQotICAgIAotICAgIGNyZWF0ZUltYWdlKCJyZWQi
KTsKLSAgICBjcmVhdGVJbWFnZSgiZ3JlZW4iKTsKLSAgICBjcmVhdGVJbWFnZSgiYmx1ZSIpOwot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>