<?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>288226</bug_id>
          
          <creation_ts>2025-02-21 12:54:53 -0800</creation_ts>
          <short_desc>REGRESSION(290791@main): Broke wpt.fyi</short_desc>
          <delta_ts>2025-02-21 13:06:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>288102</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2096825</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-02-21 12:54:53 -0800</bug_when>
    <thetext>https://commits.webkit.org/290791@main introduced a regression:
Broke wpt.fyi

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>2096827</commentid>
    <comment_count>1</comment_count>
      <attachid>474313</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-02-21 12:54:59 -0800</bug_when>
    <thetext>Created attachment 474313
REVERT of 290791@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2096828</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2025-02-21 12:56:12 -0800</bug_when>
    <thetext>rdar://145307125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2096829</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-02-21 12:56:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/145315429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2096830</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2025-02-21 12:57:22 -0800</bug_when>
    <thetext>&lt;rdar://145307125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2096840</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-02-21 13:06:42 -0800</bug_when>
    <thetext>Committed 290820@main (5e5c7a9d5e4f): &lt;https://commits.webkit.org/290820@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 474313.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474313</attachid>
            <date>2025-02-21 12:54:59 -0800</date>
            <delta_ts>2025-02-21 13:06:43 -0800</delta_ts>
            <desc>REVERT of 290791@main</desc>
            <filename>bug-288226-20250221205459.patch</filename>
            <type>text/plain</type>
            <size>61606</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAyYTVhOWVjZThjY2M5MzMzNTVmZjQ5ODdiNzk2NjJjZWNhMzVhNTc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDIxIEZlYiAyMDI1IDIwOjU0OjU2ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI5MDc5MUBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4ODIyNgoKQnJva2Ugd3B0LmZ5aQoKUmV2ZXJ0ZWQgY2hhbmdl
