<?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>148296</bug_id>
          
          <creation_ts>2015-08-21 04:57:22 -0700</creation_ts>
          <short_desc>[Streams API] pipe-to writable stream tests</short_desc>
          <delta_ts>2015-09-14 01:47:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148305</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119713</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-08-21 04:57:22 -0700</bug_when>
    <thetext>[Streams API] pipe-to writable stream tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119714</commentid>
    <comment_count>1</comment_count>
      <attachid>259601</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-08-21 04:59:02 -0700</bug_when>
    <thetext>Created attachment 259601
Patch

Added the pipe-to tests about writable streams.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124889</commentid>
    <comment_count>2</comment_count>
      <attachid>260924</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-09-10 06:57:14 -0700</bug_when>
    <thetext>Created attachment 260924
Patch

Increased some timeouts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125575</commentid>
    <comment_count>3</comment_count>
      <attachid>260924</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-14 01:47:52 -0700</bug_when>
    <thetext>Comment on attachment 260924
Patch

Clearing flags on attachment: 260924

Committed r189696: &lt;http://trac.webkit.org/changeset/189696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125576</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-14 01:47:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259601</attachid>
            <date>2015-08-21 04:59:02 -0700</date>
            <delta_ts>2015-09-10 06:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148296-20150821135856.patch</filename>
            <type>text/plain</type>
            <size>43353</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjkyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODVmZTJmZmY0ZmJiNmEwMGUxMzMy
