<?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>288227</bug_id>
          
          <creation_ts>2025-02-21 12:57:56 -0800</creation_ts>
          <short_desc>REGRESSION(290791@main): Broke web-platform-tests dashboard</short_desc>
          <delta_ts>2025-02-28 12:58:15 -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>NEW</bug_status>
          <resolution></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>daniel_liu4</cc>
    
    <cc>msaboff</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2096831</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-02-21 12:57:56 -0800</bug_when>
    <thetext>https://commits.webkit.org/290791@main introduced a regression:
Broke web-platform-tests dashboard

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>2096832</commentid>
    <comment_count>1</comment_count>
      <attachid>474314</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-02-21 12:58:01 -0800</bug_when>
    <thetext>Created attachment 474314
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>2096833</commentid>
    <comment_count>2</comment_count>
    <who name="">daniel_liu4</who>
    <bug_when>2025-02-21 13:00:22 -0800</bug_when>
    <thetext>Whoops, race condition. Dupe of https://bugs.webkit.org/show_bug.cgi?id=288226.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2099363</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-02-28 12:58:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/145875841&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474314</attachid>
            <date>2025-02-21 12:58:01 -0800</date>
            <delta_ts>2025-02-21 12:58:01 -0800</delta_ts>
            <desc>REVERT of 290791@main</desc>
            <filename>bug-288227-20250221205800.patch</filename>
            <type>text/plain</type>
            <size>61627</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA5N2IyMDNlOGE2MDMyMjVjNTg0YjAyZWEwOWZmOTVhNzBjNDY0N2Y5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDIxIEZlYiAyMDI1IDIwOjU3OjU4ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI5MDc5MUBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4ODIyNwoKQnJva2Ugd2ViLXBsYXRmb3JtLXRlc3RzIGRhc2hi