c2V0OgoKIltZYXJyXSBJbXByb3ZlIHByb2Nlc3Npbmcgb2YgYW4gYWx0ZXJuYXRpb24gb2Ygc3Ry
aW5ncyIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODEwMgpodHRw
czovL2NvbW1pdHMud2Via2l0Lm9yZy8yOTA3OTFAbWFpbgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwICAgICAgICB8IDMyMyArKysrKy0tLS0tLS0tLS0tLS0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCAgICB8ICA2MSArLS0tCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oICAgICAgfCAgIDQgLQogLi4u
L21pY3JvYmVuY2htYXJrcy9yZWdleHAta2V5d29yZC1wYXJzaW5nLmpzIHwgMTc1IC0tLS0tLS0t
LS0KIEpTVGVzdHMvc3RyZXNzL3JlZ2V4cC1wYXJzaW5nLXRva2Vucy5qcyAgICAgICB8IDE5OSAt
LS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCA2NzggZGVsZXRp
b25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcmVnZXhw
LWtleXdvcmQtcGFyc2luZy5qcwogZGVsZXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL3Jl
Z2V4cC1wYXJzaW5nLXRva2Vucy5qcwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5j
cHAKaW5kZXggYzQzMWIxMWRiNWJjLi41ZGE5Y2RjYWMyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zMTcsMTcgKzMxNywxMyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIE1hdGNoU3VjY2Vz
c0ZhbGxUaHJvdWdoID0gUHJlZmVyTWF0Y2hGYWlsZWQKICAgICAgICAgfTsKIAotICAgICAgICBN
YXRjaFRhcmdldHMoUHJlZmVycmVkVGFyZ2V0IHByZWZlcnJlZFRhcmdldCA9IFByZWZlcnJlZFRh
cmdldDo6Tm9QcmVmZXJlbmNlKQotICAgICAgICAgICAgOiBtX3ByZWZlcnJlZFRhcmdldChwcmVm
ZXJyZWRUYXJnZXQpCi0gICAgICAgIHsgfQotCiAgICAgICAgIE1hdGNoVGFyZ2V0cyhNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QmIG1hdGNoRGVzdCkKICAgICAgICAgICAgIDogbV9tYXRjaFN1Y2Nl
ZWRlZFRhcmdldHMoJm1hdGNoRGVzdCkKICAgICAgICAgICAgICwgbV9wcmVmZXJyZWRUYXJnZXQo
UHJlZmVycmVkVGFyZ2V0OjpQcmVmZXJNYXRjaFN1Y2NlZWRlZCkKICAgICAgICAgeyB9CiAKICAg
ICAgICAgTWF0Y2hUYXJnZXRzKE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgY29tcGFyZURlc3Qs
IFByZWZlcnJlZFRhcmdldCBwcmVmZXJyZWRUYXJnZXQpCi0gICAgICAgICAgICA6IG1fcHJlZmVy
cmVkVGFyZ2V0KHByZWZlcnJlZFRhcmdldCkKKyAgICAgICAgICAgIDogbV9wcmVmZXJyZWRUYXJn
ZXQoJnByZWZlcnJlZFRhcmdldCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHByZWZlcnJl
ZFRhcmdldCA9PSBQcmVmZXJyZWRUYXJnZXQ6OlByZWZlck1hdGNoRmFpbGVkKQogICAgICAgICAg
ICAgICAgIG1fbWF0Y2hGYWlsZWRUYXJnZXRzID0gJmNvbXBhcmVEZXN0OwpAQCAtMTA4MSw4ICsx
MDc3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMTZVbmFsaWduZWQoYWRkcmVzcywgcmVzdWx0UmVnKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlv
biBjb25kPgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBJZkNoYXJDb25kKGNoYXIzMl90
IGNoLCBDaGVja2VkPHVuc2lnbmVkPiBuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCwgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgY2hhcmFjdGVyLCBib29sIGlnbm9yZUNhc2UpCisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAganVtcElmQ2hhck5vdEVxdWFscyhjaGFyMzJfdCBjaCwgQ2hlY2tlZDx1
bnNpZ25lZD4gbmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGNoYXJhY3RlciwgYm9vbCBpZ25vcmVDYXNlKQogICAgIHsKICAgICAgICAgcmVhZENoYXJh
Y3RlcihuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyKTsKIApAQCAtMTA5NCwxNyAr
MTA4OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8g
ewogICAgICAgICAgICAgY2ggfD0gMHgyMDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBt
X2ppdC5icmFuY2gzMihjb25kLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjaCkp
OwotICAgIH0KLQotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBJZkNoYXJOb3RFcXVhbHMo
Y2hhcjMyX3QgY2gsIENoZWNrZWQ8dW5zaWduZWQ+IG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0LCBN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGFyYWN0ZXIsIGJvb2wgaWdub3JlQ2FzZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBqdW1wSWZDaGFyQ29uZDxNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWw+KGNoLCBuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyLCBpZ25vcmVDYXNlKTsK
LSAgICB9Ci0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wSWZDaGFyRXF1YWxzKGNoYXIz
Ml90IGNoLCBDaGVja2VkPHVuc2lnbmVkPiBuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCwgTWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hhcmFjdGVyLCBib29sIGlnbm9yZUNhc2UpCi0gICAgewot
ICAgICAgICByZXR1cm4ganVtcElmQ2hhckNvbmQ8TWFjcm9Bc3NlbWJsZXI6OkVxdWFsPihjaCwg
bmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlciwgaWdub3JlQ2FzZSk7CisgICAgICAg
IHJldHVybiBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNoYXJhY3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgc3Rv
cmVUb0ZyYW1lKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZywgdW5zaWduZWQgZnJhbWVM
b2NhdGlvbikKQEAgLTEyNjMsMTUgKzEyNDgsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVC
ZWdpbiwKICAgICAgICAgU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0LAogICAgICAgICBTaW1w
bGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCwKLSAgICAgICAgLy8gVXNlZCBmb3IgYWx0ZXJuYXRpdmVz
IGluIHN1YnBhdHRlcm5zIHdoZXJlIHRoZXJlIGlzIGEgbGlzdCBvZiBCT0wgYW5jaG9yZWQKLSAg
ICAgICAgLy8gc3RyaW5nIGFsdGVybmF0aXZlcy4gU3VjaCBhIHN0cmluZyBsaXN0IGRvZXNuJ3Qg
bmVlZCBiYWNrdHJhY2tpbmcuIElmIHRoZQotICAgICAgICAvLyBwYXR0ZXJuIGlzIGFsc28gRU9M
IGFuY2hvcmVkLCBlLmcuIC9eKD86Y2F0fGRvZ3xkb2dneSkkLywgdGhlIGxpc3Qgb2Ygc3RyaW5n
cwotICAgICAgICAvLyBuZWVkcyB0byBiZSBzb3J0ZWQgc3VjaCB0aGF0IGFsbCBsb25nZXIgc3Ry
aW5ncyB3aXRoIGEgcHJlZml4IHByaW9yIGluIHRoZQotICAgICAgICAvLyBsaXN0IGFwcGVhciBm
aXJzdC4gSW4gdGhlIGV4YW1wbGUsIHdlJ2Qgc29ydCB0aGUgYWx0ZXJuYXRpdmVzIHRvIHNvbWV0
aGluZwotICAgICAgICAvLyBsaWtlOiAvXig/OmNhdHxkb2dneXxkb2cpJC8uIFRoaXMgZWxpbW5h
dGVzIHRoZSBuZWVkIHRvIGJhY2trdHJhY2suCi0gICAgICAgIFN0cmluZ0xpc3RBbHRlcm5hdGl2
ZUJlZ2luLAotICAgICAgICBTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0LAotICAgICAgICBTdHJp
bmdMaXN0QWx0ZXJuYXRpdmVFbmQsCiAgICAgICAgIC8vIFVzZWQgdG8gd3JhcCAnT25jZScgc3Vi
cGF0dGVybiBtYXRjaGVzIChxdWFudGl0eU1heENvdW50ID09IDEpLgogICAgICAgICBQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sCiAgICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVybk9u
Y2VFbmQsCkBAIC0xOTgwLDE2ICsxOTU2LDEzIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgIH0KICNlbmRpZgogCi0gICAgdm9pZCBnZW5lcmF0
ZVBhdHRlcm5DaGFyYWN0ZXJPbmNlKHNpemVfdCBvcEluZGV4LCBNYXRjaFRhcmdldHMmIG1hdGNo
VGFyZ2V0cykKKyAgICB2b2lkIGdlbmVyYXRlUGF0dGVybkNoYXJhY3Rlck9uY2Uoc2l6ZV90IG9w
SW5kZXgpCiAgICAgewogICAgICAgICBZYXJyT3AmIG9wID0gbV9vcHNbb3BJbmRleF07CiAKICAg
ICAgICAgaWYgKG9wLm1faXNEZWFkQ29kZSkKICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBNYXRjaFRhcmdldHMgZGVmYXVsdE1hdGNoVGFyZ2V0cyhtYXRjaFRhcmdldHMuaGFzRmFpbGVk
VGFyZ2V0KCkgPyBtYXRjaFRhcmdldHMubWF0Y2hGYWlsZWQoKSA6IG9wLm1fanVtcHMsIE1hdGNo
VGFyZ2V0czo6UHJlZmVycmVkVGFyZ2V0OjpNYXRjaFN1Y2Nlc3NGYWxsVGhyb3VnaCk7Ci0gICAg
ICAgIE1hdGNoVGFyZ2V0cyBsYXN0TWF0Y2hUYXJnZXRzKG1hdGNoVGFyZ2V0cy5tYXRjaFN1Y2Nl
ZWRlZCgpLCBtYXRjaFRhcmdldHMuaGFzRmFpbGVkVGFyZ2V0KCkgPyBtYXRjaFRhcmdldHMubWF0
Y2hGYWlsZWQoKSA6IG9wLm1fanVtcHMsIG1hdGNoVGFyZ2V0cy5wcmVmZXJyZWRUYXJnZXQoKSk7
Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIG1fb3BzIGFsd2F5cyBlbmRzIHdpdGggYSBZYXJyT3BD
b2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQgb3IgWWFyck9wQ29kZTo6TWF0Y2hGYWlsZWQKICAgICAg
ICAgLy8gbm9kZSwgc28gdGhlcmUgbXVzdCBhbHdheXMgYmUgYXQgbGVhc3Qgb25lIG1vcmUgbm9k
ZS4KICAgICAgICAgQVNTRVJUKG9wSW5kZXggKyAxIDwgbV9vcHMuc2l6ZSgpKTsKQEAgLTIwMDAs
NyArMTk3Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8gewogCiAgICAgICAgIGlmICghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXJT
aXplOjpDaGFyOCkpIHsKICAgICAgICAgICAgIC8vIEhhdmUgYSAxNiBiaXQgcGF0dGVybiBjaGFy
YWN0ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKLSAgICAgICAgICAgIGRl
ZmF1bHRNYXRjaFRhcmdldHMuYXBwZW5kRmFpbGVkKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAg
ICBvcC5tX2p1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTIwNTUsNyArMjAyOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogCiAgICAgICAgICAgICBpZiAoIWlzTGF0aW4xKGN1
cnJlbnRDaGFyYWN0ZXIpICYmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBIYXZlIGEgMTYgYml0IHBhdHRlcm4gY2hhcmFjdGVyIGFuZCBhbiA4
IGJpdCBzdHJpbmcgLSBzaG9ydCBjaXJjdWl0Ci0gICAgICAgICAgICAgICAgZGVmYXVsdE1hdGNo
VGFyZ2V0cy5hcHBlbmRGYWlsZWQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgICAgICBvcC5t
X2p1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIApAQCAtMjA3NywxNzIgKzIwNTAsMTI3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICB9CiAjZW5kaWYKIAotICAg
ICAgICAvLyBTdGFydCB3aXRoIGRlZmF1bHRNYXRjaFRhcmdldHMgYW5kIHRoZW4gcHJvdmUgdGhh
dCB3ZSBhcmUgaGFuZGxpbmcgdGhlIGxhc3QKLSAgICAgICAgLy8gUGF0dGVybkNoYXJhY3RlciBm
aXhlZCBzaXplIDEgdGVybSBpbiB0aGUgbGlzdC4KLSAgICAgICAgYm9vbCBpc0xhc3RDaGFyT25j
ZSA9IGZhbHNlOwotICAgICAgICBpZiAobV9vcHMuc2l6ZSgpIDwgb3BJbmRleCArIG51bWJlckNo
YXJhY3RlcnMgKyAxKQotICAgICAgICAgICAgaXNMYXN0Q2hhck9uY2UgPSB0cnVlOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIFlhcnJPcCogZm9sbG93aW5nT3AgPSAmbV9vcHNbb3BJbmRl
eCArIG51bWJlckNoYXJhY3RlcnNdOwotICAgICAgICAgICAgaWYgKGZvbGxvd2luZ09wLT5tX29w
ICE9IFlhcnJPcENvZGU6OlRlcm0pCi0gICAgICAgICAgICAgICAgaXNMYXN0Q2hhck9uY2UgPSB0
cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZm9sbG93aW5nT3AtPm1fdGVybS0+dHlwZSA9PSBQ
YXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MCi0gICAgICAgICAgICAgICAgJiYgbV9vcHMu
c2l6ZSgpID4gb3BJbmRleCArIG51bWJlckNoYXJhY3RlcnMgKyAxCi0gICAgICAgICAgICAgICAg
JiYgbV9vcHNbb3BJbmRleCArIG51bWJlckNoYXJhY3RlcnMgKyAxXS5tX29wICE9IFlhcnJPcENv
ZGU6OlRlcm0pCi0gICAgICAgICAgICAgICAgaXNMYXN0Q2hhck9uY2UgPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIE1hdGNoVGFyZ2V0cyogbWF0Y2hUYXJnZXRGb3JGaW5hbENvbXBhcmlzb24g
PSBpc0xhc3RDaGFyT25jZSA/ICZsYXN0TWF0Y2hUYXJnZXRzIDogJmRlZmF1bHRNYXRjaFRhcmdl
dHM7Ci0KICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICBk
ZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KCkp
OworICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dCgp
KTsKIAogICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpIHsKLSAgICAg
ICAgICAgIGF1dG8gY2hlY2sxID0gWyZdIChDaGVja2VkPHVuc2lnbmVkPiBvZmZzZXQsIGNoYXIz
Ml90IGNoYXJhY3RlcnMsIE1hdGNoVGFyZ2V0cyYgbWF0Y2hUYXJnZXRzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtYXRjaFRhcmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChqdW1wSWZDaGFyTm90RXF1
YWxzKGNoYXJhY3RlcnMsIG9mZnNldCwgY2hhcmFjdGVyLCB0ZXJtLT5pZ25vcmVDYXNlKCkpKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoVGFyZ2V0cy5h
cHBlbmRTdWNjZWVkZWQoanVtcElmQ2hhckVxdWFscyhjaGFyYWN0ZXJzLCBvZmZzZXQsIGNoYXJh
Y3RlciwgdGVybS0+aWdub3JlQ2FzZSgpKSk7CisgICAgICAgICAgICBhdXRvIGNoZWNrMSA9IFsm
XSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCBjaGFyMzJfdCBjaGFyYWN0ZXJzKSB7CisgICAg
ICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaGFyYWN0
ZXJzLCBvZmZzZXQsIGNoYXJhY3RlciwgdGVybS0+aWdub3JlQ2FzZSgpKSk7CiAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICBhdXRvIGNoZWNrMiA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4g
b2Zmc2V0LCB1aW50MTZfdCBjaGFyYWN0ZXJzLCB1aW50MTZfdCBtYXNrLCBNYXRjaFRhcmdldHMm
IG1hdGNoVGFyZ2V0cykgeworICAgICAgICAgICAgYXV0byBjaGVjazIgPSBbJl0gKENoZWNrZWQ8
dW5zaWduZWQ+IG9mZnNldCwgdWludDE2X3QgY2hhcmFjdGVycywgdWludDE2X3QgbWFzaykgewog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNlVuYWxpZ25lZChuZWdhdGl2ZU9mZnNldEluZGV4
ZWRBZGRyZXNzKG9mZnNldCwgY2hhcmFjdGVyKSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAg
ICBpZiAobWFzaykKICAgICAgICAgICAgICAgICAgICAgbV9qaXQub3IzMihNYWNyb0Fzc2VtYmxl
cjo6SW1tMzIobWFzayksIGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaFRh
cmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWF0
Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNoYXJhY3RlcnMgfCBtYXNr
KSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hUYXJn
ZXRzLmFwcGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNoYXJhY3RlcnMgfCBtYXNrKSkpOwor
ICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoY2hhcmFj
dGVycyB8IG1hc2spKSk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBhdXRvIGNoZWNr
NCA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBtYXNrLCBNYXRjaFRhcmdldHMmIG1hdGNoVGFyZ2V0cykgeworICAgICAgICAgICAg
YXV0byBjaGVjazQgPSBbJl0gKENoZWNrZWQ8dW5zaWduZWQ+IG9mZnNldCwgdW5zaWduZWQgY2hh
cmFjdGVycywgdW5zaWduZWQgbWFzaykgewogICAgICAgICAgICAgICAgIGlmIChtYXNrKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobmVn
YXRpdmVPZmZzZXRJbmRleGVkQWRkcmVzcyhvZmZzZXQsIGNoYXJhY3RlciksIGNoYXJhY3Rlcik7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtYXNrKQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9qaXQub3IzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobWFzayksIGNoYXJhY3Rlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghbWF0Y2hUYXJnZXRzLmhhc1N1Y2NlZWRUYXJnZXQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNYXRjaFRhcmdldHMuYXBwZW5kRmFpbGVkKG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6SW1tMzIoY2hhcmFjdGVycyB8IG1hc2spKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoVGFyZ2V0cy5hcHBlbmRTdWNjZWVk
ZWQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBjaGFyYWN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMihjaGFyYWN0ZXJzIHwgbWFzaykpKTsKKyAgICAgICAgICAgICAgICAg
ICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjaGFyYWN0ZXJzIHwgbWFzaykp
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoIW1hdGNoVGFyZ2V0cy5oYXNTdWNjZWVkVGFyZ2V0KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHRNYXRjaFRhcmdldHMuYXBwZW5kRmFpbGVkKG1faml0LmJyYW5j
aDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG5lZ2F0
aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3Mob2Zmc2V0LCBjaGFyYWN0ZXIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGNoYXJhY3RlcnMpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBtYXRjaFRhcmdldHMuYXBwZW5kU3VjY2VlZGVkKG1faml0LmJyYW5j
aDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG5lZ2F0aXZl
T2Zmc2V0SW5kZXhlZEFkZHJlc3Mob2Zmc2V0LCBjaGFyYWN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKGNoYXJhY3RlcnMpKSk7CisgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5h
cHBlbmQobV9qaXQuYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgbmVnYXRpdmVPZmZzZXRJbmRleGVkQWRkcmVzcyhvZmZzZXQsIGNoYXJhY3Rl
ciksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoY2hhcmFjdGVycykpKTsKICAgICAgICAg
ICAgIH07CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQot
ICAgICAgICAgICAgYXV0byBjaGVjazggPSBbJl0gKENoZWNrZWQ8dW5zaWduZWQ+IG9mZnNldCwg
dWludDY0X3QgY2hhcmFjdGVycywgdWludDY0X3QgbWFzaywgTWF0Y2hUYXJnZXRzJiBtYXRjaFRh
cmdldHMpIHsKKyAgICAgICAgICAgIGF1dG8gY2hlY2s4ID0gWyZdIChDaGVja2VkPHVuc2lnbmVk
PiBvZmZzZXQsIHVpbnQ2NF90IGNoYXJhY3RlcnMsIHVpbnQ2NF90IG1hc2spIHsKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQobmVnYXRpdmVPZmZzZXRJbmRleGVkQWRkcmVzcyhvZmZzZXQs
IGNoYXJhY3RlciksIGNoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgaWYgKG1hc2spCiAgICAg
ICAgICAgICAgICAgICAgIG1faml0Lm9yNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NCht
YXNrKSwgY2hhcmFjdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoVGFyZ2V0cy5oYXNT
dWNjZWVkVGFyZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNYXRjaFRhcmdldHMu
YXBwZW5kRmFpbGVkKG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2hh
cmFjdGVyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KGNoYXJhY3RlcnMgfCBtYXNrKSkp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hUYXJnZXRz
LmFwcGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGNo
YXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChjaGFyYWN0ZXJzIHwgbWFzaykp
KTsKKyAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW02NChjaGFyYWN0ZXJzIHwgbWFzaykpKTsKICAgICAgICAgICAgIH07CiAjZW5kaWYKIAogICAg
ICAgICAgICAgc3dpdGNoIChudW1iZXJDaGFyYWN0ZXJzKSB7CiAgICAgICAgICAgICBjYXNlIDE6
CiAgICAgICAgICAgICAgICAgLy8gVXNlIDMyYml0IHdpZHRoIG9mIGFsbENoYXJhY3RlcnMgc2lu
Y2UgWWFyciBjb3VudHMgc3Vycm9nYXRlIHBhaXJzIGFzIG9uZSBjaGFyYWN0ZXIgd2l0aCB1bmlj
b2RlIGZsYWcuCi0gICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0
YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgKm1hdGNoVGFyZ2V0
Rm9yRmluYWxDb21wYXJpc29uKTsKKyAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDI6IHsKLSAgICAgICAg
ICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmLCBsYXN0TWF0Y2hU
YXJnZXRzKTsKKyAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3Rh
cnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYg
MHhmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIDM6IHsKLSAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0
IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VN
YXNrICYgMHhmZmZmLCBkZWZhdWx0TWF0Y2hUYXJnZXRzKTsKLSAgICAgICAgICAgICAgICBjaGVj
azEob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAyLCAoYWxsQ2hhcmFj
dGVycyA+PiAxNikgJiAweGZmLCAqbWF0Y2hUYXJnZXRGb3JGaW5hbENvbXBhcmlzb24pOworICAg
ICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlv
biwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmYpOworICAg
ICAgICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlv
biAtIDIsIChhbGxDaGFyYWN0ZXJzID4+IDE2KSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgNDogewotICAgICAgICAgICAg
ICAgIGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hh
cmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZiwgKm1hdGNo
VGFyZ2V0Rm9yRmluYWxDb21wYXJpc29uKTsKKyAgICAgICAgICAgICAgICBjaGVjazQob3AubV9j
aGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZm
ZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShS
SVNDVjY0KQogICAgICAgICAgICAgY2FzZSA1OiB7Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG9w
Lm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhm
ZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmLCBkZWZhdWx0TWF0Y2hUYXJnZXRz
KTsKLSAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJt
UG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmLCAqbWF0Y2hUYXJnZXRG
b3JGaW5hbENvbXBhcmlzb24pOworICAgICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGln
bm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4g
MzIpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSA2OiB7Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hlY2tlZE9m
ZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdu
b3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmLCBkZWZhdWx0TWF0Y2hUYXJnZXRzKTsKLSAgICAgICAg
ICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0
LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAzMikg
JiAweGZmZmYsICptYXRjaFRhcmdldEZvckZpbmFsQ29tcGFyaXNvbik7CisgICAgICAgICAgICAg
ICAgY2hlY2s0KG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFy
YWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmKTsKKyAgICAg
ICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24g
LSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAz
MikgJiAweGZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgNzogewotICAgICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGln
bm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZiwgZGVmYXVsdE1hdGNoVGFyZ2V0cyk7Ci0gICAgICAg
ICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0g
NCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAoaWdub3JlQ2FzZU1hc2sgPj4gMzIp
ICYgMHhmZmZmLCBkZWZhdWx0TWF0Y2hUYXJnZXRzKTsKLSAgICAgICAgICAgICAgICBjaGVjazEo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA2LCAoYWxsQ2hhcmFjdGVy
cyA+PiA0OCkgJiAweGZmLCAqbWF0Y2hUYXJnZXRGb3JGaW5hbENvbXBhcmlzb24pOworICAgICAg
ICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwg
YWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7
CisgICAgICAgICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBv
c2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAoaWdub3JlQ2FzZU1h
c2sgPj4gMzIpICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA2LCAoYWxsQ2hhcmFjdGVycyA+PiA0OCkgJiAw
eGZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjYXNlIDg6IHsKLSAgICAgICAgICAgICAgICBjaGVjazgob3AubV9jaGVja2VkT2Zmc2V0IC0g
c3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMsIGlnbm9yZUNhc2VNYXNrLCAqbWF0Y2hU
YXJnZXRGb3JGaW5hbENvbXBhcmlzb24pOworICAgICAgICAgICAgICAgIGNoZWNrOChvcC5tX2No
ZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycywgaWdub3JlQ2Fz
ZU1hc2spOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICNlbmRpZgog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBjaGVjazEg
PSBbJl0gKENoZWNrZWQ8dW5zaWduZWQ+IG9mZnNldCwgY2hhcjMyX3QgY2hhcmFjdGVycywgTWF0
Y2hUYXJnZXRzJiBtYXRjaFRhcmdldHMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoVGFy
Z2V0cy5oYXNTdWNjZWVkVGFyZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNYXRj
aFRhcmdldHMuYXBwZW5kRmFpbGVkKGp1bXBJZkNoYXJOb3RFcXVhbHMoY2hhcmFjdGVycywgb2Zm
c2V0LCBjaGFyYWN0ZXIsIHRlcm0tPmlnbm9yZUNhc2UoKSkpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hUYXJnZXRzLmFwcGVuZFN1Y2NlZWRlZChqdW1w
SWZDaGFyRXF1YWxzKGNoYXJhY3RlcnMsIG9mZnNldCwgY2hhcmFjdGVyLCB0ZXJtLT5pZ25vcmVD
YXNlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gY2hlY2sxID0gWyZdIChDaGVja2VkPHVuc2lnbmVk
PiBvZmZzZXQsIGNoYXIzMl90IGNoYXJhY3RlcnMpIHsKKyAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmFwcGVuZChqdW1wSWZDaGFyTm90RXF1YWxzKGNoYXJhY3RlcnMsIG9mZnNldCwgY2hhcmFj
dGVyLCB0ZXJtLT5pZ25vcmVDYXNlKCkpKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAg
IGF1dG8gY2hlY2syID0gWyZdIChDaGVja2VkPHVuc2lnbmVkPiBvZmZzZXQsIHVuc2lnbmVkIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIG1hc2ssIE1hdGNoVGFyZ2V0cyYgbWF0Y2hUYXJnZXRzKSB7Cisg
ICAgICAgICAgICBhdXRvIGNoZWNrMiA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCB1
bnNpZ25lZCBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBtYXNrKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG1hc2spIHsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyV2l0aFVuYWxpZ25lZEhh
bGZXb3JkcyhuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNzKG9mZnNldCwgY2hhcmFjdGVyKSwg
Y2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1hc2spCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5vcjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihtYXNrKSwgY2hhcmFj
dGVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaFRhcmdldHMuaGFzU3VjY2VlZFRh
cmdldCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1hdGNoVGFyZ2V0cy5hcHBl
bmRGYWlsZWQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjaGFyYWN0
ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjaGFyYWN0ZXJzIHwgbWFzaykpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hUYXJnZXRzLmFw
cGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGNoYXJh
Y3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNoYXJhY3RlcnMgfCBtYXNrKSkpOwotCisgICAg
ICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoY2hhcmFj
dGVycyB8IG1hc2spKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaFRhcmdldHMuaGFzU3VjY2VlZFRhcmdl
dCgpKQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxl
ZChtX2ppdC5icmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNzKG9mZnNldCwgY2hhcmFjdGVyKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJzKSkpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hUYXJnZXRzLmFwcGVuZFN1Y2NlZWRl
ZChtX2ppdC5icmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCBuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNzKG9mZnNldCwgY2hhcmFjdGVyKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJzKSkpOworICAgICAgICAgICAgICAg
IG9wLm1fanVtcHMuYXBwZW5kKG1faml0LmJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3Mob2Zm
c2V0LCBjaGFyYWN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNoYXJhY3RlcnMp
KSk7CiAgICAgICAgICAgICB9OwogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBD
UFUoUklTQ1Y2NCkKLSAgICAgICAgICAgIGF1dG8gY2hlY2s0ID0gWyZdIChDaGVja2VkPHVuc2ln
bmVkPiBvZmZzZXQsIHVpbnQ2NF90IGNoYXJhY3RlcnMsIHVpbnQ2NF90IG1hc2ssIE1hdGNoVGFy
Z2V0cyYgbWF0Y2hUYXJnZXRzKSB7CisgICAgICAgICAgICBhdXRvIGNoZWNrNCA9IFsmXSAoQ2hl
Y2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCB1aW50NjRfdCBjaGFyYWN0ZXJzLCB1aW50NjRfdCBtYXNr
KSB7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFk
ZHJlc3Mob2Zmc2V0LCBjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIpOwogICAgICAgICAgICAgICAgIGlm
IChtYXNrKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQobWFzayksIGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRj
aFRhcmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChjaGFyYWN0
ZXJzIHwgbWFzaykpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IG1hdGNoVGFyZ2V0cy5hcHBlbmRTdWNjZWVkZWQobV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoY2hhcmFj
dGVycyB8IG1hc2spKSk7CisgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tNjQoY2hhcmFjdGVycyB8IG1hc2spKSk7CiAgICAgICAgICAgICB9Owog
I2VuZGlmCiAKICAgICAgICAgICAgIHN3aXRjaCAobnVtYmVyQ2hhcmFjdGVycykgewogICAgICAg
ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIC8vIFVzZSAzMmJpdCB3aWR0aCBvZiBhbGxD
aGFyYWN0ZXJzIHNpbmNlIFlhcnIgY291bnRzIHN1cnJvZ2F0ZSBwYWlycyBhcyBvbmUgY2hhcmFj
dGVyIHdpdGggdW5pY29kZSBmbGFnLgotICAgICAgICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNr
ZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYs
ICptYXRjaFRhcmdldEZvckZpbmFsQ29tcGFyaXNvbik7CisgICAgICAgICAgICAgICAgY2hlY2sx
KG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYg
MHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Q
b3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhm
ZmZmZmZmZiwgKm1hdGNoVGFyZ2V0Rm9yRmluYWxDb21wYXJpc29uKTsKKyAgICAgICAgICAgICAg
ICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJh
Y3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShS
SVNDVjY0KQogICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIGNoZWNrMihvcC5t
X2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZm
ZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZiwgZGVmYXVsdE1hdGNoVGFyZ2V0cyk7
Ci0gICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBv
c2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAqbWF0Y2hUYXJnZXRG
b3JGaW5hbENvbXBhcmlzb24pOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGln
bm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4g
MzIpICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNl
IDQ6Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVy
bVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzLCBpZ25vcmVDYXNlTWFzaywgKm1hdGNoVGFyZ2V0Rm9y
RmluYWxDb21wYXJpc29uKTsKKyAgICAgICAgICAgICAgICBjaGVjazQob3AubV9jaGVja2VkT2Zm
c2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMsIGlnbm9yZUNhc2VNYXNrKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KLQogICAgIHZvaWQgYmFja3RyYWNrUGF0dGVybkNoYXJhY3Rlck9uY2Uoc2l6ZV90
IG9wSW5kZXgpCiAgICAgewogICAgICAgICBiYWNrdHJhY2tUZXJtRGVmYXVsdChvcEluZGV4KTsK
QEAgLTI3MzgsNyArMjY2Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8gewogICAgIC8vIENvZGUgZ2VuZXJhdGlvbi9iYWNrdHJhY2tpbmcgZm9yIHNp
bXBsZSB0ZXJtcwogICAgIC8vIChwYXR0ZXJuIGNoYXJhY3RlcnMsIGNoYXJhY3RlciBjbGFzc2Vz
LCBhbmQgYXNzZXJ0aW9ucykuCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBmYXJtIG91dCB3b3JrIHRv
IHRoZSBzZXQgb2YgZnVuY3Rpb25zIGFib3ZlLgotICAgIHZvaWQgZ2VuZXJhdGVUZXJtKHNpemVf
dCBvcEluZGV4LCBNYXRjaFRhcmdldHMmIG1hdGNoVGFyZ2V0cykKKyAgICB2b2lkIGdlbmVyYXRl
VGVybShzaXplX3Qgb3BJbmRleCkKICAgICB7CiAgICAgICAgIFlhcnJPcCYgb3AgPSBtX29wc1tv
cEluZGV4XTsKICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CkBAIC0yNzQ4
LDcgKzI2NzYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgIHN3aXRjaCAodGVybS0+cXVhbnRpdHlUeXBlKSB7CiAgICAgICAg
ICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50OgogICAgICAgICAgICAgICAgIGlm
ICh0ZXJtLT5xdWFudGl0eU1heENvdW50ID09IDEpCi0gICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRlUGF0dGVybkNoYXJhY3Rlck9uY2Uob3BJbmRleCwgbWF0Y2hUYXJnZXRzKTsKKyAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyT25jZShvcEluZGV4KTsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlUGF0dGVybkNoYXJh
Y3RlckZpeGVkKG9wSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg5OCw5ICsy
ODI2LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgIC8vIEZvcndhcmRzIGdlbmVyYXRlIHRoZSBtYXRjaGluZyBjb2RlLgogICAgICAg
ICBBU1NFUlQobV9vcHMuc2l6ZSgpKTsKICAgICAgICAgc2l6ZV90IG9wSW5kZXggPSAwOwotICAg
ICAgICBWZWN0b3I8TWF0Y2hUYXJnZXRzLCA4PiB0ZXJtTWF0Y2hUYXJnZXRzOwotCi0gICAgICAg
IHRlcm1NYXRjaFRhcmdldHMuYXBwZW5kKE1hdGNoVGFyZ2V0cygpKTsKIAogICAgICAgICBkbyB7
CiAgICAgICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCkBAIC0yOTEwLDcgKzI4MzUsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAg
ICAgIHN3aXRjaCAob3AubV9vcCkgewogCiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlRl
cm06Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVUZXJtKG9wSW5kZXgsIHRlcm1NYXRjaFRhcmdl
dHMubGFzdCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZVRlcm0ob3BJbmRleCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OkJvZHlBbHRl
cm5hdGl2ZUJlZ2luL05leHQvRW5kCkBAIC0yOTM4LDggKzI4NjMsNiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIGNhc2UgWWFy
ck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW46IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJu
QWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKIAotICAgICAgICAg
ICAgICAgIHRlcm1NYXRjaFRhcmdldHMuYXBwZW5kKE1hdGNoVGFyZ2V0cygpKTsKLQogICAgICAg
ICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhlIHNldCBvZiBhbHRlcm5h
dGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgIC8vIHRv
IHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHByb2dyZXNzZXMgdGhlIGlucHV0IHBv
c2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWls
YWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSk7CkBAIC0zMDU0LDkgKzI5Nzcs
NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHByaW9yQWx0ZXJuYXRpdmUgPSBtX29w
c1tvcC5tX3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmU7CiAgICAgICAgICAgICAgICAgUGF0dGVy
bkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IG9wLm1fYWx0ZXJuYXRpdmU7CiAKLSAgICAgICAg
ICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpCi0g
ICAgICAgICAgICAgICAgICAgIHRlcm1NYXRjaFRhcmdldHMudGFrZUxhc3QoKTsKLQogICAgICAg
ICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGUgcHJpb3IgYWx0ZXJuYXRpdmUgbWF0Y2hl
ZCAtIHJldHVybiBzdWNjZXNzLgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8v
IEFkanVzdCB0aGUgc3RhY2sgcG9pbnRlciB0byByZW1vdmUgdGhlIHBhdHRlcm4ncyBmcmFtZS4K
QEAgLTMxMTEsNyArMzAzMSw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBZYXJyT3BDb2Rl
OjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCi0gICAgICAgICAgICAvLyBZ
YXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAogICAgICAgICAg
ICAgLy8gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZXNlIG5vZGVzIGFyZSB1c2VkIHRvIGhhbmRsZSBz
ZXRzIG9mIGFsdGVybmF0aXZlcyB0aGF0IGFyZSBuZXN0ZWQgd2l0aGluCkBAIC0zMTI4LDIzICsz
MDQ3LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8g
ewogICAgICAgICAgICAgLy8gJ3JldHVybiBhZGRyZXNzJyB1c2luZyBhIERhdGFMYWJlbFB0ciwg
dXNlZCB0byBzdG9yZSB0aGUgYWRkcmVzcyB0byBqdW1wCiAgICAgICAgICAgICAvLyB0byB3aGVu
IGJhY2t0cmFja2luZywgdG8gZ2V0IHRvIHRoZSBjb2RlIGZvciB0aGUgYXBwcm9wcmlhdGUgYWx0
ZXJuYXRpdmUuCiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVy
bmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRl
cm5hdGl2ZUJlZ2luOgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5h
dGl2ZUJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rl
cm07CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IG9w
Lm1fYWx0ZXJuYXRpdmU7CiAgICAgICAgICAgICAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNq
dW5jdGlvbiA9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uOwogCi0gICAgICAgICAgICAg
ICAgaWYgKG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlQmVnaW4p
IHsKLSAgICAgICAgICAgICAgICAgICAgWWFyck9wKiBlbmRPcCA9ICZtX29wc1tvcC5tX25leHRP
cF07Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChlbmRPcC0+bV9uZXh0T3AgIT0gbm90Rm91
bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJy
T3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFy
ck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlTmV4dCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJy
T3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kT3AgPSAmbV9vcHNbZW5kT3AtPm1fbmV4dE9wXTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3Ry
aW5nTGlzdEFsdGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3Rl
ZEFsdGVybmF0aXZlRW5kKTsKLQotICAgICAgICAgICAgICAgICAgICB0ZXJtTWF0Y2hUYXJnZXRz
Lmxhc3QoKSA9IGFsdGVybmF0aXZlLT5tX2lzTGFzdEFsdGVybmF0aXZlID8gTWF0Y2hUYXJnZXRz
KE1hdGNoVGFyZ2V0czo6UHJlZmVycmVkVGFyZ2V0OjpNYXRjaFN1Y2Nlc3NGYWxsVGhyb3VnaCkg
OiBNYXRjaFRhcmdldHMoZW5kT3AtPm1fanVtcHMsIG9wLm1fanVtcHMsIE1hdGNoVGFyZ2V0czo6
UHJlZmVycmVkVGFyZ2V0OjpNYXRjaEZhaWxGYWxsVGhyb3VnaCk7Ci0gICAgICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBtdWNoIGlucHV0IHdlIG5lZWQg
dG8gY2hlY2sgZm9yLCBhbmQgaWYgbm9uLXplcm8gY2hlY2suCiAgICAgICAgICAgICAgICAgb3Au
bV9jaGVja0FkanVzdCA9IENoZWNrZWQ8dW5zaWduZWQ+KGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplKTsKICAgICAgICAgICAgICAgICBpZiAoKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyVHlwZTo6Rml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6
OlBhcmVudGhldGljYWxBc3NlcnRpb24pKQpAQCAtMzE1NCwyMiArMzA2MSwxMSBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgotICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpT
dHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0OgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpO
ZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVy
bSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVy
bmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKICAgICAgICAgICAgICAgICBQYXR0ZXJuRGlzanVu
Y3Rpb24qIGRpc2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247CiAKLSAg
ICAgICAgICAgICAgICBZYXJyT3AqIGVuZE9wID0gJm1fb3BzW29wLm1fbmV4dE9wXTsKLSAgICAg
ICAgICAgICAgICB3aGlsZSAoZW5kT3AtPm1fbmV4dE9wICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0
ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlz
dEFsdGVybmF0aXZlTmV4dCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRl
cm5hdGl2ZU5leHQpOwotICAgICAgICAgICAgICAgICAgICBlbmRPcCA9ICZtX29wc1tlbmRPcC0+
bV9uZXh0T3BdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBBU1NFUlQoZW5k
T3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgfHwgZW5k
T3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlRW5kIHx8IGVuZE9w
LT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKLQotICAgICAgICAg
ICAgICAgIGlmIChvcC5tX29wID09IFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZU5l
eHQpCi0gICAgICAgICAgICAgICAgICAgIHRlcm1NYXRjaFRhcmdldHMubGFzdCgpID0gYWx0ZXJu
YXRpdmUtPm1faXNMYXN0QWx0ZXJuYXRpdmUgPyBNYXRjaFRhcmdldHMoTWF0Y2hUYXJnZXRzOjpQ
cmVmZXJyZWRUYXJnZXQ6Ok1hdGNoU3VjY2Vzc0ZhbGxUaHJvdWdoKSA6IE1hdGNoVGFyZ2V0cyhl
bmRPcC0+bV9qdW1wcywgb3AubV9qdW1wcywgTWF0Y2hUYXJnZXRzOjpQcmVmZXJyZWRUYXJnZXQ6
Ok1hdGNoRmFpbEZhbGxUaHJvdWdoKTsKLQogICAgICAgICAgICAgICAgIC8vIEluIHRoZSBub24t
c2ltcGxlIGNhc2UsIHN0b3JlIGEgJ3JldHVybiBhZGRyZXNzJyBzbyB3ZSBjYW4gYmFja3RyYWNr
IGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpO
ZXN0ZWRBbHRlcm5hdGl2ZU5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFy
ZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKQEAgLTMxODIsMTcg
KzMwNzgsMjEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
byB7CiAgICAgICAgICAgICAgICAgICAgIG9wLm1femVyb0xlbmd0aE1hdGNoID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJh
bWVMb2NhdGlvbiAqIHNpemVvZih2b2lkKikpKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBpZiAob3AubV9vcCAhPSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRp
dmVOZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHJlYWNoIGhlcmUgdGhlbiB0
aGUgbGFzdCBhbHRlcm5hdGl2ZSBoYXMgbWF0Y2hlZCAtIGp1bXAgdG8gdGhlCi0gICAgICAgICAg
ICAgICAgICAgIC8vIEVuZCBub2RlLCB0byBza2lwIG92ZXIgYW55IGZ1cnRoZXIgYWx0ZXJuYXRp
dmVzLgotICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogdGhpcyBpcyBsb2dpY2FsbHkgTyhOXjIpICh0aG91Z2ggTiBjYW4gYmUgZXhwZWN0ZWQgdG8g
YmUgdmVyeQotICAgICAgICAgICAgICAgICAgICAvLyBzbWFsbCkuIFdlIGNvdWxkIGF2b2lkIHRo
aXMgZWl0aGVyIGJ5IGFkZGluZyBhbiBleHRyYSBqdW1wIHRvIHRoZSBKSVQKLSAgICAgICAgICAg
ICAgICAgICAgLy8gZGF0YSBzdHJ1Y3R1cmVzLCBvciBieSBtYWtpbmcgYmFja3RyYWNraW5nIGNv
ZGUgdGhhdCBqdW1wcyB0byBOZXh0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0aXZl
cyBhcmUgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIHRoYXQgaW5wdXQgaXMgYXZhaWxhYmxlIChp
ZgotICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgbmVlZCB0byBwbGFudCB0aGUgaW5w
dXQgY2hlY2tzLCB0aGVuIG1fanVtcHMgd291bGQgYmUgZnJlZSkuCi0gICAgICAgICAgICAgICAg
ICAgIGVuZE9wLT5tX2p1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgICAg
IC8vIElmIHdlIHJlYWNoIGhlcmUgdGhlbiB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBoYXMgbWF0Y2hl
ZCAtIGp1bXAgdG8gdGhlCisgICAgICAgICAgICAgICAgLy8gRW5kIG5vZGUsIHRvIHNraXAgb3Zl
ciBhbnkgZnVydGhlciBhbHRlcm5hdGl2ZXMuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBsb2dpY2FsbHkgTyhOXjIpICh0aG91Z2ggTiBjYW4g
YmUgZXhwZWN0ZWQgdG8gYmUgdmVyeQorICAgICAgICAgICAgICAgIC8vIHNtYWxsKS4gV2UgY291
bGQgYXZvaWQgdGhpcyBlaXRoZXIgYnkgYWRkaW5nIGFuIGV4dHJhIGp1bXAgdG8gdGhlIEpJVAor
ICAgICAgICAgICAgICAgIC8vIGRhdGEgc3RydWN0dXJlcywgb3IgYnkgbWFraW5nIGJhY2t0cmFj
a2luZyBjb2RlIHRoYXQganVtcHMgdG8gTmV4dAorICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0
aXZlcyBhcmUgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIHRoYXQgaW5wdXQgaXMgYXZhaWxhYmxl
IChpZgorICAgICAgICAgICAgICAgIC8vIHdlIGRpZG4ndCBuZWVkIHRvIHBsYW50IHRoZSBpbnB1
dCBjaGVja3MsIHRoZW4gbV9qdW1wcyB3b3VsZCBiZSBmcmVlKS4KKyAgICAgICAgICAgICAgICBZ
YXJyT3AqIGVuZE9wID0gJm1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICB3aGls
ZSAoZW5kT3AtPm1fbmV4dE9wICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVOZXh0KTsK
KyAgICAgICAgICAgICAgICAgICAgZW5kT3AgPSAmbV9vcHNbZW5kT3AtPm1fbmV4dE9wXTsKICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLT5tX29wID09IFlh
cnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29wID09IFlh
cnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKKyAgICAgICAgICAgICAgICBlbmRPcC0+
bV9qdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgbmV4dCBhbHRlcm5hdGl2ZS4KICAgICAgICAgICAg
ICAgICBvcC5tX3JlZW50cnkgPSBtX2ppdC5sYWJlbCgpOwpAQCAtMzIwMSwyNSArMzEwMSwxMSBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAg
ICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0ID0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7
CiAgICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5
cGU6OkZpeGVkQ291bnQpICYmICh0ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVz
dCAtPSBkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAob3Au
bV9vcCA9PSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFlhcnJPcCogcHJldk9wID0gJm1fb3BzW29wLm1fcHJldmlvdXNPcF07Ci0K
LSAgICAgICAgICAgICAgICAgICAgcHJldk9wLT5tX2p1bXBzLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgICAgICAgICAgICAgcHJldk9wLT5tX2p1bXBzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIG9wLm1fanVtcHMubGluaygmbV9qaXQpOwotICAgICAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbGFzdENoZWNrQWRqdXN0ID0g
cHJldk9wLT5tX2NoZWNrQWRqdXN0OwotICAgICAgICAgICAgICAgICAgICBpZiAobGFzdENoZWNr
QWRqdXN0ID4gb3AubV9jaGVja0FkanVzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0
LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsYXN0Q2hlY2tBZGp1c3QgLSBvcC5tX2NoZWNr
QWRqdXN0KSwgbV9yZWdzLmluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3Au
bV9jaGVja0FkanVzdCA+IGxhc3RDaGVja0FkanVzdCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihvcC5tX2NoZWNrQWRqdXN0IC0gbGFz
dENoZWNrQWRqdXN0KSwgbV9yZWdzLmluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgb3AubV9q
dW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dCgpKTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKG9wLm1fY2hlY2tBZGp1c3QpCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hl
Y2tBZGp1c3QpCiAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5v
QXZhaWxhYmxlSW5wdXQob3AubV9jaGVja0FkanVzdCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0
ZWRBbHRlcm5hdGl2ZUVuZDoKLSAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U3RyaW5nTGlz
dEFsdGVybmF0aXZlRW5kOgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRl
cm5hdGl2ZUVuZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90
ZXJtOwogCkBAIC0zMjQ5LDkgKzMxMzUsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIC8vIHF1YW50aXR5IGNvdW50IG9mIDEg
KHRoaXMgY292ZXJzIGZpeGVkIG9uY2UsIGFuZCA/Lz8/IHF1YW50aWZpZXJzKS4gCiAgICAgICAg
ICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjogewog
ICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwotCi0gICAgICAg
ICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy5hcHBlbmQoTWF0Y2hUYXJnZXRzKCkpOwotCiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJh
bWVMb2NhdGlvbjsKICAgICAgICAgICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBpbmRleFRlbXBvcmFyeSA9IG1fcmVncy5yZWdUMDsKICAgICAgICAgICAgICAgICBBU1NF
UlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKQEAgLTMzMDIsOCArMzE4NSw2IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAg
ICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0g
bV9yZWdzLnJlZ1QwOwogICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXJtLT5xdWFudGl0eU1heENv
dW50ID09IDEpOwogCi0gICAgICAgICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy50YWtlTGFzdCgp
OwotCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5lc3RlZCBhbHRlcm5hdGl2ZSBtYXRjaGVk
IHdpdGhvdXQgY29uc3VtaW5nIGFueSBjaGFyYWN0ZXJzLCBwdW50IHRoaXMgYmFjayB0byB0aGUg
aW50ZXJwcmV0ZXIuCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzg2PiBBZGQgYWJpbGl0eSBmb3IgdGhlIFlBUlIg
SklUIHRvIHByb3Blcmx5CiAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIG5lc3RlZCBleHByZXNz
aW9ucyB0aGF0IGNhbiBtYXRjaCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCkBAIC0zMzQ1
LDEzICszMjI2LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbyB7CiAgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEJlZ2luL0VuZAogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNl
c1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0q
IHRlcm0gPSBvcC5tX3Rlcm07CisgICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSBxdWFudGlmeUluZmluaXRlKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXRlcm0tPmNhcHR1cmUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlcm0t
PnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5KQotICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSBxdWFudGlmeUluZmluaXRlKTsK
LSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBl
OjpGaXhlZENvdW50KQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlN
YXhDb3VudCA9PSAxKTsKLQotICAgICAgICAgICAgICAgIHRlcm1NYXRjaFRhcmdldHMuYXBwZW5k
KE1hdGNoVGFyZ2V0cygpKTsKIAogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgc2V0IGEg
bGFiZWwgdG8gbG9vcCBiYWNrIHRvLgogICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IG1f
aml0LmxhYmVsKCk7CkBAIC0zMzY1LDggKzMyNDIsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2lu
T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJt
KiB0ZXJtID0gb3AubV90ZXJtOwogCi0gICAgICAgICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy50
YWtlTGFzdCgpOwotCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5lc3RlZCBhbHRlcm5hdGl2
ZSBtYXRjaGVkIHdpdGhvdXQgY29uc3VtaW5nIGFueSBjaGFyYWN0ZXJzLCBwdW50IHRoaXMgYmFj
ayB0byB0aGUgaW50ZXJwcmV0ZXIuCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzg2PiBBZGQgYWJpbGl0eSBmb3Ig
dGhlIFlBUlIgSklUIHRvIHByb3Blcmx5CiAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIG5lc3Rl
ZCBleHByZXNzaW9ucyB0aGF0IGNhbiBtYXRjaCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJz
CkBAIC0zMzg3LDggKzMyNjIsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVzZSBub2Rl
cyBzdXBwb3J0IGdlbmVyaWMgc3VicGF0dGVybnMuCiAgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOiB7Ci0gICAgICAgICAgICAgICAgdGVybU1h
dGNoVGFyZ2V0cy5hcHBlbmQoTWF0Y2hUYXJnZXRzKCkpOwotCiAjaWYgRU5BQkxFKFlBUlJfSklU
X0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRl
cm0gPSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFt
ZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKQEAgLTM0NTEsOCArMzMyNCw2IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ6IHsKLSAgICAgICAgICAgICAgICB0ZXJtTWF0Y2hU
YXJnZXRzLnRha2VMYXN0KCk7Ci0KICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBS
RVNTSU9OUykKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gPSB0ZXJt
LT5mcmFtZUxvY2F0aW9uOwpAQCAtMzUxNyw4ICszMzg4LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjogewogICAgICAgICAgICAgICAgIFBhdHRl
cm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCi0gICAgICAgICAgICAgICAgdGVybU1hdGNoVGFy
Z2V0cy5hcHBlbmQoTWF0Y2hUYXJnZXRzKCkpOwotCiAgICAgICAgICAgICAgICAgLy8gU3RvcmUg
dGhlIGN1cnJlbnQgaW5kZXggLSBhc3NlcnRpb25zIHNob3VsZCBub3QgdXBkYXRlIGluZGV4LCBz
bwogICAgICAgICAgICAgICAgIC8vIHdlIHdpbGwgbmVlZCB0byByZXN0b3JlIGl0IHVwb24gYSBz
dWNjZXNzZnVsIG1hdGNoLgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJh
bWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CkBAIC0zNTMxLDggKzM0MDAsNiBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDogewogICAgICAg
ICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCi0gICAgICAgICAgICAg
ICAgdGVybU1hdGNoVGFyZ2V0cy50YWtlTGFzdCgpOwotCiAgICAgICAgICAgICAgICAgLy8gUmVz
dG9yZSB0aGUgaW5wdXQgaW5kZXggdmFsdWUuCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFy
ZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAgICAg
ICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0lu
Zm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOjpiZWdpbkluZGV4KCksIG1fcmVncy5pbmRleCk7CkBA
IC0zNTU5LDggKzM0MjYsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvIHsKIAogICAgICAgICAgICAgKytvcEluZGV4OwogICAgICAgICB9IHdoaWxlIChv
cEluZGV4IDwgbV9vcHMuc2l6ZSgpKTsKLQotICAgICAgICB0ZXJtTWF0Y2hUYXJnZXRzLnRha2VM
YXN0KCk7CiAgICAgfQogCiAgICAgdm9pZCBiYWNrdHJhY2soKQpAQCAtMzgyOSw3ICszNjk0LDYg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVy
bmF0aXZlQmVnaW4vTmV4dC9FbmQKLSAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OlN0cmluZ0xp
c3RBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCiAgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgLy8gR2VuZXJhdGUgY29kZSBmb3Igd2hlbiB3ZSBiYWNrdHJhY2sgYmFjayBvdXQgb2YgYW4g
YWx0ZXJuYXRpdmUgaW50bwpAQCAtMzg0MiwxNSArMzcwNiwxMyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIC8vIGFsdGVybmF0
aXZlLgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2
ZUJlZ2luOgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5h
dGl2ZU5leHQ6Ci0gICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRlcm5h
dGl2ZUJlZ2luOgotICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJu
YXRpdmVOZXh0OgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2
ZUJlZ2luOgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQ6IHsKICAgICAgICAgICAgICAgICBZYXJyT3AmIG5leHRPcCA9IG1fb3BzW29wLm1fbmV4dE9w
XTsKICAgICAgICAgICAgICAgICBib29sIGlzQmVnaW4gPSBvcC5tX3ByZXZpb3VzT3AgPT0gbm90
Rm91bmQ7CiAgICAgICAgICAgICAgICAgYm9vbCBpc0xhc3RBbHRlcm5hdGl2ZSA9IG5leHRPcC5t
X25leHRPcCA9PSBub3RGb3VuZDsKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNCZWdpbiA9PSAo
b3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIHx8IG9w
Lm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlQmVnaW4gfHwgb3AubV9v
cCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luKSk7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKGlzTGFzdEFsdGVybmF0aXZlID09IChuZXh0T3AubV9vcCA9PSBZYXJyT3BDb2Rl
OjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCB8fCBuZXh0T3AubV9vcCA9PSBZYXJyT3BDb2Rl
OjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVFbmQgfHwgbmV4dE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6
TmVzdGVkQWx0ZXJuYXRpdmVFbmQpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNCZWdpbiA9
PSAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIHx8
IG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbikpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChpc0xhc3RBbHRlcm5hdGl2ZSA9PSAobmV4dE9wLm1fb3AgPT0gWWFy
ck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgfHwgbmV4dE9wLm1fb3AgPT0gWWFy
ck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQpKTsKIAogICAgICAgICAgICAgICAgIC8vIFRy
ZWF0IGFuIGlucHV0IGNoZWNrIGZhaWx1cmUgdGhlIHNhbWUgYXMgYSBmYWlsZWQgbWF0Y2guCiAg
ICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQob3AubV9qdW1wcyk7CkBA
IC0zODc2LDIwICszNzM4LDE4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgIC8vIGJhY2t0cmFja2luZyB0byBoZXJlLCBj
b3JyZWN0LCBhbmQgdGhlbiBqdW1wIG9uLiBJZiBub3Qgd2UgY2FuCiAgICAgICAgICAgICAgICAg
Ly8gbGluayB0aGUgYmFja3RyYWNrcyBkaXJlY3RseSB0byB0aGVpciBkZXN0aW5hdGlvbi4KICAg
ICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0FkanVzdCkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1fYmFja3RyYWNraW5nU3RhdGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8gbGluayB0aGUgYmFj
a3RyYWNrcyBoZXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0
ZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihNYWNy
b0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja0FkanVzdCksIG1fcmVncy5pbmRleCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTGFzdEFsdGVybmF0aXZlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgdGhhdCBpcyBub3QgdGhlIGxhc3Qg
c2hvdWxkIGp1bXAgdG8gaXRzIHN1Y2Nlc3Nvci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5qdW1wKG5leHRPcC5tX3JlZW50cnkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghaXNCZWdpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBsYXN0IG9mIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmVzIG11c3QganVtcCBiYWNrIHRvIHRo
ZSBiZWdpbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE9wLm1fanVtcHMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgc2luZ2xlIGFsdGVybmF0aXZlIG9uIGl0
cyBvd24gY2FuIGZhbGwgdGhyb3VnaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Jh
Y2t0cmFja2luZ1N0YXRlLmZhbGx0aHJvdWdoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgd2UgbmVlZCB0
byBsaW5rIHRoZSBiYWNrdHJhY2tzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgIG1fYmFja3Ry
YWNraW5nU3RhdGUubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWIz
MihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja0FkanVzdCksIG1fcmVncy5pbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNMYXN0QWx0ZXJuYXRpdmUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHRoYXQgaXMgbm90IHRoZSBsYXN0IHNo
b3VsZCBqdW1wIHRvIGl0cyBzdWNjZXNzb3IuCisgICAgICAgICAgICAgICAgICAgICAgICBtX2pp
dC5qdW1wKG5leHRPcC5tX3JlZW50cnkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KCFpc0JlZ2luKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbGFzdCBvZiBtb3Jl
IHRoYW4gb25lIGFsdGVybmF0aXZlcyBtdXN0IGp1bXAgYmFjayB0byB0aGUgYmVnaW5uaW5nLgor
ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE9wLm1fanVtcHMuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBIHNpbmdsZSBhbHRlcm5hdGl2ZSBvbiBpdHMgb3duIGNhbiBmYWxsIHRocm91Z2guCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmZhbGx0aHJvdWdoKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2VzIHdoZXJlIHdlIGNhbiBsaW5rIHRoZSBi
YWNrdHJhY2tzIGRpcmVjdGx5IHRvIHRoZWlyIGRlc3RpbmF0aW9ucy4KQEAgLTM5MjEsMTYgKzM3
ODEsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICAgICAgaWYgKGlzQmVnaW4pIHsKICAgICAgICAgICAgICAgICAgICAgWWFy
ck9wKiBlbmRPcCA9ICZtX29wc1tvcC5tX25leHRPcF07CiAgICAgICAgICAgICAgICAgICAgIHdo
aWxlIChlbmRPcC0+bV9uZXh0T3AgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5h
dGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0
aXZlTmV4dCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLT5tX29wID09IFlhcnJP
cENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJy
T3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kT3AgPSAmbV9vcHNbZW5kT3AtPm1fbmV4dE9wXTsKICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3Ry
aW5nTGlzdEFsdGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3Rl
ZEFsdGVybmF0aXZlRW5kKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLT5tX29w
ID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29w
ID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQoZW5kT3AtPm1fanVtcHMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAg
ICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZUVuZDoKICAgICAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQ6IHsKICAgICAgICAgICAg
ICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIApAQCAtNDI4MCwxMyArNDEzOSw4
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAg
ICAgICAgICAgcGFyZW50aGVzZXNCZWdpbk9wQ29kZSA9IFlhcnJPcENvZGU6OlBhcmVudGhlc2Vz
U3VicGF0dGVybk9uY2VCZWdpbjsKICAgICAgICAgICAgIHBhcmVudGhlc2VzRW5kT3BDb2RlID0g
WWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDsKIAotICAgICAgICAgICAg
aWYgKHRlcm0tPnBhcmVudGhlc2VzLmlzU3RyaW5nTGlzdCkgewotICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYW4gYW5jaG9yZWQgbm9uLWNhcHR1cmluZyBzdHJpbmcgbGlzdCBwYXJlbnRoZXNp
cyB0aGF0IGNhbid0IGJhY2t0cmFjaywgd2UgdXNlIHRoZSAnc3RyaW5nIGxpc3QnIG5vZGVzLgot
ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlQmVnaW5PcENvZGUgPSBZYXJyT3BDb2RlOjpTdHJp
bmdMaXN0QWx0ZXJuYXRpdmVCZWdpbjsKLSAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZU5leHRP
cENvZGUgPSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0OwotICAgICAgICAg
ICAgICAgIGFsdGVybmF0aXZlRW5kT3BDb2RlID0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVy
bmF0aXZlRW5kOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXJtLT5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgICAgICAv
LyBPdGhlcndpc2UsIGNoZWNrIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmUu
IElmIHNvLCB3ZSBjYW5ub3QgdXNlIHRoZSAnc2ltcGxlJyBub2Rlcy4KKyAgICAgICAgICAgIC8v
IElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmUgd2UgY2Fubm90IHVzZSB0aGUg
J3NpbXBsZScgbm9kZXMuCisgICAgICAgICAgICBpZiAodGVybS0+cGFyZW50aGVzZXMuZGlzanVu
Y3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgYWx0
ZXJuYXRpdmVCZWdpbk9wQ29kZSA9IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlQmVnaW47
CiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVOZXh0T3BDb2RlID0gWWFyck9wQ29kZTo6TmVz
dGVkQWx0ZXJuYXRpdmVOZXh0OwogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRW5kT3BDb2Rl
ID0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQ7CkBAIC01MTgxLDggKzUwMzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpIHsKLSAg
ICAgICAgICAgIC8vIERpc2Fzc2VtYmxlIGFmdGVyIGFsbCBsaW5rIHRhc2tzIGFyZSBjb21wbGV0
ZS4KLSAgICAgICAgICAgIG1faml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgeworICAgICAgICAgICAgbV9qaXQuYWRkTGF0ZUxpbmtUYXNrKFs9LCB0aGlz
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIG1fZGlzYXNzZW1i
bGVyLT5kdW1wKGxpbmtCdWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTU0
MzEsMTAgKzUyODQsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIG1pbmltdW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0Oigl
dSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1fY2hlY2tlZE9mZnNl
dC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAxOwogCi0gICAgICAgIGNhc2UgWWFyck9w
Q29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCJTdHJpbmdMaXN0QWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2VkLW9m
ZnNldDooJXUpXG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2NoZWNr
ZWRPZmZzZXQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLQogICAgICAgICBjYXNl
IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlQmVnaW46CiAgICAgICAgICAgICBvdXQucHJp
bnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIG1pbmltdW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zm
c2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1fY2hlY2tl
ZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtNTQ0MywxMCArNTI5
Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG91dC5wcmludGYoIlNpbXBsZU5lc3RlZEFsdGVy
bmF0aXZlTmV4dCBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5t
X2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmlu
Z0xpc3RBbHRlcm5hdGl2ZU5leHQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJTdHJpbmdMaXN0
QWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIs
IG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1
ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6
TmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgogICAgICAgICAgICAgb3V0LnByaW50ZigiTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9w
Lm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgp
KTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNTQ1NywxMiArNTMwMiw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKIAot
ICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZUVuZDoKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIlN0cmluZ0xpc3RBbHRlcm5hdGl2ZUVuZCBjaGVja2VkLW9mZnNl
dDooJXUpICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHRlcm0t
PmR1bXBRdWFudGlmaWVyKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAg
ICAgICAgICByZXR1cm4gLTE7Ci0KICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRl
cm5hdGl2ZUVuZDoKICAgICAgICAgICAgIG91dC5wcmludGYoIk5lc3RlZEFsdGVybmF0aXZlRW5k
IGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAg
ICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBlNGFmN2IwYzFkODMuLjVhOGE3MTA5MDdmZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMTQxNyw5
ICsxNDE3LDggQEAgcHVibGljOgogCiAgICAgICAgIFBhdHRlcm5UZXJtJiBsYXN0VGVybSA9IG1f
YWx0ZXJuYXRpdmUtPmxhc3RUZXJtKCk7CiAKLSAgICAgICAgdW5zaWduZWQgbnVtQk9MQW5jaG9y
ZWRBbHRzID0gMDsKICAgICAgICAgdW5zaWduZWQgbnVtUGFyZW5BbHRlcm5hdGl2ZXMgPSBwYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCk7Ci0gICAgICAgIEFTU0VS
VChudW1QYXJlbkFsdGVybmF0aXZlcyk7CisgICAgICAgIHVuc2lnbmVkIG51bUJPTEFuY2hvcmVk
QWx0cyA9IDA7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhcmVuQWx0
ZXJuYXRpdmVzOyBpKyspIHsKICAgICAgICAgICAgIC8vIEJ1YmJsZSB1cCBCT0wgZmxhZ3MKQEAg
LTE0MjcsOCArMTQyNiw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBudW1CT0xBbmNob3Jl
ZEFsdHMrKzsKICAgICAgICAgfQogCi0gICAgICAgIHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzLmxhc3QoKS0+bV9pc0xhc3RBbHRlcm5hdGl2ZSA9IHRydWU7Ci0KICAgICAg
ICAgaWYgKG51bUJPTEFuY2hvcmVkQWx0cykgewogICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+
bV9jb250YWluc0JPTCA9IHRydWU7CiAgICAgICAgICAgICAvLyBJZiBhbGwgdGhlIGFsdGVybmF0
aXZlcyBpbiBwYXJlbnMgc3RhcnQgd2l0aCBCT0wsIHRoZW4gc28gZG9lcyB0aGlzIG9uZQpAQCAt
MTg2MCwxMiArMTg1Nyw2IEBAIHB1YmxpYzoKICAgICAvLyAgICAgYWx0ZXJuYXRpdmVzIG9mIHRo
ZSBtYWluIGJvZHkgZGlzanVuY3Rpb24pLgogICAgIC8vICAgKiB3aGVyZSB0aGUgcGFyZW5zIGFy
ZSBub24tY2FwdHVyaW5nLCBhbmQgcXVhbnRpZmllZCB1bmJvdW5kZWQgZ3JlZWR5ICgqKS4KICAg
ICAvLyAgICogd2hlcmUgdGhlIHBhcmVucyBkbyBub3QgY29udGFpbiBhbnkgY2FwdHVyaW5nIHN1
YnBhdHRlcm5zLgotICAgIC8vICAgKiBXaGVyZSB0aGUgcGFyZW5zIGNvbnRhaW5zIGEgQk9MIGFu
Y2hvcmVkIG5vbi1jYXB0dXJlZCBzdWJwYXR0ZXJuIHdpdGggYSBzaW5nbGUKLSAgICAvLyAgICAg
YWx0ZXJuYXRpdmUgb2YgZml4ZWQgc3RyaW5ncywgZS5nLiAvXig/OmZvb3xiYXJ8YmF6KS4KLSAg
ICAvLyAgICAgSW4gc3VjaCBhIGNhc2Ugd2UgY2FuIHNpbXBsaWZ5IG1hdGNoaW5nIGEgbGl0dGxl
IG1vcmUgYnkgc3RvcHBpbmcgYXQgdGhlIGZpcnN0Ci0gICAgLy8gICAgIG1hdGNoZWQgc3RyaW5n
IGFsdGVybmF0aXZlLCB3aXRob3V0IGp1bXBpbmcgdG8gYmFja3RyYWNraW5nIGRvZSB0byBmaXh1
cCBvZmZlc3RzLgotICAgIC8vICAgICBJbnN0ZWFkIHdlIGZpeHVwIHRoZSBvZmZzZXRzLCBpZiBu
ZWVkZWQsIGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgYWx0ZXJuYXRpdmUncwotICAgIC8vICAgICBt
YXRjaGluZyBKSVQgY29kZS4KICAgICB2b2lkIGNoZWNrRm9yVGVybWluYWxQYXJlbnRoZXNlcygp
CiAgICAgewogICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIG11Y2ggdG9vIGNydWRlOyBzaG91bGQg
YmUganVzdCBjaGVja2luZyB3aGV0aGVyIHRoZSBjYW5kaWRhdGUKQEAgLTE4NzQsNDkgKzE4NjUs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+PiYgYWx0ZXJuYXRpdmVzID0gbV9wYXR0ZXJu
Lm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7Ci0gICAgICAgIGFsdGVybmF0aXZlcy5sYXN0KCktPm1f
aXNMYXN0QWx0ZXJuYXRpdmUgPSB0cnVlOwotCi0gICAgICAgIGlmIChhbHRlcm5hdGl2ZXMuc2l6
ZSgpID09IDEgJiYgYWx0ZXJuYXRpdmVzWzBdLT5tX3N0YXJ0c1dpdGhCT0wpIHsKLSAgICAgICAg
ICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1zID0gYWx0ZXJuYXRpdmVzWzBdLT5tX3Rlcm1z
OwotCi0gICAgICAgICAgICBib29sIGlzU3RyaW5nTGlzdCA9IGZhbHNlOwotCi0gICAgICAgICAg
ICBpZiAodGVybXMuc2l6ZSgpID49IDIKLSAgICAgICAgICAgICAgICAmJiB0ZXJtc1swXS50eXBl
ID09IFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0wKLSAgICAgICAgICAgICAgICAmJiB0
ZXJtc1sxXS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm4K
LSAgICAgICAgICAgICAgICAmJiB0ZXJtc1sxXS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5
cGU6OkZpeGVkQ291bnQKLSAgICAgICAgICAgICAgICAmJiB0ZXJtc1sxXS5xdWFudGl0eU1heENv
dW50ID09IDEKLSAgICAgICAgICAgICAgICAmJiAodGVybXMuc2l6ZSgpID09IDIKLSAgICAgICAg
ICAgICAgICAgICAgfHwgKHRlcm1zLnNpemUoKSA9PSAzICYmIHRlcm1zWzJdLnR5cGUgPT0gUGF0
dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ug
c3RhcnQgYXNzdW1pbmcgdGhpcyBpcyBhIHN0cmluZyBsaXN0IGFuZCB0aGVuIHByb3ZlIHRoZSBu
ZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICBpc1N0cmluZ0xpc3QgPSB0cnVlOwotCi0gICAgICAg
ICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSB0ZXJtc1sxXTsKLQotICAgICAgICAgICAgICAg
IFBhdHRlcm5EaXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rpb24gPSB0ZXJtLnBhcmVudGhlc2Vz
LmRpc2p1bmN0aW9uOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgaXNT
dHJpbmdMaXN0ICYmIGFsdCA8IG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXpl
KCk7ICsrYWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIGlu
bmVyVGVybXMgPSBuZXN0ZWREaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS0+bV90ZXJt
czsKLQotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCB0ZXJtSW5kZXggPSAwOyB0ZXJt
SW5kZXggPCBpbm5lclRlcm1zLnNpemUoKTsgKyt0ZXJtSW5kZXgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFBhdHRlcm5UZXJtJiBpbm5lclRlcm0gPSBpbm5lclRlcm1zW3Rlcm1JbmRleF07
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJUZXJtLnR5cGUgIT0gUGF0dGVyblRl
cm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
fCB0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdHJpbmdMaXN0ID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICB0ZXJtLnBhcmVudGhlc2VzLmlzU3RyaW5nTGlzdCA9IGlzU3RyaW5nTGlzdDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKGlzU3RyaW5nTGlzdCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIGFsdGVybmF0aXZlIDogYWx0
ZXJuYXRpdmVzKSB7Ci0gICAgICAgICAgICBhdXRvJiB0ZXJtcyA9IGFsdGVybmF0aXZlLT5tX3Rl
cm1zOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsdGVybmF0aXZlcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgVmVjdG9yPFBhdHRlcm5UZXJtPiYgdGVybXMgPSBhbHRlcm5h
dGl2ZXNbaV0tPm1fdGVybXM7CiAgICAgICAgICAgICBpZiAodGVybXMuc2l6ZSgpKSB7CiAgICAg
ICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSB0ZXJtcy5sYXN0KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJw
YXR0ZXJuCkBAIC0yNDkwLDggKzI0NDAsNiBAQCB2b2lkIFBhdHRlcm5BbHRlcm5hdGl2ZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbgogICAg
ICAgICBvdXQucHJpbnQoIixzdGFydHMgd2l0aCBeIik7CiAgICAgaWYgKG1fY29udGFpbnNCT0wp
CiAgICAgICAgIG91dC5wcmludCgiLGNvbnRhaW5zIF4iKTsKLSAgICBpZiAobV9pc0xhc3RBbHRl
cm5hdGl2ZSkKLSAgICAgICAgb3V0LnByaW50KCIsIGxhc3QgYWx0ZXJuYXRpdmUiKTsKICAgICBv
dXQucHJpbnQoIlxuIik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGVybXMuc2l6
ZSgpOyArK2kpCkBAIC0yNjE1LDkgKzI1NjMsNiBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQsIFlhcnJQYXR0ZXJuKiB0aGlzUGF0dGVybiwgdW5zaWduZWQgbmVzdAog
ICAgICAgICBpZiAocGFyZW50aGVzZXMuaXNUZXJtaW5hbCkKICAgICAgICAgICAgIG91dC5wcmlu
dCgiLHRlcm1pbmFsIik7CiAKLSAgICAgICAgaWYgKHBhcmVudGhlc2VzLmlzU3RyaW5nTGlzdCkK
LSAgICAgICAgICAgIG91dC5wcmludCgiLHN0cmluZy1saXN0Iik7Ci0KICAgICAgICAgb3V0LnBy
aW50bG4oIixmcmFtZSBsb2NhdGlvbiAiLCBmcmFtZUxvY2F0aW9uKTsKIAogICAgICAgICBpZiAo
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKSA+IDEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDFiYTAyYjYyMThmZi4u
ODA4MGZlNzg0MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgK
QEAgLTIzNCw3ICsyMzQsNiBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgICAgICAgICAgdW5z
aWduZWQgbGFzdFN1YnBhdHRlcm5JZDsKICAgICAgICAgICAgIGJvb2wgaXNDb3B5IDogMTsKICAg
ICAgICAgICAgIGJvb2wgaXNUZXJtaW5hbCA6IDE7Ci0gICAgICAgICAgICBib29sIGlzU3RyaW5n
TGlzdCA6IDE7CiAgICAgICAgIH0gcGFyZW50aGVzZXM7CiAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICBib29sIGJvbEFuY2hvciA6IDE7CkBAIC0yNzksNyArMjc4LDYgQEAgc3RydWN0IFBh
dHRlcm5UZXJtIHsKICAgICAgICAgcGFyZW50aGVzZXMuc3VicGF0dGVybklkID0gc3VicGF0dGVy
bklkOwogICAgICAgICBwYXJlbnRoZXNlcy5pc0NvcHkgPSBmYWxzZTsKICAgICAgICAgcGFyZW50
aGVzZXMuaXNUZXJtaW5hbCA9IGZhbHNlOwotICAgICAgICBwYXJlbnRoZXNlcy5pc1N0cmluZ0xp
c3QgPSBmYWxzZTsKICAgICAgICAgcXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVk
Q291bnQ7CiAgICAgICAgIHF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1heENvdW50ID0gMTsK
ICAgICB9CkBAIC00MjgsNyArNDI2LDYgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzRml4ZWRT
aXplKGZhbHNlKQogICAgICAgICAsIG1fc3RhcnRzV2l0aEJPTChmYWxzZSkKICAgICAgICAgLCBt
X2NvbnRhaW5zQk9MKGZhbHNlKQotICAgICAgICAsIG1faXNMYXN0QWx0ZXJuYXRpdmUoZmFsc2Up
CiAgICAgewogICAgIH0KIApAQCAtNDk0LDcgKzQ5MSw2IEBAIHB1YmxpYzoKICAgICBib29sIG1f
aGFzRml4ZWRTaXplIDogMTsKICAgICBib29sIG1fc3RhcnRzV2l0aEJPTCA6IDE7CiAgICAgYm9v
bCBtX2NvbnRhaW5zQk9MIDogMTsKLSAgICBib29sIG1faXNMYXN0QWx0ZXJuYXRpdmUgOiAxOwog
fTsKIAogc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9yZWdleHAta2V5d29yZC1wYXJzaW5nLmpzIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcmVnZXhwLWtleXdvcmQtcGFyc2luZy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2ExNzc5MDcyNzkxLi4wMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcmVnZXhwLWtleXdvcmQtcGFyc2luZy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE3
NSArMCwwIEBACi0vLyBXaXRoIHZlcmJvc2Ugc2V0IHRvIGZhbHNlLCB0aGlzIHRlc3QgaXMgc3Vj
Y2Vzc2Z1bCBpZiB0aGVyZSBpcyBubyBvdXRwdXQuICBTZXQgdmVyYm9zZSB0byB0cnVlIHRvIHNl
ZSBleHBlY3RlZCBtYXRjaGVzLgotbGV0IHZlcmJvc2UgPSBmYWxzZTsKLQotZnVuY3Rpb24gYXJy
YXlUb1N0cmluZyhhcnIpCi17Ci0gICAgbGV0IHN0ciA9ICcnOwotICAgIGFyci5mb3JFYWNoKGZ1
bmN0aW9uKHYsIGluZGV4KSB7Ci0gICAgICAgIGlmICh0eXBlb2YgdiA9PSAic3RyaW5nIikKLSAg
ICAgICAgICAgIHN0ciArPSAiXCIiICsgdiArICJcIiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHN0ciArPSB2OwotCi0gICAgICAgIGlmIChpbmRleCAhPSAoYXJyLmxlbmd0aCAtIDEpKQot
ICAgICAgICAgICAgc3RyICs9ICcsJzsKLSAgICAgIH0pOwotICByZXR1cm4gc3RyOwotfQotCi1m
dW5jdGlvbiBvYmplY3RUb1N0cmluZyhvYmopCi17Ci0gICAgbGV0IHN0ciA9ICIiOwotCi0gICAg
Zmlyc3RFbnRyeSA9IHRydWU7Ci0KLSAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmpl
Y3QuZW50cmllcyhvYmopKSB7Ci0gICAgICAgIGlmICghZmlyc3RFbnRyeSkKLSAgICAgICAgICAg
IHN0ciArPSAiLCAiOwotCi0gICAgICAgIHN0ciArPSBrZXkgKyAiOiAiICsgZHVtcFZhbHVlKHZh
bHVlKTsKLQotICAgICAgICBmaXJzdEVudHJ5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
ICJ7ICIgKyBzdHIgKyAiIH0iOwotfQotCi1mdW5jdGlvbiBkdW1wVmFsdWUodikKLXsKLSAgICBp
ZiAodiA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJuICI8bnVsbD4iOwotCi0gICAgaWYgKHYgPT09
IHVuZGVmaW5lZCkKLSAgICAgICAgcmV0dXJuICI8dW5kZWZpbmVkPiI7Ci0KLSAgICBpZiAodHlw
ZW9mIHYgPT0gInN0cmluZyIpCi0gICAgICAgIHJldHVybiAiXCIiICsgdiArICJcIiI7Ci0KLSAg
ICBsZXQgc3RyID0gIiI7Ci0KLSAgICBpZiAodi5sZW5ndGgpCi0gICAgICAgIHN0ciArPSBhcnJh
eVRvU3RyaW5nKHYpOwotCi0gICAgaWYgKHYuZ3JvdXBzKSB7Ci0gICAgICAgIGdyb3VwU3RyID0g
b2JqZWN0VG9TdHJpbmcodi5ncm91cHMpOwotCi0gICAgICAgIGlmIChzdHIubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBpZiAoIGdyb3VwU3RyLmxlbmd0aCkKLSAgICAgICAgICAgICAgICBzdHIgKz0g
IiwgIiArIGdyb3VwU3RyOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0ciA9IGdyb3Vw
U3RyOwotICAgIH0KLQotICAgIHJldHVybiAiWyAiICsgc3RyICsgIiBdIjsKLX0KLQotZnVuY3Rp
b24gY29tcGFyZUFycmF5KGV4cGVjdGVkLCBhY3R1YWwpCi17Ci0gICAgaWYgKGV4cGVjdGVkID09
PSBudWxsICYmIGFjdHVhbCA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAoZXhwZWN0ZWQgPT09IG51bGwpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZCBpcyBu
dWxsLCBhY3R1YWwgaXMgbm90IG51bGwiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChhY3R1YWwgPT09IG51bGwpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3Rl
ZCBpcyBub3QgbnVsbCwgYWN0dWFsIGlzIG51bGwiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGlmIChleHBlY3RlZC5sZW5ndGggIT09IGFjdHVhbC5sZW5ndGgpIHsKLSAg
ICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZC5sZW5ndGg6ICIgKyBleHBlY3RlZC5sZW5ndGggKyAi
LCBhY3R1YWwubGVuZ3RoOiAiICsgYWN0dWFsLmxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIGlmIChleHBlY3RlZFtpXSAhPT0gYWN0dWFsW2ldKSB7Ci0gICAgICAgICAg
ICBwcmludCgiIyMjIGV4cGVjdGVkWyIgKyBpICsgIl06IFwiIiArIGV4cGVjdGVkW2ldICsgIlwi
ICE9PSBhY3R1YWxbIiArIGkgKyAiXTogXCIiICsgYWN0dWFsW2ldICsgIlwiIik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotZnVuY3Rpb24gY29tcGFyZUdyb3VwcyhleHBlY3RlZCwgYWN0dWFsKQotewotICAgIGlm
IChleHBlY3RlZCA9PT0gbnVsbCAmJiBhY3R1YWwgPT09IG51bGwpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgaWYgKGV4cGVjdGVkID09PSBudWxsKSB7Ci0gICAgICAgIHByaW50KCIjIyMg
ZXhwZWN0ZWQgZ3JvdXAgaXMgbnVsbCwgYWN0dWFsIGdyb3VwIGlzIG5vdCBudWxsIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYWN0dWFsID09PSBudWxsKSB7Ci0g
ICAgICAgIHByaW50KCIjIyMgZXhwZWN0ZWQgZ3JvdXAgaXMgbm90IG51bGwsIGFjdHVhbCBncm91
cCBpcyBudWxsIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKGNv
bnN0IGtleSBpbiBleHBlY3RlZCkgewotICAgICAgICBpZiAoZXhwZWN0ZWRba2V5XSAhPT0gYWN0
dWFsW2tleV0pIHsKLSAgICAgICAgICAgIHByaW50KCIjIyMgZXhwZWN0ZWQuIiArIGtleSArICI6
ICIgKyBkdW1wVmFsdWUoZXhwZWN0ZWRba2V5XSkgKyAiICE9PSBhY3R1YWwuIiArIGtleSArICI6
ICIgKyBkdW1wVmFsdWUoYWN0dWFsW2tleV0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1sZXQgdGVzdE51bWJl
ciA9IDA7Ci0KLWZ1bmN0aW9uIHRlc3RSZWdFeHAocmUsIHN0ciwgZXhwLCBncm91cHMpCi17Ci0g
ICAgdGVzdE51bWJlcisrOwotCi0gICAgaWYgKGdyb3VwcykKLSAgICAgICAgZXhwLmdyb3VwcyA9
IGdyb3VwczsKLQotICAgIGxldCBhY3R1YWwgPSByZS5leGVjKHN0cik7Ci0KLSAgICBsZXQgcmVz
dWx0ID0gY29tcGFyZUFycmF5KGV4cCwgYWN0dWFsKTs7Ci0KLSAgICBpZiAoZXhwICYmIGV4cC5n
cm91cHMpIHsKLSAgICAgICAgaWYgKCFjb21wYXJlR3JvdXBzKGV4cC5ncm91cHMsIGFjdHVhbC5n
cm91cHMpKQotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHJl
c3VsdCkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIHByaW50KHJlLnRvU3Ry
aW5nKCkgKyAiLmV4ZWMoIiArIGR1bXBWYWx1ZShzdHIpICsgIiksIHBhc3NlZCAiLCBkdW1wVmFs
dWUoZXhwKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHByaW50KHJlLnRvU3RyaW5nKCkgKyAiLmV4
ZWMoIiArIGR1bXBWYWx1ZShzdHIpICsgIiksIEZBSUxFRCB0ZXN0ICMiICsgdGVzdE51bWJlciAr
ICIsIEV4cGVjdGVkICIsIGR1bXBWYWx1ZShleHApLCAiIGdvdCAiLCBkdW1wVmFsdWUoYWN0dWFs
KSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZWdFeHBTeW50YXhFcnJvcihyZVN0cmluZywgZmxhZ3Ms
IGV4cEVycm9yKQotewotICAgIHRlc3ROdW1iZXIrKzsKLQotCi0gICAgdHJ5IHsKLSAgICAgICAg
bGV0IHJlID0gbmV3IFJlZ0V4cChyZVN0cmluZywgZmxhZ3MpOwotICAgICAgICBwcmludCgiRkFJ
TEVEIHRlc3QgIyIgKyB0ZXN0TnVtYmVyICsgIiwgRXhwZWN0ZWQgLyIgKyByZVN0cmluZyArICIv
IiArIGZsYWdzICsgIiB0byB0aHJvdyBcIiIgKyBleHBFcnJvciArICJcIiwgYnV0IGl0IGRpZG4n
dCIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUgIT0gZXhwRXJyb3IpCi0gICAg
ICAgICAgICBwcmludCgiRkFJTEVEIHRlc3QgIyIgKyB0ZXN0TnVtYmVyICsgIiwgRXhwZWN0ZWQg
LyIgKyByZVN0cmluZyArICIvIiArIGZsYWdzICsgIiB0byB0aHJvdyBcIiIgKyBleHBFcnJvciAr
ICJcIiBnb3QgXCIiICsgZSArICJcIiIpOwotICAgICAgICBlbHNlIGlmICh2ZXJib3NlKQotICAg
ICAgICAgICAgcHJpbnQoIi8iICsgcmVTdHJpbmcgKyAiLyIgKyBmbGFncyArICIgcGFzc2VkLCBp
dCB0aHJldyBcIiIgKyBleHBFcnJvciArICJcIiBhcyBleHBlY3RlZCIpOwotICAgIH0KLX0KLQot
bGV0IHJlID0gL14oPzpicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8
ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxyZXR1cm58c3dpdGNofHRocm93fHRyeXx2
YXJ8d2hpbGV8d2l0aHxudWxsfHRydWV8ZmFsc2V8aW5zdGFuY2VvZnx0eXBlb2Z8dm9pZHxkZWxl
dGV8bmV3fGlufHRoaXMpLzsKLQotZm9yIChpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewotICAg
IHRlc3RSZWdFeHAocmUsICJmdW5jdGlvbiIsIFsiZnVuY3Rpb24iXSk7Ci0gICAgdGVzdFJlZ0V4
cChyZSwgInJldHVybiIsIFsicmV0dXJuIl0pOwotICAgIHRlc3RSZWdFeHAocmUsICJsZXQiLCBu
dWxsKTsKLX0KLQotbGV0IHJlMSA9IC9eKD86YnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWJ1
Z2dlcnxkZWZhdWx0fGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8cmV0dXJufHN3aXRj
aHx0aHJvd3x0cnl8dmFyfHdoaWxlfHdpdGh8bnVsbHx0cnVlfGZhbHNlfGluc3RhbmNlb2Z8dHlw
ZW9mfHZvaWR8ZGVsZXRlfG5ld3xpbnx0aGlzKSQvOwotCi1mb3IgKGkgPSAwOyBpIDwgMTAwMDAw
MDsgaSsrKSB7Ci0gICAgdGVzdFJlZ0V4cChyZTEsICJ0aHJvdyIsIFsidGhyb3ciXSk7Ci0gICAg
dGVzdFJlZ0V4cChyZTEsICJ3aGlsZSIsIFsid2hpbGUiXSk7Ci19CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9yZWdleHAtcGFyc2luZy10b2tlbnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdl
eHAtcGFyc2luZy10b2tlbnMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5OWU4
MzhlYjRkYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1wYXJzaW5n
LXRva2Vucy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi0vLyBXaXRoIHZlcmJv
c2Ugc2V0IHRvIGZhbHNlLCB0aGlzIHRlc3QgaXMgc3VjY2Vzc2Z1bCBpZiB0aGVyZSBpcyBubyBv
dXRwdXQuICBTZXQgdmVyYm9zZSB0byB0cnVlIHRvIHNlZSBleHBlY3RlZCBtYXRjaGVzLgotbGV0
IHZlcmJvc2UgPSBmYWxzZTsKLQotZnVuY3Rpb24gYXJyYXlUb1N0cmluZyhhcnIpCi17Ci0gICAg
bGV0IHN0ciA9ICcnOwotICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uKHYsIGluZGV4KSB7Ci0gICAg
ICAgIGlmICh0eXBlb2YgdiA9PSAic3RyaW5nIikKLSAgICAgICAgICAgIHN0ciArPSAiXCIiICsg
diArICJcIiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ciArPSB2OwotCi0gICAgICAg
IGlmIChpbmRleCAhPSAoYXJyLmxlbmd0aCAtIDEpKQotICAgICAgICAgICAgc3RyICs9ICcsJzsK
LSAgICAgIH0pOwotICByZXR1cm4gc3RyOwotfQotCi1mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhv
YmopCi17Ci0gICAgbGV0IHN0ciA9ICIiOwotCi0gICAgZmlyc3RFbnRyeSA9IHRydWU7Ci0KLSAg
ICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7Ci0gICAg
ICAgIGlmICghZmlyc3RFbnRyeSkKLSAgICAgICAgICAgIHN0ciArPSAiLCAiOwotCi0gICAgICAg
IHN0ciArPSBrZXkgKyAiOiAiICsgZHVtcFZhbHVlKHZhbHVlKTsKLQotICAgICAgICBmaXJzdEVu
dHJ5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuICJ7ICIgKyBzdHIgKyAiIH0iOwotfQot
Ci1mdW5jdGlvbiBkdW1wVmFsdWUodikKLXsKLSAgICBpZiAodiA9PT0gbnVsbCkKLSAgICAgICAg
cmV0dXJuICI8bnVsbD4iOwotCi0gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgcmV0
dXJuICI8dW5kZWZpbmVkPiI7Ci0KLSAgICBpZiAodHlwZW9mIHYgPT0gInN0cmluZyIpCi0gICAg
ICAgIHJldHVybiAiXCIiICsgdiArICJcIiI7Ci0KLSAgICBsZXQgc3RyID0gIiI7Ci0KLSAgICBp
ZiAodi5sZW5ndGgpCi0gICAgICAgIHN0ciArPSBhcnJheVRvU3RyaW5nKHYpOwotCi0gICAgaWYg
KHYuZ3JvdXBzKSB7Ci0gICAgICAgIGdyb3VwU3RyID0gb2JqZWN0VG9TdHJpbmcodi5ncm91cHMp
OwotCi0gICAgICAgIGlmIChzdHIubGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAoIGdyb3VwU3Ry
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICBzdHIgKz0gIiwgIiArIGdyb3VwU3RyOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHN0ciA9IGdyb3VwU3RyOwotICAgIH0KLQotICAgIHJldHVy
biAiWyAiICsgc3RyICsgIiBdIjsKLX0KLQotZnVuY3Rpb24gY29tcGFyZUFycmF5KGV4cGVjdGVk
LCBhY3R1YWwpCi17Ci0gICAgaWYgKGV4cGVjdGVkID09PSBudWxsICYmIGFjdHVhbCA9PT0gbnVs
bCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwpIHsK
LSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZCBpcyBudWxsLCBhY3R1YWwgaXMgbm90IG51bGwi
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhY3R1YWwgPT09IG51
bGwpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZCBpcyBub3QgbnVsbCwgYWN0dWFsIGlz
IG51bGwiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChleHBlY3Rl
ZC5sZW5ndGggIT09IGFjdHVhbC5sZW5ndGgpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3Rl
ZC5sZW5ndGg6ICIgKyBleHBlY3RlZC5sZW5ndGggKyAiLCBhY3R1YWwubGVuZ3RoOiAiICsgYWN0
dWFsLmxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChleHBlY3Rl
ZFtpXSAhPT0gYWN0dWFsW2ldKSB7Ci0gICAgICAgICAgICBwcmludCgiIyMjIGV4cGVjdGVkWyIg
KyBpICsgIl06IFwiIiArIGV4cGVjdGVkW2ldICsgIlwiICE9PSBhY3R1YWxbIiArIGkgKyAiXTog
XCIiICsgYWN0dWFsW2ldICsgIlwiIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gY29tcGFyZUdy
b3VwcyhleHBlY3RlZCwgYWN0dWFsKQotewotICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCAmJiBh
Y3R1YWwgPT09IG51bGwpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGV4cGVjdGVk
ID09PSBudWxsKSB7Ci0gICAgICAgIHByaW50KCIjIyMgZXhwZWN0ZWQgZ3JvdXAgaXMgbnVsbCwg
YWN0dWFsIGdyb3VwIGlzIG5vdCBudWxsIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoYWN0dWFsID09PSBudWxsKSB7Ci0gICAgICAgIHByaW50KCIjIyMgZXhwZWN0
ZWQgZ3JvdXAgaXMgbm90IG51bGwsIGFjdHVhbCBncm91cCBpcyBudWxsIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGtleSBpbiBleHBlY3RlZCkgewot
ICAgICAgICBpZiAoZXhwZWN0ZWRba2V5XSAhPT0gYWN0dWFsW2tleV0pIHsKLSAgICAgICAgICAg
IHByaW50KCIjIyMgZXhwZWN0ZWQuIiArIGtleSArICI6ICIgKyBkdW1wVmFsdWUoZXhwZWN0ZWRb
a2V5XSkgKyAiICE9PSBhY3R1YWwuIiArIGtleSArICI6ICIgKyBkdW1wVmFsdWUoYWN0dWFsW2tl
eV0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCi1sZXQgdGVzdE51bWJlciA9IDA7Ci0KLWZ1bmN0aW9uIHRlc3RS
ZWdFeHAocmUsIHN0ciwgZXhwLCBncm91cHMpCi17Ci0gICAgdGVzdE51bWJlcisrOwotCi0gICAg
aWYgKGdyb3VwcykKLSAgICAgICAgZXhwLmdyb3VwcyA9IGdyb3VwczsKLQotICAgIGxldCBhY3R1
YWwgPSByZS5leGVjKHN0cik7Ci0KLSAgICBsZXQgcmVzdWx0ID0gY29tcGFyZUFycmF5KGV4cCwg
YWN0dWFsKTs7Ci0KLSAgICBpZiAoZXhwICYmIGV4cC5ncm91cHMpIHsKLSAgICAgICAgaWYgKCFj
b21wYXJlR3JvdXBzKGV4cC5ncm91cHMsIGFjdHVhbC5ncm91cHMpKQotICAgICAgICAgICAgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgICAgIHByaW50KHJlLnRvU3RyaW5nKCkgKyAiLmV4ZWMoIiArIGR1bXBW
YWx1ZShzdHIpICsgIiksIHBhc3NlZCAiLCBkdW1wVmFsdWUoZXhwKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHByaW50KHJlLnRvU3RyaW5nKCkgKyAiLmV4ZWMoIiArIGR1bXBWYWx1ZShzdHIpICsg
IiksIEZBSUxFRCB0ZXN0ICMiICsgdGVzdE51bWJlciArICIsIEV4cGVjdGVkICIsIGR1bXBWYWx1
ZShleHApLCAiIGdvdCAiLCBkdW1wVmFsdWUoYWN0dWFsKSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RS
ZWdFeHBTeW50YXhFcnJvcihyZVN0cmluZywgZmxhZ3MsIGV4cEVycm9yKQotewotICAgIHRlc3RO
dW1iZXIrKzsKLQotCi0gICAgdHJ5IHsKLSAgICAgICAgbGV0IHJlID0gbmV3IFJlZ0V4cChyZVN0
cmluZywgZmxhZ3MpOwotICAgICAgICBwcmludCgiRkFJTEVEIHRlc3QgIyIgKyB0ZXN0TnVtYmVy
ICsgIiwgRXhwZWN0ZWQgLyIgKyByZVN0cmluZyArICIvIiArIGZsYWdzICsgIiB0byB0aHJvdyBc
IiIgKyBleHBFcnJvciArICJcIiwgYnV0IGl0IGRpZG4ndCIpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgaWYgKGUgIT0gZXhwRXJyb3IpCi0gICAgICAgICAgICBwcmludCgiRkFJTEVEIHRl
c3QgIyIgKyB0ZXN0TnVtYmVyICsgIiwgRXhwZWN0ZWQgLyIgKyByZVN0cmluZyArICIvIiArIGZs
YWdzICsgIiB0byB0aHJvdyBcIiIgKyBleHBFcnJvciArICJcIiBnb3QgXCIiICsgZSArICJcIiIp
OwotICAgICAgICBlbHNlIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgcHJpbnQoIi8iICsgcmVT
dHJpbmcgKyAiLyIgKyBmbGFncyArICIgcGFzc2VkLCBpdCB0aHJldyBcIiIgKyBleHBFcnJvciAr
ICJcIiBhcyBleHBlY3RlZCIpOwotICAgIH0KLX0KLQotLy8gVGVzdCAxCi1sZXQgcmUxID0gL14o
PzpicmVha3xjYXNlfHdoaWNofGRvfGZvcikvaTsKLQotdGVzdFJlZ0V4cChyZTEsICJjYXNlIiwg
WyJjYXNlIl0pOwotdGVzdFJlZ0V4cChyZTEsICJGT1IiLCBbIkZPUiJdKTsKLXRlc3RSZWdFeHAo
cmUxLCAidGhyb3ciLCBudWxsKTsKLQotLy8g0JvQldCS0KvQmSB8INCf0KDQkNCS0KvQmSB8IGxl
ZnQgfCByaWdodCAgbm90ZTog0JvQldCS0KvQmSBpcyBSdXNzaWFuIGZvciBsZWZ0IGFuZCDQn9Cg
0JDQktCr0JkgaXMgUnVzc2lhbiBmb3IgcmlnaHQKLWxldCByZTIgPSAvXig/Olx1ezA0MWJ9XHV7
MDQxNX1cdXswNDEyfVx1ezA0MmJ9XHV7MDQxOX18XHV7MDQxZn1cdXswNDIwfVx1ezA0MTB9XHV7
MDQxMn1cdXswNDJifVx1ezA0MTl9fGxlZnR8cmlnaHQpJC91OwotCi10ZXN0UmVnRXhwKHJlMiwg
Ilx1ezA0MWZ9XHV7MDQyMH1cdXswNDEwfVx1ezA0MTJ9XHV7MDQyYn1cdXswNDE5fSIsIFsiXHV7
MDQxZn1cdXswNDIwfVx1ezA0MTB9XHV7MDQxMn1cdXswNDJifVx1ezA0MTl9Il0pOwotdGVzdFJl
Z0V4cChyZTIsICJcdXswNDFifVx1ezA0MTV9XHV7MDQxMn1cdXswNDJifSAiLCBudWxsKTsKLXRl
c3RSZWdFeHAocmUyLCAibGVmdCIsIFsibGVmdCJdKTsKLXRlc3RSZWdFeHAocmUyLCAiY2VudGVy
IiwgbnVsbCk7Ci0KLWxldCByZTMgPSAvXig/OnNvbWV0aGluZ3xldmVyeXRoaW5nfGFueXRoaW5n
KSQvOwotdGVzdFJlZ0V4cChyZTMsICJzb21ldGhpbmciLCBbInNvbWV0aGluZyJdKTsKLXRlc3RS
ZWdFeHAocmUzLCAiYW55dGhpbmciLCBbImFueXRoaW5nIl0pOwotdGVzdFJlZ0V4cChyZTMsICJl
dmVyeXRoaW5nIiwgWyJldmVyeXRoaW5nIl0pOwotdGVzdFJlZ0V4cChyZTMsICJhbnl0aGluZyBi
dXQiLCBudWxsKTsKLQotbGV0IHJlNCA9IC9eKD86YnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxk
ZWJ1Z2dlcnxkZWZhdWx0fGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8cmV0dXJufHN3
aXRjaHx0aHJvd3x0cnl8dmFyfHdoaWxlfHdpdGh8bnVsbHx0cnVlfGZhbHNlfGluc3RhbmNlb2Z8
dHlwZW9mfHZvaWR8ZGVsZXRlfG5ld3xpbnx0aGlzKS87Ci0KLXRlc3RSZWdFeHAocmU0LCAiYnJl
YWsiLCBbImJyZWFrIl0pOwotdGVzdFJlZ0V4cChyZTQsICJjYXRjaCIsIFsiY2F0Y2giXSk7Ci10
ZXN0UmVnRXhwKHJlNCwgInRocm93IiwgWyJ0aHJvdyJdKTsKLXRlc3RSZWdFeHAocmU0LCAiIHRo
cm93IiwgbnVsbCk7Ci10ZXN0UmVnRXhwKHJlNCwgInJldHVybiIsIFsicmV0dXJuIl0pOwotdGVz
dFJlZ0V4cChyZTQsICJ1bnRpbCIsIG51bGwpOwotCi1sZXQgcmU1ID0gL14oPzpicmVha3xjYXNl
fGNhdGNofGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5j
dGlvbnxpZnxyZXR1cm58c3dpdGNofHRocm93fHRyeXx2YXJ8d2hpbGV8d2l0aHxudWxsfHRydWV8
ZmFsc2V8aW5zdGFuY2VvZnx0eXBlb2Z8dm9pZHxkZWxldGV8bmV3fGlufHRoaXMpJC87Ci0KLXRl
c3RSZWdFeHAocmU1LCAidGhyb3ciLCBbInRocm93Il0pOwotdGVzdFJlZ0V4cChyZTUsICIgdGhy
b3ciLCBudWxsKTsKLXRlc3RSZWdFeHAocmU1LCAiZnVuY3Rpb24iLCBbImZ1bmN0aW9uIl0pOwot
dGVzdFJlZ0V4cChyZTUsICJyZXR1cm4iLCBbInJldHVybiJdKTsKLXRlc3RSZWdFeHAocmU1LCAi
bGV0IiwgbnVsbCk7Ci10ZXN0UmVnRXhwKHJlNSwgInVudGlsIiwgbnVsbCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>