OTgxODExYzE2NDg0NzFhOGRlMS4uZWJjMDYzNzViZjU2NTA0YmYxMmQ0OWI4MWFhMmNmOGEwMjNi
NjZmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA4LTIxICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBw
aXBlLXRvIHdyaXRhYmxlIHN0cmVhbSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mjk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9w
aXBlLXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcGlwZS10by5odG1sOiBBZGRlZC4KKwogMjAxNS0wOC0yMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVHJlYXQgRXBvY2gg
YXMgaW52YWxpZCB2YWx1ZSBmb3IgIkxhc3QtTW9kaWZpZWQiIGhlYWRlcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcGlwZS10by1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9w
aXBlLXRvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDg5YmM1ZWU4NDE0NTk0NzllYmY3NzUw
YzFkNmM5OGQ0MWNlNDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcGlwZS10by1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
NiBAQAorCitGQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3Rz
IG9mIGRhdGEgYXJlIHJlYWRhYmxlIHN5bmNocm9ub3VzbHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBpbiByZWFk
YWJsZSBzdGF0ZSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIGNsb3Npbmcgc3RhdGUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0
cmVhbSBpbiByZWFkYWJsZSBzdGF0ZSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIGVycm9yZWQgc3Rh
dGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20g
YSBSZWFkYWJsZVN0cmVhbSBpbiB0aGUgcmVhZGFibGUgc3RhdGUgd2hpY2ggYmVjb21lcyBjbG9z
ZWQgYWZ0ZXIgcGlwZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUg
c3RhdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZy
b20gYSBSZWFkYWJsZVN0cmVhbSBpbiB0aGUgcmVhZGFibGUgc3RhdGUgd2hpY2ggYmVjb21lcyBl
cnJvcmVkIGFmdGVyIHBpcGVUbyBjYWxsIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRh
YmxlIHN0YXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGlu
ZyBmcm9tIGFuIGVtcHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgbm9uLWVtcHR5IGFm
dGVyIHBpcGVUbyBjYWxsIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGFu
IGVtcHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBlVG8g
Y2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFk
YWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZSB3aGlj
aCBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgYSBwaXBlVG8gY2FsbCBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0
cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3YWl0aW5nIHN0YXRlIHdoaWNoIGJlY29t
ZXMgd3JpdGFibGUgYWZ0ZXIgYSBwaXBlVG8gY2FsbCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSB0
byBhIFdyaXRhYmxlU3RyZWFtIGluIHdhaXRpbmcgc3RhdGUgd2hpY2ggYmVjb21lcyBlcnJvcmVk
IGFmdGVyIGEgcGlwZVRvIGNhbGwgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21l
cyBlcnJvcmVkIGFmdGVyIHBpcGVUbyBjYWxsIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdh
aXRpbmcgc3RhdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlw
aW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVhbSBp
biB0aGUgd2FpdGluZyBzdGF0ZSB3aGVyZSBib3RoIGJlY29tZSByZWFkeSBhZnRlciBhIHBpcGVU
byBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBh
biBlbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3YWl0aW5n
IHN0YXRlIHdoaWNoIGJlY29tZXMgd3JpdGFibGUgYWZ0ZXIgYSBwaXBlVG8gY2FsbCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0eSBS
ZWFkYWJsZVN0cmVhbSB3aGljaCBiZWNvbWVzIGNsb3NlZCBhZnRlciBhIHBpcGVUbyBjYWxsIHRv
IGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdhaXRpbmcgc3RhdGUgd2hvc2Ugd3JpdGVzIG5ldmVy
IGNvbXBsZXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGlu
ZyBmcm9tIGFuIGVtcHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgZXJyb3JlZCBhZnRl
ciBhIHBpcGVUbyBjYWxsIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdhaXRpbmcgc3RhdGUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIHRvIGEgZHVj
ay10eXBlZCBhc3luY2hyb25vdXMgIndyaXRhYmxlIHN0cmVhbSIgd29ya3MgcGlwZVRvIGlzIG5v
dCBpbXBsZW1lbnRlZAorRkFJTCBQaXBpbmcgdG8gYSBzdHJlYW0gdGhhdCBoYXMgYmVlbiBhYm9y
dGVkIHBhc3NlcyB0aHJvdWdoIHRoZSBlcnJvciBhcyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdG8gYSBzdHJl
YW0gYW5kIHRoZW4gYWJvcnRpbmcgaXQgcGFzc2VzIHRocm91Z2ggdGhlIGVycm9yIGFzIHRoZSBj
YW5jZWxsYXRpb24gcmVhc29uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIFBpcGluZyB0byBhIHN0cmVhbSB0aGF0IGhhcyBiZWVuIGNsb3NlZCBwcm9wYWdhdGVzIGEg
VHlwZUVycm9yIGNhbmNlbGxhdGlvbiByZWFzb24gYmFja3dhcmQgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIHRvIGEgc3RyZWFtIGFuZCB0aGVuIGNsb3Np
bmcgaXQgcHJvcGFnYXRlcyBhIFR5cGVFcnJvciBjYW5jZWxsYXRpb24gcmVhc29uIGJhY2t3YXJk
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyB0byBhIHN0
cmVhbSB0aGF0IGVycm9ycyBvbiB3cml0ZSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBlcnJvciBh
cyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBQaXBpbmcgdG8gYSBzdHJlYW0gdGhhdCBlcnJvcnMgb24gd3JpdGUgc2hvdWxk
IG5vdCBwYXNzIHRocm91Z2ggdGhlIGVycm9yIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBjbG9z
ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIHRvIGEg
c3RyZWFtIHRoYXQgZXJyb3JzIHNvb24gYWZ0ZXIgd3JpdGluZyBzaG91bGQgcGFzcyB0aHJvdWdo
IHRoZSBlcnJvciBhcyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdG8gYSB3cml0YWJsZSBzdHJlYW0gdGhhdCBk
b2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVzc3Vy
ZSBvbiB0aGUgc291cmNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Bp
cGUtdG8uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3BpcGUtdG8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDNmODViMzMwOTg1MWMzNWIzZTk1Njg4N2E3YzMx
MjdmMDBlMGJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcGlwZS10by5odG1sCkBAIC0wLDAgKzEsMTA1NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48
L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdQaXBpbmcgZnJvbSBh
IFJlYWRhYmxlU3RyZWFtIGZyb20gd2hpY2ggbG90cyBvZiBkYXRhIGFyZSByZWFkYWJsZSBzeW5j
aHJvbm91c2x5Jyk7Cit0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBldmVudHMgPSAw
OworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgICAgICAgICAgICAgIGMuZW5xdWV1ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGMuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHdzID0gbmV3IFdyaXRh
YmxlU3RyZWFtKHt9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAx
MDAwIH0pKTsKKworICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3cml0YWJsZScsICd3cml0
YWJsZSBzdHJlYW0gc3RhdGUgc2hvdWxkIHN0YXJ0IG91dCB3cml0YWJsZScpOworCisgICAgdmFy
IHBpcGVGaW5pc2hlZCA9IGZhbHNlOworICAgIHJzLnBpcGVUbyh3cykudGhlbigKKyAgICAgICAg
dGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcGlwZUZpbmlzaGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrZXZlbnRz
LCAyKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3Rh
dGUsICdjbG9zZWQnLCAnd3JpdGFibGUgc3RyZWFtIHN0YXRlIHNob3VsZCBiZSBjbG9zZWQgYWZ0
ZXIgcGlwZSBmaW5pc2hlcycpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK2V2ZW50cywg
MSk7CisgICAgICAgIH0pCisgICAgKS5jYXRjaCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
eyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7CisKKyAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUocGlwZUZpbmlzaGVkLCAncGlw
ZSBzaG91bGQgaGF2ZSBmaW5pc2hlZCBiZWZvcmUgYSBzZXRUaW1lb3V0KCwwKSBzaW5jZSBpdCBz
aG91bGQgb25seSBiZSBtaWNyb3Rhc2tzJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoKytldmVu
dHMsIDMpOworICAgICAgICB0ZXN0MS5kb25lKCk7CisgICAgfSksIDApOworfSk7CisKK3ZhciB0
ZXN0MiA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gaW4gcmVhZGFi
bGUgc3RhdGUgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiBjbG9zaW5nIHN0YXRlJyk7Cit0ZXN0Mi5z
dGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBldmVudHMgPSAwOworICAgIHZhciBjYW5jZWxSZWFz
b247CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICAgICAgfSwK
KyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihyZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgcmVhc29uOyB9LCAndW5k
ZXJseWluZyBzb3VyY2UgY2FuY2VsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHdpdGggYSBUeXBl
RXJyb3InKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytldmVudHMsIDEpOworICAgICAg
ICAgICAgY2FuY2VsUmVhc29uID0gcmVhc29uOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2
YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIHdyaXRlIGNhbGwnKTsK
KyAgICAgICAgfSwKKyAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBhYm9ydCBjYWxsJyk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHdzLmNsb3NlKCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ2Nsb3Np
bmcnLCAnd3JpdGFibGUgc3RyZWFtIHNob3VsZCBiZSBjbG9zaW5nIGltbWVkaWF0ZWx5IGFmdGVy
IGNsb3NpbmcgaXQnKTsKKworICAgIHJzLnBpcGVUbyh3cykudGhlbigKKyAgICAgICAgdGVzdDIu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdwcm9taXNlIHJldHVybmVk
IGJ5IHBpcGVUbyBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgICAgIHRlc3QyLnN0ZXBf
ZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHIsIGNhbmNlbFJl
YXNvbiwgJ3RoZSBwaXBlVG8gcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJy
b3IgYXMgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCB3YXMgY2FsbGVkIHdpdGgnKTsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytldmVudHMsIDIpOworICAgICAgICAgICAgcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytldmVudHMsIDMpOworICAgICAgICAgICAgICAgIHRl
c3QyLmRvbmUoKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfSkKKyAgICApLmNhdGNoKHRl
c3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30p
OworCit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFt
IGluIHJlYWRhYmxlIHN0YXRlIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gZXJyb3JlZCBzdGF0ZScp
OwordGVzdDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2
YXIgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHBhc3NlZEVycm9yID0gbmV3IEVycm9y
KCdob3JyaWJsZSB0aGluZ3MnKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdIZWxs
bycpOworICAgICAgICB9LAorICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICsrcHVsbENvdW50OworICAgICAgICB9LAorICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNv
bikgeworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGNhbmNlbENhbGxlZCwgJ2NhbmNlbCBtdXN0
IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UnKTsKKyAgICAgICAgICAgIGNhbmNlbENhbGxl
ZCA9IHRydWU7CisKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRFcnJv
cik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cml0ZUNhbGxlZCA9IGZhbHNlOwor
ICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgICAgICB9LAorICAgICAgICB3cml0ZTogZnVu
Y3Rpb24oY2h1bmspIHsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSh3cml0ZUNhbGxlZCwgJ3dy
aXRlIG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZScpOworICAgICAgICAgICAgd3Jp
dGVDYWxsZWQgPSB0cnVlOworCisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLCAnSGVs
bG8nKTsKKworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHBhc3NlZEVycm9yKTsK
KyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7CisgICAgICAgIH0sCisgICAg
ICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1Vu
ZXhwZWN0ZWQgYWJvcnQgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdGFydFBy
b21pc2UudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHdzLndyaXRl
KCdIZWxsbycpOworICAgICAgICBhc3NlcnRfdHJ1ZSh3cml0ZUNhbGxlZCwgJ3dyaXRlIG11c3Qg
YmUgY2FsbGVkJyk7CisKKyAgICAgICAgd3MucmVhZHkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnZXJyb3JlZCcs
ICdhcyBhIHJlc3VsdCBvZiByZWplY3RlZCBwcm9taXNlLCB3cyBtdXN0IGJlIGluIGVycm9yZWQg
c3RhdGUnKTsKKworICAgICAgICAgICAgcnMucGlwZVRvKHdzKS5jYXRjaCh0ZXN0My5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgcGFzc2Vk
RXJyb3IsICdwaXBlVG8gcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3In
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQsICdjYW5jZWwgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICAgICAgICAgICAgICB0ZXN0My5kb25lKCk7Cisg
ICAgICAgICAgICB9KSk7CisgICAgICAgIH0pKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3Q0
ID0gYXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBpbiB0aGUgcmVhZGFi
bGUgc3RhdGUgd2hpY2ggYmVjb21lcyBjbG9zZWQgYWZ0ZXIgcGlwZVRvIGNhbGwgdG8gYSBXcml0
YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUnKTsKK3Rlc3Q0LnN0ZXAoZnVuY3Rpb24o
KSB7CisgICAgdmFyIGNsb3NlUmVhZGFibGVTdHJlYW07CisgICAgdmFyIHB1bGxDb3VudCA9IDA7
CisgICAgdmFyIGV2ZW50cyA9IDA7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnSGVs
bG8nKTsKKyAgICAgICAgICAgIGNsb3NlUmVhZGFibGVTdHJlYW0gPSBjLmNsb3NlLmJpbmQoYyk7
CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgKytw
dWxsQ291bnQ7CisgICAgICAgIH0sCisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNhbmNlbCBjYWxsJyk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cml0ZUNhbGxlZCA9IGZhbHNlOworICAgIHZhciBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1
cm4gc3RhcnRQcm9taXNlOworICAgICAgICB9LAorICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1
bmspIHsKKyAgICAgICAgICAgIGlmICghd3JpdGVDYWxsZWQpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGNodW5rLCAnSGVsbG8nLCAnY2h1bmsgd3JpdHRlbiB0byB3cml0YWJsZSBz
dHJlYW0gc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQgaW50byB0aGUgcmVhZGFibGUgc3RyZWFt
Jyk7CisgICAgICAgICAgICAgICAgd3JpdGVDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoKytldmVudHMsIDIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGV4dHJhIHdyaXRlIGNhbGwn
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICd1bmRlcmx5aW5nIHNv
dXJjZSBwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoKytldmVudHMsIDMpOworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0
IGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVz
dDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBycy5waXBlVG8od3MpLnRoZW4odGVz
dDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5z
dGF0ZSwgJ2Nsb3NlZCcsICd3cml0YWJsZSBzdHJlYW0gc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBw
aXBlVG8gY29tcGxldGVzJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrZXZlbnRzLCA0
KTsKKyAgICAgICAgICAgIHRlc3Q0LmRvbmUoKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIGFz
c2VydF9lcXVhbHMod3Muc3RhdGUsICd3cml0YWJsZScsICd3cml0YWJsZSBzdHJlYW0gc2hvdWxk
IHN0aWxsIGJlIHdyaXRhYmxlIGltbWVkaWF0ZWx5IGFmdGVyIHBpcGVUbycpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKCsrZXZlbnRzLCAxKTsKKworICAgICAgICBjbG9zZVJlYWRhYmxlU3RyZWFt
KCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBmcm9t
IGEgUmVhZGFibGVTdHJlYW0gaW4gdGhlIHJlYWRhYmxlIHN0YXRlIHdoaWNoIGJlY29tZXMgZXJy
b3JlZCBhZnRlciBwaXBlVG8gY2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJs
ZSBzdGF0ZScpOwordGVzdDUuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgZXJyb3JSZWFkYWJs
ZVN0cmVhbTsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2YXIgZXZlbnRzID0gMDsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdIZWxsbycpOworICAgICAgICAgICAgZXJyb3JS
ZWFkYWJsZVN0cmVhbSA9IGMuZXJyb3IuYmluZChjKTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVs
bDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3VudDsKKyAgICAgICAgfSwKKyAg
ICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFy
IHBhc3NlZEVycm9yID0gbmV3IEVycm9yKCdob3JyaWJsZSB0aGluZ3MnKTsKKyAgICB2YXIgc3Rh
cnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJu
IHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5r
KSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGV4dHJhIHdyaXRl
IGNhbGwnKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7CisgICAgICAg
IH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbihyZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVhc29uLCBwYXNzZWRFcnJvciwgJ3VuZGVybHlpbmcgc2luayBhYm9ydCBzaG91
bGQgcmVjZWl2ZSB0aGUgZXJyb3IgZnJvbSB0aGUgcmVhZGFibGUgc3RyZWFtJyk7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3VuZGVybHlpbmcgc291cmNlIHB1bGwg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cygrK2V2ZW50cywgMik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN0YXJ0UHJvbWlzZS50
aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgcnMucGlwZVRvKHdzKS5j
YXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhlLCBwYXNzZWRFcnJvciwgJ3BpcGVUbyBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUg
cGFzc2VkIGVycm9yJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnZXJy
b3JlZCcsICd3cml0YWJsZSBzdHJlYW0gc2hvdWxkIGJlIGVycm9yZWQgYWZ0ZXIgcGlwZVRvIGNv
bXBsZXRlcycpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK2V2ZW50cywgMyk7CisgICAg
ICAgICAgICB0ZXN0NS5kb25lKCk7CisgICAgICAgIH0pKTsKKworICAgICAgICBhc3NlcnRfZXF1
YWxzKHdzLnN0YXRlLCAnd3JpdGFibGUnLCAnd3JpdGFibGUgc3RyZWFtIHNob3VsZCBzdGlsbCBi
ZSB3cml0YWJsZSBpbW1lZGlhdGVseSBhZnRlciBwaXBlVG8nKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscygrK2V2ZW50cywgMSk7CisKKyAgICAgICAgZXJyb3JSZWFkYWJsZVN0cmVhbShwYXNzZWRF
cnJvcik7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBm
cm9tIGFuIGVtcHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgbm9uLWVtcHR5IGFmdGVy
IHBpcGVUbyBjYWxsIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRlJyk7
Cit0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBw
dWxsQ291bnQgPSAwOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAg
ICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3Vu
dDsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgd3Jp
dGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLCAn
SGVsbG8nLCAndW5kZXJseWluZyBzaW5rIHdyaXRlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUg
c2luZ2xlIGNodW5rJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwg
J3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworICAgICAgICAgICAgdGVzdDYu
ZG9uZSgpOworICAgICAgICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNsb3NlIGNhbGwnKTsKKyAgICAgICAg
fSwKKyAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgnVW5leHBlY3RlZCBhYm9ydCBjYWxsJyk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHJzLnBpcGVUbyh3cykudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFz
c2VydF91bnJlYWNoZWQoJ3BpcGVUbyBwcm9taXNlIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSk7
CisgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dyaXRhYmxlIHN0cmVh
bSBzaG91bGQgc3RhcnQgaW4gd3JpdGFibGUgc3RhdGUnKTsKKworICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnSGVsbG8nKTsKK30pOworCit2YXIgdGVzdDcgPSBhc3luY190ZXN0KCdQaXBpbmcgZnJv
bSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSB3aGljaCBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlw
ZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUnKTsKK3Rl
c3Q3LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGVycm9yUmVhZGFibGVTdHJlYW07CisgICAg
dmFyIGFib3J0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGVycm9yUmVhZGFi
bGVTdHJlYW0gPSBjLmVycm9yLmJpbmQoYyk7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBwdWxs
IGNhbGwnKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgdmFyIHBhc3NlZEVycm9yID0gbmV3IEVycm9yKCdob3JyaWJs
ZSB0aGluZ3MnKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICB3
cml0ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVj
dGVkIHdyaXRlIGNhbGwnKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7
CisgICAgICAgIH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbihyZWFzb24pIHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRFcnJvciwgJ3VuZGVybHlpbmcgc2luayBh
Ym9ydCBzaG91bGQgcmVjZWl2ZSB0aGUgZXJyb3IgZnJvbSB0aGUgcmVhZGFibGUgc3RyZWFtJyk7
CisgICAgICAgICAgICBhYm9ydENhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHJzLnBpcGVUbyh3cykuY2F0Y2godGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhlLCBwYXNzZWRFcnJvciwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIHBhc3NlZCBlcnJvcicpOworICAgICAgICBhc3NlcnRfdHJ1ZShhYm9ydENhbGxl
ZCk7CisgICAgICAgIHRlc3Q3LmRvbmUoKTsKKyAgICB9KSk7CisgICAgYXNzZXJ0X2VxdWFscyh3
cy5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dyaXRhYmxlIHN0cmVhbSBzaG91bGQgc3RhcnQgb3V0IHdy
aXRhYmxlJyk7CisgICAgZXJyb3JSZWFkYWJsZVN0cmVhbShwYXNzZWRFcnJvcik7Cit9KTsKKwor
dmFyIHRlc3Q4ID0gYXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJl
YW0gdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUgd2hpY2ggYmVjb21l
cyBlcnJvcmVkIGFmdGVyIGEgcGlwZVRvIGNhbGwnKTsKK3Rlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7
CisgICAgdmFyIGNhbmNlbENhbGxlZCA9IGZhbHNlOworCisgICAgdmFyIHRoZUVycm9yID0gbmV3
IEVycm9yKCdjYW5jZWwgd2l0aCBtZSEnKTsKKworICAgIHZhciBwdWxsQ291bnQgPSAwOworICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgKytwdWxsQ291bnQ7CisgICAgICAgIH0sCisgICAgICAgIGNhbmNlbDog
ZnVuY3Rpb24ocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgdGhl
RXJyb3IsICd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWxsYXRpb24gcmVhc29uIHNob3VsZCBiZSB0
aGUgd3JpdGFibGUgc3RyZWFtIGVycm9yJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdHdpY2UgYnkgY2FuY2Vs
LXRpbWUnKTsKKyAgICAgICAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHZhciBlcnJvcldyaXRhYmxlU3RyZWFtOworICAgIHZhciBzdGFydFByb21p
c2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
eworICAgICAgICBzdGFydDogZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIGVycm9yV3Jp
dGFibGVTdHJlYW0gPSBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Cisg
ICAgICAgIH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgeworICAgICAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCB3cml0ZSBjYWxsJyk7CisgICAgICAgIH0sCisg
ICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcpOworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0
IGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVz
dDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRl
LCAnd3JpdGFibGUnLCAnd3Mgc2hvdWxkIHN0YXJ0IHdyaXRhYmxlJyk7CisKKyAgICAgICAgcnMu
cGlwZVRvKHdzKS5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIHBhc3NlZCBlcnJvcicpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVk
KTsKKyAgICAgICAgICAgIHRlc3Q4LmRvbmUoKTsKKyAgICAgICAgfSkpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHdzLnN0YXRlLCAnd3JpdGFibGUnLCAnd3Mgc2hvdWxkIGJlIHdyaXRhYmxlIGFm
dGVyIHBpcGUnKTsKKworICAgICAgICBlcnJvcldyaXRhYmxlU3RyZWFtKHRoZUVycm9yKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ2Vycm9yZWQnLCAnd3Mgc2hvdWxkIGJlIGVy
cm9yZWQgYWZ0ZXIgZXJyb3JpbmcgaXQnKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3Q5ID0g
YXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gdG8gYSBX
cml0YWJsZVN0cmVhbSBpbiB0aGUgd2FpdGluZyBzdGF0ZSB3aGljaCBiZWNvbWVzIHdyaXRhYmxl
IGFmdGVyIGEgcGlwZVRvIGNhbGwnKTsKK3Rlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFy
IHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHJlYWR5RnVsZmlsbGVkID0gZmFsc2U7CisgICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
KyAgICAgICAgICAgIGMuZW5xdWV1ZSgnV29ybGQnKTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVs
bDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3VudDsKKyAgICAgICAgfSwKKyAg
ICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFy
IHJlc29sdmVXcml0ZVByb21pc2U7CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAg
IH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgeworICAgICAgICAgICAgaWYgKCFy
ZXNvbHZlV3JpdGVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjaHVu
aywgJ0hlbGxvJywgJ3RoZSBmaXJzdCBjaHVuayB0byBhcnJpdmUgaW4gd3JpdGUgc2hvdWxkIGJl
IHRoZSBmaXJzdCBjaHVuayB3cml0dGVuJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmVXcml0ZVBy
b21pc2UgPSByZXNvbHZlOyB9KSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoY2h1bmssICdXb3JsZCcsICd0aGUgc2Vjb25kIGNodW5rIHRvIGFy
cml2ZSBpbiB3cml0ZSBzaG91bGQgYmUgZnJvbSB0aGUgcmVhZGFibGUgc3RyZWFtJyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICd0aGUgcmVhZGFibGUgc3Ry
ZWFtXCdzIHB1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworICAgICAgICAgICAg
ICAgIGFzc2VydF90cnVlKHJlYWR5RnVsZmlsbGVkKTsKKyAgICAgICAgICAgICAgICB0ZXN0OS5k
b25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2Fs
bCcpOworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsKKyAgICAgICAgfQor
ICAgIH0pOworICAgIHdzLndyaXRlKCdIZWxsbycpOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4o
dGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0
YXRlLCAnd2FpdGluZycsICd3cml0YWJsZSBzdHJlYW0gc3RhdGUgc2hvdWxkIHN0YXJ0IHdhaXRp
bmcnKTsKKworICAgICAgICBycy5waXBlVG8od3MpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHdz
LnN0YXRlLCAnd2FpdGluZycsICd3cml0YWJsZSBzdHJlYW0gc3RhdGUgc2hvdWxkIHN0aWxsIGJl
IHdhaXRpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgcGlwaW5nJyk7CisKKyAgICAgICAgcmVzb2x2ZVdy
aXRlUHJvbWlzZSgpOworICAgICAgICB3cy5yZWFkeS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3cml0YWJsZScs
ICd3cml0YWJsZSBzdHJlYW0gc2hvdWxkIGV2ZW50dWFsbHkgYmVjb21lIHdyaXRhYmxlICh3aGVu
IHJlYWR5IGZ1bGZpbGxzKScpOworICAgICAgICAgICAgcmVhZHlGdWxmaWxsZWQgPSB0cnVlOwor
ICAgICAgICB9KSkuY2F0Y2godGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3Vu
cmVhY2hlZChlKTsgfSkpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDEwID0gYXN5bmNfdGVz
dCgnUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0
cmVhbSBpbiB3YWl0aW5nIHN0YXRlIHdoaWNoIGJlY29tZXMgZXJyb3JlZCBhZnRlciBhIHBpcGVU
byBjYWxsJyk7Cit0ZXN0MTAuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgd3JpdGVDYWxsZWQg
PSBmYWxzZTsKKworICAgIHZhciBwdWxsQ291bnQgPSAwOworICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBj
LmVucXVldWUoJ1dvcmxkJyk7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgKytwdWxsQ291bnQ7CisgICAgICAgIH0sCisgICAgICAgIGNhbmNlbDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh3cml0ZUNhbGxlZCk7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisgICAgICAgICAgICB0ZXN0MTAu
ZG9uZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgZXJyb3JXcml0YWJsZVN0cmVh
bTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGVycm9yKSB7
CisgICAgICAgICAgICBlcnJvcldyaXRhYmxlU3RyZWFtID0gZXJyb3I7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhcnRQcm9taXNlOworICAgICAgICB9LAorICAgICAgICB3cml0ZTogZnVuY3Rpb24o
Y2h1bmspIHsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSh3cml0ZUNhbGxlZCk7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLCAnSGVsbG8nKTsKKyAgICAgICAgICAgIHdyaXRlQ2Fs
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0MTAuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyB9KSk7CisgICAgICAgIH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2Fs
bCcpOworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsKKyAgICAgICAgfQor
ICAgIH0pOworICAgIHdzLndyaXRlKCdIZWxsbycpOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4o
dGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5z
dGF0ZSwgJ3dhaXRpbmcnKTsKKworICAgICAgICBycy5waXBlVG8od3MpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHdzLnN0YXRlLCAnd2FpdGluZycpOworCisgICAgICAgIGVycm9yV3JpdGFibGVT
dHJlYW0oKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ2Vycm9yZWQnKTsKKyAg
ICB9KSk7Cit9KTsKKwordmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBmcm9tIGEgbm9u
LWVtcHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBlVG8g
Y2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3YWl0aW5nIHN0YXRlJyk7Cit0ZXN0MTEu
c3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgZXJyb3JSZWFkYWJsZVN0cmVhbTsKKyAgICB2YXIg
cHVsbENvdW50ID0gMDsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdXb3JsZCcpOwor
ICAgICAgICAgICAgZXJyb3JSZWFkYWJsZVN0cmVhbSA9IGMuZXJyb3IuYmluZChjKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3Vu
dDsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgdmFyIHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgewor
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHdyaXRlQ2FsbGVkKTsKKyAgICAgICAgICAgIHdyaXRl
Q2FsbGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjaHVuaywgJ0hlbGxv
Jyk7CisKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0MTEuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeyB9KSk7CisgICAgICAgIH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcpOwor
ICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0
MTEuZG9uZSgpOworICAgICAgICB9CisgICAgfSk7CisgICAgd3Mud3JpdGUoJ0hlbGxvJyk7CisK
KyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnd2FpdGluZycpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMCk7CisKKyAgICAgICAgcnMucGlwZVRvKHdzKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnKTsKKworICAgICAgICBlcnJvclJlYWRh
YmxlU3RyZWFtKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdQ
aXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFt
IGluIHRoZSB3YWl0aW5nIHN0YXRlIHdoZXJlIGJvdGggYmVjb21lIHJlYWR5IGFmdGVyIGEgcGlw
ZVRvJyk7Cit0ZXN0MTIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAg
ICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgKytw
dWxsQ291bnQ7CisgICAgICAgIH0sCisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNhbmNlbCBjYWxsJyk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cml0ZUNvdW50ID0gMDsKKyAgICB2YXIgcmVzb2x2
ZVdyaXRlUHJvbWlzZTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAgICArK3dyaXRlQ291bnQ7
CisKKyAgICAgICAgICAgIGlmICh3cml0ZUNvdW50ID09PSAxKSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhjaHVuaywgJ0hlbGxvJywgJ2ZpcnN0IGNodW5rIHdyaXR0ZW4gc2hvdWxk
IGVxdWFsIHRoZSBvbmUgcGFzc2VkIHRvIHdzLndyaXRlJyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNv
bHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsgfSkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKHdyaXRlQ291bnQgPT09IDIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGNodW5rLCAnR29vZGJ5ZScsICdzZWNvbmQgY2h1bmsgd3JpdHRlbiBzaG91bGQgYmUgZnJvbSB0
aGUgc291cmNlIHJlYWRhYmxlIHN0cmVhbScpOworICAgICAgICAgICAgICAgIHRlc3QxMi5kb25l
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcp
OworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24ocmVhc29uKSB7CisgICAgICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsKKyAgICAgICAg
fQorICAgIH0pOworICAgIHdzLndyaXRlKCdIZWxsbycpOworCisgICAgc3RhcnRQcm9taXNlLnRo
ZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3
cml0ZUNvdW50LCAxLCAnZXhhY3RseSBvbmUgd3JpdGUgc2hvdWxkIGhhdmUgaGFwcGVuZWQnKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnLCAnd3JpdGFibGUgc3Ry
ZWFtIHNob3VsZCBiZSB3YWl0aW5nJyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9ubHkgb25jZScpOworICAgICAg
ICBycy5waXBlVG8od3MpOworCisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnR29vZGJ5ZScp
OworCisgICAgICAgIC8vIENoZWNrIHRoYXQgbm90aGluZyBoYXBwZW5zIGJlZm9yZSBjYWxsaW5n
IHJlc29sdmVXcml0ZVByb21pc2UoKSwgYW5kIHRoZW4gY2FsbCByZXNvbHZlV3JpdGVQcm9taXNl
KCkKKyAgICAgICAgLy8gdG8gY2hlY2sgdGhhdCBwaXBlVG8gaXMgd29rZW4gdXAuCisgICAgICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnYWZ0ZXIgdGhlIHBpcGVUbyBhbmQgZW5xdWV1
ZSwgcHVsbCBzdGlsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmx5IG9uY2UnKTsKKyAgICAg
ICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDEzID0g
YXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0
YWJsZVN0cmVhbSBpbiB0aGUgd2FpdGluZyBzdGF0ZSB3aGljaCBiZWNvbWVzIHdyaXRhYmxlIGFm
dGVyIGEgcGlwZVRvIGNhbGwnKTsKK3Rlc3QxMy5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBw
dWxsQ291bnQgPSAwOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgKytwdWxsQ291bnQ7CisgICAgICAgIH0s
CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCdVbmV4cGVjdGVkIGNhbmNlbCBjYWxsJyk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHZhciByZXNvbHZlV3JpdGVQcm9taXNlOworICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAg
ICAgICB9LAorICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKCFyZXNvbHZlV3JpdGVQcm9taXNlKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoY2h1bmssICdIZWxsbycpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3Qx
My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVz
b2x2ZTsgfSkpOworICAgICAgICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNsb3NlIGNhbGwnKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZCgnVW5leHBlY3RlZCBhYm9ydCBjYWxsJyk7CisgICAgICAgIH0KKyAgICB9KTsKKyAg
ICB3cy53cml0ZSgnSGVsbG8nKTsKKworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMy5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0
aW5nJyk7CisKKyAgICAgICAgcnMucGlwZVRvKHdzKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3
cy5zdGF0ZSwgJ3dhaXRpbmcnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEp
OworCisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgICAgICAgc2V0VGltZW91dCh0
ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhw
dWxsQ291bnQsIDIpOworCisgICAgICAgICAgICB0ZXN0MTMuZG9uZSgpOworICAgICAgICB9KSwg
MTAwKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QxNCA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBm
cm9tIGFuIGVtcHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgY2xvc2VkIGFmdGVyIGEg
cGlwZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd2FpdGluZyBzdGF0ZSB3aG9z
ZSB3cml0ZXMgbmV2ZXIgY29tcGxldGUnKTsKK3Rlc3QxNC5zdGVwKGZ1bmN0aW9uKCkgeworICAg
IHZhciBjbG9zZVJlYWRhYmxlU3RyZWFtOworICAgIHZhciBwdWxsQ291bnQgPSAwOworICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
CisgICAgICAgICAgICBjbG9zZVJlYWRhYmxlU3RyZWFtID0gYy5jbG9zZS5iaW5kKGMpOworICAg
ICAgICB9LAorICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICsrcHVsbENv
dW50OworICAgICAgICB9LAorICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjYW5jZWwgY2FsbCcpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICB2YXIgd3JpdGVDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7
CisgICAgICAgICAgICBpZiAoIXdyaXRlQ2FsbGVkKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhjaHVuaywgJ0hlbGxvJywgJ3RoZSBjaHVuayBzaG91bGQgYmUgd3JpdHRlbiB0byB0
aGUgd3JpdGFibGUgc3RyZWFtJyk7CisgICAgICAgICAgICAgICAgd3JpdGVDYWxsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGNsb3NlUmVhZGFibGVTdHJlYW0oKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBleHRy
YSB3cml0ZSBjYWxsJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UodGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgfSkpOworICAgICAgICB9LAorICAg
ICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdV
bmV4cGVjdGVkIGNsb3NlIGNhbGwnKTsKKyAgICAgICAgfSwKKyAgICAgICAgYWJvcnQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBhYm9ydCBj
YWxsJyk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB3cy53cml0ZSgnSGVsbG8nKTsKKworICAg
IHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5nJywgJ3RoZSB3cml0YWJsZSBzdHJlYW0g
c2hvdWxkIGJlIGluIHRoZSB3YWl0aW5nIHN0YXRlIGFmdGVyIHN0YXJ0aW5nJyk7CisKKyAgICAg
ICAgcnMucGlwZVRvKHdzKTsKKworICAgICAgICBzZXRUaW1lb3V0KHRlc3QxNC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnd2FpdGlu
ZycsICd0aGUgd3JpdGFibGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSB3YWl0aW5nIHNpbmNlIHRo
ZSB3cml0ZSBuZXZlciBjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmx5IG9uY2UnKTsKKyAg
ICAgICAgICAgIGFzc2VydF90cnVlKHdyaXRlQ2FsbGVkKTsKKyAgICAgICAgICAgIHRlc3QxNC5k
b25lKCk7CisgICAgICAgIH0pLCA1MCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTUgPSBh
c3luY190ZXN0KCdQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSB3aGljaCBiZWNv
bWVzIGVycm9yZWQgYWZ0ZXIgYSBwaXBlVG8gY2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRo
ZSB3YWl0aW5nIHN0YXRlJyk7Cit0ZXN0MTUuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgZXJy
b3JSZWFkYWJsZVN0cmVhbTsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAg
ICAgICAgZXJyb3JSZWFkYWJsZVN0cmVhbSA9IGMuZXJyb3IuYmluZChjKTsKKyAgICAgICAgfSwK
KyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3VudDsKKyAg
ICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgdmFyIHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHBhc3NlZEVycm9yID0g
bmV3IEVycm9yKCdob3JyaWJsZSB0aGluZ3MnKTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJv
bWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
KyAgICAgICAgfSwKKyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAg
ICBpZiAoIXdyaXRlQ2FsbGVkKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjaHVu
aywgJ0hlbGxvJyk7CisgICAgICAgICAgICAgICAgd3JpdGVDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVj
dGVkIGV4dHJhIHdyaXRlIGNhbGwnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZSh0ZXN0MTUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB9KSk7CisgICAgICAg
IH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJl
YWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcpOworICAgICAgICB9LAorICAgICAgICBhYm9y
dDogZnVuY3Rpb24ocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwg
cGFzc2VkRXJyb3IpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUod3JpdGVDYWxsZWQpOworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOworICAgICAgICAgICAgdGVzdDE1
LmRvbmUoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIHdzLndyaXRlKCdIZWxsbycpOworCisg
ICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDE1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnKTsKKworICAgICAgICBycy5waXBl
VG8od3MpOworCisgICAgICAgIGVycm9yUmVhZGFibGVTdHJlYW0ocGFzc2VkRXJyb3IpOworICAg
IH0pKTsKK30pOworCit2YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUGlwaW5nIHRvIGEgZHVjay10
eXBlZCBhc3luY2hyb25vdXMgIndyaXRhYmxlIHN0cmVhbSIgd29ya3MnKTsKK3Rlc3QxNi5zdGVw
KGZ1bmN0aW9uKCkgeworICAgIHZhciBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSg1LCB7
IGFzeW5jOiB0cnVlIH0pOworCisgICAgdmFyIGNodW5rc1dyaXR0ZW4gPSBbXTsKKyAgICB2YXIg
ZGVzdCA9IHsKKyAgICAgICAgc3RhdGU6ICd3cml0YWJsZScsCisgICAgICAgIHdyaXRlOiBmdW5j
dGlvbihjaHVuaykgeworICAgICAgICAgICAgY2h1bmtzV3JpdHRlbi5wdXNoKGNodW5rKTsKKyAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfSwKKyAgICAgICAg
Z2V0IHJlYWR5KCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAg
ICAgICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNodW5rc1dyaXR0ZW4sIFsxLCAyLCAzLCA0LCA1XSk7CisgICAgICAgICAg
ICB0ZXN0MTYuZG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwor
ICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdTaG91bGQgbm90IGNhbGwgYWJvcnQnKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgY2xvc2VkOiBuZXcgUHJvbWlzZSh0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB9KSkK
KyAgICB9OworCisgICAgcnMucGlwZVRvKGRlc3QpOworfSk7CisKK3ZhciB0ZXN0MTcgPSBhc3lu
Y190ZXN0KCdQaXBpbmcgdG8gYSBzdHJlYW0gdGhhdCBoYXMgYmVlbiBhYm9ydGVkIHBhc3NlcyB0
aHJvdWdoIHRoZSBlcnJvciBhcyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbicpOwordGVzdDE3LnN0
ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlY29yZGVkUmVhc29uOworICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7Cisg
ICAgICAgICAgICByZWNvcmRlZFJlYXNvbiA9IHJlYXNvbjsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgdmFyIHBhc3NlZFJlYXNv
biA9IG5ldyBFcnJvcignSSBkb25cJ3QgbGlrZSB5b3UuJyk7CisgICAgd3MuYWJvcnQocGFzc2Vk
UmVhc29uKTsKKworICAgIHJzLnBpcGVUbyh3cykuY2F0Y2godGVzdDE3LnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgcGFzc2VkUmVhc29uLCAncGlwZVRv
IHJlamVjdGlvbiByZWFzb24gc2hvdWxkIGJlIHRoZSBjYW5jZWxsYXRpb24gcmVhc29uJyk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSBy
ZWNvcmRlZCBjYW5jZWxsYXRpb24gcmVhc29uIG11c3QgYmUgdGhlIHBhc3NlZCBhYm9ydCByZWFz
b24nKTsKKyAgICAgICAgdGVzdDE3LmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3Qx
OCA9IGFzeW5jX3Rlc3QoJ1BpcGluZyB0byBhIHN0cmVhbSBhbmQgdGhlbiBhYm9ydGluZyBpdCBw
YXNzZXMgdGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxhdGlvbiByZWFzb24nKTsKK3Rl
c3QxOC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNv
bikgeworICAgICAgICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFzb247CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgIHZhciBwYXNz
ZWRSZWFzb24gPSBuZXcgRXJyb3IoJ0kgZG9uXCd0IGxpa2UgeW91LicpOworCisgICAgdmFyIHBp
cGVUb1Byb21pc2UgPSBycy5waXBlVG8od3MpOworICAgIHdzLmFib3J0KHBhc3NlZFJlYXNvbik7
CisKKyAgICBwaXBlVG9Qcm9taXNlLmNhdGNoKHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
eworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHBhc3NlZFJlYXNvbiwgJ3BpcGVUbyByZWplY3Rp
b24gcmVhc29uIHNob3VsZCBiZSB0aGUgYWJvcnRpb24gcmVhc29uJyk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSByZWNvcmRlZCBjYW5j
ZWxsYXRpb24gcmVhc29uIG11c3QgYmUgdGhlIHBhc3NlZCBhYm9ydCByZWFzb24nKTsKKyAgICAg
ICAgdGVzdDE4LmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QxOSA9IGFzeW5jX3Rl
c3QoJ1BpcGluZyB0byBhIHN0cmVhbSB0aGF0IGhhcyBiZWVuIGNsb3NlZCBwcm9wYWdhdGVzIGEg
VHlwZUVycm9yIGNhbmNlbGxhdGlvbiByZWFzb24gYmFja3dhcmQnKTsKK3Rlc3QxOS5zdGVwKGZ1
bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAg
ICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFzb247CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgIHdzLmNsb3NlKCk7CisKKyAgICBy
cy5waXBlVG8od3MpLmNhdGNoKHRlc3QxOS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGU7IH0s
ICd0aGUgcmVqZWN0aW9uIHJlYXNvbiBmb3IgdGhlIHBpcGVUbyBwcm9taXNlIHNob3VsZCBiZSBh
IFR5cGVFcnJvcicpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7IHRocm93IHJlY29yZGVkUmVhc29uOyB9LCAndGhlIHJlY29yZGVkIGNhbmNlbGxh
dGlvbiByZWFzb24gc2hvdWxkIGJlIGEgVHlwZUVycm9yJyk7CisgICAgICAgIHRlc3QxOS5kb25l
KCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MjAgPSBhc3luY190ZXN0KCdQaXBpbmcgdG8g
YSBzdHJlYW0gYW5kIHRoZW4gY2xvc2luZyBpdCBwcm9wYWdhdGVzIGEgVHlwZUVycm9yIGNhbmNl
bGxhdGlvbiByZWFzb24gYmFja3dhcmQnKTsKK3Rlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgeworICAg
IHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgcmVjb3JkZWRS
ZWFzb24gPSByZWFzb247CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSgpOworCisgICAgdmFyIHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8od3Mp
OworICAgIHdzLmNsb3NlKCk7CisKKyAgICBwaXBlVG9Qcm9taXNlLmNhdGNoKHRlc3QyMC5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7IHRocm93IGU7IH0sICd0aGUgcmVqZWN0aW9uIHJlYXNvbiBmb3IgdGhl
IHBpcGVUbyBwcm9taXNlIHNob3VsZCBiZSBhIFR5cGVFcnJvcicpOworICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IHJlY29yZGVkUmVhc29u
OyB9LCAndGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiByZWFzb24gc2hvdWxkIGJlIGEgVHlwZUVy
cm9yJyk7CisgICAgICAgIHRlc3QyMC5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0
MjEgPSBhc3luY190ZXN0KCdQaXBpbmcgdG8gYSBzdHJlYW0gdGhhdCBlcnJvcnMgb24gd3JpdGUg
c2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxhdGlvbiByZWFzb24n
KTsKK3Rlc3QyMS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAgICAgICBjLmVucXVldWUo
J2InKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgICB9LAorICAgICAgICBj
YW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFz
b24sIHBhc3NlZEVycm9yLCAndGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiByZWFzb24gbXVzdCBi
ZSB0aGUgcGFzc2VkIGVycm9yJyk7CisgICAgICAgICAgICB0ZXN0MjEuZG9uZSgpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICB2YXIgd3JpdHRlbiA9IDA7CisgICAgdmFyIHBhc3NlZEVycm9y
ID0gbmV3IEVycm9yKCdJIGRvblwndCBsaWtlIHlvdS4nKTsKKyAgICB2YXIgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oeworICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0MjEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgeworICAgICAgICAgICAgICAgIGlmICgrK3dyaXR0ZW4gPiAxKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlamVjdChwYXNzZWRFcnJvcik7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0pKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgcnMucGlwZVRvKHdzKTsK
K30pOworCit2YXIgdGVzdDIyID0gYXN5bmNfdGVzdCgnUGlwaW5nIHRvIGEgc3RyZWFtIHRoYXQg
ZXJyb3JzIG9uIHdyaXRlIHNob3VsZCBub3QgcGFzcyB0aHJvdWdoIHRoZSBlcnJvciBpZiB0aGUg
c3RyZWFtIGlzIGFscmVhZHkgY2xvc2VkJyk7Cit0ZXN0MjIuc3RlcChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAgICBjLmVucXVl
dWUoJ2MnKTsKKyAgICAgICAgICAgIGMuY2xvc2UoKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2Fu
Y2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cml0dGVuID0gMDsKKyAgICB2YXIgcGFzc2VkRXJy
b3IgPSBuZXcgRXJyb3IoJ0kgZG9uXCd0IGxpa2UgeW91LicpOworICAgIHZhciB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgeworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QyMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2
ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCsrd3JpdHRlbiA+IDEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVqZWN0KHBhc3NlZEVycm9yKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSkpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBycy5waXBlVG8od3Mp
LnRoZW4oCisgICAgICAgIHRlc3QyMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJl
YWNoZWQoJ3BpcGVUbyBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgICAgIHRlc3QyMi5z
dGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyLCBwYXNz
ZWRFcnJvciwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3IgYXMgdGhl
IHdyaXRlJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwgZmFsc2Us
ICdjYW5jZWwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgICAgICAgICB0ZXN0
MjIuZG9uZSgpOworICAgICAgICB9KQorICAgICk7Cit9KTsKKwordmFyIHRlc3QyMyA9IGFzeW5j
X3Rlc3QoJ1BpcGluZyB0byBhIHN0cmVhbSB0aGF0IGVycm9ycyBzb29uIGFmdGVyIHdyaXRpbmcg
c2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxhdGlvbiByZWFzb24n
KTsKK3Rlc3QyMy5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAgICAgICBjLmVucXVldWUo
J2InKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgICB9LAorICAgICAgICBj
YW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFz
b24sIHBhc3NlZEVycm9yLCAndGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiByZWFzb24gbXVzdCBi
ZSB0aGUgcGFzc2VkIGVycm9yJyk7CisgICAgICAgICAgICB0ZXN0MjMuZG9uZSgpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICB2YXIgd3JpdHRlbiA9IDA7CisgICAgdmFyIHBhc3NlZEVycm9y
ID0gbmV3IEVycm9yKCdJIGRvblwndCBsaWtlIHlvdS4nKTsKKyAgICB2YXIgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oeworICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0MjMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgeworICAgICAgICAgICAgICAgIGlmICgrK3dyaXR0ZW4gPiAxKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDIzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgcmVq
ZWN0KHBhc3NlZEVycm9yKTsgfSksIDEwKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSkpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBycy5waXBlVG8od3MpOworfSk7CisK
K3ZhciB0ZXN0MjQgPSBhc3luY190ZXN0KCdQaXBpbmcgdG8gYSB3cml0YWJsZSBzdHJlYW0gdGhh
dCBkb2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVz
c3VyZSBvbiB0aGUgc291cmNlJyk7Cit0ZXN0MjQuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIg
ZGVzaXJlZFNpemVzID0gW107CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDI0
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5xdWV1ZSgnYScpOyB9KSwgMTAwKTsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5xdWV1ZSgnYicp
OyB9KSwgMjAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsgZW5xdWV1ZSgnYycpOyB9KSwgMzAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
dGVzdDI0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5xdWV1ZSgnZCcpOyB9KSwgNDAwKTsKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYy5jbG9z
ZSgpOyB9KSwgNTAwKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykgewor
ICAgICAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVuayk7CisgICAgICAgICAgICAgICAgZGVzaXJl
ZFNpemVzLnB1c2goYy5kZXNpcmVkU2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHZhciBjaHVua3NHaXZlblRvV3JpdGUgPSBbXTsKKyAgICB2YXIgY2h1bmtz
RmluaXNoZWRXcml0aW5nID0gW107CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAg
IH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgeworICAgICAgICAgICAgY2h1bmtz
R2l2ZW5Ub1dyaXRlLnB1c2goY2h1bmspOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KHRlc3QyNC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2h1bmtzRmluaXNoZWRXcml0aW5nLnB1c2goY2h1bmspOworICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSksIDM1MCk7CisgICAgICAgICAgICB9KSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QyNC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJzLnBpcGVUbyh3cykudGhlbih0ZXN0MjQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhkZXNp
cmVkU2l6ZXMsIFsxLCAxLCAwLCAtMV0sICdiYWNrcHJlc3N1cmUgd2FzIGNvcnJlY3RseSBleGVy
dGVkIGF0IHRoZSBzb3VyY2UnKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzRmluaXNoZWRXcml0aW5nLCBbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2FsbCBjaHVua3Mgd2Vy
ZSB3cml0dGVuJyk7CisgICAgICAgICAgICB0ZXN0MjQuZG9uZSgpOworICAgICAgICB9KSk7CisK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dyaXRhYmxlJywgJ2F0IHQgPSAwIG1z
LCB3cyBzaG91bGQgYmUgd3JpdGFibGUnKTsKKworICAgICAgICBzZXRUaW1lb3V0KHRlc3QyNC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRl
LCAnd2FpdGluZycsICdhdCB0ID0gMTI1IG1zLCB3cyBzaG91bGQgYmUgd2FpdGluZycpOworICAg
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NHaXZlblRvV3JpdGUsIFsnYSddLCAn
YXQgdCA9IDEyNSBtcywgd3Mud3JpdGUgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgd2l0aCBvbmUg
Y2h1bmsnKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNoZWRX
cml0aW5nLCBbXSwgJ2F0IHQgPSAxMjUgbXMsIG5vIGNodW5rcyBzaG91bGQgaGF2ZSBmaW5pc2hl
ZCB3cml0aW5nJyk7CisKKyAgICAgICAgICAgIC8vIFdoZW4gJ2EnICh0aGUgdmVyeSBmaXJzdCBj
aHVuaykgd2FzIGVucXVldWVkLCBpdCB3YXMgaW1tZWRpYXRlbHkgdXNlZCB0byBmdWxmaWxsIHRo
ZSBvdXRzdGFuZGluZyByZWFkIHJlcXVlc3QKKyAgICAgICAgICAgIC8vIHByb21pc2UsIGxlYXZp
bmcgcm9vbSBpbiB0aGUgcXVldWUKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZGVz
aXJlZFNpemVzLCBbMV0sICdhdCB0ID0gMTI1IG1zLCB0aGUgb25lIGVucXVldWVkIGNodW5rIGlu
IHJzIGRpZCBub3QgY2F1c2UgYmFja3ByZXNzdXJlJyk7CisgICAgICAgIH0pLCAxMjUpOworCisg
ICAgICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5nJywgJ2F0IHQgPSAyMjUgbXMsIHdz
IHNob3VsZCBiZSB3YWl0aW5nJyk7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rc0dpdmVuVG9Xcml0ZSwgWydhJ10sICdhdCB0ID0gMjI1IG1zLCB3cy53cml0ZSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCB3aXRoIG9uZSBjaHVuaycpOworICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAnYXQgdCA9IDIyNSBtcywgbm8g
Y2h1bmtzIHNob3VsZCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcnKTsKKworICAgICAgICAgICAgLy8g
V2hlbiAnYicgd2FzIGVucXVldWVkIGF0IDIwMCBtcywgdGhlIHF1ZXVlIHdhcyBhbHNvIGVtcHR5
LCBzaW5jZSBpbW1lZGlhdGVseSBhZnRlciBlbnF1ZXVpbmcgJ2EnIGF0CisgICAgICAgICAgICAv
LyB0ID0gMTAwIG1zLCBpdCB3YXMgZGVxdWV1ZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCB0aGUgcmVh
ZCgpIGNhbGwgdGhhdCB3YXMgbWFkZSBhdCB0aW1lIHQgPSAwLgorICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhkZXNpcmVkU2l6ZXMsIFsxLCAxXSwgJ2F0IHQgPSAyMjUgbXMsIHRoZSB0
d28gZW5xdWV1ZWQgY2h1bmtzIGluIHJzIGRpZCBub3QgY2F1c2UgYmFja3ByZXNzdXJlJyk7Cisg
ICAgICAgIH0pLCAyMjUpOworCisgICAgICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5n
JywgJ2F0IHQgPSAzMjUgbXMsIHdzIHNob3VsZCBiZSB3YWl0aW5nJyk7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0dpdmVuVG9Xcml0ZSwgWydhJ10sICdhdCB0ID0gMzI1
IG1zLCB3cy53cml0ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIG9uZSBjaHVuaycpOwor
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtd
LCAnYXQgdCA9IDMyNSBtcywgbm8gY2h1bmtzIHNob3VsZCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcn
KTsKKworICAgICAgICAgICAgLy8gV2hlbiAnYycgd2FzIGVucXVldWVkIGF0IDMwMCBtcywgdGhl
IHF1ZXVlIHdhcyBhZ2FpbiBlbXB0eSwgc2luY2UgYXQgdGltZSB0ID0gMjAwIG1zIHdoZW4gJ2In
IHdhcyBlbnF1ZXVlZCwKKyAgICAgICAgICAgIC8vIGl0IHdhcyBpbW1lZGlhdGVseSBkZXF1ZXVl
ZCBpbiBvcmRlciB0byBmdWxmaWxsIHRoZSBzZWNvbmQgcmVhZCgpIGNhbGwgdGhhdCB3YXMgbWFk
ZSBhdCB0aW1lIHQgPSAwLgorICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhpcyB0aW1lIHRoZXJl
IHdhcyBubyBwZW5kaW5nIHJlYWQgcmVxdWVzdCB0byB3aGlzayBpdCBhd2F5LCBzbyBhZnRlciB0
aGUgZW5xdWV1ZSBkZXNpcmVkIHNpemUgaXMgMC4KKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoZGVzaXJlZFNpemVzLCBbMSwgMSwgMF0sICdhdCB0ID0gMzI1IG1zLCB0aGUgdGhyZWUg
ZW5xdWV1ZWQgY2h1bmtzIGluIHJzIGRpZCBub3QgY2F1c2UgYmFja3ByZXNzdXJlJyk7CisgICAg
ICAgIH0pLCAzMjUpOworCisgICAgICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5nJywg
J2F0IHQgPSA0MjUgbXMsIHdzIHNob3VsZCBiZSB3YWl0aW5nJyk7CisgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGNodW5rc0dpdmVuVG9Xcml0ZSwgWydhJ10sICdhdCB0ID0gNDI1IG1z
LCB3cy53cml0ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIG9uZSBjaHVuaycpOworICAg
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAn
YXQgdCA9IDQyNSBtcywgbm8gY2h1bmtzIHNob3VsZCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcnKTsK
KworICAgICAgICAgICAgLy8gV2hlbiAnZCcgd2FzIGVucXVldWVkIGF0IDQwMCBtcywgdGhlIHF1
ZXVlIHdhcyAqbm90KiBlbXB0eS4gJ2MnIHdhcyBzdGlsbCBpbiBpdCwgc2luY2UgdGhlIHdyaXRl
KCkgb2YgJ2InIHdpbGwKKyAgICAgICAgICAgIC8vIG5vdCBmaW5pc2ggdW50aWwgdCA9IDEwMCBt
cyArIDM1MCBtcyA9IDQ1MCBtcy4gVGh1cyBiYWNrcHJlc3N1cmUgc2hvdWxkIGhhdmUgYmVlbiBl
eGVydGVkLgorICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhkZXNpcmVkU2l6ZXMsIFsx
LCAxLCAwLCAtMV0sICdhdCB0ID0gNDI1IG1zLCB0aGUgZm91cnRoIGVucXVldWVkIGNodW5rcyBp
biBycyBkaWQgY2F1c2UgYmFja3ByZXNzdXJlJyk7CisgICAgICAgIH0pLCA0MjUpOworCisgICAg
ICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5nJywgJ2F0IHQgPSA0NzUgbXMsIHdzIHNo
b3VsZCBiZSB3YWl0aW5nJyk7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5r
c0dpdmVuVG9Xcml0ZSwgWydhJywgJ2InXSwgJ2F0IHQgPSA0NzUgbXMsIHdzLndyaXRlIHNob3Vs
ZCBoYXZlIGJlZW4gY2FsbGVkIHdpdGggdHdvIGNodW5rcycpOworICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFsnYSddLCAnYXQgdCA9IDQ3NSBt
cywgb25lIGNodW5rIHNob3VsZCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcnKTsKKyAgICAgICAgfSks
IDQ3NSk7CisgICAgfSkpOworfSk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260924</attachid>
            <date>2015-09-10 06:57:14 -0700</date>
            <delta_ts>2015-09-14 01:47:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148296-20150910155707.patch</filename>
            <type>text/plain</type>
            <size>43349</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTNkYWQ2MGRiYmVkZDdhMWI0MGQ1