b2FyZAoKUmV2ZXJ0ZWQgY2hhbmdlc2V0OgoKIltZYXJyXSBJbXByb3ZlIHByb2Nlc3Npbmcgb2Yg
YW4gYWx0ZXJuYXRpb24gb2Ygc3RyaW5ncyIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI4ODEwMgpodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yOTA3OTFAbWFpbgot
LS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwICAgICAgICB8IDMyMyAr
KysrKy0tLS0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmNwcCAgICB8ICA2MSArLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5oICAgICAgfCAgIDQgLQogLi4uL21pY3JvYmVuY2htYXJrcy9yZWdleHAta2V5d29yZC1wYXJz
aW5nLmpzIHwgMTc1IC0tLS0tLS0tLS0KIEpTVGVzdHMvc3RyZXNzL3JlZ2V4cC1wYXJzaW5nLXRv
a2Vucy5qcyAgICAgICB8IDE5OSAtLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNl
cnRpb25zKCspLCA2NzggZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvcmVnZXhwLWtleXdvcmQtcGFyc2luZy5qcwogZGVsZXRlIG1vZGUgMTAw
NjQ0IEpTVGVzdHMvc3RyZXNzL3JlZ2V4cC1wYXJzaW5nLXRva2Vucy5qcwoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggYzQzMWIxMWRiNWJjLi41ZGE5Y2RjYWMyNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zMTcsMTcgKzMxNywx
MyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgICAgIE1hdGNoU3VjY2Vzc0ZhbGxUaHJvdWdoID0gUHJlZmVyTWF0Y2hGYWlsZWQKICAg
ICAgICAgfTsKIAotICAgICAgICBNYXRjaFRhcmdldHMoUHJlZmVycmVkVGFyZ2V0IHByZWZlcnJl
ZFRhcmdldCA9IFByZWZlcnJlZFRhcmdldDo6Tm9QcmVmZXJlbmNlKQotICAgICAgICAgICAgOiBt
X3ByZWZlcnJlZFRhcmdldChwcmVmZXJyZWRUYXJnZXQpCi0gICAgICAgIHsgfQotCiAgICAgICAg
IE1hdGNoVGFyZ2V0cyhNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIG1hdGNoRGVzdCkKICAgICAg
ICAgICAgIDogbV9tYXRjaFN1Y2NlZWRlZFRhcmdldHMoJm1hdGNoRGVzdCkKICAgICAgICAgICAg
ICwgbV9wcmVmZXJyZWRUYXJnZXQoUHJlZmVycmVkVGFyZ2V0OjpQcmVmZXJNYXRjaFN1Y2NlZWRl
ZCkKICAgICAgICAgeyB9CiAKICAgICAgICAgTWF0Y2hUYXJnZXRzKE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCYgY29tcGFyZURlc3QsIFByZWZlcnJlZFRhcmdldCBwcmVmZXJyZWRUYXJnZXQpCi0g
ICAgICAgICAgICA6IG1fcHJlZmVycmVkVGFyZ2V0KHByZWZlcnJlZFRhcmdldCkKKyAgICAgICAg
ICAgIDogbV9wcmVmZXJyZWRUYXJnZXQoJnByZWZlcnJlZFRhcmdldCkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKHByZWZlcnJlZFRhcmdldCA9PSBQcmVmZXJyZWRUYXJnZXQ6OlByZWZlck1h
dGNoRmFpbGVkKQogICAgICAgICAgICAgICAgIG1fbWF0Y2hGYWlsZWRUYXJnZXRzID0gJmNvbXBh
cmVEZXN0OwpAQCAtMTA4MSw4ICsxMDc3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMTZVbmFsaWduZWQo
YWRkcmVzcywgcmVzdWx0UmVnKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kPgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1
bXBJZkNoYXJDb25kKGNoYXIzMl90IGNoLCBDaGVja2VkPHVuc2lnbmVkPiBuZWdhdGl2ZUNoYXJh
Y3Rlck9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hhcmFjdGVyLCBib29sIGln
bm9yZUNhc2UpCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcElmQ2hhck5vdEVxdWFscyhj
aGFyMzJfdCBjaCwgQ2hlY2tlZDx1bnNpZ25lZD4gbmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQsIE1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoYXJhY3RlciwgYm9vbCBpZ25vcmVDYXNlKQogICAg
IHsKICAgICAgICAgcmVhZENoYXJhY3RlcihuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCwgY2hhcmFj
dGVyKTsKIApAQCAtMTA5NCwxNyArMTA4OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgY2ggfD0gMHgyMDsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMihjb25kLCBjaGFyYWN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMihjaCkpOwotICAgIH0KLQotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGp1bXBJZkNoYXJOb3RFcXVhbHMoY2hhcjMyX3QgY2gsIENoZWNrZWQ8dW5zaWduZWQ+IG5lZ2F0
aXZlQ2hhcmFjdGVyT2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGFyYWN0ZXIs
IGJvb2wgaWdub3JlQ2FzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBqdW1wSWZDaGFyQ29uZDxN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWw+KGNoLCBuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCwgY2hh
cmFjdGVyLCBpZ25vcmVDYXNlKTsKLSAgICB9Ci0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBq
dW1wSWZDaGFyRXF1YWxzKGNoYXIzMl90IGNoLCBDaGVja2VkPHVuc2lnbmVkPiBuZWdhdGl2ZUNo
YXJhY3Rlck9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hhcmFjdGVyLCBib29s
IGlnbm9yZUNhc2UpCi0gICAgewotICAgICAgICByZXR1cm4ganVtcElmQ2hhckNvbmQ8TWFjcm9B
c3NlbWJsZXI6OkVxdWFsPihjaCwgbmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3Rlciwg
aWdub3JlQ2FzZSk7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNoKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgc3RvcmVUb0ZyYW1lKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklE
IHJlZywgdW5zaWduZWQgZnJhbWVMb2NhdGlvbikKQEAgLTEyNjMsMTUgKzEyNDgsNiBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgU2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiwKICAgICAgICAgU2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVOZXh0LAogICAgICAgICBTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCwKLSAgICAgICAgLy8g
VXNlZCBmb3IgYWx0ZXJuYXRpdmVzIGluIHN1YnBhdHRlcm5zIHdoZXJlIHRoZXJlIGlzIGEgbGlz
dCBvZiBCT0wgYW5jaG9yZWQKLSAgICAgICAgLy8gc3RyaW5nIGFsdGVybmF0aXZlcy4gU3VjaCBh
IHN0cmluZyBsaXN0IGRvZXNuJ3QgbmVlZCBiYWNrdHJhY2tpbmcuIElmIHRoZQotICAgICAgICAv
LyBwYXR0ZXJuIGlzIGFsc28gRU9MIGFuY2hvcmVkLCBlLmcuIC9eKD86Y2F0fGRvZ3xkb2dneSkk
LywgdGhlIGxpc3Qgb2Ygc3RyaW5ncwotICAgICAgICAvLyBuZWVkcyB0byBiZSBzb3J0ZWQgc3Vj
aCB0aGF0IGFsbCBsb25nZXIgc3RyaW5ncyB3aXRoIGEgcHJlZml4IHByaW9yIGluIHRoZQotICAg
ICAgICAvLyBsaXN0IGFwcGVhciBmaXJzdC4gSW4gdGhlIGV4YW1wbGUsIHdlJ2Qgc29ydCB0aGUg
YWx0ZXJuYXRpdmVzIHRvIHNvbWV0aGluZwotICAgICAgICAvLyBsaWtlOiAvXig/OmNhdHxkb2dn
eXxkb2cpJC8uIFRoaXMgZWxpbW5hdGVzIHRoZSBuZWVkIHRvIGJhY2trdHJhY2suCi0gICAgICAg
IFN0cmluZ0xpc3RBbHRlcm5hdGl2ZUJlZ2luLAotICAgICAgICBTdHJpbmdMaXN0QWx0ZXJuYXRp
dmVOZXh0LAotICAgICAgICBTdHJpbmdMaXN0QWx0ZXJuYXRpdmVFbmQsCiAgICAgICAgIC8vIFVz
ZWQgdG8gd3JhcCAnT25jZScgc3VicGF0dGVybiBtYXRjaGVzIChxdWFudGl0eU1heENvdW50ID09
IDEpLgogICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sCiAgICAgICAgIFBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQsCkBAIC0xOTgwLDE2ICsxOTU2LDEzIEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgIH0KICNlbmRp
ZgogCi0gICAgdm9pZCBnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJPbmNlKHNpemVfdCBvcEluZGV4
LCBNYXRjaFRhcmdldHMmIG1hdGNoVGFyZ2V0cykKKyAgICB2b2lkIGdlbmVyYXRlUGF0dGVybkNo
YXJhY3Rlck9uY2Uoc2l6ZV90IG9wSW5kZXgpCiAgICAgewogICAgICAgICBZYXJyT3AmIG9wID0g
bV9vcHNbb3BJbmRleF07CiAKICAgICAgICAgaWYgKG9wLm1faXNEZWFkQ29kZSkKICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBNYXRjaFRhcmdldHMgZGVmYXVsdE1hdGNoVGFyZ2V0cyht
YXRjaFRhcmdldHMuaGFzRmFpbGVkVGFyZ2V0KCkgPyBtYXRjaFRhcmdldHMubWF0Y2hGYWlsZWQo
KSA6IG9wLm1fanVtcHMsIE1hdGNoVGFyZ2V0czo6UHJlZmVycmVkVGFyZ2V0OjpNYXRjaFN1Y2Nl
c3NGYWxsVGhyb3VnaCk7Ci0gICAgICAgIE1hdGNoVGFyZ2V0cyBsYXN0TWF0Y2hUYXJnZXRzKG1h
dGNoVGFyZ2V0cy5tYXRjaFN1Y2NlZWRlZCgpLCBtYXRjaFRhcmdldHMuaGFzRmFpbGVkVGFyZ2V0
KCkgPyBtYXRjaFRhcmdldHMubWF0Y2hGYWlsZWQoKSA6IG9wLm1fanVtcHMsIG1hdGNoVGFyZ2V0
cy5wcmVmZXJyZWRUYXJnZXQoKSk7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIG1fb3BzIGFsd2F5
cyBlbmRzIHdpdGggYSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQgb3IgWWFyck9wQ29k
ZTo6TWF0Y2hGYWlsZWQKICAgICAgICAgLy8gbm9kZSwgc28gdGhlcmUgbXVzdCBhbHdheXMgYmUg
YXQgbGVhc3Qgb25lIG1vcmUgbm9kZS4KICAgICAgICAgQVNTRVJUKG9wSW5kZXggKyAxIDwgbV9v
cHMuc2l6ZSgpKTsKQEAgLTIwMDAsNyArMTk3Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogCiAgICAgICAgIGlmICghaXNMYXRpbjEoY2gpICYm
IChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkpIHsKICAgICAgICAgICAgIC8vIEhhdmUg
YSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNp
cmN1aXQKLSAgICAgICAgICAgIGRlZmF1bHRNYXRjaFRhcmdldHMuYXBwZW5kRmFpbGVkKG1faml0
Lmp1bXAoKSk7CisgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIwNTUsNyArMjAyOCw3IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogCiAgICAgICAg
ICAgICBpZiAoIWlzTGF0aW4xKGN1cnJlbnRDaGFyYWN0ZXIpICYmIChtX2NoYXJTaXplID09IENo
YXJTaXplOjpDaGFyOCkpIHsKICAgICAgICAgICAgICAgICAvLyBIYXZlIGEgMTYgYml0IHBhdHRl
cm4gY2hhcmFjdGVyIGFuZCBhbiA4IGJpdCBzdHJpbmcgLSBzaG9ydCBjaXJjdWl0Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdE1hdGNoVGFyZ2V0cy5hcHBlbmRGYWlsZWQobV9qaXQuanVtcCgpKTsK
KyAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjA3NywxNzIgKzIwNTAsMTI3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAg
ICAgICB9CiAjZW5kaWYKIAotICAgICAgICAvLyBTdGFydCB3aXRoIGRlZmF1bHRNYXRjaFRhcmdl
dHMgYW5kIHRoZW4gcHJvdmUgdGhhdCB3ZSBhcmUgaGFuZGxpbmcgdGhlIGxhc3QKLSAgICAgICAg
Ly8gUGF0dGVybkNoYXJhY3RlciBmaXhlZCBzaXplIDEgdGVybSBpbiB0aGUgbGlzdC4KLSAgICAg
ICAgYm9vbCBpc0xhc3RDaGFyT25jZSA9IGZhbHNlOwotICAgICAgICBpZiAobV9vcHMuc2l6ZSgp
IDwgb3BJbmRleCArIG51bWJlckNoYXJhY3RlcnMgKyAxKQotICAgICAgICAgICAgaXNMYXN0Q2hh
ck9uY2UgPSB0cnVlOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFlhcnJPcCogZm9sbG93
aW5nT3AgPSAmbV9vcHNbb3BJbmRleCArIG51bWJlckNoYXJhY3RlcnNdOwotICAgICAgICAgICAg
aWYgKGZvbGxvd2luZ09wLT5tX29wICE9IFlhcnJPcENvZGU6OlRlcm0pCi0gICAgICAgICAgICAg
ICAgaXNMYXN0Q2hhck9uY2UgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZm9sbG93aW5n
T3AtPm1fdGVybS0+dHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MCi0gICAg
ICAgICAgICAgICAgJiYgbV9vcHMuc2l6ZSgpID4gb3BJbmRleCArIG51bWJlckNoYXJhY3RlcnMg
KyAxCi0gICAgICAgICAgICAgICAgJiYgbV9vcHNbb3BJbmRleCArIG51bWJlckNoYXJhY3RlcnMg
KyAxXS5tX29wICE9IFlhcnJPcENvZGU6OlRlcm0pCi0gICAgICAgICAgICAgICAgaXNMYXN0Q2hh
ck9uY2UgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIE1hdGNoVGFyZ2V0cyogbWF0Y2hUYXJn
ZXRGb3JGaW5hbENvbXBhcmlzb24gPSBpc0xhc3RDaGFyT25jZSA/ICZsYXN0TWF0Y2hUYXJnZXRz
IDogJmRlZmF1bHRNYXRjaFRhcmdldHM7Ci0KICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRl
UGFpcnMpCi0gICAgICAgICAgICBkZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChqdW1w
SWZOb0F2YWlsYWJsZUlucHV0KCkpOworICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVt
cElmTm9BdmFpbGFibGVJbnB1dCgpKTsKIAogICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFy
U2l6ZTo6Q2hhcjgpIHsKLSAgICAgICAgICAgIGF1dG8gY2hlY2sxID0gWyZdIChDaGVja2VkPHVu
c2lnbmVkPiBvZmZzZXQsIGNoYXIzMl90IGNoYXJhY3RlcnMsIE1hdGNoVGFyZ2V0cyYgbWF0Y2hU
YXJnZXRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaFRhcmdldHMuaGFzU3VjY2VlZFRh
cmdldCgpKQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZh
aWxlZChqdW1wSWZDaGFyTm90RXF1YWxzKGNoYXJhY3RlcnMsIG9mZnNldCwgY2hhcmFjdGVyLCB0
ZXJtLT5pZ25vcmVDYXNlKCkpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIG1hdGNoVGFyZ2V0cy5hcHBlbmRTdWNjZWVkZWQoanVtcElmQ2hhckVxdWFscyhjaGFy
YWN0ZXJzLCBvZmZzZXQsIGNoYXJhY3RlciwgdGVybS0+aWdub3JlQ2FzZSgpKSk7CisgICAgICAg
ICAgICBhdXRvIGNoZWNrMSA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCBjaGFyMzJf
dCBjaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElm
Q2hhck5vdEVxdWFscyhjaGFyYWN0ZXJzLCBvZmZzZXQsIGNoYXJhY3RlciwgdGVybS0+aWdub3Jl
Q2FzZSgpKSk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBhdXRvIGNoZWNrMiA9IFsm
XSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCB1aW50MTZfdCBjaGFyYWN0ZXJzLCB1aW50MTZf
dCBtYXNrLCBNYXRjaFRhcmdldHMmIG1hdGNoVGFyZ2V0cykgeworICAgICAgICAgICAgYXV0byBj
aGVjazIgPSBbJl0gKENoZWNrZWQ8dW5zaWduZWQ+IG9mZnNldCwgdWludDE2X3QgY2hhcmFjdGVy
cywgdWludDE2X3QgbWFzaykgewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNlVuYWxpZ25l
ZChuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNzKG9mZnNldCwgY2hhcmFjdGVyKSwgY2hhcmFj
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAobWFzaykKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQub3IzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobWFzayksIGNoYXJhY3Rlcik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFtYXRjaFRhcmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6Oklt
bTMyKGNoYXJhY3RlcnMgfCBtYXNrKSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hUYXJnZXRzLmFwcGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNo
YXJhY3RlcnMgfCBtYXNrKSkpOworICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6SW1tMzIoY2hhcmFjdGVycyB8IG1hc2spKSk7CiAgICAgICAgICAgICB9OwogCi0g
ICAgICAgICAgICBhdXRvIGNoZWNrNCA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCB1
bnNpZ25lZCBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBtYXNrLCBNYXRjaFRhcmdldHMmIG1hdGNoVGFy
Z2V0cykgeworICAgICAgICAgICAgYXV0byBjaGVjazQgPSBbJl0gKENoZWNrZWQ8dW5zaWduZWQ+
IG9mZnNldCwgdW5zaWduZWQgY2hhcmFjdGVycywgdW5zaWduZWQgbWFzaykgewogICAgICAgICAg
ICAgICAgIGlmIChtYXNrKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMldpdGhV
bmFsaWduZWRIYWxmV29yZHMobmVnYXRpdmVPZmZzZXRJbmRleGVkQWRkcmVzcyhvZmZzZXQsIGNo
YXJhY3RlciksIGNoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtYXNrKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQub3IzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobWFz
ayksIGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hUYXJnZXRzLmhh
c1N1Y2NlZWRUYXJnZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNYXRjaFRh
cmdldHMuYXBwZW5kRmFpbGVkKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgY2hhcmFjdGVyLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoY2hhcmFjdGVycyB8IG1hc2spKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
VGFyZ2V0cy5hcHBlbmRTdWNjZWVkZWQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjaGFyYWN0ZXJzIHwgbWFzaykp
KTsKKyAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0z
MihjaGFyYWN0ZXJzIHwgbWFzaykpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoVGFyZ2V0cy5oYXNTdWNj
ZWVkVGFyZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNYXRjaFRhcmdldHMuYXBw
ZW5kRmFpbGVkKG1faml0LmJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3Mob2Zmc2V0LCBjaGFy
YWN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNoYXJhY3RlcnMpKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtYXRjaFRhcmdldHMuYXBwZW5k
U3VjY2VlZGVkKG1faml0LmJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3Mob2Zmc2V0LCBjaGFyYWN0
ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNoYXJhY3RlcnMpKSk7CisgICAgICAg
ICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFs
ZldvcmRzKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbmVnYXRpdmVPZmZzZXRJbmRleGVkQWRk
cmVzcyhvZmZzZXQsIGNoYXJhY3RlciksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoY2hh
cmFjdGVycykpKTsKICAgICAgICAgICAgIH07CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICAgICAgYXV0byBjaGVjazggPSBbJl0gKENoZWNr
ZWQ8dW5zaWduZWQ+IG9mZnNldCwgdWludDY0X3QgY2hhcmFjdGVycywgdWludDY0X3QgbWFzaywg
TWF0Y2hUYXJnZXRzJiBtYXRjaFRhcmdldHMpIHsKKyAgICAgICAgICAgIGF1dG8gY2hlY2s4ID0g
WyZdIChDaGVja2VkPHVuc2lnbmVkPiBvZmZzZXQsIHVpbnQ2NF90IGNoYXJhY3RlcnMsIHVpbnQ2
NF90IG1hc2spIHsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQobmVnYXRpdmVPZmZzZXRJ
bmRleGVkQWRkcmVzcyhvZmZzZXQsIGNoYXJhY3RlciksIGNoYXJhY3Rlcik7CiAgICAgICAgICAg
ICAgICAgaWYgKG1hc2spCiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm9yNjQoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW02NChtYXNrKSwgY2hhcmFjdGVyKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIW1hdGNoVGFyZ2V0cy5oYXNTdWNjZWVkVGFyZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAg
IGRlZmF1bHRNYXRjaFRhcmdldHMuYXBwZW5kRmFpbGVkKG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
KGNoYXJhY3RlcnMgfCBtYXNrKSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hUYXJnZXRzLmFwcGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02
NChjaGFyYWN0ZXJzIHwgbWFzaykpKTsKKyAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVu
ZChtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNoYXJhY3RlciwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChjaGFyYWN0ZXJzIHwgbWFzaykpKTsKICAgICAgICAg
ICAgIH07CiAjZW5kaWYKIAogICAgICAgICAgICAgc3dpdGNoIChudW1iZXJDaGFyYWN0ZXJzKSB7
CiAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgLy8gVXNlIDMyYml0IHdpZHRo
IG9mIGFsbENoYXJhY3RlcnMgc2luY2UgWWFyciBjb3VudHMgc3Vycm9nYXRlIHBhaXJzIGFzIG9u
ZSBjaGFyYWN0ZXIgd2l0aCB1bmljb2RlIGZsYWcuCi0gICAgICAgICAgICAgICAgY2hlY2sxKG9w
Lm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhm
ZmZmZmZmZiwgKm1hdGNoVGFyZ2V0Rm9yRmluYWxDb21wYXJpc29uKTsKKyAgICAgICAgICAgICAg
ICBjaGVjazEob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJh
Y3RlcnMgJiAweGZmZmZmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBjYXNlIDI6IHsKLSAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0g
c3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNr
ICYgMHhmZmZmLCBsYXN0TWF0Y2hUYXJnZXRzKTsKKyAgICAgICAgICAgICAgICBjaGVjazIob3Au
bV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZm
ZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIDM6IHsKLSAgICAgICAgICAgICAgICBjaGVj
azIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMg
JiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmLCBkZWZhdWx0TWF0Y2hUYXJnZXRzKTsK
LSAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9z
aXRpb24gLSAyLCAoYWxsQ2hhcmFjdGVycyA+PiAxNikgJiAweGZmLCAqbWF0Y2hUYXJnZXRGb3JG
aW5hbENvbXBhcmlzb24pOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRPZmZz
ZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZiwgaWdub3JlQ2Fz
ZU1hc2sgJiAweGZmZmYpOworICAgICAgICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZz
ZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDIsIChhbGxDaGFyYWN0ZXJzID4+IDE2KSAmIDB4ZmYp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgNDogewotICAgICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFy
dFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNr
ICYgMHhmZmZmZmZmZiwgKm1hdGNoVGFyZ2V0Rm9yRmluYWxDb21wYXJpc29uKTsKKyAgICAgICAg
ICAgICAgICBjaGVjazQob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICNpZiBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgICAgICAgICAgY2FzZSA1OiB7Ci0gICAg
ICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9u
LCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZm
LCBkZWZhdWx0TWF0Y2hUYXJnZXRzKTsKLSAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVj
a2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikg
JiAweGZmLCAqbWF0Y2hUYXJnZXRGb3JGaW5hbENvbXBhcmlzb24pOworICAgICAgICAgICAgICAg
IGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFj
dGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAg
ICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0g
NCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSA2OiB7Ci0gICAgICAgICAgICAgICAg
Y2hlY2s0KG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0
ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmLCBkZWZhdWx0TWF0
Y2hUYXJnZXRzKTsKLSAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0g
c3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmZmYsIChp
Z25vcmVDYXNlTWFzayA+PiAzMikgJiAweGZmZmYsICptYXRjaFRhcmdldEZvckZpbmFsQ29tcGFy
aXNvbik7CisgICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0
VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sg
JiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0
IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmZmYs
IChpZ25vcmVDYXNlTWFzayA+PiAzMikgJiAweGZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgNzogewotICAgICAgICAgICAgICAg
IGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFj
dGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZiwgZGVmYXVsdE1h
dGNoVGFyZ2V0cyk7Ci0gICAgICAgICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAt
IHN0YXJ0VGVybVBvc2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAo
aWdub3JlQ2FzZU1hc2sgPj4gMzIpICYgMHhmZmZmLCBkZWZhdWx0TWF0Y2hUYXJnZXRzKTsKLSAg
ICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRp
b24gLSA2LCAoYWxsQ2hhcmFjdGVycyA+PiA0OCkgJiAweGZmLCAqbWF0Y2hUYXJnZXRGb3JGaW5h
bENvbXBhcmlzb24pOworICAgICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQg
LSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNh
c2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tl
ZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYg
MHhmZmZmLCAoaWdub3JlQ2FzZU1hc2sgPj4gMzIpICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAg
ICBjaGVjazEob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA2LCAoYWxs
Q2hhcmFjdGVycyA+PiA0OCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIDg6IHsKLSAgICAgICAgICAgICAgICBjaGVjazgo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMsIGln
bm9yZUNhc2VNYXNrLCAqbWF0Y2hUYXJnZXRGb3JGaW5hbENvbXBhcmlzb24pOworICAgICAgICAg
ICAgICAgIGNoZWNrOChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxs
Q2hhcmFjdGVycywgaWdub3JlQ2FzZU1hc2spOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgYXV0byBjaGVjazEgPSBbJl0gKENoZWNrZWQ8dW5zaWduZWQ+IG9mZnNldCwgY2hh
cjMyX3QgY2hhcmFjdGVycywgTWF0Y2hUYXJnZXRzJiBtYXRjaFRhcmdldHMpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1hdGNoVGFyZ2V0cy5oYXNTdWNjZWVkVGFyZ2V0KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHRNYXRjaFRhcmdldHMuYXBwZW5kRmFpbGVkKGp1bXBJZkNoYXJOb3RF
cXVhbHMoY2hhcmFjdGVycywgb2Zmc2V0LCBjaGFyYWN0ZXIsIHRlcm0tPmlnbm9yZUNhc2UoKSkp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hUYXJnZXRz
LmFwcGVuZFN1Y2NlZWRlZChqdW1wSWZDaGFyRXF1YWxzKGNoYXJhY3RlcnMsIG9mZnNldCwgY2hh
cmFjdGVyLCB0ZXJtLT5pZ25vcmVDYXNlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gY2hlY2sxID0g
WyZdIChDaGVja2VkPHVuc2lnbmVkPiBvZmZzZXQsIGNoYXIzMl90IGNoYXJhY3RlcnMpIHsKKyAg
ICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZDaGFyTm90RXF1YWxzKGNoYXJh
Y3RlcnMsIG9mZnNldCwgY2hhcmFjdGVyLCB0ZXJtLT5pZ25vcmVDYXNlKCkpKTsKICAgICAgICAg
ICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gY2hlY2syID0gWyZdIChDaGVja2VkPHVuc2lnbmVk
PiBvZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlcnMsIHVuc2lnbmVkIG1hc2ssIE1hdGNoVGFyZ2V0
cyYgbWF0Y2hUYXJnZXRzKSB7CisgICAgICAgICAgICBhdXRvIGNoZWNrMiA9IFsmXSAoQ2hlY2tl
ZDx1bnNpZ25lZD4gb2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBtYXNrKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1hc2spIHsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNz
KG9mZnNldCwgY2hhcmFjdGVyKSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hc2spCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKE1hY3JvQXNzZW1ibGVy
OjpJbW0zMihtYXNrKSwgY2hhcmFjdGVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRj
aFRhcmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdE1hdGNoVGFyZ2V0cy5hcHBlbmRGYWlsZWQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjaGFyYWN0ZXJz
IHwgbWFzaykpKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hUYXJnZXRzLmFwcGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNoYXJhY3Rl
cnMgfCBtYXNrKSkpOwotCisgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBNYWNyb0Fz
c2VtYmxlcjo6SW1tMzIoY2hhcmFjdGVycyB8IG1hc2spKSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaFRh
cmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWF0
Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChtX2ppdC5icmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29y
ZHMoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNz
KG9mZnNldCwgY2hhcmFjdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0
ZXJzKSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hU
YXJnZXRzLmFwcGVuZFN1Y2NlZWRlZChtX2ppdC5icmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29y
ZHMoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBuZWdhdGl2ZU9mZnNldEluZGV4ZWRBZGRyZXNzKG9m
ZnNldCwgY2hhcmFjdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJz
KSkpOworICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0LmJyYW5jaDMyV2l0
aFVuYWxpZ25lZEhhbGZXb3JkcyhNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG5lZ2F0aXZlT2Zm
c2V0SW5kZXhlZEFkZHJlc3Mob2Zmc2V0LCBjaGFyYWN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGNoYXJhY3RlcnMpKSk7CiAgICAgICAgICAgICB9OwogCiAjaWYgQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgICAgIGF1dG8gY2hlY2s0
ID0gWyZdIChDaGVja2VkPHVuc2lnbmVkPiBvZmZzZXQsIHVpbnQ2NF90IGNoYXJhY3RlcnMsIHVp
bnQ2NF90IG1hc2ssIE1hdGNoVGFyZ2V0cyYgbWF0Y2hUYXJnZXRzKSB7CisgICAgICAgICAgICBh
dXRvIGNoZWNrNCA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCB1aW50NjRfdCBjaGFy
YWN0ZXJzLCB1aW50NjRfdCBtYXNrKSB7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KG5l
Z2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3Mob2Zmc2V0LCBjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIp
OwogICAgICAgICAgICAgICAgIGlmIChtYXNrKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5v
cjY0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQobWFzayksIGNoYXJhY3Rlcik7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtYXRjaFRhcmdldHMuaGFzU3VjY2VlZFRhcmdldCgpKQotICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0TWF0Y2hUYXJnZXRzLmFwcGVuZEZhaWxlZChtX2ppdC5icmFu
Y2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNoYXJhY3RlciwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW02NChjaGFyYWN0ZXJzIHwgbWFzaykpKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoVGFyZ2V0cy5hcHBlbmRTdWNjZWVkZWQobV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBjaGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tNjQoY2hhcmFjdGVycyB8IG1hc2spKSk7CisgICAgICAgICAgICAgICAgb3Au
bV9qdW1wcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBj
aGFyYWN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoY2hhcmFjdGVycyB8IG1hc2sp
KSk7CiAgICAgICAgICAgICB9OwogI2VuZGlmCiAKICAgICAgICAgICAgIHN3aXRjaCAobnVtYmVy
Q2hhcmFjdGVycykgewogICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIC8vIFVz
ZSAzMmJpdCB3aWR0aCBvZiBhbGxDaGFyYWN0ZXJzIHNpbmNlIFlhcnIgY291bnRzIHN1cnJvZ2F0
ZSBwYWlycyBhcyBvbmUgY2hhcmFjdGVyIHdpdGggdW5pY29kZSBmbGFnLgotICAgICAgICAgICAg
ICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hh
cmFjdGVycyAmIDB4ZmZmZmZmZmYsICptYXRjaFRhcmdldEZvckZpbmFsQ29tcGFyaXNvbik7Cisg
ICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0
aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNr
ZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYs
IGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZiwgKm1hdGNoVGFyZ2V0Rm9yRmluYWxDb21wYXJp
c29uKTsKKyAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRU
ZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAm
IDB4ZmZmZmZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICNpZiBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgICAgICAgICAgY2FzZSAzOgotICAgICAg
ICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwg
YWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZiwg
ZGVmYXVsdE1hdGNoVGFyZ2V0cyk7Ci0gICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tl
ZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYg
MHhmZmZmLCAqbWF0Y2hUYXJnZXRGb3JGaW5hbENvbXBhcmlzb24pOworICAgICAgICAgICAgICAg
IGNoZWNrMihvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFj
dGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAg
ICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0g
MiwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hl
Y2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzLCBpZ25vcmVDYXNl
TWFzaywgKm1hdGNoVGFyZ2V0Rm9yRmluYWxDb21wYXJpc29uKTsKKyAgICAgICAgICAgICAgICBj
aGVjazQob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3Rl
cnMsIGlnbm9yZUNhc2VNYXNrKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQogICAgIHZvaWQgYmFja3RyYWNrUGF0dGVy
bkNoYXJhY3Rlck9uY2Uoc2l6ZV90IG9wSW5kZXgpCiAgICAgewogICAgICAgICBiYWNrdHJhY2tU
ZXJtRGVmYXVsdChvcEluZGV4KTsKQEAgLTI3MzgsNyArMjY2Niw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgIC8vIENvZGUgZ2VuZXJhdGlv
bi9iYWNrdHJhY2tpbmcgZm9yIHNpbXBsZSB0ZXJtcwogICAgIC8vIChwYXR0ZXJuIGNoYXJhY3Rl
cnMsIGNoYXJhY3RlciBjbGFzc2VzLCBhbmQgYXNzZXJ0aW9ucykuCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBmYXJtIG91dCB3b3JrIHRvIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGFib3ZlLgotICAgIHZv
aWQgZ2VuZXJhdGVUZXJtKHNpemVfdCBvcEluZGV4LCBNYXRjaFRhcmdldHMmIG1hdGNoVGFyZ2V0
cykKKyAgICB2b2lkIGdlbmVyYXRlVGVybShzaXplX3Qgb3BJbmRleCkKICAgICB7CiAgICAgICAg
IFlhcnJPcCYgb3AgPSBtX29wc1tvcEluZGV4XTsKICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0g
PSBvcC5tX3Rlcm07CkBAIC0yNzQ4LDcgKzI2NzYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIHN3aXRjaCAodGVybS0+cXVh
bnRpdHlUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50
OgogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ID09IDEpCi0gICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRlUGF0dGVybkNoYXJhY3Rlck9uY2Uob3BJbmRleCwgbWF0
Y2hUYXJnZXRzKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVy
T25jZShvcEluZGV4KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRlUGF0dGVybkNoYXJhY3RlckZpeGVkKG9wSW5kZXgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjg5OCw5ICsyODI2LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgIC8vIEZvcndhcmRzIGdlbmVyYXRlIHRoZSBt
YXRjaGluZyBjb2RlLgogICAgICAgICBBU1NFUlQobV9vcHMuc2l6ZSgpKTsKICAgICAgICAgc2l6
ZV90IG9wSW5kZXggPSAwOwotICAgICAgICBWZWN0b3I8TWF0Y2hUYXJnZXRzLCA4PiB0ZXJtTWF0
Y2hUYXJnZXRzOwotCi0gICAgICAgIHRlcm1NYXRjaFRhcmdldHMuYXBwZW5kKE1hdGNoVGFyZ2V0
cygpKTsKIAogICAgICAgICBkbyB7CiAgICAgICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCkBA
IC0yOTEwLDcgKzI4MzUsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvIHsKICAgICAgICAgICAgIHN3aXRjaCAob3AubV9vcCkgewogCiAgICAgICAgICAg
ICBjYXNlIFlhcnJPcENvZGU6OlRlcm06Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVUZXJtKG9w
SW5kZXgsIHRlcm1NYXRjaFRhcmdldHMubGFzdCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0
ZVRlcm0ob3BJbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIC8v
IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCkBAIC0yOTM4LDggKzI4
NjMsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsK
ICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW46IHsKICAg
ICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gb3AubV9hbHRl
cm5hdGl2ZTsKIAotICAgICAgICAgICAgICAgIHRlcm1NYXRjaFRhcmdldHMuYXBwZW5kKE1hdGNo
VGFyZ2V0cygpKTsKLQogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQg
b2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQog
ICAgICAgICAgICAgICAgIC8vIHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHBy
b2dyZXNzZXMgdGhlIGlucHV0IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBz
LmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
KSk7CkBAIC0zMDU0LDkgKzI5NzcsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHBy
aW9yQWx0ZXJuYXRpdmUgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmU7CiAg
ICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IG9wLm1fYWx0
ZXJuYXRpdmU7CiAKLSAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVFbmQpCi0gICAgICAgICAgICAgICAgICAgIHRlcm1NYXRjaFRhcmdldHMu
dGFrZUxhc3QoKTsKLQogICAgICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGUgcHJp
b3IgYWx0ZXJuYXRpdmUgbWF0Y2hlZCAtIHJldHVybiBzdWNjZXNzLgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgc3RhY2sgcG9pbnRlciB0byByZW1vdmUg
dGhlIHBhdHRlcm4ncyBmcmFtZS4KQEAgLTMxMTEsNyArMzAzMSw2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQv
RW5kCi0gICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVCZWdp
bi9OZXh0L0VuZAogICAgICAgICAgICAgLy8gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVC
ZWdpbi9OZXh0L0VuZAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZXNlIG5vZGVz
IGFyZSB1c2VkIHRvIGhhbmRsZSBzZXRzIG9mIGFsdGVybmF0aXZlcyB0aGF0IGFyZSBuZXN0ZWQg
d2l0aGluCkBAIC0zMTI4LDIzICszMDQ3LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgLy8gJ3JldHVybiBhZGRyZXNzJyB1
c2luZyBhIERhdGFMYWJlbFB0ciwgdXNlZCB0byBzdG9yZSB0aGUgYWRkcmVzcyB0byBqdW1wCiAg
ICAgICAgICAgICAvLyB0byB3aGVuIGJhY2t0cmFja2luZywgdG8gZ2V0IHRvIHRoZSBjb2RlIGZv
ciB0aGUgYXBwcm9wcmlhdGUgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBjYXNlIFlhcnJP
cENvZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAgICAgY2FzZSBZYXJy
T3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVy
blRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBhbHRlcm5hdGl2ZSA9IG9wLm1fYWx0ZXJuYXRpdmU7CiAgICAgICAgICAgICAgICAgUGF0
dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiA9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5n
TGlzdEFsdGVybmF0aXZlQmVnaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgWWFyck9wKiBlbmRP
cCA9ICZtX29wc1tvcC5tX25leHRPcF07Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChlbmRP
cC0+bV9uZXh0T3AgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQg
fHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlTmV4dCB8
fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZW5kT3AgPSAmbV9vcHNbZW5kT3AtPm1fbmV4dE9wXTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1f
b3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgfHwgZW5kT3AtPm1f
b3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29w
ID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKLQotICAgICAgICAgICAgICAg
ICAgICB0ZXJtTWF0Y2hUYXJnZXRzLmxhc3QoKSA9IGFsdGVybmF0aXZlLT5tX2lzTGFzdEFsdGVy
bmF0aXZlID8gTWF0Y2hUYXJnZXRzKE1hdGNoVGFyZ2V0czo6UHJlZmVycmVkVGFyZ2V0OjpNYXRj
aFN1Y2Nlc3NGYWxsVGhyb3VnaCkgOiBNYXRjaFRhcmdldHMoZW5kT3AtPm1fanVtcHMsIG9wLm1f
anVtcHMsIE1hdGNoVGFyZ2V0czo6UHJlZmVycmVkVGFyZ2V0OjpNYXRjaEZhaWxGYWxsVGhyb3Vn
aCk7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGhv
dyBtdWNoIGlucHV0IHdlIG5lZWQgdG8gY2hlY2sgZm9yLCBhbmQgaWYgbm9uLXplcm8gY2hlY2su
CiAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCA9IENoZWNrZWQ8dW5zaWduZWQ+KGFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKICAgICAgICAgICAgICAgICBpZiAoKHRlcm0tPnF1
YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5cGUg
IT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb24pKQpAQCAtMzE1NCwy
MiArMzA2MSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgotICAgICAgICAg
ICAgY2FzZSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0OgogICAgICAgICAg
ICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6IHsKICAgICAgICAgICAg
ICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICBQYXR0
ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKICAgICAgICAg
ICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVz
ZXMuZGlzanVuY3Rpb247CiAKLSAgICAgICAgICAgICAgICBZYXJyT3AqIGVuZE9wID0gJm1fb3Bz
W29wLm1fbmV4dE9wXTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZW5kT3AtPm1fbmV4dE9wICE9
IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZ
YXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0g
WWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlTmV4dCB8fCBlbmRPcC0+bV9vcCA9PSBZ
YXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOwotICAgICAgICAgICAgICAgICAgICBl
bmRPcCA9ICZtX29wc1tlbmRPcC0+bV9uZXh0T3BdOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVk
QWx0ZXJuYXRpdmVFbmQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFs
dGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0
aXZlRW5kKTsKLQotICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IFlhcnJPcENvZGU6OlN0
cmluZ0xpc3RBbHRlcm5hdGl2ZU5leHQpCi0gICAgICAgICAgICAgICAgICAgIHRlcm1NYXRjaFRh
cmdldHMubGFzdCgpID0gYWx0ZXJuYXRpdmUtPm1faXNMYXN0QWx0ZXJuYXRpdmUgPyBNYXRjaFRh
cmdldHMoTWF0Y2hUYXJnZXRzOjpQcmVmZXJyZWRUYXJnZXQ6Ok1hdGNoU3VjY2Vzc0ZhbGxUaHJv
dWdoKSA6IE1hdGNoVGFyZ2V0cyhlbmRPcC0+bV9qdW1wcywgb3AubV9qdW1wcywgTWF0Y2hUYXJn
ZXRzOjpQcmVmZXJyZWRUYXJnZXQ6Ok1hdGNoRmFpbEZhbGxUaHJvdWdoKTsKLQogICAgICAgICAg
ICAgICAgIC8vIEluIHRoZSBub24tc2ltcGxlIGNhc2UsIHN0b3JlIGEgJ3JldHVybiBhZGRyZXNz
JyBzbyB3ZSBjYW4gYmFja3RyYWNrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICBpZiAob3Au
bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpIHsKICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVM
b2NhdGlvbjsKQEAgLTMxODIsMTcgKzMwNzgsMjEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgICAgIG9wLm1femVyb0xl
bmd0aE1hdGNoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBtX3JlZ3Mu
aW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVMb2NhdGlvbiAqIHNpemVvZih2b2lkKikpKTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAob3AubV9vcCAhPSBZYXJyT3BDb2Rl
OjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElm
IHdlIHJlYWNoIGhlcmUgdGhlbiB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBoYXMgbWF0Y2hlZCAtIGp1
bXAgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIC8vIEVuZCBub2RlLCB0byBza2lwIG92ZXIg
YW55IGZ1cnRoZXIgYWx0ZXJuYXRpdmVzLgotICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBsb2dpY2FsbHkgTyhOXjIpICh0aG91Z2gg
TiBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgdmVyeQotICAgICAgICAgICAgICAgICAgICAvLyBzbWFs
bCkuIFdlIGNvdWxkIGF2b2lkIHRoaXMgZWl0aGVyIGJ5IGFkZGluZyBhbiBleHRyYSBqdW1wIHRv
IHRoZSBKSVQKLSAgICAgICAgICAgICAgICAgICAgLy8gZGF0YSBzdHJ1Y3R1cmVzLCBvciBieSBt
YWtpbmcgYmFja3RyYWNraW5nIGNvZGUgdGhhdCBqdW1wcyB0byBOZXh0Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIGFsdGVybmF0aXZlcyBhcmUgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIHRoYXQg
aW5wdXQgaXMgYXZhaWxhYmxlIChpZgotICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkaWRuJ3Qg
bmVlZCB0byBwbGFudCB0aGUgaW5wdXQgY2hlY2tzLCB0aGVuIG1fanVtcHMgd291bGQgYmUgZnJl
ZSkuCi0gICAgICAgICAgICAgICAgICAgIGVuZE9wLT5tX2p1bXBzLmFwcGVuZChtX2ppdC5qdW1w
KCkpOworICAgICAgICAgICAgICAgIC8vIElmIHdlIHJlYWNoIGhlcmUgdGhlbiB0aGUgbGFzdCBh
bHRlcm5hdGl2ZSBoYXMgbWF0Y2hlZCAtIGp1bXAgdG8gdGhlCisgICAgICAgICAgICAgICAgLy8g
RW5kIG5vZGUsIHRvIHNraXAgb3ZlciBhbnkgZnVydGhlciBhbHRlcm5hdGl2ZXMuCisgICAgICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBsb2dpY2FsbHkg
TyhOXjIpICh0aG91Z2ggTiBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgdmVyeQorICAgICAgICAgICAg
ICAgIC8vIHNtYWxsKS4gV2UgY291bGQgYXZvaWQgdGhpcyBlaXRoZXIgYnkgYWRkaW5nIGFuIGV4
dHJhIGp1bXAgdG8gdGhlIEpJVAorICAgICAgICAgICAgICAgIC8vIGRhdGEgc3RydWN0dXJlcywg
b3IgYnkgbWFraW5nIGJhY2t0cmFja2luZyBjb2RlIHRoYXQganVtcHMgdG8gTmV4dAorICAgICAg
ICAgICAgICAgIC8vIGFsdGVybmF0aXZlcyBhcmUgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIHRo
YXQgaW5wdXQgaXMgYXZhaWxhYmxlIChpZgorICAgICAgICAgICAgICAgIC8vIHdlIGRpZG4ndCBu
ZWVkIHRvIHBsYW50IHRoZSBpbnB1dCBjaGVja3MsIHRoZW4gbV9qdW1wcyB3b3VsZCBiZSBmcmVl
KS4KKyAgICAgICAgICAgICAgICBZYXJyT3AqIGVuZE9wID0gJm1fb3BzW29wLm1fbmV4dE9wXTsK
KyAgICAgICAgICAgICAgICB3aGlsZSAoZW5kT3AtPm1fbmV4dE9wICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1w
bGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6TmVz
dGVkQWx0ZXJuYXRpdmVOZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgZW5kT3AgPSAmbV9vcHNb
ZW5kT3AtPm1fbmV4dE9wXTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQVNT
RVJUKGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5k
IHx8IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKKyAg
ICAgICAgICAgICAgICBlbmRPcC0+bV9qdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAg
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgbmV4dCBhbHRl
cm5hdGl2ZS4KICAgICAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBtX2ppdC5sYWJlbCgpOwpA
QCAtMzIwMSwyNSArMzEwMSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0ID0gYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5xdWFudGl0
eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpICYmICh0ZXJtLT50eXBlICE9IFBh
dHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAgICAgICAg
ICAgICAgb3AubV9jaGVja0FkanVzdCAtPSBkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKLSAg
ICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJu
YXRpdmVOZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFlhcnJPcCogcHJldk9wID0gJm1fb3Bz
W29wLm1fcHJldmlvdXNPcF07Ci0KLSAgICAgICAgICAgICAgICAgICAgcHJldk9wLT5tX2p1bXBz
LmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgICAgICAgICAgcHJldk9wLT5tX2p1bXBzLmNsZWFy
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMubGluaygmbV9qaXQpOwotICAgICAg
ICAgICAgICAgICAgICBvcC5tX2p1bXBzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gbGFzdENoZWNrQWRqdXN0ID0gcHJldk9wLT5tX2NoZWNrQWRqdXN0OwotICAgICAgICAgICAg
ICAgICAgICBpZiAobGFzdENoZWNrQWRqdXN0ID4gb3AubV9jaGVja0FkanVzdCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsYXN0Q2hl
Y2tBZGp1c3QgLSBvcC5tX2NoZWNrQWRqdXN0KSwgbV9yZWdzLmluZGV4KTsKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAob3AubV9jaGVja0FkanVzdCA+IGxhc3RDaGVja0FkanVzdCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihv
cC5tX2NoZWNrQWRqdXN0IC0gbGFzdENoZWNrQWRqdXN0KSwgbV9yZWdzLmluZGV4KTsKLSAgICAg
ICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLm1fY2hlY2tBZGp1c3QpCisgICAgICAg
ICAgICAgICAgaWYgKG9wLm1fY2hlY2tBZGp1c3QpCiAgICAgICAgICAgICAgICAgICAgIG9wLm1f
anVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQob3AubV9jaGVja0FkanVzdCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZDoKLSAgICAgICAgICAgIGNhc2Ug
WWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlRW5kOgogICAgICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUVuZDogewogICAgICAgICAgICAgICAgIFBhdHRl
cm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCkBAIC0zMjQ5LDkgKzMxMzUsNiBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIC8v
IHF1YW50aXR5IGNvdW50IG9mIDEgKHRoaXMgY292ZXJzIGZpeGVkIG9uY2UsIGFuZCA/Lz8/IHF1
YW50aWZpZXJzKS4gCiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3Vi
cGF0dGVybk9uY2VCZWdpbjogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0g
b3AubV90ZXJtOwotCi0gICAgICAgICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy5hcHBlbmQoTWF0
Y2hUYXJnZXRzKCkpOwotCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFt
ZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAgICAgICAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBpbmRleFRlbXBvcmFyeSA9IG1fcmVncy5yZWdUMDsK
ICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKQEAg
LTMzMDIsOCArMzE4NSw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8gewogICAgICAgICAgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGluZGV4VGVtcG9yYXJ5ID0gbV9yZWdzLnJlZ1QwOwogICAgICAgICAgICAgICAgIEFTU0VS
VCh0ZXJtLT5xdWFudGl0eU1heENvdW50ID09IDEpOwogCi0gICAgICAgICAgICAgICAgdGVybU1h
dGNoVGFyZ2V0cy50YWtlTGFzdCgpOwotCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5lc3Rl
ZCBhbHRlcm5hdGl2ZSBtYXRjaGVkIHdpdGhvdXQgY29uc3VtaW5nIGFueSBjaGFyYWN0ZXJzLCBw
dW50IHRoaXMgYmFjayB0byB0aGUgaW50ZXJwcmV0ZXIuCiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzg2PiBBZGQg
YWJpbGl0eSBmb3IgdGhlIFlBUlIgSklUIHRvIHByb3Blcmx5CiAgICAgICAgICAgICAgICAgLy8g
aGFuZGxlIG5lc3RlZCBleHByZXNzaW9ucyB0aGF0IGNhbiBtYXRjaCB3aXRob3V0IGNvbnN1bWlu
ZyBjaGFyYWN0ZXJzCkBAIC0zMzQ1LDEzICszMjI2LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luL0VuZAogICAgICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOiB7CiAgICAgICAg
ICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CisgICAgICAgICAgICAgICAg
QVNTRVJUKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5KTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSBxdWFudGlmeUlu
ZmluaXRlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXRlcm0tPmNhcHR1cmUoKSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3Jl
ZWR5KQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9
PSBxdWFudGlmeUluZmluaXRlKTsKLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlU
eXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KQotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKLQotICAgICAgICAgICAgICAgIHRl
cm1NYXRjaFRhcmdldHMuYXBwZW5kKE1hdGNoVGFyZ2V0cygpKTsKIAogICAgICAgICAgICAgICAg
IC8vIFVwb24gZW50cnkgc2V0IGEgbGFiZWwgdG8gbG9vcCBiYWNrIHRvLgogICAgICAgICAgICAg
ICAgIG9wLm1fcmVlbnRyeSA9IG1faml0LmxhYmVsKCk7CkBAIC0zMzY1LDggKzMyNDIsNiBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAg
ICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwogICAgICAg
ICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCi0gICAgICAgICAgICAg
ICAgdGVybU1hdGNoVGFyZ2V0cy50YWtlTGFzdCgpOwotCiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlIG5lc3RlZCBhbHRlcm5hdGl2ZSBtYXRjaGVkIHdpdGhvdXQgY29uc3VtaW5nIGFueSBjaGFy
YWN0ZXJzLCBwdW50IHRoaXMgYmFjayB0byB0aGUgaW50ZXJwcmV0ZXIuCiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
Nzg2PiBBZGQgYWJpbGl0eSBmb3IgdGhlIFlBUlIgSklUIHRvIHByb3Blcmx5CiAgICAgICAgICAg
ICAgICAgLy8gaGFuZGxlIG5lc3RlZCBleHByZXNzaW9ucyB0aGF0IGNhbiBtYXRjaCB3aXRob3V0
IGNvbnN1bWluZyBjaGFyYWN0ZXJzCkBAIC0zMzg3LDggKzMyNjIsNiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyBUaGVzZSBub2RlcyBzdXBwb3J0IGdlbmVyaWMgc3VicGF0dGVybnMuCiAgICAg
ICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOiB7Ci0g
ICAgICAgICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy5hcHBlbmQoTWF0Y2hUYXJnZXRzKCkpOwot
CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgICAg
ICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKQEAg
LTM0NTEsOCArMzMyNCw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8gewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ6IHsKLSAgICAg
ICAgICAgICAgICB0ZXJtTWF0Y2hUYXJnZXRzLnRha2VMYXN0KCk7Ci0KICNpZiBFTkFCTEUoWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVy
bSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJlbnRoZXNl
c0ZyYW1lTG9jYXRpb24gPSB0ZXJtLT5mcmFtZUxvY2F0aW9uOwpAQCAtMzUxNyw4ICszMzg4LDYg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAg
ICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjogewog
ICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCi0gICAgICAg
ICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy5hcHBlbmQoTWF0Y2hUYXJnZXRzKCkpOwotCiAgICAg
ICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgaW5kZXggLSBhc3NlcnRpb25zIHNob3Vs
ZCBub3QgdXBkYXRlIGluZGV4LCBzbwogICAgICAgICAgICAgICAgIC8vIHdlIHdpbGwgbmVlZCB0
byByZXN0b3JlIGl0IHVwb24gYSBzdWNjZXNzZnVsIG1hdGNoLgogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CkBA
IC0zNTMxLDggKzM0MDAsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvIHsKICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFz
c2VydGlvbkVuZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90
ZXJtOwogCi0gICAgICAgICAgICAgICAgdGVybU1hdGNoVGFyZ2V0cy50YWtlTGFzdCgpOwotCiAg
ICAgICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5wdXQgaW5kZXggdmFsdWUuCiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVM
b2NhdGlvbjsKICAgICAgICAgICAgICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVM
b2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOjpiZWdpbkluZGV4
KCksIG1fcmVncy5pbmRleCk7CkBAIC0zNTU5LDggKzM0MjYsNiBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAgICAgICAgICAgKytvcEluZGV4
OwogICAgICAgICB9IHdoaWxlIChvcEluZGV4IDwgbV9vcHMuc2l6ZSgpKTsKLQotICAgICAgICB0
ZXJtTWF0Y2hUYXJnZXRzLnRha2VMYXN0KCk7CiAgICAgfQogCiAgICAgdm9pZCBiYWNrdHJhY2so
KQpAQCAtMzgyOSw3ICszNjk0LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFlhcnJPcENv
ZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4vTmV4dC9FbmQKLSAgICAgICAgICAgIC8v
IFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCiAgICAgICAg
ICAgICAvLyBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCiAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgLy8gR2VuZXJhdGUgY29kZSBmb3Igd2hlbiB3ZSBiYWNr
dHJhY2sgYmFjayBvdXQgb2YgYW4gYWx0ZXJuYXRpdmUgaW50bwpAQCAtMzg0MiwxNSArMzcwNiwx
MyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgICAgIC8vIGFsdGVybmF0aXZlLgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpT
aW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6Ci0gICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0OgogICAgICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6IHsKICAgICAgICAgICAgICAgICBZYXJyT3AmIG5leHRP
cCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKICAgICAgICAgICAgICAgICBib29sIGlzQmVnaW4gPSBv
cC5tX3ByZXZpb3VzT3AgPT0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYm9vbCBpc0xhc3RB
bHRlcm5hdGl2ZSA9IG5leHRPcC5tX25leHRPcCA9PSBub3RGb3VuZDsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoaXNCZWdpbiA9PSAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRB
bHRlcm5hdGl2ZUJlZ2luIHx8IG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVy
bmF0aXZlQmVnaW4gfHwgb3AubV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJl
Z2luKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlzTGFzdEFsdGVybmF0aXZlID09IChuZXh0
T3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCB8fCBuZXh0
T3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVFbmQgfHwgbmV4dE9w
Lm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQpKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoaXNCZWdpbiA9PSAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0
ZWRBbHRlcm5hdGl2ZUJlZ2luIHx8IG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJu
YXRpdmVCZWdpbikpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc0xhc3RBbHRlcm5hdGl2ZSA9
PSAobmV4dE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQg
fHwgbmV4dE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQpKTsKIAog
ICAgICAgICAgICAgICAgIC8vIFRyZWF0IGFuIGlucHV0IGNoZWNrIGZhaWx1cmUgdGhlIHNhbWUg
YXMgYSBmYWlsZWQgbWF0Y2guCiAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5h
cHBlbmQob3AubV9qdW1wcyk7CkBAIC0zODc2LDIwICszNzM4LDE4IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgIC8vIGJh
Y2t0cmFja2luZyB0byBoZXJlLCBjb3JyZWN0LCBhbmQgdGhlbiBqdW1wIG9uLiBJZiBub3Qgd2Ug
Y2FuCiAgICAgICAgICAgICAgICAgLy8gbGluayB0aGUgYmFja3RyYWNrcyBkaXJlY3RseSB0byB0
aGVpciBkZXN0aW5hdGlvbi4KICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0FkanVzdCkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fYmFja3RyYWNraW5nU3RhdGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2VzIHdoZXJlIHdl
IG5lZWQgdG8gbGluayB0aGUgYmFja3RyYWNrcyBoZXJlLgotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja0FkanVzdCks
IG1fcmVncy5pbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTGFzdEFsdGVy
bmF0aXZlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUg
dGhhdCBpcyBub3QgdGhlIGxhc3Qgc2hvdWxkIGp1bXAgdG8gaXRzIHN1Y2Nlc3Nvci4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5qdW1wKG5leHRPcC5tX3JlZW50cnkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNCZWdpbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBsYXN0IG9mIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmVz
IG11c3QganVtcCBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dE9wLm1fanVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgc2lu
Z2xlIGFsdGVybmF0aXZlIG9uIGl0cyBvd24gY2FuIGZhbGwgdGhyb3VnaC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmZhbGx0aHJvdWdoKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUg
Y2FzZXMgd2hlcmUgd2UgbmVlZCB0byBsaW5rIHRoZSBiYWNrdHJhY2tzIGhlcmUuCisgICAgICAg
ICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja0Fk
anVzdCksIG1fcmVncy5pbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNMYXN0QWx0
ZXJuYXRpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHRo
YXQgaXMgbm90IHRoZSBsYXN0IHNob3VsZCBqdW1wIHRvIGl0cyBzdWNjZXNzb3IuCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5qdW1wKG5leHRPcC5tX3JlZW50cnkpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0JlZ2luKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgbGFzdCBvZiBtb3JlIHRoYW4gb25lIGFsdGVybmF0aXZlcyBtdXN0IGp1bXAgYmFj
ayB0byB0aGUgYmVnaW5uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE9wLm1fanVt
cHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHNpbmdsZSBhbHRlcm5hdGl2ZSBvbiBpdHMgb3du
IGNhbiBmYWxsIHRocm91Z2guCisgICAgICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2lu
Z1N0YXRlLmZhbGx0aHJvdWdoKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2VzIHdo
ZXJlIHdlIGNhbiBsaW5rIHRoZSBiYWNrdHJhY2tzIGRpcmVjdGx5IHRvIHRoZWlyIGRlc3RpbmF0
aW9ucy4KQEAgLTM5MjEsMTYgKzM3ODEsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgaWYgKGlzQmVnaW4pIHsKICAg
ICAgICAgICAgICAgICAgICAgWWFyck9wKiBlbmRPcCA9ICZtX29wc1tvcC5tX25leHRPcF07CiAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlIChlbmRPcC0+bV9uZXh0T3AgIT0gbm90Rm91bmQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2Rl
OjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29k
ZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlTmV4dCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2Rl
OjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCB8
fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZW5kT3AgPSAmbV9vcHNbZW5kT3AtPm1fbmV4dE9wXTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1f
b3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgfHwgZW5kT3AtPm1f
b3AgPT0gWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29w
ID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlRW5kIHx8IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5k
KTsKICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQoZW5kT3At
Pm1fanVtcHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVFbmQ6Ci0gICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRl
cm5hdGl2ZUVuZDoKICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRp
dmVFbmQ6IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsK
IApAQCAtNDI4MCwxMyArNDEzOSw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgcGFyZW50aGVzZXNCZWdpbk9wQ29kZSA9IFlh
cnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjsKICAgICAgICAgICAgIHBh
cmVudGhlc2VzRW5kT3BDb2RlID0gWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25j
ZUVuZDsKIAotICAgICAgICAgICAgaWYgKHRlcm0tPnBhcmVudGhlc2VzLmlzU3RyaW5nTGlzdCkg
ewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gYW5jaG9yZWQgbm9uLWNhcHR1cmluZyBz
dHJpbmcgbGlzdCBwYXJlbnRoZXNpcyB0aGF0IGNhbid0IGJhY2t0cmFjaywgd2UgdXNlIHRoZSAn
c3RyaW5nIGxpc3QnIG5vZGVzLgotICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlQmVnaW5PcENv
ZGUgPSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJuYXRpdmVCZWdpbjsKLSAgICAgICAgICAg
ICAgICBhbHRlcm5hdGl2ZU5leHRPcENvZGUgPSBZYXJyT3BDb2RlOjpTdHJpbmdMaXN0QWx0ZXJu
YXRpdmVOZXh0OwotICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRW5kT3BDb2RlID0gWWFyck9w
Q29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlRW5kOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0
ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpICE9IDEp
IHsKLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHRoZXJlIGlzIG1vcmUg
dGhhbiBvbmUgYWx0ZXJuYXRpdmUuIElmIHNvLCB3ZSBjYW5ub3QgdXNlIHRoZSAnc2ltcGxlJyBu
b2Rlcy4KKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRp
dmUgd2UgY2Fubm90IHVzZSB0aGUgJ3NpbXBsZScgbm9kZXMuCisgICAgICAgICAgICBpZiAodGVy
bS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKSAhPSAxKSB7
CiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVCZWdpbk9wQ29kZSA9IFlhcnJPcENvZGU6Ok5l
c3RlZEFsdGVybmF0aXZlQmVnaW47CiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVOZXh0T3BD
b2RlID0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVOZXh0OwogICAgICAgICAgICAgICAg
IGFsdGVybmF0aXZlRW5kT3BDb2RlID0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQ7
CkBAIC01MTgxLDggKzUwMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9kaXNhc3NlbWJsZXIpIHsKLSAgICAgICAgICAgIC8vIERpc2Fzc2VtYmxlIGFmdGVyIGFsbCBs
aW5rIHRhc2tzIGFyZSBjb21wbGV0ZS4KLSAgICAgICAgICAgIG1faml0LmFkZExpbmtUYXNrKFs9
LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgbV9qaXQuYWRk
TGF0ZUxpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAg
ICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5kdW1wKGxpbmtCdWZmZXIpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KQEAgLTU0MzEsMTAgKzUyODQsNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBvdXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIG1pbmltdW0tc2l6ZToo
JXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNp
emUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAxOwog
Ci0gICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U3RyaW5nTGlzdEFsdGVybmF0aXZlQmVnaW46Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCJTdHJpbmdMaXN0QWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVt
LXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gMTsKLQogICAgICAgICBjYXNlIFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlQmVnaW46
CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIG1pbmltdW0t
c2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVy
biAxOwpAQCAtNTQ0MywxMCArNTI5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG91dC5wcmlu
dGYoIlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2Vk
LW9mZnNldDooJXUpXG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2No
ZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBj
YXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RBbHRlcm5hdGl2ZU5leHQ6Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCJTdHJpbmdMaXN0QWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZTooJXUpLGNo
ZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9w
Lm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotCiAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgogICAgICAgICAgICAg
b3V0LnByaW50ZigiTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZTooJXUpLGNoZWNr
ZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1f
Y2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNTQ1Nywx
MiArNTMwMiw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAg
ICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlN0cmluZ0xpc3RB
bHRlcm5hdGl2ZUVuZDoKLSAgICAgICAgICAgIG91dC5wcmludGYoIlN0cmluZ0xpc3RBbHRlcm5h
dGl2ZUVuZCBjaGVja2VkLW9mZnNldDooJXUpICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgp
KTsKLSAgICAgICAgICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7Ci0gICAgICAgICAgICBv
dXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0KICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUVuZDoKICAgICAgICAgICAgIG91dC5wcmludGYo
Ik5lc3RlZEFsdGVybmF0aXZlRW5kIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2Vk
T2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBlNGFmN2Iw
YzFkODMuLjVhOGE3MTA5MDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcApAQCAtMTQxNyw5ICsxNDE3LDggQEAgcHVibGljOgogCiAgICAgICAgIFBhdHRl
cm5UZXJtJiBsYXN0VGVybSA9IG1fYWx0ZXJuYXRpdmUtPmxhc3RUZXJtKCk7CiAKLSAgICAgICAg
dW5zaWduZWQgbnVtQk9MQW5jaG9yZWRBbHRzID0gMDsKICAgICAgICAgdW5zaWduZWQgbnVtUGFy
ZW5BbHRlcm5hdGl2ZXMgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5z
aXplKCk7Ci0gICAgICAgIEFTU0VSVChudW1QYXJlbkFsdGVybmF0aXZlcyk7CisgICAgICAgIHVu
c2lnbmVkIG51bUJPTEFuY2hvcmVkQWx0cyA9IDA7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVBhcmVuQWx0ZXJuYXRpdmVzOyBpKyspIHsKICAgICAgICAgICAgIC8vIEJ1
YmJsZSB1cCBCT0wgZmxhZ3MKQEAgLTE0MjcsOCArMTQyNiw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBudW1CT0xBbmNob3JlZEFsdHMrKzsKICAgICAgICAgfQogCi0gICAgICAgIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLmxhc3QoKS0+bV9pc0xhc3RBbHRlcm5h
dGl2ZSA9IHRydWU7Ci0KICAgICAgICAgaWYgKG51bUJPTEFuY2hvcmVkQWx0cykgewogICAgICAg
ICAgICAgbV9hbHRlcm5hdGl2ZS0+bV9jb250YWluc0JPTCA9IHRydWU7CiAgICAgICAgICAgICAv
LyBJZiBhbGwgdGhlIGFsdGVybmF0aXZlcyBpbiBwYXJlbnMgc3RhcnQgd2l0aCBCT0wsIHRoZW4g
c28gZG9lcyB0aGlzIG9uZQpAQCAtMTg2MCwxMiArMTg1Nyw2IEBAIHB1YmxpYzoKICAgICAvLyAg
ICAgYWx0ZXJuYXRpdmVzIG9mIHRoZSBtYWluIGJvZHkgZGlzanVuY3Rpb24pLgogICAgIC8vICAg
KiB3aGVyZSB0aGUgcGFyZW5zIGFyZSBub24tY2FwdHVyaW5nLCBhbmQgcXVhbnRpZmllZCB1bmJv
dW5kZWQgZ3JlZWR5ICgqKS4KICAgICAvLyAgICogd2hlcmUgdGhlIHBhcmVucyBkbyBub3QgY29u
dGFpbiBhbnkgY2FwdHVyaW5nIHN1YnBhdHRlcm5zLgotICAgIC8vICAgKiBXaGVyZSB0aGUgcGFy
ZW5zIGNvbnRhaW5zIGEgQk9MIGFuY2hvcmVkIG5vbi1jYXB0dXJlZCBzdWJwYXR0ZXJuIHdpdGgg
YSBzaW5nbGUKLSAgICAvLyAgICAgYWx0ZXJuYXRpdmUgb2YgZml4ZWQgc3RyaW5ncywgZS5nLiAv
Xig/OmZvb3xiYXJ8YmF6KS4KLSAgICAvLyAgICAgSW4gc3VjaCBhIGNhc2Ugd2UgY2FuIHNpbXBs
aWZ5IG1hdGNoaW5nIGEgbGl0dGxlIG1vcmUgYnkgc3RvcHBpbmcgYXQgdGhlIGZpcnN0Ci0gICAg
Ly8gICAgIG1hdGNoZWQgc3RyaW5nIGFsdGVybmF0aXZlLCB3aXRob3V0IGp1bXBpbmcgdG8gYmFj
a3RyYWNraW5nIGRvZSB0byBmaXh1cCBvZmZlc3RzLgotICAgIC8vICAgICBJbnN0ZWFkIHdlIGZp
eHVwIHRoZSBvZmZzZXRzLCBpZiBuZWVkZWQsIGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgYWx0ZXJu
YXRpdmUncwotICAgIC8vICAgICBtYXRjaGluZyBKSVQgY29kZS4KICAgICB2b2lkIGNoZWNrRm9y
VGVybWluYWxQYXJlbnRoZXNlcygpCiAgICAgewogICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIG11
Y2ggdG9vIGNydWRlOyBzaG91bGQgYmUganVzdCBjaGVja2luZyB3aGV0aGVyIHRoZSBjYW5kaWRh
dGUKQEAgLTE4NzQsNDkgKzE4NjUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+PiYgYWx0
ZXJuYXRpdmVzID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7Ci0gICAgICAgIGFs
dGVybmF0aXZlcy5sYXN0KCktPm1faXNMYXN0QWx0ZXJuYXRpdmUgPSB0cnVlOwotCi0gICAgICAg
IGlmIChhbHRlcm5hdGl2ZXMuc2l6ZSgpID09IDEgJiYgYWx0ZXJuYXRpdmVzWzBdLT5tX3N0YXJ0
c1dpdGhCT0wpIHsKLSAgICAgICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1zID0gYWx0
ZXJuYXRpdmVzWzBdLT5tX3Rlcm1zOwotCi0gICAgICAgICAgICBib29sIGlzU3RyaW5nTGlzdCA9
IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAodGVybXMuc2l6ZSgpID49IDIKLSAgICAgICAgICAg
ICAgICAmJiB0ZXJtc1swXS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0wK
LSAgICAgICAgICAgICAgICAmJiB0ZXJtc1sxXS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlOjpQ
YXJlbnRoZXNlc1N1YnBhdHRlcm4KLSAgICAgICAgICAgICAgICAmJiB0ZXJtc1sxXS5xdWFudGl0
eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQKLSAgICAgICAgICAgICAgICAmJiB0
ZXJtc1sxXS5xdWFudGl0eU1heENvdW50ID09IDEKLSAgICAgICAgICAgICAgICAmJiAodGVybXMu
c2l6ZSgpID09IDIKLSAgICAgICAgICAgICAgICAgICAgfHwgKHRlcm1zLnNpemUoKSA9PSAzICYm
IHRlcm1zWzJdLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTCkpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2Ugc3RhcnQgYXNzdW1pbmcgdGhpcyBpcyBhIHN0cmluZyBsaXN0
IGFuZCB0aGVuIHByb3ZlIHRoZSBuZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICBpc1N0cmluZ0xp
c3QgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSB0ZXJtc1sx
XTsKLQotICAgICAgICAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rp
b24gPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uOwotICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYWx0ID0gMDsgaXNTdHJpbmdMaXN0ICYmIGFsdCA8IG5lc3RlZERpc2p1bmN0aW9u
LT5tX2FsdGVybmF0aXZlcy5zaXplKCk7ICsrYWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxQYXR0ZXJuVGVybT4mIGlubmVyVGVybXMgPSBuZXN0ZWREaXNqdW5jdGlvbi0+bV9hbHRl
cm5hdGl2ZXNbYWx0XS0+bV90ZXJtczsKLQotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCB0ZXJtSW5kZXggPSAwOyB0ZXJtSW5kZXggPCBpbm5lclRlcm1zLnNpemUoKTsgKyt0ZXJtSW5k
ZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiBpbm5lclRlcm0gPSBp
bm5lclRlcm1zW3Rlcm1JbmRleF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJU
ZXJtLnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8fCB0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlw
ZTo6Rml4ZWRDb3VudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRlcm0ucXVhbnRp
dHlNYXhDb3VudCAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdHJpbmdM
aXN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICB0ZXJtLnBhcmVudGhlc2VzLmlzU3RyaW5nTGlzdCA9IGlz
U3RyaW5nTGlzdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGlzU3RyaW5nTGlz
dCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1
dG8mIGFsdGVybmF0aXZlIDogYWx0ZXJuYXRpdmVzKSB7Ci0gICAgICAgICAgICBhdXRvJiB0ZXJt
cyA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFsdGVybmF0aXZlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVmVjdG9yPFBhdHRlcm5U
ZXJtPiYgdGVybXMgPSBhbHRlcm5hdGl2ZXNbaV0tPm1fdGVybXM7CiAgICAgICAgICAgICBpZiAo
dGVybXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSB0ZXJt
cy5sYXN0KCk7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6
VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuCkBAIC0yNDkwLDggKzI0NDAsNiBAQCB2b2lkIFBh
dHRlcm5BbHRlcm5hdGl2ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhp
c1BhdHRlcm4sIHVuc2lnbgogICAgICAgICBvdXQucHJpbnQoIixzdGFydHMgd2l0aCBeIik7CiAg
ICAgaWYgKG1fY29udGFpbnNCT0wpCiAgICAgICAgIG91dC5wcmludCgiLGNvbnRhaW5zIF4iKTsK
LSAgICBpZiAobV9pc0xhc3RBbHRlcm5hdGl2ZSkKLSAgICAgICAgb3V0LnByaW50KCIsIGxhc3Qg
YWx0ZXJuYXRpdmUiKTsKICAgICBvdXQucHJpbnQoIlxuIik7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdGVybXMuc2l6ZSgpOyArK2kpCkBAIC0yNjE1LDkgKzI1NjMsNiBAQCB2b2lk
IFBhdHRlcm5UZXJtOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIFlhcnJQYXR0ZXJuKiB0aGlzUGF0
dGVybiwgdW5zaWduZWQgbmVzdAogICAgICAgICBpZiAocGFyZW50aGVzZXMuaXNUZXJtaW5hbCkK
ICAgICAgICAgICAgIG91dC5wcmludCgiLHRlcm1pbmFsIik7CiAKLSAgICAgICAgaWYgKHBhcmVu
dGhlc2VzLmlzU3RyaW5nTGlzdCkKLSAgICAgICAgICAgIG91dC5wcmludCgiLHN0cmluZy1saXN0
Iik7Ci0KICAgICAgICAgb3V0LnByaW50bG4oIixmcmFtZSBsb2NhdGlvbiAiLCBmcmFtZUxvY2F0
aW9uKTsKIAogICAgICAgICBpZiAocGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRp
dmVzLnNpemUoKSA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
CmluZGV4IDFiYTAyYjYyMThmZi4uODA4MGZlNzg0MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTIzNCw3ICsyMzQsNiBAQCBzdHJ1Y3QgUGF0dGVyblRl
cm0gewogICAgICAgICAgICAgdW5zaWduZWQgbGFzdFN1YnBhdHRlcm5JZDsKICAgICAgICAgICAg
IGJvb2wgaXNDb3B5IDogMTsKICAgICAgICAgICAgIGJvb2wgaXNUZXJtaW5hbCA6IDE7Ci0gICAg
ICAgICAgICBib29sIGlzU3RyaW5nTGlzdCA6IDE7CiAgICAgICAgIH0gcGFyZW50aGVzZXM7CiAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBib29sIGJvbEFuY2hvciA6IDE7CkBAIC0yNzks
NyArMjc4LDYgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICAgICAgcGFyZW50aGVzZXMuc3Vi
cGF0dGVybklkID0gc3VicGF0dGVybklkOwogICAgICAgICBwYXJlbnRoZXNlcy5pc0NvcHkgPSBm
YWxzZTsKICAgICAgICAgcGFyZW50aGVzZXMuaXNUZXJtaW5hbCA9IGZhbHNlOwotICAgICAgICBw
YXJlbnRoZXNlcy5pc1N0cmluZ0xpc3QgPSBmYWxzZTsKICAgICAgICAgcXVhbnRpdHlUeXBlID0g
UXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAgIHF1YW50aXR5TWluQ291bnQgPSBx
dWFudGl0eU1heENvdW50ID0gMTsKICAgICB9CkBAIC00MjgsNyArNDI2LDYgQEAgcHVibGljOgog
ICAgICAgICAsIG1faGFzRml4ZWRTaXplKGZhbHNlKQogICAgICAgICAsIG1fc3RhcnRzV2l0aEJP
TChmYWxzZSkKICAgICAgICAgLCBtX2NvbnRhaW5zQk9MKGZhbHNlKQotICAgICAgICAsIG1faXNM
YXN0QWx0ZXJuYXRpdmUoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNDk0LDcgKzQ5MSw2IEBA
IHB1YmxpYzoKICAgICBib29sIG1faGFzRml4ZWRTaXplIDogMTsKICAgICBib29sIG1fc3RhcnRz
V2l0aEJPTCA6IDE7CiAgICAgYm9vbCBtX2NvbnRhaW5zQk9MIDogMTsKLSAgICBib29sIG1faXNM
YXN0QWx0ZXJuYXRpdmUgOiAxOwogfTsKIAogc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9yZWdleHAta2V5d29yZC1wYXJzaW5n
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcmVnZXhwLWtleXdvcmQtcGFyc2luZy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExNzc5MDcyNzkxLi4wMDAwMDAwMDAwMDAK
LS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcmVnZXhwLWtleXdvcmQtcGFyc2luZy5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0vLyBXaXRoIHZlcmJvc2Ugc2V0IHRvIGZh
bHNlLCB0aGlzIHRlc3QgaXMgc3VjY2Vzc2Z1bCBpZiB0aGVyZSBpcyBubyBvdXRwdXQuICBTZXQg
dmVyYm9zZSB0byB0cnVlIHRvIHNlZSBleHBlY3RlZCBtYXRjaGVzLgotbGV0IHZlcmJvc2UgPSBm
YWxzZTsKLQotZnVuY3Rpb24gYXJyYXlUb1N0cmluZyhhcnIpCi17Ci0gICAgbGV0IHN0ciA9ICcn
OwotICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uKHYsIGluZGV4KSB7Ci0gICAgICAgIGlmICh0eXBl
b2YgdiA9PSAic3RyaW5nIikKLSAgICAgICAgICAgIHN0ciArPSAiXCIiICsgdiArICJcIiI7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ciArPSB2OwotCi0gICAgICAgIGlmIChpbmRleCAh
PSAoYXJyLmxlbmd0aCAtIDEpKQotICAgICAgICAgICAgc3RyICs9ICcsJzsKLSAgICAgIH0pOwot
ICByZXR1cm4gc3RyOwotfQotCi1mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvYmopCi17Ci0gICAg
bGV0IHN0ciA9ICIiOwotCi0gICAgZmlyc3RFbnRyeSA9IHRydWU7Ci0KLSAgICBmb3IgKGNvbnN0
IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7Ci0gICAgICAgIGlmICghZmly
c3RFbnRyeSkKLSAgICAgICAgICAgIHN0ciArPSAiLCAiOwotCi0gICAgICAgIHN0ciArPSBrZXkg
KyAiOiAiICsgZHVtcFZhbHVlKHZhbHVlKTsKLQotICAgICAgICBmaXJzdEVudHJ5ID0gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuICJ7ICIgKyBzdHIgKyAiIH0iOwotfQotCi1mdW5jdGlvbiBk
dW1wVmFsdWUodikKLXsKLSAgICBpZiAodiA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJuICI8bnVs
bD4iOwotCi0gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgcmV0dXJuICI8dW5kZWZp
bmVkPiI7Ci0KLSAgICBpZiAodHlwZW9mIHYgPT0gInN0cmluZyIpCi0gICAgICAgIHJldHVybiAi
XCIiICsgdiArICJcIiI7Ci0KLSAgICBsZXQgc3RyID0gIiI7Ci0KLSAgICBpZiAodi5sZW5ndGgp
Ci0gICAgICAgIHN0ciArPSBhcnJheVRvU3RyaW5nKHYpOwotCi0gICAgaWYgKHYuZ3JvdXBzKSB7
Ci0gICAgICAgIGdyb3VwU3RyID0gb2JqZWN0VG9TdHJpbmcodi5ncm91cHMpOwotCi0gICAgICAg
IGlmIChzdHIubGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAoIGdyb3VwU3RyLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgICBzdHIgKz0gIiwgIiArIGdyb3VwU3RyOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHN0ciA9IGdyb3VwU3RyOwotICAgIH0KLQotICAgIHJldHVybiAiWyAiICsgc3Ry
ICsgIiBdIjsKLX0KLQotZnVuY3Rpb24gY29tcGFyZUFycmF5KGV4cGVjdGVkLCBhY3R1YWwpCi17
Ci0gICAgaWYgKGV4cGVjdGVkID09PSBudWxsICYmIGFjdHVhbCA9PT0gbnVsbCkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwpIHsKLSAgICAgICAgcHJp
bnQoIiMjIyBleHBlY3RlZCBpcyBudWxsLCBhY3R1YWwgaXMgbm90IG51bGwiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhY3R1YWwgPT09IG51bGwpIHsKLSAgICAg
ICAgcHJpbnQoIiMjIyBleHBlY3RlZCBpcyBub3QgbnVsbCwgYWN0dWFsIGlzIG51bGwiKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChleHBlY3RlZC5sZW5ndGggIT09
IGFjdHVhbC5sZW5ndGgpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZC5sZW5ndGg6ICIg
KyBleHBlY3RlZC5sZW5ndGggKyAiLCBhY3R1YWwubGVuZ3RoOiAiICsgYWN0dWFsLmxlbmd0aCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChleHBlY3RlZFtpXSAhPT0gYWN0
dWFsW2ldKSB7Ci0gICAgICAgICAgICBwcmludCgiIyMjIGV4cGVjdGVkWyIgKyBpICsgIl06IFwi
IiArIGV4cGVjdGVkW2ldICsgIlwiICE9PSBhY3R1YWxbIiArIGkgKyAiXTogXCIiICsgYWN0dWFs
W2ldICsgIlwiIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gY29tcGFyZUdyb3VwcyhleHBlY3Rl
ZCwgYWN0dWFsKQotewotICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCAmJiBhY3R1YWwgPT09IG51
bGwpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGV4cGVjdGVkID09PSBudWxsKSB7
Ci0gICAgICAgIHByaW50KCIjIyMgZXhwZWN0ZWQgZ3JvdXAgaXMgbnVsbCwgYWN0dWFsIGdyb3Vw
IGlzIG5vdCBudWxsIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
YWN0dWFsID09PSBudWxsKSB7Ci0gICAgICAgIHByaW50KCIjIyMgZXhwZWN0ZWQgZ3JvdXAgaXMg
bm90IG51bGwsIGFjdHVhbCBncm91cCBpcyBudWxsIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGtleSBpbiBleHBlY3RlZCkgewotICAgICAgICBpZiAo
ZXhwZWN0ZWRba2V5XSAhPT0gYWN0dWFsW2tleV0pIHsKLSAgICAgICAgICAgIHByaW50KCIjIyMg
ZXhwZWN0ZWQuIiArIGtleSArICI6ICIgKyBkdW1wVmFsdWUoZXhwZWN0ZWRba2V5XSkgKyAiICE9
PSBhY3R1YWwuIiArIGtleSArICI6ICIgKyBkdW1wVmFsdWUoYWN0dWFsW2tleV0pKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1sZXQgdGVzdE51bWJlciA9IDA7Ci0KLWZ1bmN0aW9uIHRlc3RSZWdFeHAocmUsIHN0
ciwgZXhwLCBncm91cHMpCi17Ci0gICAgdGVzdE51bWJlcisrOwotCi0gICAgaWYgKGdyb3VwcykK
LSAgICAgICAgZXhwLmdyb3VwcyA9IGdyb3VwczsKLQotICAgIGxldCBhY3R1YWwgPSByZS5leGVj
KHN0cik7Ci0KLSAgICBsZXQgcmVzdWx0ID0gY29tcGFyZUFycmF5KGV4cCwgYWN0dWFsKTs7Ci0K
LSAgICBpZiAoZXhwICYmIGV4cC5ncm91cHMpIHsKLSAgICAgICAgaWYgKCFjb21wYXJlR3JvdXBz
KGV4cC5ncm91cHMsIGFjdHVhbC5ncm91cHMpKQotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAg
ICAgICAgIHByaW50KHJlLnRvU3RyaW5nKCkgKyAiLmV4ZWMoIiArIGR1bXBWYWx1ZShzdHIpICsg
IiksIHBhc3NlZCAiLCBkdW1wVmFsdWUoZXhwKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHByaW50
KHJlLnRvU3RyaW5nKCkgKyAiLmV4ZWMoIiArIGR1bXBWYWx1ZShzdHIpICsgIiksIEZBSUxFRCB0
ZXN0ICMiICsgdGVzdE51bWJlciArICIsIEV4cGVjdGVkICIsIGR1bXBWYWx1ZShleHApLCAiIGdv
dCAiLCBkdW1wVmFsdWUoYWN0dWFsKSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZWdFeHBTeW50YXhF
cnJvcihyZVN0cmluZywgZmxhZ3MsIGV4cEVycm9yKQotewotICAgIHRlc3ROdW1iZXIrKzsKLQot
Ci0gICAgdHJ5IHsKLSAgICAgICAgbGV0IHJlID0gbmV3IFJlZ0V4cChyZVN0cmluZywgZmxhZ3Mp
OwotICAgICAgICBwcmludCgiRkFJTEVEIHRlc3QgIyIgKyB0ZXN0TnVtYmVyICsgIiwgRXhwZWN0
ZWQgLyIgKyByZVN0cmluZyArICIvIiArIGZsYWdzICsgIiB0byB0aHJvdyBcIiIgKyBleHBFcnJv
ciArICJcIiwgYnV0IGl0IGRpZG4ndCIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYg
KGUgIT0gZXhwRXJyb3IpCi0gICAgICAgICAgICBwcmludCgiRkFJTEVEIHRlc3QgIyIgKyB0ZXN0
TnVtYmVyICsgIiwgRXhwZWN0ZWQgLyIgKyByZVN0cmluZyArICIvIiArIGZsYWdzICsgIiB0byB0
aHJvdyBcIiIgKyBleHBFcnJvciArICJcIiBnb3QgXCIiICsgZSArICJcIiIpOwotICAgICAgICBl
bHNlIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgcHJpbnQoIi8iICsgcmVTdHJpbmcgKyAiLyIg
KyBmbGFncyArICIgcGFzc2VkLCBpdCB0aHJldyBcIiIgKyBleHBFcnJvciArICJcIiBhcyBleHBl
Y3RlZCIpOwotICAgIH0KLX0KLQotbGV0IHJlID0gL14oPzpicmVha3xjYXNlfGNhdGNofGNvbnRp
bnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxyZXR1
cm58c3dpdGNofHRocm93fHRyeXx2YXJ8d2hpbGV8d2l0aHxudWxsfHRydWV8ZmFsc2V8aW5zdGFu
Y2VvZnx0eXBlb2Z8dm9pZHxkZWxldGV8bmV3fGlufHRoaXMpLzsKLQotZm9yIChpID0gMDsgaSA8
IDEwMDAwMDA7IGkrKykgewotICAgIHRlc3RSZWdFeHAocmUsICJmdW5jdGlvbiIsIFsiZnVuY3Rp
b24iXSk7Ci0gICAgdGVzdFJlZ0V4cChyZSwgInJldHVybiIsIFsicmV0dXJuIl0pOwotICAgIHRl
c3RSZWdFeHAocmUsICJsZXQiLCBudWxsKTsKLX0KLQotbGV0IHJlMSA9IC9eKD86YnJlYWt8Y2Fz
ZXxjYXRjaHxjb250aW51ZXxkZWJ1Z2dlcnxkZWZhdWx0fGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVu
Y3Rpb258aWZ8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dmFyfHdoaWxlfHdpdGh8bnVsbHx0cnVl
fGZhbHNlfGluc3RhbmNlb2Z8dHlwZW9mfHZvaWR8ZGVsZXRlfG5ld3xpbnx0aGlzKSQvOwotCi1m
b3IgKGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7Ci0gICAgdGVzdFJlZ0V4cChyZTEsICJ0aHJv
dyIsIFsidGhyb3ciXSk7Ci0gICAgdGVzdFJlZ0V4cChyZTEsICJ3aGlsZSIsIFsid2hpbGUiXSk7
Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtcGFyc2luZy10b2tlbnMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtcGFyc2luZy10b2tlbnMuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM5OWU4MzhlYjRkYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMv
c3RyZXNzL3JlZ2V4cC1wYXJzaW5nLXRva2Vucy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE5OSAr
MCwwIEBACi0vLyBXaXRoIHZlcmJvc2Ugc2V0IHRvIGZhbHNlLCB0aGlzIHRlc3QgaXMgc3VjY2Vz
c2Z1bCBpZiB0aGVyZSBpcyBubyBvdXRwdXQuICBTZXQgdmVyYm9zZSB0byB0cnVlIHRvIHNlZSBl
eHBlY3RlZCBtYXRjaGVzLgotbGV0IHZlcmJvc2UgPSBmYWxzZTsKLQotZnVuY3Rpb24gYXJyYXlU
b1N0cmluZyhhcnIpCi17Ci0gICAgbGV0IHN0ciA9ICcnOwotICAgIGFyci5mb3JFYWNoKGZ1bmN0
aW9uKHYsIGluZGV4KSB7Ci0gICAgICAgIGlmICh0eXBlb2YgdiA9PSAic3RyaW5nIikKLSAgICAg
ICAgICAgIHN0ciArPSAiXCIiICsgdiArICJcIiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHN0ciArPSB2OwotCi0gICAgICAgIGlmIChpbmRleCAhPSAoYXJyLmxlbmd0aCAtIDEpKQotICAg
ICAgICAgICAgc3RyICs9ICcsJzsKLSAgICAgIH0pOwotICByZXR1cm4gc3RyOwotfQotCi1mdW5j
dGlvbiBvYmplY3RUb1N0cmluZyhvYmopCi17Ci0gICAgbGV0IHN0ciA9ICIiOwotCi0gICAgZmly
c3RFbnRyeSA9IHRydWU7Ci0KLSAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3Qu
ZW50cmllcyhvYmopKSB7Ci0gICAgICAgIGlmICghZmlyc3RFbnRyeSkKLSAgICAgICAgICAgIHN0
ciArPSAiLCAiOwotCi0gICAgICAgIHN0ciArPSBrZXkgKyAiOiAiICsgZHVtcFZhbHVlKHZhbHVl
KTsKLQotICAgICAgICBmaXJzdEVudHJ5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuICJ7
ICIgKyBzdHIgKyAiIH0iOwotfQotCi1mdW5jdGlvbiBkdW1wVmFsdWUodikKLXsKLSAgICBpZiAo
diA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJuICI8bnVsbD4iOwotCi0gICAgaWYgKHYgPT09IHVu
ZGVmaW5lZCkKLSAgICAgICAgcmV0dXJuICI8dW5kZWZpbmVkPiI7Ci0KLSAgICBpZiAodHlwZW9m
IHYgPT0gInN0cmluZyIpCi0gICAgICAgIHJldHVybiAiXCIiICsgdiArICJcIiI7Ci0KLSAgICBs
ZXQgc3RyID0gIiI7Ci0KLSAgICBpZiAodi5sZW5ndGgpCi0gICAgICAgIHN0ciArPSBhcnJheVRv
U3RyaW5nKHYpOwotCi0gICAgaWYgKHYuZ3JvdXBzKSB7Ci0gICAgICAgIGdyb3VwU3RyID0gb2Jq
ZWN0VG9TdHJpbmcodi5ncm91cHMpOwotCi0gICAgICAgIGlmIChzdHIubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBpZiAoIGdyb3VwU3RyLmxlbmd0aCkKLSAgICAgICAgICAgICAgICBzdHIgKz0gIiwg
IiArIGdyb3VwU3RyOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0ciA9IGdyb3VwU3Ry
OwotICAgIH0KLQotICAgIHJldHVybiAiWyAiICsgc3RyICsgIiBdIjsKLX0KLQotZnVuY3Rpb24g
Y29tcGFyZUFycmF5KGV4cGVjdGVkLCBhY3R1YWwpCi17Ci0gICAgaWYgKGV4cGVjdGVkID09PSBu
dWxsICYmIGFjdHVhbCA9PT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
ZXhwZWN0ZWQgPT09IG51bGwpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZCBpcyBudWxs
LCBhY3R1YWwgaXMgbm90IG51bGwiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGlmIChhY3R1YWwgPT09IG51bGwpIHsKLSAgICAgICAgcHJpbnQoIiMjIyBleHBlY3RlZCBp
cyBub3QgbnVsbCwgYWN0dWFsIGlzIG51bGwiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGlmIChleHBlY3RlZC5sZW5ndGggIT09IGFjdHVhbC5sZW5ndGgpIHsKLSAgICAg
ICAgcHJpbnQoIiMjIyBleHBlY3RlZC5sZW5ndGg6ICIgKyBleHBlY3RlZC5sZW5ndGggKyAiLCBh
Y3R1YWwubGVuZ3RoOiAiICsgYWN0dWFsLmxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgIGlmIChleHBlY3RlZFtpXSAhPT0gYWN0dWFsW2ldKSB7Ci0gICAgICAgICAgICBw
cmludCgiIyMjIGV4cGVjdGVkWyIgKyBpICsgIl06IFwiIiArIGV4cGVjdGVkW2ldICsgIlwiICE9
PSBhY3R1YWxbIiArIGkgKyAiXTogXCIiICsgYWN0dWFsW2ldICsgIlwiIik7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotZnVuY3Rpb24gY29tcGFyZUdyb3VwcyhleHBlY3RlZCwgYWN0dWFsKQotewotICAgIGlmIChl
eHBlY3RlZCA9PT0gbnVsbCAmJiBhY3R1YWwgPT09IG51bGwpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgaWYgKGV4cGVjdGVkID09PSBudWxsKSB7Ci0gICAgICAgIHByaW50KCIjIyMgZXhw
ZWN0ZWQgZ3JvdXAgaXMgbnVsbCwgYWN0dWFsIGdyb3VwIGlzIG5vdCBudWxsIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYWN0dWFsID09PSBudWxsKSB7Ci0gICAg
ICAgIHByaW50KCIjIyMgZXhwZWN0ZWQgZ3JvdXAgaXMgbm90IG51bGwsIGFjdHVhbCBncm91cCBp
cyBudWxsIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0
IGtleSBpbiBleHBlY3RlZCkgewotICAgICAgICBpZiAoZXhwZWN0ZWRba2V5XSAhPT0gYWN0dWFs
W2tleV0pIHsKLSAgICAgICAgICAgIHByaW50KCIjIyMgZXhwZWN0ZWQuIiArIGtleSArICI6ICIg
KyBkdW1wVmFsdWUoZXhwZWN0ZWRba2V5XSkgKyAiICE9PSBhY3R1YWwuIiArIGtleSArICI6ICIg
KyBkdW1wVmFsdWUoYWN0dWFsW2tleV0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1sZXQgdGVzdE51bWJlciA9
IDA7Ci0KLWZ1bmN0aW9uIHRlc3RSZWdFeHAocmUsIHN0ciwgZXhwLCBncm91cHMpCi17Ci0gICAg
dGVzdE51bWJlcisrOwotCi0gICAgaWYgKGdyb3VwcykKLSAgICAgICAgZXhwLmdyb3VwcyA9IGdy
b3VwczsKLQotICAgIGxldCBhY3R1YWwgPSByZS5leGVjKHN0cik7Ci0KLSAgICBsZXQgcmVzdWx0
ID0gY29tcGFyZUFycmF5KGV4cCwgYWN0dWFsKTs7Ci0KLSAgICBpZiAoZXhwICYmIGV4cC5ncm91
cHMpIHsKLSAgICAgICAgaWYgKCFjb21wYXJlR3JvdXBzKGV4cC5ncm91cHMsIGFjdHVhbC5ncm91
cHMpKQotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHJlc3Vs
dCkgewotICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIHByaW50KHJlLnRvU3RyaW5n
KCkgKyAiLmV4ZWMoIiArIGR1bXBWYWx1ZShzdHIpICsgIiksIHBhc3NlZCAiLCBkdW1wVmFsdWUo
ZXhwKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHByaW50KHJlLnRvU3RyaW5nKCkgKyAiLmV4ZWMo
IiArIGR1bXBWYWx1ZShzdHIpICsgIiksIEZBSUxFRCB0ZXN0ICMiICsgdGVzdE51bWJlciArICIs
IEV4cGVjdGVkICIsIGR1bXBWYWx1ZShleHApLCAiIGdvdCAiLCBkdW1wVmFsdWUoYWN0dWFsKSk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZWdFeHBTeW50YXhFcnJvcihyZVN0cmluZywgZmxhZ3MsIGV4
cEVycm9yKQotewotICAgIHRlc3ROdW1iZXIrKzsKLQotCi0gICAgdHJ5IHsKLSAgICAgICAgbGV0
IHJlID0gbmV3IFJlZ0V4cChyZVN0cmluZywgZmxhZ3MpOwotICAgICAgICBwcmludCgiRkFJTEVE
IHRlc3QgIyIgKyB0ZXN0TnVtYmVyICsgIiwgRXhwZWN0ZWQgLyIgKyByZVN0cmluZyArICIvIiAr
IGZsYWdzICsgIiB0byB0aHJvdyBcIiIgKyBleHBFcnJvciArICJcIiwgYnV0IGl0IGRpZG4ndCIp
OwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUgIT0gZXhwRXJyb3IpCi0gICAgICAg
ICAgICBwcmludCgiRkFJTEVEIHRlc3QgIyIgKyB0ZXN0TnVtYmVyICsgIiwgRXhwZWN0ZWQgLyIg
KyByZVN0cmluZyArICIvIiArIGZsYWdzICsgIiB0byB0aHJvdyBcIiIgKyBleHBFcnJvciArICJc
IiBnb3QgXCIiICsgZSArICJcIiIpOwotICAgICAgICBlbHNlIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgcHJpbnQoIi8iICsgcmVTdHJpbmcgKyAiLyIgKyBmbGFncyArICIgcGFzc2VkLCBpdCB0
aHJldyBcIiIgKyBleHBFcnJvciArICJcIiBhcyBleHBlY3RlZCIpOwotICAgIH0KLX0KLQotLy8g
VGVzdCAxCi1sZXQgcmUxID0gL14oPzpicmVha3xjYXNlfHdoaWNofGRvfGZvcikvaTsKLQotdGVz
dFJlZ0V4cChyZTEsICJjYXNlIiwgWyJjYXNlIl0pOwotdGVzdFJlZ0V4cChyZTEsICJGT1IiLCBb
IkZPUiJdKTsKLXRlc3RSZWdFeHAocmUxLCAidGhyb3ciLCBudWxsKTsKLQotLy8g0JvQldCS0KvQ
mSB8INCf0KDQkNCS0KvQmSB8IGxlZnQgfCByaWdodCAgbm90ZTog0JvQldCS0KvQmSBpcyBSdXNz
aWFuIGZvciBsZWZ0IGFuZCDQn9Cg0JDQktCr0JkgaXMgUnVzc2lhbiBmb3IgcmlnaHQKLWxldCBy
ZTIgPSAvXig/Olx1ezA0MWJ9XHV7MDQxNX1cdXswNDEyfVx1ezA0MmJ9XHV7MDQxOX18XHV7MDQx
Zn1cdXswNDIwfVx1ezA0MTB9XHV7MDQxMn1cdXswNDJifVx1ezA0MTl9fGxlZnR8cmlnaHQpJC91
OwotCi10ZXN0UmVnRXhwKHJlMiwgIlx1ezA0MWZ9XHV7MDQyMH1cdXswNDEwfVx1ezA0MTJ9XHV7
MDQyYn1cdXswNDE5fSIsIFsiXHV7MDQxZn1cdXswNDIwfVx1ezA0MTB9XHV7MDQxMn1cdXswNDJi
fVx1ezA0MTl9Il0pOwotdGVzdFJlZ0V4cChyZTIsICJcdXswNDFifVx1ezA0MTV9XHV7MDQxMn1c
dXswNDJifSAiLCBudWxsKTsKLXRlc3RSZWdFeHAocmUyLCAibGVmdCIsIFsibGVmdCJdKTsKLXRl
c3RSZWdFeHAocmUyLCAiY2VudGVyIiwgbnVsbCk7Ci0KLWxldCByZTMgPSAvXig/OnNvbWV0aGlu
Z3xldmVyeXRoaW5nfGFueXRoaW5nKSQvOwotdGVzdFJlZ0V4cChyZTMsICJzb21ldGhpbmciLCBb
InNvbWV0aGluZyJdKTsKLXRlc3RSZWdFeHAocmUzLCAiYW55dGhpbmciLCBbImFueXRoaW5nIl0p
OwotdGVzdFJlZ0V4cChyZTMsICJldmVyeXRoaW5nIiwgWyJldmVyeXRoaW5nIl0pOwotdGVzdFJl
Z0V4cChyZTMsICJhbnl0aGluZyBidXQiLCBudWxsKTsKLQotbGV0IHJlNCA9IC9eKD86YnJlYWt8
Y2FzZXxjYXRjaHxjb250aW51ZXxkZWJ1Z2dlcnxkZWZhdWx0fGRvfGVsc2V8ZmluYWxseXxmb3J8
ZnVuY3Rpb258aWZ8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dmFyfHdoaWxlfHdpdGh8bnVsbHx0
cnVlfGZhbHNlfGluc3RhbmNlb2Z8dHlwZW9mfHZvaWR8ZGVsZXRlfG5ld3xpbnx0aGlzKS87Ci0K
LXRlc3RSZWdFeHAocmU0LCAiYnJlYWsiLCBbImJyZWFrIl0pOwotdGVzdFJlZ0V4cChyZTQsICJj
YXRjaCIsIFsiY2F0Y2giXSk7Ci10ZXN0UmVnRXhwKHJlNCwgInRocm93IiwgWyJ0aHJvdyJdKTsK
LXRlc3RSZWdFeHAocmU0LCAiIHRocm93IiwgbnVsbCk7Ci10ZXN0UmVnRXhwKHJlNCwgInJldHVy
biIsIFsicmV0dXJuIl0pOwotdGVzdFJlZ0V4cChyZTQsICJ1bnRpbCIsIG51bGwpOwotCi1sZXQg
cmU1ID0gL14oPzpicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZG98
ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxyZXR1cm58c3dpdGNofHRocm93fHRyeXx2YXJ8
d2hpbGV8d2l0aHxudWxsfHRydWV8ZmFsc2V8aW5zdGFuY2VvZnx0eXBlb2Z8dm9pZHxkZWxldGV8
bmV3fGlufHRoaXMpJC87Ci0KLXRlc3RSZWdFeHAocmU1LCAidGhyb3ciLCBbInRocm93Il0pOwot
dGVzdFJlZ0V4cChyZTUsICIgdGhyb3ciLCBudWxsKTsKLXRlc3RSZWdFeHAocmU1LCAiZnVuY3Rp
b24iLCBbImZ1bmN0aW9uIl0pOwotdGVzdFJlZ0V4cChyZTUsICJyZXR1cm4iLCBbInJldHVybiJd
KTsKLXRlc3RSZWdFeHAocmU1LCAibGV0IiwgbnVsbCk7Ci10ZXN0UmVnRXhwKHJlNSwgInVudGls
IiwgbnVsbCk7Cg==
</data>
<flag name="commit-queue"
          id="498516"
          type_id="3"
          status="?"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>