ZmFiMGY5YjMzZTkyMTM3MGU5ZC4uYzMzMzgzZDgwMGQxODdjZmRiYzY2MzA1MjNjNWQ0NDBhZjhh
ZGQxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTEwICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBw
aXBlLXRvIHdyaXRhYmxlIHN0cmVhbSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mjk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9w
aXBlLXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcGlwZS10by5odG1sOiBBZGRlZC4KKwogMjAxNS0wOS0wOSAgRGV3ZWkg
Wmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICBEb2N1bWVudC5jaGFyYWN0ZXJT
ZXQgc2hvdWxkIHJldHVybiAiVVRGLTgiIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9waXBlLXRvLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3BpcGUtdG8t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ODliYzVlZTg0MTQ1OTQ3OWViZjc3NTBjMWQ2Yzk4
ZDQxY2U0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9waXBlLXRvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACisK
K0ZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBmcm9tIHdoaWNoIGxvdHMgb2YgZGF0
YSBhcmUgcmVhZGFibGUgc3luY2hyb25vdXNseSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGluIHJlYWRhYmxlIHN0
YXRlIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gY2xvc2luZyBzdGF0ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGlu
IHJlYWRhYmxlIHN0YXRlIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gZXJyb3JlZCBzdGF0ZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRh
YmxlU3RyZWFtIGluIHRoZSByZWFkYWJsZSBzdGF0ZSB3aGljaCBiZWNvbWVzIGNsb3NlZCBhZnRl
ciBwaXBlVG8gY2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIFJl
YWRhYmxlU3RyZWFtIGluIHRoZSByZWFkYWJsZSBzdGF0ZSB3aGljaCBiZWNvbWVzIGVycm9yZWQg
YWZ0ZXIgcGlwZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3Rh
dGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20g
YW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21lcyBub24tZW1wdHkgYWZ0ZXIgcGlw
ZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYW4gZW1wdHkg
UmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGVUbyBjYWxsIHRv
IGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGFuIGVtcHR5IFJlYWRhYmxlU3Ry
ZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRlIHdoaWNoIGJlY29t
ZXMgZXJyb3JlZCBhZnRlciBhIHBpcGVUbyBjYWxsIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIHRv
IGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdhaXRpbmcgc3RhdGUgd2hpY2ggYmVjb21lcyB3cml0
YWJsZSBhZnRlciBhIHBpcGVUbyBjYWxsIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIFBpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIHRvIGEgV3Jp
dGFibGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0ZSB3aGljaCBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIg
YSBwaXBlVG8gY2FsbCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQ
aXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSB3aGljaCBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgcGlwZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd2FpdGluZyBz
dGF0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJv
bSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3
YWl0aW5nIHN0YXRlIHdoZXJlIGJvdGggYmVjb21lIHJlYWR5IGFmdGVyIGEgcGlwZVRvIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGFuIGVtcHR5
IFJlYWRhYmxlU3RyZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdhaXRpbmcgc3RhdGUg
d2hpY2ggYmVjb21lcyB3cml0YWJsZSBhZnRlciBhIHBpcGVUbyBjYWxsIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGFuIGVtcHR5IFJlYWRhYmxl
U3RyZWFtIHdoaWNoIGJlY29tZXMgY2xvc2VkIGFmdGVyIGEgcGlwZVRvIGNhbGwgdG8gYSBXcml0
YWJsZVN0cmVhbSBpbiB0aGUgd2FpdGluZyBzdGF0ZSB3aG9zZSB3cml0ZXMgbmV2ZXIgY29tcGxl
dGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20g
YW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21lcyBlcnJvcmVkIGFmdGVyIGEgcGlw
ZVRvIGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd2FpdGluZyBzdGF0ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdG8gYSBkdWNrLXR5cGVk
IGFzeW5jaHJvbm91cyAid3JpdGFibGUgc3RyZWFtIiB3b3JrcyBwaXBlVG8gaXMgbm90IGltcGxl
bWVudGVkCitGQUlMIFBpcGluZyB0byBhIHN0cmVhbSB0aGF0IGhhcyBiZWVuIGFib3J0ZWQgcGFz
c2VzIHRocm91Z2ggdGhlIGVycm9yIGFzIHRoZSBjYW5jZWxsYXRpb24gcmVhc29uIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyB0byBhIHN0cmVhbSBhbmQg
dGhlbiBhYm9ydGluZyBpdCBwYXNzZXMgdGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxh
dGlvbiByZWFzb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlw
aW5nIHRvIGEgc3RyZWFtIHRoYXQgaGFzIGJlZW4gY2xvc2VkIHByb3BhZ2F0ZXMgYSBUeXBlRXJy
b3IgY2FuY2VsbGF0aW9uIHJlYXNvbiBiYWNrd2FyZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdG8gYSBzdHJlYW0gYW5kIHRoZW4gY2xvc2luZyBpdCBw
cm9wYWdhdGVzIGEgVHlwZUVycm9yIGNhbmNlbGxhdGlvbiByZWFzb24gYmFja3dhcmQgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIHRvIGEgc3RyZWFtIHRo
YXQgZXJyb3JzIG9uIHdyaXRlIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGVycm9yIGFzIHRoZSBj
YW5jZWxsYXRpb24gcmVhc29uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIFBpcGluZyB0byBhIHN0cmVhbSB0aGF0IGVycm9ycyBvbiB3cml0ZSBzaG91bGQgbm90IHBh
c3MgdGhyb3VnaCB0aGUgZXJyb3IgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGNsb3NlZCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdG8gYSBzdHJlYW0g
dGhhdCBlcnJvcnMgc29vbiBhZnRlciB3cml0aW5nIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGVy
cm9yIGFzIHRoZSBjYW5jZWxsYXRpb24gcmVhc29uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIFBpcGluZyB0byBhIHdyaXRhYmxlIHN0cmVhbSB0aGF0IGRvZXMgbm90
IGNvbnN1bWUgdGhlIHdyaXRlcyBmYXN0IGVub3VnaCBleGVydHMgYmFja3ByZXNzdXJlIG9uIHRo
ZSBzb3VyY2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcGlwZS10by5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcGlwZS10
by5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZDFkYzY3NWFlY2UwY2FhNjk1ZTQ5YWI2YWEwN2NiMmY2NDNi
ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9waXBlLXRvLmh0bWwKQEAgLTAsMCArMSwxMDU0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMnPjwvc2NyaXB0
PgorPHNjcmlwdD4KK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBmcm9tIGEgUmVhZGFi
bGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGRhdGEgYXJlIHJlYWRhYmxlIHN5bmNocm9ub3Vz
bHknKTsKK3Rlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGV2ZW50cyA9IDA7CisgICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgYy5lbnF1ZXVlKGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYy5jbG9z
ZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oe30sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDEwMDAgfSkp
OworCisgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dyaXRhYmxlIHN0
cmVhbSBzdGF0ZSBzaG91bGQgc3RhcnQgb3V0IHdyaXRhYmxlJyk7CisKKyAgICB2YXIgcGlwZUZp
bmlzaGVkID0gZmFsc2U7CisgICAgcnMucGlwZVRvKHdzKS50aGVuKAorICAgICAgICB0ZXN0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwaXBlRmluaXNoZWQgPSB0cnVlOwor
ICAgICAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytldmVudHMsIDIpOwor
ICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ2Ns
b3NlZCcsICd3cml0YWJsZSBzdHJlYW0gc3RhdGUgc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBwaXBl
IGZpbmlzaGVzJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrZXZlbnRzLCAxKTsKKyAg
ICAgICAgfSkKKyAgICApLmNhdGNoKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2Vy
dF91bnJlYWNoZWQoZSk7IH0pKTsKKworICAgIHNldFRpbWVvdXQodGVzdDEuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdHJ1ZShwaXBlRmluaXNoZWQsICdwaXBlIHNob3Vs
ZCBoYXZlIGZpbmlzaGVkIGJlZm9yZSBhIHNldFRpbWVvdXQoLDApIHNpbmNlIGl0IHNob3VsZCBv
bmx5IGJlIG1pY3JvdGFza3MnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscygrK2V2ZW50cywgMyk7
CisgICAgICAgIHRlc3QxLmRvbmUoKTsKKyAgICB9KSwgMCk7Cit9KTsKKwordmFyIHRlc3QyID0g
YXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBpbiByZWFkYWJsZSBzdGF0
ZSB0byBhIFdyaXRhYmxlU3RyZWFtIGluIGNsb3Npbmcgc3RhdGUnKTsKK3Rlc3QyLnN0ZXAoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIGV2ZW50cyA9IDA7CisgICAgdmFyIGNhbmNlbFJlYXNvbjsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdIZWxsbycpOworICAgICAgICB9LAorICAgICAg
ICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyByZWFzb247IH0sICd1bmRlcmx5aW5n
IHNvdXJjZSBjYW5jZWwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgd2l0aCBhIFR5cGVFcnJvcicp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK2V2ZW50cywgMSk7CisgICAgICAgICAgICBj
YW5jZWxSZWFzb24gPSByZWFzb247CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgd3JpdGUgY2FsbCcpOworICAgICAg
ICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgd3MuY2xvc2UoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnY2xvc2luZycsICd3
cml0YWJsZSBzdHJlYW0gc2hvdWxkIGJlIGNsb3NpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2lu
ZyBpdCcpOworCisgICAgcnMucGlwZVRvKHdzKS50aGVuKAorICAgICAgICB0ZXN0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3Byb21pc2UgcmV0dXJuZWQgYnkgcGlw
ZVRvIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1
bmN0aW9uKHIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMociwgY2FuY2VsUmVhc29uLCAn
dGhlIHBpcGVUbyBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvciBhcyB0
aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIHdhcyBjYWxsZWQgd2l0aCcpOworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscygrK2V2ZW50cywgMik7CisgICAgICAgICAgICBycy5nZXRSZWFkZXIo
KS5jbG9zZWQudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscygrK2V2ZW50cywgMyk7CisgICAgICAgICAgICAgICAgdGVzdDIuZG9u
ZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICB9KQorICAgICkuY2F0Y2godGVzdDIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CisKK3Zh
ciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gaW4gcmVh
ZGFibGUgc3RhdGUgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiBlcnJvcmVkIHN0YXRlJyk7Cit0ZXN0
My5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBwdWxsQ291bnQgPSAwOworICAgIHZhciBjYW5j
ZWxDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcGFzc2VkRXJyb3IgPSBuZXcgRXJyb3IoJ2hvcnJp
YmxlIHRoaW5ncycpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ0hlbGxvJyk7Cisg
ICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgKytwdWxs
Q291bnQ7CisgICAgICAgIH0sCisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoY2FuY2VsQ2FsbGVkLCAnY2FuY2VsIG11c3Qgbm90IGJl
IGNhbGxlZCBtb3JlIHRoYW4gb25jZScpOworICAgICAgICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1
ZTsKKworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZEVycm9yKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgICAgdmFy
IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihj
aHVuaykgeworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHdyaXRlQ2FsbGVkLCAnd3JpdGUgbXVz
dCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlJyk7CisgICAgICAgICAgICB3cml0ZUNhbGxl
ZCA9IHRydWU7CisKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2h1bmssICdIZWxsbycpOwor
CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocGFzc2VkRXJyb3IpOworICAgICAg
ICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdVbmV4cGVjdGVkIGNsb3NlIGNhbGwnKTsKKyAgICAgICAgfSwKKyAgICAgICAgYWJv
cnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3Rl
ZCBhYm9ydCBjYWxsJyk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN0YXJ0UHJvbWlzZS50
aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgd3Mud3JpdGUoJ0hlbGxv
Jyk7CisgICAgICAgIGFzc2VydF90cnVlKHdyaXRlQ2FsbGVkLCAnd3JpdGUgbXVzdCBiZSBjYWxs
ZWQnKTsKKworICAgICAgICB3cy5yZWFkeS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICdlcnJvcmVkJywgJ2FzIGEg
cmVzdWx0IG9mIHJlamVjdGVkIHByb21pc2UsIHdzIG11c3QgYmUgaW4gZXJyb3JlZCBzdGF0ZScp
OworCisgICAgICAgICAgICBycy5waXBlVG8od3MpLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBwYXNzZWRFcnJvciwg
J3BpcGVUbyBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBlcnJvcicpOworICAg
ICAgICAgICAgICAgIGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCwgJ2NhbmNlbCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCcpOworICAgICAgICAgICAgICAgIHRlc3QzLmRvbmUoKTsKKyAgICAgICAg
ICAgIH0pKTsKKyAgICAgICAgfSkpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDQgPSBhc3lu
Y190ZXN0KCdQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGluIHRoZSByZWFkYWJsZSBzdGF0
ZSB3aGljaCBiZWNvbWVzIGNsb3NlZCBhZnRlciBwaXBlVG8gY2FsbCB0byBhIFdyaXRhYmxlU3Ry
ZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZScpOwordGVzdDQuc3RlcChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgY2xvc2VSZWFkYWJsZVN0cmVhbTsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2
YXIgZXZlbnRzID0gMDsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdIZWxsbycpOwor
ICAgICAgICAgICAgY2xvc2VSZWFkYWJsZVN0cmVhbSA9IGMuY2xvc2UuYmluZChjKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3Vu
dDsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgdmFyIHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgewor
ICAgICAgICAgICAgaWYgKCF3cml0ZUNhbGxlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY2h1bmssICdIZWxsbycsICdjaHVuayB3cml0dGVuIHRvIHdyaXRhYmxlIHN0cmVhbSBz
aG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCBpbnRvIHRoZSByZWFkYWJsZSBzdHJlYW0nKTsKKyAg
ICAgICAgICAgICAgICB3cml0ZUNhbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscygrK2V2ZW50cywgMik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgZXh0cmEgd3JpdGUgY2FsbCcpOworICAg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3VuZGVybHlpbmcgc291cmNlIHB1
bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscygrK2V2ZW50cywgMyk7CisgICAgICAgIH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgYWJvcnQgY2FsbCcp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0NC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJzLnBpcGVUbyh3cykudGhlbih0ZXN0NC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAn
Y2xvc2VkJywgJ3dyaXRhYmxlIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIHBpcGVUbyBj
b21wbGV0ZXMnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytldmVudHMsIDQpOworICAg
ICAgICAgICAgdGVzdDQuZG9uZSgpOworICAgICAgICB9KSk7CisKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyh3cy5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dyaXRhYmxlIHN0cmVhbSBzaG91bGQgc3RpbGwg
YmUgd3JpdGFibGUgaW1tZWRpYXRlbHkgYWZ0ZXIgcGlwZVRvJyk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoKytldmVudHMsIDEpOworCisgICAgICAgIGNsb3NlUmVhZGFibGVTdHJlYW0oKTsKKyAg
ICB9KSk7Cit9KTsKKwordmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYSBSZWFk
YWJsZVN0cmVhbSBpbiB0aGUgcmVhZGFibGUgc3RhdGUgd2hpY2ggYmVjb21lcyBlcnJvcmVkIGFm
dGVyIHBpcGVUbyBjYWxsIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRl
Jyk7Cit0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBlcnJvclJlYWRhYmxlU3RyZWFt
OworICAgIHZhciBwdWxsQ291bnQgPSAwOworICAgIHZhciBldmVudHMgPSAwOworICAgIHZhciBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Cisg
ICAgICAgICAgICBjLmVucXVldWUoJ0hlbGxvJyk7CisgICAgICAgICAgICBlcnJvclJlYWRhYmxl
U3RyZWFtID0gYy5lcnJvci5iaW5kKGMpOworICAgICAgICB9LAorICAgICAgICBwdWxsOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICsrcHVsbENvdW50OworICAgICAgICB9LAorICAgICAgICBj
YW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBl
Y3RlZCBjYW5jZWwgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgcGFzc2Vk
RXJyb3IgPSBuZXcgRXJyb3IoJ2hvcnJpYmxlIHRoaW5ncycpOworICAgIHZhciBzdGFydFByb21p
c2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
eworICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRQ
cm9taXNlOworICAgICAgICB9LAorICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgZXh0cmEgd3JpdGUgY2FsbCcp
OworICAgICAgICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNsb3NlIGNhbGwnKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgYWJvcnQ6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyZWFzb24sIHBhc3NlZEVycm9yLCAndW5kZXJseWluZyBzaW5rIGFib3J0IHNob3VsZCByZWNl
aXZlIHRoZSBlcnJvciBmcm9tIHRoZSByZWFkYWJsZSBzdHJlYW0nKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAndW5kZXJseWluZyBzb3VyY2UgcHVsbCBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrZXZl
bnRzLCAyKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVz
dDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBycy5waXBlVG8od3MpLmNhdGNoKHRl
c3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUs
IHBhc3NlZEVycm9yLCAncGlwZVRvIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBwYXNzZWQg
ZXJyb3InKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICdlcnJvcmVkJywg
J3dyaXRhYmxlIHN0cmVhbSBzaG91bGQgYmUgZXJyb3JlZCBhZnRlciBwaXBlVG8gY29tcGxldGVz
Jyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrZXZlbnRzLCAzKTsKKyAgICAgICAgICAg
IHRlc3Q1LmRvbmUoKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMod3Mu
c3RhdGUsICd3cml0YWJsZScsICd3cml0YWJsZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIHdyaXRh
YmxlIGltbWVkaWF0ZWx5IGFmdGVyIHBpcGVUbycpOworICAgICAgICBhc3NlcnRfZXF1YWxzKCsr
ZXZlbnRzLCAxKTsKKworICAgICAgICBlcnJvclJlYWRhYmxlU3RyZWFtKHBhc3NlZEVycm9yKTsK
KyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYW4g
ZW1wdHkgUmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21lcyBub24tZW1wdHkgYWZ0ZXIgcGlwZVRv
IGNhbGwgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUnKTsKK3Rlc3Q2
LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHB1bGxDb3Vu
dCA9IDA7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6
IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9LAor
ICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICsrcHVsbENvdW50OworICAg
ICAgICB9LAorICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjYW5jZWwgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICB3cml0ZTogZnVu
Y3Rpb24oY2h1bmspIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2h1bmssICdIZWxsbycs
ICd1bmRlcmx5aW5nIHNpbmsgd3JpdGUgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBzaW5nbGUg
Y2h1bmsnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAgICAgICAgICB0ZXN0Ni5kb25lKCk7
CisgICAgICAgIH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcpOworICAgICAgICB9LAorICAg
ICAgICBhYm9ydDogZnVuY3Rpb24ocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
cnMucGlwZVRvKHdzKS50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgncGlwZVRvIHByb21pc2Ugc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnd3JpdGFibGUnLCAnd3JpdGFibGUgc3RyZWFtIHNob3Vs
ZCBzdGFydCBpbiB3cml0YWJsZSBzdGF0ZScpOworCisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdI
ZWxsbycpOworfSk7CisKK3ZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBmcm9tIGFuIGVt
cHR5IFJlYWRhYmxlU3RyZWFtIHdoaWNoIGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBlVG8gY2Fs
bCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZScpOwordGVzdDcuc3Rl
cChmdW5jdGlvbigpIHsKKyAgICB2YXIgZXJyb3JSZWFkYWJsZVN0cmVhbTsKKyAgICB2YXIgYWJv
cnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgZXJyb3JSZWFkYWJsZVN0cmVh
bSA9IGMuZXJyb3IuYmluZChjKTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIHB1bGwgY2FsbCcp
OworICAgICAgICB9LAorICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjYW5jZWwgY2FsbCcpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICB2YXIgcGFzc2VkRXJyb3IgPSBuZXcgRXJyb3IoJ2hvcnJpYmxlIHRoaW5n
cycpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICAgIHdyaXRlOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgd3Jp
dGUgY2FsbCcpOworICAgICAgICB9LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNsb3NlIGNhbGwnKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZEVycm9yLCAndW5kZXJseWluZyBzaW5rIGFib3J0IHNo
b3VsZCByZWNlaXZlIHRoZSBlcnJvciBmcm9tIHRoZSByZWFkYWJsZSBzdHJlYW0nKTsKKyAgICAg
ICAgICAgIGFib3J0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgcnMu
cGlwZVRvKHdzKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBh
c3NlcnRfZXF1YWxzKGUsIHBhc3NlZEVycm9yLCAncGlwZVRvIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgcGFzc2VkIGVycm9yJyk7CisgICAgICAgIGFzc2VydF90cnVlKGFib3J0Q2FsbGVkKTsKKyAg
ICAgICAgdGVzdDcuZG9uZSgpOworICAgIH0pKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRl
LCAnd3JpdGFibGUnLCAnd3JpdGFibGUgc3RyZWFtIHNob3VsZCBzdGFydCBvdXQgd3JpdGFibGUn
KTsKKyAgICBlcnJvclJlYWRhYmxlU3RyZWFtKHBhc3NlZEVycm9yKTsKK30pOworCit2YXIgdGVz
dDggPSBhc3luY190ZXN0KCdQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBh
IFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZSB3aGljaCBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgYSBwaXBlVG8gY2FsbCcpOwordGVzdDguc3RlcChmdW5jdGlvbigpIHsKKyAgICB2
YXIgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisKKyAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J2NhbmNlbCB3aXRoIG1lIScpOworCisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICArK3B1bGxDb3VudDsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlv
bihyZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCB0aGVFcnJvciwg
J3VuZGVybHlpbmcgc291cmNlIGNhbmNlbGxhdGlvbiByZWFzb24gc2hvdWxkIGJlIHRoZSB3cml0
YWJsZSBzdHJlYW0gZXJyb3InKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0d2ljZSBieSBjYW5jZWwtdGltZScp
OworICAgICAgICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgdmFyIGVycm9yV3JpdGFibGVTdHJlYW07CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgZXJyb3JXcml0YWJsZVN0
cmVhbSA9IGVycm9yOworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAg
fSwKKyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCdVbmV4cGVjdGVkIHdyaXRlIGNhbGwnKTsKKyAgICAgICAgfSwKKyAgICAgICAg
Y2xvc2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBl
Y3RlZCBjbG9zZSBjYWxsJyk7CisgICAgICAgIH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgYWJvcnQgY2FsbCcp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3cml0
YWJsZScsICd3cyBzaG91bGQgc3RhcnQgd3JpdGFibGUnKTsKKworICAgICAgICBycy5waXBlVG8o
d3MpLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncGlwZVRvIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgcGFz
c2VkIGVycm9yJyk7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOworICAg
ICAgICAgICAgdGVzdDguZG9uZSgpOworICAgICAgICB9KSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMod3Muc3RhdGUsICd3cml0YWJsZScsICd3cyBzaG91bGQgYmUgd3JpdGFibGUgYWZ0ZXIgcGlw
ZScpOworCisgICAgICAgIGVycm9yV3JpdGFibGVTdHJlYW0odGhlRXJyb3IpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnZXJyb3JlZCcsICd3cyBzaG91bGQgYmUgZXJyb3JlZCBh
ZnRlciBlcnJvcmluZyBpdCcpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDkgPSBhc3luY190
ZXN0KCdQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxl
U3RyZWFtIGluIHRoZSB3YWl0aW5nIHN0YXRlIHdoaWNoIGJlY29tZXMgd3JpdGFibGUgYWZ0ZXIg
YSBwaXBlVG8gY2FsbCcpOwordGVzdDkuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcHVsbENv
dW50ID0gMDsKKyAgICB2YXIgcmVhZHlGdWxmaWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAg
ICAgICAgYy5lbnF1ZXVlKCdXb3JsZCcpOworICAgICAgICB9LAorICAgICAgICBwdWxsOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICsrcHVsbENvdW50OworICAgICAgICB9LAorICAgICAgICBj
YW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBl
Y3RlZCBjYW5jZWwgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgcmVzb2x2
ZVdyaXRlUHJvbWlzZTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAgICBpZiAoIXJlc29sdmVX
cml0ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLCAnSGVs
bG8nLCAndGhlIGZpcnN0IGNodW5rIHRvIGFycml2ZSBpbiB3cml0ZSBzaG91bGQgYmUgdGhlIGZp
cnN0IGNodW5rIHdyaXR0ZW4nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
dGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUpIHsgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9
IHJlc29sdmU7IH0pKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjaHVuaywgJ1dvcmxkJywgJ3RoZSBzZWNvbmQgY2h1bmsgdG8gYXJyaXZlIGlu
IHdyaXRlIHNob3VsZCBiZSBmcm9tIHRoZSByZWFkYWJsZSBzdHJlYW0nKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3RoZSByZWFkYWJsZSBzdHJlYW1cJ3Mg
cHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X3RydWUocmVhZHlGdWxmaWxsZWQpOworICAgICAgICAgICAgICAgIHRlc3Q5LmRvbmUoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7Cisg
ICAgICAgIH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgYWJvcnQgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7
CisgICAgd3Mud3JpdGUoJ0hlbGxvJyk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3
YWl0aW5nJywgJ3dyaXRhYmxlIHN0cmVhbSBzdGF0ZSBzaG91bGQgc3RhcnQgd2FpdGluZycpOwor
CisgICAgICAgIHJzLnBpcGVUbyh3cyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUs
ICd3YWl0aW5nJywgJ3dyaXRhYmxlIHN0cmVhbSBzdGF0ZSBzaG91bGQgc3RpbGwgYmUgd2FpdGlu
ZyBpbW1lZGlhdGVseSBhZnRlciBwaXBpbmcnKTsKKworICAgICAgICByZXNvbHZlV3JpdGVQcm9t
aXNlKCk7CisgICAgICAgIHdzLnJlYWR5LnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dyaXRh
YmxlIHN0cmVhbSBzaG91bGQgZXZlbnR1YWxseSBiZWNvbWUgd3JpdGFibGUgKHdoZW4gcmVhZHkg
ZnVsZmlsbHMpJyk7CisgICAgICAgICAgICByZWFkeUZ1bGZpbGxlZCA9IHRydWU7CisgICAgICAg
IH0pKS5jYXRjaCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVk
KGUpOyB9KSk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTAgPSBhc3luY190ZXN0KCdQaXBp
bmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIGlu
IHdhaXRpbmcgc3RhdGUgd2hpY2ggYmVjb21lcyBlcnJvcmVkIGFmdGVyIGEgcGlwZVRvIGNhbGwn
KTsKK3Rlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciB3cml0ZUNhbGxlZCA9IGZhbHNl
OworCisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1
ZSgnV29ybGQnKTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICArK3B1bGxDb3VudDsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKHdyaXRlQ2FsbGVkKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKyAgICAgICAgICAgIHRlc3QxMC5kb25lKCk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBlcnJvcldyaXRhYmxlU3RyZWFtOworICAg
IHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAg
ICAgICAgIGVycm9yV3JpdGFibGVTdHJlYW0gPSBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBz
dGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykg
eworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHdyaXRlQ2FsbGVkKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoY2h1bmssICdIZWxsbycpOworICAgICAgICAgICAgd3JpdGVDYWxsZWQgPSB0
cnVlOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QxMC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IH0pKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7Cisg
ICAgICAgIH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgYWJvcnQgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7
CisgICAgd3Mud3JpdGUoJ0hlbGxvJyk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTAu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAn
d2FpdGluZycpOworCisgICAgICAgIHJzLnBpcGVUbyh3cyk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMod3Muc3RhdGUsICd3YWl0aW5nJyk7CisKKyAgICAgICAgZXJyb3JXcml0YWJsZVN0cmVhbSgp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnZXJyb3JlZCcpOworICAgIH0pKTsK
K30pOworCit2YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYSBub24tZW1wdHkg
UmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGVUbyBjYWxsIHRv
IGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdhaXRpbmcgc3RhdGUnKTsKK3Rlc3QxMS5zdGVwKGZ1
bmN0aW9uKCkgeworICAgIHZhciBlcnJvclJlYWRhYmxlU3RyZWFtOworICAgIHZhciBwdWxsQ291
bnQgPSAwOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ1dvcmxkJyk7CisgICAgICAg
ICAgICBlcnJvclJlYWRhYmxlU3RyZWFtID0gYy5lcnJvci5iaW5kKGMpOworICAgICAgICB9LAor
ICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICsrcHVsbENvdW50OworICAg
ICAgICB9LAorICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjYW5jZWwgY2FsbCcpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICB2YXIgd3JpdGVDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlz
ZTsKKyAgICAgICAgfSwKKyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZmFsc2Uod3JpdGVDYWxsZWQpOworICAgICAgICAgICAgd3JpdGVDYWxsZWQg
PSB0cnVlOworCisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLCAnSGVsbG8nKTsKKwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7IH0pKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7CisgICAgICAg
IH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3QxMS5kb25l
KCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB3cy53cml0ZSgnSGVsbG8nKTsKKworICAgIHN0
YXJ0UHJvbWlzZS50aGVuKHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5nJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAwKTsKKworICAgICAgICBycy5waXBlVG8od3MpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHdzLnN0YXRlLCAnd2FpdGluZycpOworCisgICAgICAgIGVycm9yUmVhZGFibGVTdHJl
YW0oKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QxMiA9IGFzeW5jX3Rlc3QoJ1BpcGluZyBm
cm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhl
IHdhaXRpbmcgc3RhdGUgd2hlcmUgYm90aCBiZWNvbWUgcmVhZHkgYWZ0ZXIgYSBwaXBlVG8nKTsK
K3Rlc3QxMi5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBw
dWxsQ291bnQgPSAwOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAg
ICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3Vu
dDsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgdmFyIHdyaXRlQ291bnQgPSAwOworICAgIHZhciByZXNvbHZlV3JpdGVQ
cm9taXNlOworICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2
YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgICAgICB9LAorICAgICAgICB3
cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAgICAgICAgICsrd3JpdGVDb3VudDsKKworICAg
ICAgICAgICAgaWYgKHdyaXRlQ291bnQgPT09IDEpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNodW5rLCAnSGVsbG8nLCAnZmlyc3QgY2h1bmsgd3JpdHRlbiBzaG91bGQgZXF1YWwg
dGhlIG9uZSBwYXNzZWQgdG8gd3Mud3JpdGUnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UodGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmVXcml0
ZVByb21pc2UgPSByZXNvbHZlOyB9KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
d3JpdGVDb3VudCA9PT0gMikgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2h1bmss
ICdHb29kYnllJywgJ3NlY29uZCBjaHVuayB3cml0dGVuIHNob3VsZCBiZSBmcm9tIHRoZSBzb3Vy
Y2UgcmVhZGFibGUgc3RyZWFtJyk7CisgICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVW5leHBlY3RlZCBjbG9zZSBjYWxsJyk7CisgICAg
ICAgIH0sCisgICAgICAgIGFib3J0OiBmdW5jdGlvbihyZWFzb24pIHsKKyAgICAgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgYWJvcnQgY2FsbCcpOworICAgICAgICB9CisgICAg
fSk7CisgICAgd3Mud3JpdGUoJ0hlbGxvJyk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0
MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdyaXRlQ291
bnQsIDEsICdleGFjdGx5IG9uZSB3cml0ZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCcpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnd2FpdGluZycsICd3cml0YWJsZSBzdHJlYW0gc2hv
dWxkIGJlIHdhaXRpbmcnKTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwg
J3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25seSBvbmNlJyk7CisgICAgICAgIHJzLnBp
cGVUbyh3cyk7CisKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdHb29kYnllJyk7CisKKyAg
ICAgICAgLy8gQ2hlY2sgdGhhdCBub3RoaW5nIGhhcHBlbnMgYmVmb3JlIGNhbGxpbmcgcmVzb2x2
ZVdyaXRlUHJvbWlzZSgpLCBhbmQgdGhlbiBjYWxsIHJlc29sdmVXcml0ZVByb21pc2UoKQorICAg
ICAgICAvLyB0byBjaGVjayB0aGF0IHBpcGVUbyBpcyB3b2tlbiB1cC4KKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEsICdhZnRlciB0aGUgcGlwZVRvIGFuZCBlbnF1ZXVlLCBwdWxs
IHN0aWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9ubHkgb25jZScpOworICAgICAgICByZXNv
bHZlV3JpdGVQcm9taXNlKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTMgPSBhc3luY190
ZXN0KCdQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3Ry
ZWFtIGluIHRoZSB3YWl0aW5nIHN0YXRlIHdoaWNoIGJlY29tZXMgd3JpdGFibGUgYWZ0ZXIgYSBw
aXBlVG8gY2FsbCcpOwordGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHB1bGxDb3Vu
dCA9IDA7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgcHVsbDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3VudDsKKyAgICAgICAgfSwKKyAgICAg
ICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1Vu
ZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHJl
c29sdmVXcml0ZVByb21pc2U7CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2
ZSgpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0s
CisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgeworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoIXJlc29sdmVXcml0ZVByb21pc2UpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjaHVu
aywgJ0hlbGxvJyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVzdDEzLnN0ZXBf
ZnVuYyhmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOyB9
KSk7CisgICAgICAgIH0sCisgICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcpOworICAgICAgICB9LAor
ICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIHdzLndy
aXRlKCdIZWxsbycpOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDEzLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnKTsK
KworICAgICAgICBycy5waXBlVG8od3MpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRl
LCAnd2FpdGluZycpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisKKyAg
ICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMy5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMik7CisKKyAgICAgICAgICAgIHRlc3QxMy5kb25lKCk7CisgICAgICAgIH0pLCA1MDApOwor
ICAgIH0pKTsKK30pOworCit2YXIgdGVzdDE0ID0gYXN5bmNfdGVzdCgnUGlwaW5nIGZyb20gYW4g
ZW1wdHkgUmVhZGFibGVTdHJlYW0gd2hpY2ggYmVjb21lcyBjbG9zZWQgYWZ0ZXIgYSBwaXBlVG8g
Y2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3YWl0aW5nIHN0YXRlIHdob3NlIHdyaXRl
cyBuZXZlciBjb21wbGV0ZScpOwordGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNs
b3NlUmVhZGFibGVTdHJlYW07CisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAg
ICAgICAgIGNsb3NlUmVhZGFibGVTdHJlYW0gPSBjLmNsb3NlLmJpbmQoYyk7CisgICAgICAgIH0s
CisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgKytwdWxsQ291bnQ7Cisg
ICAgICAgIH0sCisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGNhbmNlbCBjYWxsJyk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHZhciB3cml0ZUNhbGxlZCA9IGZhbHNlOworICAgIHZhciBzdGFydFByb21pc2Ug
PSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oewor
ICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOworICAgICAgICB9LAorICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAg
ICAgICAgIGlmICghd3JpdGVDYWxsZWQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGNodW5rLCAnSGVsbG8nLCAndGhlIGNodW5rIHNob3VsZCBiZSB3cml0dGVuIHRvIHRoZSB3cml0
YWJsZSBzdHJlYW0nKTsKKyAgICAgICAgICAgICAgICB3cml0ZUNhbGxlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgY2xvc2VSZWFkYWJsZVN0cmVhbSgpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGV4dHJhIHdyaXRl
IGNhbGwnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0
ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB9KSk7CisgICAgICAgIH0sCisgICAgICAgIGNs
b3NlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1VuZXhwZWN0
ZWQgY2xvc2UgY2FsbCcpOworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGFib3J0IGNhbGwnKTsK
KyAgICAgICAgfQorICAgIH0pOworICAgIHdzLndyaXRlKCdIZWxsbycpOworCisgICAgc3RhcnRQ
cm9taXNlLnRoZW4odGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnLCAndGhlIHdyaXRhYmxlIHN0cmVhbSBzaG91bGQg
YmUgaW4gdGhlIHdhaXRpbmcgc3RhdGUgYWZ0ZXIgc3RhcnRpbmcnKTsKKworICAgICAgICBycy5w
aXBlVG8od3MpOworCisgICAgICAgIHNldFRpbWVvdXQodGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3YWl0aW5nJywgJ3Ro
ZSB3cml0YWJsZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIHdhaXRpbmcgc2luY2UgdGhlIHdyaXRl
IG5ldmVyIGNvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDEsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9ubHkgb25jZScpOworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUod3JpdGVDYWxsZWQpOworICAgICAgICAgICAgdGVzdDE0LmRvbmUoKTsK
KyAgICAgICAgfSksIDUwMCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTUgPSBhc3luY190
ZXN0KCdQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSB3aGljaCBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgYSBwaXBlVG8gY2FsbCB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3YWl0
aW5nIHN0YXRlJyk7Cit0ZXN0MTUuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgZXJyb3JSZWFk
YWJsZVN0cmVhbTsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAg
ZXJyb3JSZWFkYWJsZVN0cmVhbSA9IGMuZXJyb3IuYmluZChjKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICArK3B1bGxDb3VudDsKKyAgICAgICAg
fSwKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJl
YWNoZWQoJ1VuZXhwZWN0ZWQgY2FuY2VsIGNhbGwnKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgdmFyIHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHBhc3NlZEVycm9yID0gbmV3IEVy
cm9yKCdob3JyaWJsZSB0aGluZ3MnKTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAg
ICAgfSwKKyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAgICBpZiAo
IXdyaXRlQ2FsbGVkKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjaHVuaywgJ0hl
bGxvJyk7CisgICAgICAgICAgICAgICAgd3JpdGVDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdVbmV4cGVjdGVkIGV4
dHJhIHdyaXRlIGNhbGwnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSh0ZXN0MTUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB9KSk7CisgICAgICAgIH0sCisg
ICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J1VuZXhwZWN0ZWQgY2xvc2UgY2FsbCcpOworICAgICAgICB9LAorICAgICAgICBhYm9ydDogZnVu
Y3Rpb24ocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2Vk
RXJyb3IpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUod3JpdGVDYWxsZWQpOworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOworICAgICAgICAgICAgdGVzdDE1LmRvbmUo
KTsKKyAgICAgICAgfQorICAgIH0pOworICAgIHdzLndyaXRlKCdIZWxsbycpOworCisgICAgc3Rh
cnRQcm9taXNlLnRoZW4odGVzdDE1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnKTsKKworICAgICAgICBycy5waXBlVG8od3Mp
OworCisgICAgICAgIGVycm9yUmVhZGFibGVTdHJlYW0ocGFzc2VkRXJyb3IpOworICAgIH0pKTsK
K30pOworCit2YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUGlwaW5nIHRvIGEgZHVjay10eXBlZCBh
c3luY2hyb25vdXMgIndyaXRhYmxlIHN0cmVhbSIgd29ya3MnKTsKK3Rlc3QxNi5zdGVwKGZ1bmN0
aW9uKCkgeworICAgIHZhciBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSg1LCB7IGFzeW5j
OiB0cnVlIH0pOworCisgICAgdmFyIGNodW5rc1dyaXR0ZW4gPSBbXTsKKyAgICB2YXIgZGVzdCA9
IHsKKyAgICAgICAgc3RhdGU6ICd3cml0YWJsZScsCisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihj
aHVuaykgeworICAgICAgICAgICAgY2h1bmtzV3JpdHRlbi5wdXNoKGNodW5rKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0IHJl
YWR5KCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9
LAorICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rc1dyaXR0ZW4sIFsxLCAyLCAzLCA0LCA1XSk7CisgICAgICAgICAgICB0ZXN0
MTYuZG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAg
ICB9LAorICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdTaG91bGQgbm90IGNhbGwgYWJvcnQnKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2xv
c2VkOiBuZXcgUHJvbWlzZSh0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB9KSkKKyAgICB9
OworCisgICAgcnMucGlwZVRvKGRlc3QpOworfSk7CisKK3ZhciB0ZXN0MTcgPSBhc3luY190ZXN0
KCdQaXBpbmcgdG8gYSBzdHJlYW0gdGhhdCBoYXMgYmVlbiBhYm9ydGVkIHBhc3NlcyB0aHJvdWdo
IHRoZSBlcnJvciBhcyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbicpOwordGVzdDE3LnN0ZXAoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHJlY29yZGVkUmVhc29uOworICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7CisgICAgICAg
ICAgICByZWNvcmRlZFJlYXNvbiA9IHJlYXNvbjsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
dmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgdmFyIHBhc3NlZFJlYXNvbiA9IG5l
dyBFcnJvcignSSBkb25cJ3QgbGlrZSB5b3UuJyk7CisgICAgd3MuYWJvcnQocGFzc2VkUmVhc29u
KTsKKworICAgIHJzLnBpcGVUbyh3cykuY2F0Y2godGVzdDE3LnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgcGFzc2VkUmVhc29uLCAncGlwZVRvIHJlamVj
dGlvbiByZWFzb24gc2hvdWxkIGJlIHRoZSBjYW5jZWxsYXRpb24gcmVhc29uJyk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSByZWNvcmRl
ZCBjYW5jZWxsYXRpb24gcmVhc29uIG11c3QgYmUgdGhlIHBhc3NlZCBhYm9ydCByZWFzb24nKTsK
KyAgICAgICAgdGVzdDE3LmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QxOCA9IGFz
eW5jX3Rlc3QoJ1BpcGluZyB0byBhIHN0cmVhbSBhbmQgdGhlbiBhYm9ydGluZyBpdCBwYXNzZXMg
dGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxhdGlvbiByZWFzb24nKTsKK3Rlc3QxOC5z
dGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgewor
ICAgICAgICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFzb247CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHZhciB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgIHZhciBwYXNzZWRSZWFz
b24gPSBuZXcgRXJyb3IoJ0kgZG9uXCd0IGxpa2UgeW91LicpOworCisgICAgdmFyIHBpcGVUb1By
b21pc2UgPSBycy5waXBlVG8od3MpOworICAgIHdzLmFib3J0KHBhc3NlZFJlYXNvbik7CisKKyAg
ICBwaXBlVG9Qcm9taXNlLmNhdGNoKHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGUsIHBhc3NlZFJlYXNvbiwgJ3BpcGVUbyByZWplY3Rpb24gcmVh
c29uIHNob3VsZCBiZSB0aGUgYWJvcnRpb24gcmVhc29uJyk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSByZWNvcmRlZCBjYW5jZWxsYXRp
b24gcmVhc29uIG11c3QgYmUgdGhlIHBhc3NlZCBhYm9ydCByZWFzb24nKTsKKyAgICAgICAgdGVz
dDE4LmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1Bp
cGluZyB0byBhIHN0cmVhbSB0aGF0IGhhcyBiZWVuIGNsb3NlZCBwcm9wYWdhdGVzIGEgVHlwZUVy
cm9yIGNhbmNlbGxhdGlvbiByZWFzb24gYmFja3dhcmQnKTsKK3Rlc3QxOS5zdGVwKGZ1bmN0aW9u
KCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAg
cmVjb3JkZWRSZWFzb24gPSByZWFzb247CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgIHdzLmNsb3NlKCk7CisKKyAgICBycy5waXBl
VG8od3MpLmNhdGNoKHRlc3QxOS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGU7IH0sICd0aGUg
cmVqZWN0aW9uIHJlYXNvbiBmb3IgdGhlIHBpcGVUbyBwcm9taXNlIHNob3VsZCBiZSBhIFR5cGVF
cnJvcicpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24o
KSB7IHRocm93IHJlY29yZGVkUmVhc29uOyB9LCAndGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiBy
ZWFzb24gc2hvdWxkIGJlIGEgVHlwZUVycm9yJyk7CisgICAgICAgIHRlc3QxOS5kb25lKCk7Cisg
ICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MjAgPSBhc3luY190ZXN0KCdQaXBpbmcgdG8gYSBzdHJl
YW0gYW5kIHRoZW4gY2xvc2luZyBpdCBwcm9wYWdhdGVzIGEgVHlwZUVycm9yIGNhbmNlbGxhdGlv
biByZWFzb24gYmFja3dhcmQnKTsKK3Rlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBy
ZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAg
ICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgcmVjb3JkZWRSZWFzb24g
PSByZWFzb247CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSgpOworCisgICAgdmFyIHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8od3MpOworICAg
IHdzLmNsb3NlKCk7CisKKyAgICBwaXBlVG9Qcm9taXNlLmNhdGNoKHRlc3QyMC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7IHRocm93IGU7IH0sICd0aGUgcmVqZWN0aW9uIHJlYXNvbiBmb3IgdGhlIHBpcGVU
byBwcm9taXNlIHNob3VsZCBiZSBhIFR5cGVFcnJvcicpOworICAgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IHJlY29yZGVkUmVhc29uOyB9LCAn
dGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiByZWFzb24gc2hvdWxkIGJlIGEgVHlwZUVycm9yJyk7
CisgICAgICAgIHRlc3QyMC5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MjEgPSBh
c3luY190ZXN0KCdQaXBpbmcgdG8gYSBzdHJlYW0gdGhhdCBlcnJvcnMgb24gd3JpdGUgc2hvdWxk
IHBhc3MgdGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxhdGlvbiByZWFzb24nKTsKK3Rl
c3QyMS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewor
ICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsK
KyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgICB9LAorICAgICAgICBjYW5jZWw6
IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBh
c3NlZEVycm9yLCAndGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiByZWFzb24gbXVzdCBiZSB0aGUg
cGFzc2VkIGVycm9yJyk7CisgICAgICAgICAgICB0ZXN0MjEuZG9uZSgpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICB2YXIgd3JpdHRlbiA9IDA7CisgICAgdmFyIHBhc3NlZEVycm9yID0gbmV3
IEVycm9yKCdJIGRvblwndCBsaWtlIHlvdS4nKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSh0ZXN0MjEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgICAgIGlmICgrK3dyaXR0ZW4gPiAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlamVjdChwYXNzZWRFcnJvcik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0pKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgcnMucGlwZVRvKHdzKTsKK30pOwor
Cit2YXIgdGVzdDIyID0gYXN5bmNfdGVzdCgnUGlwaW5nIHRvIGEgc3RyZWFtIHRoYXQgZXJyb3Jz
IG9uIHdyaXRlIHNob3VsZCBub3QgcGFzcyB0aHJvdWdoIHRoZSBlcnJvciBpZiB0aGUgc3RyZWFt
IGlzIGFscmVhZHkgY2xvc2VkJyk7Cit0ZXN0MjIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIg
Y2FuY2VsQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2Mn
KTsKKyAgICAgICAgICAgIGMuY2xvc2UoKTsKKyAgICAgICAgfSwKKyAgICAgICAgY2FuY2VsOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHZhciB3cml0dGVuID0gMDsKKyAgICB2YXIgcGFzc2VkRXJyb3IgPSBu
ZXcgRXJyb3IoJ0kgZG9uXCd0IGxpa2UgeW91LicpOworICAgIHZhciB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSh7CisgICAgICAgIHdyaXRlOiBmdW5jdGlvbihjaHVuaykgeworICAgICAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHRlc3QyMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCsrd3JpdHRlbiA+IDEpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmVqZWN0KHBhc3NlZEVycm9yKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSkpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBycy5waXBlVG8od3MpLnRoZW4o
CisgICAgICAgIHRlc3QyMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQo
J3BpcGVUbyBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgICAgIHRlc3QyMi5zdGVwX2Z1
bmMoZnVuY3Rpb24ocikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyLCBwYXNzZWRFcnJv
ciwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3IgYXMgdGhlIHdyaXRl
Jyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwgZmFsc2UsICdjYW5j
ZWwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgICAgICAgICB0ZXN0MjIuZG9u
ZSgpOworICAgICAgICB9KQorICAgICk7Cit9KTsKKwordmFyIHRlc3QyMyA9IGFzeW5jX3Rlc3Qo
J1BpcGluZyB0byBhIHN0cmVhbSB0aGF0IGVycm9ycyBzb29uIGFmdGVyIHdyaXRpbmcgc2hvdWxk
IHBhc3MgdGhyb3VnaCB0aGUgZXJyb3IgYXMgdGhlIGNhbmNlbGxhdGlvbiByZWFzb24nKTsKK3Rl
c3QyMy5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWNvcmRlZFJlYXNvbjsKKyAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewor
ICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsK
KyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgICB9LAorICAgICAgICBjYW5jZWw6
IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBh
c3NlZEVycm9yLCAndGhlIHJlY29yZGVkIGNhbmNlbGxhdGlvbiByZWFzb24gbXVzdCBiZSB0aGUg
cGFzc2VkIGVycm9yJyk7CisgICAgICAgICAgICB0ZXN0MjMuZG9uZSgpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICB2YXIgd3JpdHRlbiA9IDA7CisgICAgdmFyIHBhc3NlZEVycm9yID0gbmV3
IEVycm9yKCdJIGRvblwndCBsaWtlIHlvdS4nKTsKKyAgICB2YXIgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmspIHsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSh0ZXN0MjMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgICAgIGlmICgrK3dyaXR0ZW4gPiAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQodGVzdDIzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgcmVqZWN0KHBh
c3NlZEVycm9yKTsgfSksIDIwMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0p
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgcnMucGlwZVRvKHdzKTsKK30pOworCit2YXIg
dGVzdDI0ID0gYXN5bmNfdGVzdCgnUGlwaW5nIHRvIGEgd3JpdGFibGUgc3RyZWFtIHRoYXQgZG9l
cyBub3QgY29uc3VtZSB0aGUgd3JpdGVzIGZhc3QgZW5vdWdoIGV4ZXJ0cyBiYWNrcHJlc3N1cmUg
b24gdGhlIHNvdXJjZScpOwordGVzdDI0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGRlc2ly
ZWRTaXplcyA9IFtdOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QyNC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7IGVucXVldWUoJ2EnKTsgfSksIDIwMCk7CisgICAgICAgICAgICBz
ZXRUaW1lb3V0KHRlc3QyNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGVucXVldWUoJ2InKTsgfSks
IDQwMCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QyNC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7IGVucXVldWUoJ2MnKTsgfSksIDYwMCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Qy
NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGVucXVldWUoJ2QnKTsgfSksIDgwMCk7CisgICAgICAg
ICAgICBzZXRUaW1lb3V0KHRlc3QyNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGMuY2xvc2UoKTsg
fSksIDEwMDApOworCisgICAgICAgICAgICBmdW5jdGlvbiBlbnF1ZXVlKGNodW5rKSB7CisgICAg
ICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5rKTsKKyAgICAgICAgICAgICAgICBkZXNpcmVkU2l6
ZXMucHVzaChjLmRlc2lyZWRTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0p
OworCisgICAgdmFyIGNodW5rc0dpdmVuVG9Xcml0ZSA9IFtdOworICAgIHZhciBjaHVua3NGaW5p
c2hlZFdyaXRpbmcgPSBbXTsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgdmFyIHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwK
KyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rKSB7CisgICAgICAgICAgICBjaHVua3NHaXZl
blRvV3JpdGUucHVzaChjaHVuayk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVz
dDI0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dCh0ZXN0MjQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBj
aHVua3NGaW5pc2hlZFdyaXRpbmcucHVzaChjaHVuayk7CisgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KSwgNzAwKTsKKyAgICAgICAgICAgIH0pKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDI0LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICAgICAgcnMucGlwZVRvKHdzKS50aGVuKHRlc3QyNC5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRlc2lyZWRT
aXplcywgWzEsIDEsIDAsIC0xXSwgJ2JhY2twcmVzc3VyZSB3YXMgY29ycmVjdGx5IGV4ZXJ0ZWQg
YXQgdGhlIHNvdXJjZScpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NG
aW5pc2hlZFdyaXRpbmcsIFsnYScsICdiJywgJ2MnLCAnZCddLCAnYWxsIGNodW5rcyB3ZXJlIHdy
aXR0ZW4nKTsKKyAgICAgICAgICAgIHRlc3QyNC5kb25lKCk7CisgICAgICAgIH0pKTsKKworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHdzLnN0YXRlLCAnd3JpdGFibGUnLCAnYXQgdCA9IDAgbXMsIHdz
IHNob3VsZCBiZSB3cml0YWJsZScpOworCisgICAgICAgIHNldFRpbWVvdXQodGVzdDI0LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod3Muc3RhdGUsICd3
YWl0aW5nJywgJ2F0IHQgPSAyNTAgbXMsIHdzIHNob3VsZCBiZSB3YWl0aW5nJyk7CisgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0dpdmVuVG9Xcml0ZSwgWydhJ10sICdhdCB0
ID0gMjUwIG1zLCB3cy53cml0ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIG9uZSBjaHVu
aycpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRp
bmcsIFtdLCAnYXQgdCA9IDI1MCBtcywgbm8gY2h1bmtzIHNob3VsZCBoYXZlIGZpbmlzaGVkIHdy
aXRpbmcnKTsKKworICAgICAgICAgICAgLy8gV2hlbiAnYScgKHRoZSB2ZXJ5IGZpcnN0IGNodW5r
KSB3YXMgZW5xdWV1ZWQsIGl0IHdhcyBpbW1lZGlhdGVseSB1c2VkIHRvIGZ1bGZpbGwgdGhlIG91
dHN0YW5kaW5nIHJlYWQgcmVxdWVzdAorICAgICAgICAgICAgLy8gcHJvbWlzZSwgbGVhdmluZyBy
b29tIGluIHRoZSBxdWV1ZQorICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhkZXNpcmVk
U2l6ZXMsIFsxXSwgJ2F0IHQgPSAyNTAgbXMsIHRoZSBvbmUgZW5xdWV1ZWQgY2h1bmsgaW4gcnMg
ZGlkIG5vdCBjYXVzZSBiYWNrcHJlc3N1cmUnKTsKKyAgICAgICAgfSksIDI1MCk7CisKKyAgICAg
ICAgc2V0VGltZW91dCh0ZXN0MjQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnLCAnYXQgdCA9IDQ1MCBtcywgd3Mgc2hv
dWxkIGJlIHdhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtz
R2l2ZW5Ub1dyaXRlLCBbJ2EnXSwgJ2F0IHQgPSA0NTAgbXMsIHdzLndyaXRlIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIHdpdGggb25lIGNodW5rJyk7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10sICdhdCB0ID0gNDUwIG1zLCBubyBjaHVu
a3Mgc2hvdWxkIGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworCisgICAgICAgICAgICAvLyBXaGVu
ICdiJyB3YXMgZW5xdWV1ZWQgYXQgMjAwIG1zLCB0aGUgcXVldWUgd2FzIGFsc28gZW1wdHksIHNp
bmNlIGltbWVkaWF0ZWx5IGFmdGVyIGVucXVldWluZyAnYScgYXQKKyAgICAgICAgICAgIC8vIHQg
PSAxMDAgbXMsIGl0IHdhcyBkZXF1ZXVlZCBpbiBvcmRlciB0byBmdWxmaWxsIHRoZSByZWFkKCkg
Y2FsbCB0aGF0IHdhcyBtYWRlIGF0IHRpbWUgdCA9IDAuCisgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGRlc2lyZWRTaXplcywgWzEsIDFdLCAnYXQgdCA9IDQ1MCBtcywgdGhlIHR3byBl
bnF1ZXVlZCBjaHVua3MgaW4gcnMgZGlkIG5vdCBjYXVzZSBiYWNrcHJlc3N1cmUnKTsKKyAgICAg
ICAgfSksIDQ1MCk7CisKKyAgICAgICAgc2V0VGltZW91dCh0ZXN0MjQuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnLCAn
YXQgdCA9IDY1MCBtcywgd3Mgc2hvdWxkIGJlIHdhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoY2h1bmtzR2l2ZW5Ub1dyaXRlLCBbJ2EnXSwgJ2F0IHQgPSA2NTAgbXMs
IHdzLndyaXRlIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHdpdGggb25lIGNodW5rJyk7CisgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10sICdh
dCB0ID0gNjUwIG1zLCBubyBjaHVua3Mgc2hvdWxkIGhhdmUgZmluaXNoZWQgd3JpdGluZycpOwor
CisgICAgICAgICAgICAvLyBXaGVuICdjJyB3YXMgZW5xdWV1ZWQgYXQgMzAwIG1zLCB0aGUgcXVl
dWUgd2FzIGFnYWluIGVtcHR5LCBzaW5jZSBhdCB0aW1lIHQgPSAyMDAgbXMgd2hlbiAnYicgd2Fz
IGVucXVldWVkLAorICAgICAgICAgICAgLy8gaXQgd2FzIGltbWVkaWF0ZWx5IGRlcXVldWVkIGlu
IG9yZGVyIHRvIGZ1bGZpbGwgdGhlIHNlY29uZCByZWFkKCkgY2FsbCB0aGF0IHdhcyBtYWRlIGF0
IHRpbWUgdCA9IDAuCisgICAgICAgICAgICAvLyBIb3dldmVyLCB0aGlzIHRpbWUgdGhlcmUgd2Fz
IG5vIHBlbmRpbmcgcmVhZCByZXF1ZXN0IHRvIHdoaXNrIGl0IGF3YXksIHNvIGFmdGVyIHRoZSBl
bnF1ZXVlIGRlc2lyZWQgc2l6ZSBpcyAwLgorICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhkZXNpcmVkU2l6ZXMsIFsxLCAxLCAwXSwgJ2F0IHQgPSA2NTAgbXMsIHRoZSB0aHJlZSBlbnF1
ZXVlZCBjaHVua3MgaW4gcnMgZGlkIG5vdCBjYXVzZSBiYWNrcHJlc3N1cmUnKTsKKyAgICAgICAg
fSksIDY1MCk7CisKKyAgICAgICAgc2V0VGltZW91dCh0ZXN0MjQuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnLCAnYXQg
dCA9IDg1MCBtcywgd3Mgc2hvdWxkIGJlIHdhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzR2l2ZW5Ub1dyaXRlLCBbJ2EnXSwgJ2F0IHQgPSA4NTAgbXMsIHdz
LndyaXRlIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHdpdGggb25lIGNodW5rJyk7CisgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10sICdhdCB0
ID0gODUwIG1zLCBubyBjaHVua3Mgc2hvdWxkIGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworCisg
ICAgICAgICAgICAvLyBXaGVuICdkJyB3YXMgZW5xdWV1ZWQgYXQgNDAwIG1zLCB0aGUgcXVldWUg
d2FzICpub3QqIGVtcHR5LiAnYycgd2FzIHN0aWxsIGluIGl0LCBzaW5jZSB0aGUgd3JpdGUoKSBv
ZiAnYicgd2lsbAorICAgICAgICAgICAgLy8gbm90IGZpbmlzaCB1bnRpbCB0ID0gMTAwIG1zICsg
MzUwIG1zID0gNDUwIG1zLiBUaHVzIGJhY2twcmVzc3VyZSBzaG91bGQgaGF2ZSBiZWVuIGV4ZXJ0
ZWQuCisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRlc2lyZWRTaXplcywgWzEsIDEs
IDAsIC0xXSwgJ2F0IHQgPSA4NTAgbXMsIHRoZSBmb3VydGggZW5xdWV1ZWQgY2h1bmtzIGluIHJz
IGRpZCBjYXVzZSBiYWNrcHJlc3N1cmUnKTsKKyAgICAgICAgfSksIDg1MCk7CisKKyAgICAgICAg
c2V0VGltZW91dCh0ZXN0MjQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh3cy5zdGF0ZSwgJ3dhaXRpbmcnLCAnYXQgdCA9IDk1MCBtcywgd3Mgc2hvdWxk
IGJlIHdhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzR2l2
ZW5Ub1dyaXRlLCBbJ2EnLCAnYiddLCAnYXQgdCA9IDk1MCBtcywgd3Mud3JpdGUgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgd2l0aCB0d28gY2h1bmtzJyk7CisgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgWydhJ10sICdhdCB0ID0gOTUwIG1zLCBv
bmUgY2h1bmsgc2hvdWxkIGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworICAgICAgICB9KSwgOTUw
KTsKKyAgICB9KSk7Cit9KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>