<?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>35408</bug_id>
          
          <creation_ts>2010-02-25 16:10:30 -0800</creation_ts>
          <short_desc>Rename run-chromium-webkit-tests to new-run-webkit-tests to stop confusion</short_desc>
          <delta_ts>2010-02-25 17:14:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>193916</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-25 16:10:30 -0800</bug_when>
    <thetext>Rename run-chromium-webkit-tests to new-run-webkit-tests to stop confusion

run-chromium-webkit-tests can run other platforms besides chromium.

However its not yet ready to replace run-webkit-tests.  So lets give it an intermediate name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193933</commentid>
    <comment_count>1</comment_count>
      <attachid>49547</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-25 16:46:51 -0800</bug_when>
    <thetext>Created attachment 49547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193935</commentid>
    <comment_count>2</comment_count>
      <attachid>49547</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-25 16:47:45 -0800</bug_when>
    <thetext>Comment on attachment 49547
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193937</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-25 16:49:58 -0800</bug_when>
    <thetext>Committed r55264: &lt;http://trac.webkit.org/changeset/55264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193949</commentid>
    <comment_count>4</comment_count>
      <attachid>49550</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-25 17:12:02 -0800</bug_when>
    <thetext>Created attachment 49550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193951</commentid>
    <comment_count>5</comment_count>
      <attachid>49550</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-25 17:14:30 -0800</bug_when>
    <thetext>Comment on attachment 49550
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193952</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-25 17:14:59 -0800</bug_when>
    <thetext>Committed r55267: &lt;http://trac.webkit.org/changeset/55267&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49547</attachid>
            <date>2010-02-25 16:46:51 -0800</date>
            <delta_ts>2010-02-25 17:11:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35408-20100225164650.patch</filename>
            <type>text/plain</type>
            <size>149543</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0NGYxODc5Li4xYTQ5N2E2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDIt
MjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBydW4tY2hyb21pdW0td2Via2l0LXRl
c3RzIHRvIG5ldy1ydW4td2Via2l0LXRlc3RzIHRvIHN0b3AgY29uZnVzaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTQwOAorCisgICAgICAgICog
U2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9y
dW4tY2hyb21pdW0td2Via2l0LXRlc3RzOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6IFJlbmFtZWQgZnJvbSBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hyb21pdW1fd2Via2l0
X3Rlc3RzLnB5LgorCiAyMDEwLTAyLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9u
ZXctcnVuLXdlYmtpdC10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40
ZTlhODliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdl
YmtpdC10ZXN0cwpAQCAtMCwwICsxLDQyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJXcmFwcGVyIGFyb3VuZCB3ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weSIiIgoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK19zY3JpcHRzX2Rp
cmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMF0pKQor
X3dlYmtpdHB5X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihzY3JpcHRzX2RpcmVjdG9yeSwgIndl
YmtpdHB5IikKK3N5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oX3dlYmtpdHB5X2RpcmVjdG9y
eSwgImxheW91dF90ZXN0cyIpKQorc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihfd2Via2l0
cHlfZGlyZWN0b3J5LCAidGhpcmRwYXJ0eSIpKSAgIyBGb3Igc2ltcGxlanNvbi4KK2ltcG9ydCBy
dW5fd2Via2l0X3Rlc3RzCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgb3B0aW9u
cywgYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncygpCisgICAgcnVuX3dlYmtpdF90
ZXN0cy5tYWluKG9wdGlvbnMsIGFyZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3J1bi1jaHJvbWl1bS13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi1jaHJv
bWl1bS13ZWJraXQtdGVzdHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYwMjc3YzUu
LjAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tY2hyb21pdW0td2Via2l0LXRl
c3RzCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9u
LgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotIiIiV3JhcHBlciBhcm91bmQgd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bi1jaHJvbWl1bS13ZWJraXQtdGVzdHMucHkiIiIKLWltcG9ydCBvcwotaW1wb3J0IHN5
cwotCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRo
LmFic3BhdGgoc3lzLmFyZ3ZbMF0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndl
YmtpdHB5IiwgImxheW91dF90ZXN0cyIpKQotc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3ZWJraXRweSIsICJ0aGlyZHBhcnR5IikpICAjIEZvciBzaW1w
bGVqc29uLgotc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUo
b3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKSkpKQotaW1wb3J0IHJ1bl9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBvcHRpb25zLCBhcmdz
ID0gcnVuX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKCkKLSAgICBydW5fY2hyb21p
dW1fd2Via2l0X3Rlc3RzLm1haW4ob3B0aW9ucywgYXJncykKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hy
b21pdW1fd2Via2l0X3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxNGFm
ZjllLi4wMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNjI2
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlJ1
biBsYXlvdXQgdGVzdHMgdXNpbmcgdGhlIHRlc3Rfc2hlbGwuCi0KLVRoaXMgaXMgYSBwb3J0IG9m
IHRoZSBleGlzdGluZyB3ZWJraXQgdGVzdCBzY3JpcHQgcnVuLXdlYmtpdC10ZXN0cy4KLQotVGhl
IFRlc3RSdW5uZXIgY2xhc3MgcnVucyBhIHNlcmllcyBvZiB0ZXN0cyAoVGVzdFR5cGUgaW50ZXJm
YWNlKSBhZ2FpbnN0IGEgc2V0Ci1vZiB0ZXN0IGZpbGVzLiAgSWYgYSB0ZXN0IGZpbGUgZmFpbHMg
YSBUZXN0VHlwZSwgaXQgcmV0dXJucyBhIGxpc3QgVGVzdEZhaWx1cmUKLW9iamVjdHMgdG8gdGhl
IFRlc3RSdW5uZXIuICBUaGUgVGVzdFJ1bm5lciB0aGVuIGFnZ3JlZ2F0ZXMgdGhlIFRlc3RGYWls
dXJlcyB0bwotY3JlYXRlIGEgZmluYWwgcmVwb3J0LgotCi1UaGlzIHNjcmlwdCByZWFkcyBzZXZl
cmFsIGZpbGVzLCBpZiB0aGV5IGV4aXN0IGluIHRoZSB0ZXN0X2xpc3RzIHN1YmRpcmVjdG9yeQot
bmV4dCB0byB0aGlzIHNjcmlwdCBpdHNlbGYuICBFYWNoIHNob3VsZCBjb250YWluIGEgbGlzdCBv
ZiBwYXRocyB0byBpbmRpdmlkdWFsCi10ZXN0cyBvciBlbnRpcmUgc3ViZGlyZWN0b3JpZXMgb2Yg
dGVzdHMsIHJlbGF0aXZlIHRvIHRoZSBvdXRlcm1vc3QgdGVzdAotZGlyZWN0b3J5LiAgRW50aXJl
IGxpbmVzIHN0YXJ0aW5nIHdpdGggJy8vJyAoY29tbWVudHMpIHdpbGwgYmUgaWdub3JlZC4KLQot
Rm9yIGRldGFpbHMgb2YgdGhlIGZpbGVzJyBjb250ZW50cyBhbmQgcHVycG9zZXMsIHNlZSB0ZXN0
X2xpc3RzL1JFQURNRS4KLSIiIgotCi1pbXBvcnQgZXJybm8KLWltcG9ydCBnbG9iCi1pbXBvcnQg
bG9nZ2luZwotaW1wb3J0IG1hdGgKLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQg
UXVldWUKLWltcG9ydCByYW5kb20KLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5
cwotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKLQotaW1wb3J0IHNpbXBsZWpzb24KLQot
ZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLWZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IGpzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yCi1mcm9tIGxheW91
dF9wYWNrYWdlIGltcG9ydCBtZXRlcmVkX3N0cmVhbQotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBv
cnQgdGVzdF9mYWlsdXJlcwotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9zaGVsbF90
aHJlYWQKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmlsZXMKLWZyb20gdGVzdF90
eXBlcyBpbXBvcnQgZnV6enlfaW1hZ2VfZGlmZgotZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBpbWFn
ZV9kaWZmCi1mcm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCi1mcm9tIHRlc3Rf
dHlwZXMgaW1wb3J0IHRleHRfZGlmZgotCi1pbXBvcnQgcG9ydAotCi0jIEluZGljYXRlcyB0aGF0
IHdlIHdhbnQgZGV0YWlsZWQgcHJvZ3Jlc3MgdXBkYXRlcyBpbiB0aGUgb3V0cHV0IChwcmludHMK
LSMgZGlyZWN0b3J5LWJ5LWRpcmVjdG9yeSBmZWVkYmFjaykuCi1MT0dfREVUQUlMRURfUFJPR1JF
U1MgPSAnZGV0YWlsZWQtcHJvZ3Jlc3MnCi0KLSMgTG9nIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMg
d2hpbGUgcnVubmluZyAoaW5zdGVhZCBvZiBqdXN0IGF0IHRoZSBlbmQpLgotTE9HX1VORVhQRUNU
RUQgPSAndW5leHBlY3RlZCcKLQotIyBCdWlsZGVyIGJhc2UgVVJMIHdoZXJlIHdlIGhhdmUgdGhl
IGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4KLUJVSUxERVJfQkFTRV9VUkwgPSAiaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9idWlsZGJvdC9sYXlvdXRfdGVzdF9yZXN1bHRzLyIKLQotVGVzdEV4cGVj
dGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zRmlsZQotCi0K
LWNsYXNzIFRlc3RJbmZvOgotICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3Qg
Zm9yIGVhc3kgcGFzc2luZyBvZiBkYXRhLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBv
cnQsIGZpbGVuYW1lLCB0aW1lb3V0KToKLSAgICAgICAgIiIiR2VuZXJhdGVzIHRoZSBVUkkgYW5k
IHN0b3JlcyB0aGUgZmlsZW5hbWUgYW5kIHRpbWVvdXQgZm9yIHRoaXMgdGVzdC4KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICBmaWxlbmFtZTogRnVsbCBwYXRoIHRvIHRoZSB0ZXN0LgotICAgICAg
ICAgIHRpbWVvdXQ6IFRpbWVvdXQgZm9yIHJ1bm5pbmcgdGhlIHRlc3QgaW4gVGVzdFNoZWxsLgot
ICAgICAgICAgICIiIgotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAg
c2VsZi51cmkgPSBwb3J0LmZpbGVuYW1lX3RvX3VyaShmaWxlbmFtZSkKLSAgICAgICAgc2VsZi50
aW1lb3V0ID0gdGltZW91dAotICAgICAgICBleHBlY3RlZF9oYXNoX2ZpbGUgPSBwb3J0LmV4cGVj
dGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCAnLmNoZWNrc3VtJykKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5pbWFnZV9oYXNoID0gb3BlbihleHBlY3RlZF9oYXNoX2ZpbGUsICJyIikucmVh
ZCgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgaWYgZXJybm8uRU5P
RU5UICE9IGUuZXJybm86Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHNlbGYu
aW1hZ2VfaGFzaCA9IE5vbmUKLQotCi1jbGFzcyBSZXN1bHRTdW1tYXJ5KG9iamVjdCk6Ci0gICAg
IiIiQSBjbGFzcyBmb3IgcGFydGl0aW9uaW5nIHRoZSB0ZXN0IHJlc3VsdHMgd2UgZ2V0IGludG8g
YnVja2V0cy4KLQotICAgIFRoaXMgY2xhc3MgaXMgYmFzaWNhbGx5IGEgZ2xvcmlmaWVkIHN0cnVj
dCBhbmQgaXQncyBwcml2YXRlIHRvIHRoaXMgZmlsZQotICAgIHNvIHdlIGRvbid0IGJvdGhlciB3
aXRoIGFueSBpbmZvcm1hdGlvbiBoaWRpbmcuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
ZXhwZWN0YXRpb25zLCB0ZXN0X2ZpbGVzKToKLSAgICAgICAgc2VsZi50b3RhbCA9IGxlbih0ZXN0
X2ZpbGVzKQotICAgICAgICBzZWxmLnJlbWFpbmluZyA9IHNlbGYudG90YWwKLSAgICAgICAgc2Vs
Zi5leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKLSAgICAgICAgc2VsZi5leHBlY3RlZCA9IDAK
LSAgICAgICAgc2VsZi51bmV4cGVjdGVkID0gMAotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVj
dGF0aW9uID0ge30KLSAgICAgICAgc2VsZi50ZXN0c19ieV90aW1lbGluZSA9IHt9Ci0gICAgICAg
IHNlbGYucmVzdWx0cyA9IHt9Ci0gICAgICAgIHNlbGYudW5leHBlY3RlZF9yZXN1bHRzID0ge30K
LSAgICAgICAgc2VsZi5mYWlsdXJlcyA9IHt9Ci0gICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0
YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuU0tJUF0gPSBzZXQoKQotICAgICAgICBmb3IgZXhwZWN0
YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05TLnZhbHVlcygpOgotICAg
ICAgICAgICAgc2VsZi50ZXN0c19ieV9leHBlY3RhdGlvbltleHBlY3RhdGlvbl0gPSBzZXQoKQot
ICAgICAgICBmb3IgdGltZWxpbmUgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuVElNRUxJTkVTLnZh
bHVlcygpOgotICAgICAgICAgICAgc2VsZi50ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0gPSAo
Ci0gICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3RpbWVsaW5lKHRp
bWVsaW5lKSkKLQotICAgIGRlZiBhZGQoc2VsZiwgdGVzdCwgZmFpbHVyZXMsIHJlc3VsdCwgZXhw
ZWN0ZWQpOgotICAgICAgICAiIiJBZGQgYSByZXN1bHQgaW50byB0aGUgYXBwcm9wcmlhdGUgYmlu
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdDogdGVzdCBmaWxlIG5hbWUKLSAgICAg
ICAgICBmYWlsdXJlczogbGlzdCBvZiBmYWlsdXJlIG9iamVjdHMgZnJvbSB0ZXN0IGV4ZWN1dGlv
bgotICAgICAgICAgIHJlc3VsdDogcmVzdWx0IG9mIHRlc3QgKFBBU1MsIElNQUdFLCBldGMuKS4K
LSAgICAgICAgICBleHBlY3RlZDogd2hldGhlciB0aGUgcmVzdWx0IHdhcyB3aGF0IHdlIGV4cGVj
dGVkIGl0IHRvIGJlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVj
dGF0aW9uW3Jlc3VsdF0uYWRkKHRlc3QpCi0gICAgICAgIHNlbGYucmVzdWx0c1t0ZXN0XSA9IHJl
c3VsdAotICAgICAgICBzZWxmLnJlbWFpbmluZyAtPSAxCi0gICAgICAgIGlmIGxlbihmYWlsdXJl
cyk6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVzW3Rlc3RdID0gZmFpbHVyZXMKLSAgICAgICAg
aWYgZXhwZWN0ZWQ6Ci0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkICs9IDEKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9yZXN1bHRzW3Rlc3RdID0gcmVzdWx0Ci0g
ICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWQgKz0gMQotCi0KLWNsYXNzIFRlc3RSdW5uZXI6Ci0g
ICAgIiIiQSBjbGFzcyBmb3IgbWFuYWdpbmcgcnVubmluZyBhIHNlcmllcyBvZiB0ZXN0cyBvbiBh
IHNlcmllcyBvZiBsYXlvdXQKLSAgICB0ZXN0IGZpbGVzLiIiIgotCi0gICAgSFRUUF9TVUJESVIg
PSBvcy5zZXAuam9pbihbJycsICdodHRwJywgJyddKQotICAgIFdFQlNPQ0tFVF9TVUJESVIgPSBv
cy5zZXAuam9pbihbJycsICd3ZWJzb2NrZXQnLCAnJ10pCi0KLSAgICAjIFRoZSBwZXItdGVzdCB0
aW1lb3V0IGluIG1pbGxpc2Vjb25kcywgaWYgbm8gLS10aW1lLW91dC1tcyBvcHRpb24gd2FzCi0g
ICAgIyBnaXZlbiB0byBydW5fd2Via2l0X3Rlc3RzLiBUaGlzIHNob3VsZCBjb3JyZXNwb25kIHRv
IHRoZSBkZWZhdWx0IHRpbWVvdXQKLSAgICAjIGluIHRlc3Rfc2hlbGwuZXhlLgotICAgIERFRkFV
TFRfVEVTVF9USU1FT1VUX01TID0gNiAqIDEwMDAKLQotICAgIE5VTV9SRVRSWV9PTl9VTkVYUEVD
VEVEX0ZBSUxVUkUgPSAxCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywg
bWV0ZXIpOgotICAgICAgICAiIiJJbml0aWFsaXplIHRlc3QgcnVubmVyIGRhdGEgc3RydWN0dXJl
cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHBvcnQ6IGFuIG9iamVjdCBpbXBsZW1lbnRp
bmcgcG9ydC1zcGVjaWZpYwotICAgICAgICAgIG9wdGlvbnM6IGEgZGljdGlvbmFyeSBvZiBjb21t
YW5kIGxpbmUgb3B0aW9ucwotICAgICAgICAgIG1ldGVyOiBhIE1ldGVyZWRTdHJlYW0gb2JqZWN0
IHRvIHJlY29yZCB1cGRhdGVzIHRvLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcG9ydCA9
IHBvcnQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fbWV0
ZXIgPSBtZXRlcgotCi0gICAgICAgICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRvIGluc3Rh
bGwgcHlPcGVuU1NMIG9uIGJ1aWxkYm90cy4KLSAgICAgICAgIyBzZWxmLl93ZWJzb2NrZXRfc2Vj
dXJlX3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCi0gICAgICAgICMgICAg
ICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHVzZV90bHM9VHJ1ZSwgcG9ydD05MzIzKQot
Ci0gICAgICAgICMgYSBsaXN0IG9mIFRlc3RUeXBlIG9iamVjdHMKLSAgICAgICAgc2VsZi5fdGVz
dF90eXBlcyA9IFtdCi0KLSAgICAgICAgIyBhIHNldCBvZiB0ZXN0IGZpbGVzLCBhbmQgdGhlIHNh
bWUgdGVzdHMgYXMgYSBsaXN0Ci0gICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoKQotICAg
ICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBOb25lCi0gICAgICAgIHNlbGYuX3Jlc3VsdF9x
dWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICAjIFRoZXNlIGFyZSB1c2VkIGZvciAtLWxv
ZyBkZXRhaWxlZC1wcm9ncmVzcyB0byB0cmFjayBzdGF0dXMgYnkKLSAgICAgICAgIyBkaXJlY3Rv
cnkuCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfZGlyID0gTm9uZQotICAgICAgICBzZWxmLl9jdXJy
ZW50X3Byb2dyZXNzX3N0ciA9ICIiCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9udW1iZXIg
PSAwCi0KLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgbG9nZ2luZy5kZWJ1ZygiZmx1
c2hpbmcgc3Rkb3V0IikKLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIGxvZ2dp
bmcuZGVidWcoImZsdXNoaW5nIHN0ZGVyciIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQot
ICAgICAgICBsb2dnaW5nLmRlYnVnKCJzdG9wcGluZyBodHRwIHNlcnZlciIpCi0gICAgICAgIHNl
bGYuX3BvcnQuc3RvcF9odHRwX3NlcnZlcigpCi0gICAgICAgIGxvZ2dpbmcuZGVidWcoInN0b3Bw
aW5nIHdlYnNvY2tldCBzZXJ2ZXIiKQotICAgICAgICBzZWxmLl9wb3J0LnN0b3Bfd2Vic29ja2V0
X3NlcnZlcigpCi0KLSAgICBkZWYgZ2F0aGVyX2ZpbGVfcGF0aHMoc2VsZiwgcGF0aHMpOgotICAg
ICAgICAiIiJGaW5kIGFsbCB0aGUgZmlsZXMgdG8gdGVzdC4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIHBhdGhzOiBhIGxpc3Qgb2YgZ2xvYnMgdG8gdXNlIGluc3RlYWQgb2YgdGhlIGRlZmF1
bHRzLiIiIgotICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gdGVzdF9maWxlcy5nYXRoZXJfdGVz
dF9maWxlcyhzZWxmLl9wb3J0LCBwYXRocykKLQotICAgIGRlZiBwYXJzZV9leHBlY3RhdGlvbnMo
c2VsZiwgdGVzdF9wbGF0Zm9ybV9uYW1lLCBpc19kZWJ1Z19tb2RlKToKLSAgICAgICAgIiIiUGFy
c2UgdGhlIGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0ZXN0X2xpc3QgZmlsZXMgYW5kIHJldHVybiBh
IGRhdGEKLSAgICAgICAgc3RydWN0dXJlIGhvbGRpbmcgdGhlbS4gVGhyb3dzIGFuIGVycm9yIGlm
IHRoZSB0ZXN0X2xpc3QgZmlsZXMgaGF2ZQotICAgICAgICBpbnZhbGlkIHN5bnRheC4iIiIKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICB0ZXN0
X2ZpbGVzID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHNl
bGYuX3Rlc3RfZmlsZXMKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleHBlY3RhdGlvbnNf
c3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpCi0gICAgICAgICAgICBzZWxmLl9l
eHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAotICAgICAg
ICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfZmlsZXMsIGV4cGVjdGF0aW9uc19zdHIsIHRlc3Rf
cGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBzZWxmLl9vcHRp
b25zLmxpbnRfdGVzdF9maWxlcykKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlv
bnMKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyOgotICAgICAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc3RyKGVycikK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyCi0KLSAgICBkZWYg
cHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYsIHdyaXRlKToKLSAgICAgICAgIiIi
Q3JlYXRlIGFwcHJvcHJpYXRlIHN1YnNldHMgb2YgdGVzdCBsaXN0cyBhbmQgcmV0dXJucyBhCi0g
ICAgICAgIFJlc3VsdFN1bW1hcnkgb2JqZWN0LiBBbHNvIHByaW50cyBleHBlY3RlZCB0ZXN0IGNv
dW50cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHdyaXRlOiBBIGNhbGxiYWNrIHRvIHdy
aXRlIGluZm8gdG8gKGUuZy4sIGEgTG9nZ2luZ1dyaXRlcikgb3IKLSAgICAgICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFJlbW92ZSBza2lwcGVkIC0g
Ym90aCBmaXhhYmxlIGFuZCBpZ25vcmVkIC0gZmlsZXMgZnJvbSB0aGUKLSAgICAgICAgIyB0b3At
bGV2ZWwgbGlzdCBvZiBmaWxlcyB0byB0ZXN0LgotICAgICAgICBudW1fYWxsX3Rlc3RfZmlsZXMg
PSBsZW4oc2VsZi5fdGVzdF9maWxlcykKLSAgICAgICAgd3JpdGUoIkZvdW5kOiAgJWQgdGVzdHMi
ICUgKGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkpCi0gICAgICAgIHNraXBwZWQgPSBzZXQoKQotICAg
ICAgICBpZiBudW1fYWxsX3Rlc3RfZmlsZXMgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5mb3Jj
ZToKLSAgICAgICAgICAgIHNraXBwZWQgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dp
dGhfcmVzdWx0X3R5cGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0
aW9ucy5TS0lQKQotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyAtPSBza2lwcGVkCi0KLSAg
ICAgICAgIyBDcmVhdGUgYSBzb3J0ZWQgbGlzdCBvZiB0ZXN0IGZpbGVzIHNvIHRoZSBzdWJzZXQg
Y2h1bmssCi0gICAgICAgICMgaWYgdXNlZCwgY29udGFpbnMgYWxwaGFiZXRpY2FsbHkgY29uc2Vj
dXRpdmUgdGVzdHMuCi0gICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGxpc3Qoc2VsZi5f
dGVzdF9maWxlcykKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yYW5kb21pemVfb3JkZXI6Ci0g
ICAgICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3Quc29ydCgpCi0KLSAgICAg
ICAgIyBJZiB0aGUgdXNlciBzcGVjaWZpZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0
IG9mIHRoZSB0ZXN0cywKLSAgICAgICAgIyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1z
a2lwcGVkIHRlc3RzLgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxm
Ll9vcHRpb25zLnJ1bl9wYXJ0OgotICAgICAgICAgICAgY2h1bmtfdmFsdWUgPSBzZWxmLl9vcHRp
b25zLnJ1bl9jaHVuayBvciBzZWxmLl9vcHRpb25zLnJ1bl9wYXJ0Ci0gICAgICAgICAgICB0ZXN0
X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxlc19saXN0Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgKGNodW5rX251bSwgY2h1bmtfbGVuKSA9IGNodW5rX3ZhbHVlLnNwbGl0KCI6IikK
LSAgICAgICAgICAgICAgICBjaHVua19udW0gPSBpbnQoY2h1bmtfbnVtKQotICAgICAgICAgICAg
ICAgIGFzc2VydChjaHVua19udW0gPj0gMCkKLSAgICAgICAgICAgICAgICB0ZXN0X3NpemUgPSBp
bnQoY2h1bmtfbGVuKQotICAgICAgICAgICAgICAgIGFzc2VydCh0ZXN0X3NpemUgPiAwKQotICAg
ICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoImludmFs
aWQgY2h1bmsgJyVzJyIgJSBjaHVua192YWx1ZSkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQotCi0gICAgICAgICAgICAjIEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzCi0gICAgICAgICAgICBu
dW1fdGVzdHMgPSBsZW4odGVzdF9maWxlcykKLQotICAgICAgICAgICAgIyBHZXQgdGhlIHN0YXJ0
IG9mZnNldCBvZiB0aGUgc2xpY2UuCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9j
aHVuazoKLSAgICAgICAgICAgICAgICBjaHVua19sZW4gPSB0ZXN0X3NpemUKLSAgICAgICAgICAg
ICAgICAjIEluIHRoaXMgY2FzZSBjaHVua19udW0gY2FuIGJlIHJlYWxseSBsYXJnZS4gV2UgbmVl
ZAotICAgICAgICAgICAgICAgICMgdG8gbWFrZSB0aGUgc2xhdmUgZml0IGluIHRoZSBjdXJyZW50
IG51bWJlciBvZiB0ZXN0cy4KLSAgICAgICAgICAgICAgICBzbGljZV9zdGFydCA9IChjaHVua19u
dW0gKiBjaHVua19sZW4pICUgbnVtX3Rlc3RzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICMgVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rf
c2l6ZSA8PSBudW1fdGVzdHMpCi0gICAgICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA8PSB0
ZXN0X3NpemUpCi0KLSAgICAgICAgICAgICAgICAjIFRvIGNvdW50IHRoZSBjaHVua19sZW4sIGFu
ZCBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2tpcAotICAgICAgICAgICAgICAgICMgc29tZSB0ZXN0cywg
d2Ugcm91bmQgdG8gdGhlIG5leHQgdmFsdWUgdGhhdCBmaXRzIGV4YWN0bHkKLSAgICAgICAgICAg
ICAgICAjIGFsbCB0aGUgcGFydHMuCi0gICAgICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IG51
bV90ZXN0cwotICAgICAgICAgICAgICAgIGlmIHJvdW5kZWRfdGVzdHMgJSB0ZXN0X3NpemUgIT0g
MDoKLSAgICAgICAgICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IChudW1fdGVzdHMgKyB0ZXN0
X3NpemUgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1fdGVzdHMg
JSB0ZXN0X3NpemUpKQotCi0gICAgICAgICAgICAgICAgY2h1bmtfbGVuID0gcm91bmRlZF90ZXN0
cyAvIHRlc3Rfc2l6ZQotICAgICAgICAgICAgICAgIHNsaWNlX3N0YXJ0ID0gY2h1bmtfbGVuICog
KGNodW5rX251bSAtIDEpCi0gICAgICAgICAgICAgICAgIyBJdCBkb2VzIG5vdCBtaW5kIGlmIHdl
IGdvIG92ZXIgdGVzdF9zaXplLgotCi0gICAgICAgICAgICAjIEdldCB0aGUgZW5kIG9mZnNldCBv
ZiB0aGUgc2xpY2UuCi0gICAgICAgICAgICBzbGljZV9lbmQgPSBtaW4obnVtX3Rlc3RzLCBzbGlj
ZV9zdGFydCArIGNodW5rX2xlbikKLQotICAgICAgICAgICAgZmlsZXMgPSB0ZXN0X2ZpbGVzW3Ns
aWNlX3N0YXJ0OnNsaWNlX2VuZF0KLQotICAgICAgICAgICAgdGVzdHNfcnVuX21zZyA9ICdSdW5u
aW5nOiAlZCB0ZXN0cyAoY2h1bmsgc2xpY2UgWyVkOiVkXSBvZiAlZCknICUgKAotICAgICAgICAg
ICAgICAgIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCksIHNsaWNlX3N0YXJ0LCBzbGljZV9lbmQs
IG51bV90ZXN0cykKLSAgICAgICAgICAgIHdyaXRlKHRlc3RzX3J1bl9tc2cpCi0KLSAgICAgICAg
ICAgICMgSWYgd2UgcmVhY2hlZCB0aGUgZW5kIGFuZCB3ZSBkb24ndCBoYXZlIGVub3VnaCB0ZXN0
cywgd2UgcnVuIHNvbWUKLSAgICAgICAgICAgICMgZnJvbSB0aGUgYmVnaW5uaW5nLgotICAgICAg
ICAgICAgaWYgKHNlbGYuX29wdGlvbnMucnVuX2NodW5rIGFuZAotICAgICAgICAgICAgICAgIChz
bGljZV9lbmQgLSBzbGljZV9zdGFydCA8IGNodW5rX2xlbikpOgotICAgICAgICAgICAgICAgIGV4
dHJhID0gMSArIGNodW5rX2xlbiAtIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCkKLSAgICAgICAg
ICAgICAgICBleHRyYV9tc2cgPSAoJyAgIGxhc3QgY2h1bmsgaXMgcGFydGlhbCwgYXBwZW5kaW5n
IFswOiVkXScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhKQotICAgICAgICAg
ICAgICAgIHdyaXRlKGV4dHJhX21zZykKLSAgICAgICAgICAgICAgICB0ZXN0c19ydW5fbXNnICs9
ICJcbiIgKyBleHRyYV9tc2cKLSAgICAgICAgICAgICAgICBmaWxlcy5leHRlbmQodGVzdF9maWxl
c1swOmV4dHJhXSkKLSAgICAgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IG9zLnBhdGguam9p
bihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0c19ydW4udHh0IikKLSAgICAgICAgICAgIHRl
c3RzX3J1bl9maWxlID0gb3Blbih0ZXN0c19ydW5fZmlsZW5hbWUsICJ3IikKLSAgICAgICAgICAg
IHRlc3RzX3J1bl9maWxlLndyaXRlKHRlc3RzX3J1bl9tc2cgKyAiXG4iKQotICAgICAgICAgICAg
dGVzdHNfcnVuX2ZpbGUuY2xvc2UoKQotCi0gICAgICAgICAgICBsZW5fc2tpcF9jaHVuayA9IGlu
dChsZW4oZmlsZXMpICogbGVuKHNraXBwZWQpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkpCi0gICAgICAgICAgICBza2lwX2No
dW5rX2xpc3QgPSBsaXN0KHNraXBwZWQpWzA6bGVuX3NraXBfY2h1bmtdCi0gICAgICAgICAgICBz
a2lwX2NodW5rID0gc2V0KHNraXBfY2h1bmtfbGlzdCkKLQotICAgICAgICAgICAgIyBVcGRhdGUg
ZXhwZWN0YXRpb25zIHNvIHRoYXQgdGhlIHN0YXRzIGFyZSBjYWxjdWxhdGVkIGNvcnJlY3RseS4K
LSAgICAgICAgICAgICMgV2UgbmVlZCB0byBwYXNzIGEgbGlzdCB0aGF0IGluY2x1ZGVzIHRoZSBy
aWdodCAjIG9mIHNraXBwZWQgZmlsZXMKLSAgICAgICAgICAgICMgdG8gUGFyc2VFeHBlY3RhdGlv
bnMgc28gdGhhdCBSZXN1bHRTdW1tYXJ5KCkgd2lsbCBnZXQgdGhlIGNvcnJlY3QKLSAgICAgICAg
ICAgICMgc3RhdHMuIFNvLCB3ZSBhZGQgaW4gdGhlIHN1YnNldCBvZiBza2lwcGVkIGZpbGVzLCBh
bmQgdGhlbgotICAgICAgICAgICAgIyBzdWJ0cmFjdCB0aGVtIGJhY2sgb3V0LgotICAgICAgICAg
ICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMgKyBza2lwX2NodW5rX2xpc3QKLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoc2VsZi5fdGVzdF9maWxlc19saXN0KQotCi0g
ICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygK
LSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMudGFyZ2V0ID09ICdEZWJ1ZycpCi0KLSAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoZmlsZXMpCi0gICAgICAgICAgICBzZWxmLl90ZXN0X2Zp
bGVzX2xpc3QgPSBmaWxlcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2tpcF9jaHVuayA9
IHNraXBwZWQKLQotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5f
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmsp
Ci0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZSh3cml0ZSwgcmVz
dWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2Vz
IikKLSAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHdyaXRlLCBy
ZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkZBSUwsICJmYWls
dXJlcyIpCi0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZSh3cml0
ZSwgcmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwg
ImZsYWt5IikKLSAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHdy
aXRlLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAs
ICJza2lwcGVkIikKLQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZm9yY2U6Ci0gICAgICAg
ICAgICB3cml0ZSgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyBza2lwcyAoLS1mb3JjZSkn
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3QgYWN0dWFs
bHkgcnVuIHRoZSBza2lwcGVkIHRlc3RzICh0aGV5IHdlcmUKLSAgICAgICAgICAgICMgc3VidHJh
Y3RlZCBvdXQgb2Ygc2VsZi5fdGVzdF9maWxlcywgYWJvdmUpLCBidXQgd2Ugc3R1YiBvdXQgdGhl
Ci0gICAgICAgICAgICAjIHJlc3VsdHMgaGVyZSBzbyB0aGUgc3RhdGlzdGljcyBjYW4gcmVtYWlu
IGFjY3VyYXRlLgotICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2tpcF9jaHVuazoKLSAgICAgICAg
ICAgICAgICByZXN1bHRfc3VtbWFyeS5hZGQodGVzdCwgW10sIHRlc3RfZXhwZWN0YXRpb25zLlNL
SVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPVRydWUpCi0g
ICAgICAgIHdyaXRlKCIiKQotCi0gICAgICAgIHJldHVybiByZXN1bHRfc3VtbWFyeQotCi0gICAg
ZGVmIGFkZF90ZXN0X3R5cGUoc2VsZiwgdGVzdF90eXBlKToKLSAgICAgICAgIiIiQWRkIGEgVGVz
dFR5cGUgdG8gdGhlIFRlc3RSdW5uZXIuIiIiCi0gICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMuYXBw
ZW5kKHRlc3RfdHlwZSkKLQotICAgIGRlZiBfZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHNlbGYsIHRl
c3RfZmlsZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGhpZ2hlc3QtbGV2ZWwgZGlyZWN0b3J5
IGJ5IHdoaWNoIHRvIHNoYXJkIHRoZSBnaXZlbgotICAgICAgICB0ZXN0IGZpbGUuIiIiCi0gICAg
ICAgIGluZGV4ID0gdGVzdF9maWxlLnJmaW5kKG9zLnNlcCArICdMYXlvdXRUZXN0cycgKyBvcy5z
ZXApCi0KLSAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlW2luZGV4ICsgbGVuKCdMYXlvdXRU
ZXN0cy8nKTpdCi0gICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3RfZmlsZS5zcGxpdChvcy5z
ZXAsIDEpCi0gICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmlsZV9wYXJ0c1swXQotICAgICAgICB0
ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVfcGFydHNbMV0KLQotICAgICAgICAjIFRoZSBodHRwIHRlc3Rz
IGFyZSB2ZXJ5IHN0YWJsZSBvbiBtYWMvbGludXguCi0gICAgICAgICMgVE9ETyhvamFuKTogTWFr
ZSB0aGUgaHR0cCBzZXJ2ZXIgb24gV2luZG93cyBiZSBhcGFjaGUgc28gd2UgY2FuCi0gICAgICAg
ICMgdHVybiBzaGFyZCB0aGUgaHR0cCB0ZXN0cyB0aGVyZSBhcyB3ZWxsLiBTd2l0Y2hpbmcgdG8g
YXBhY2hlIGlzCi0gICAgICAgICMgd2hhdCBtYWRlIHRoZW0gc3RhYmxlIG9uIGxpbnV4L21hYy4K
LSAgICAgICAgcmV0dXJuX3ZhbHVlID0gZGlyZWN0b3J5Ci0gICAgICAgIHdoaWxlICgoZGlyZWN0
b3J5ICE9ICdodHRwJyBvciBzeXMucGxhdGZvcm0gaW4gKCdkYXJ3aW4nLCAnbGludXgyJykpCi0g
ICAgICAgICAgICAgICAgYW5kIHRlc3RfZmlsZS5maW5kKG9zLnNlcCkgPj0gMCk6Ci0gICAgICAg
ICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwLCAxKQotICAgICAg
ICAgICAgZGlyZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRzWzBdCi0gICAgICAgICAgICByZXR1cm5f
dmFsdWUgPSBvcy5wYXRoLmpvaW4ocmV0dXJuX3ZhbHVlLCBkaXJlY3RvcnkpCi0gICAgICAgICAg
ICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVfcGFydHNbMV0KLQotICAgICAgICByZXR1cm4gcmV0dXJu
X3ZhbHVlCi0KLSAgICBkZWYgX2dldF90ZXN0X2luZm9fZm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxl
KToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgVGVzdEluZm8gb2JqZWN0IGZv
ciB0aGUgZmlsZS4gTW9zdGx5IHRoaXMKLSAgICAgICAgaXMgdXNlZCBmb3IgbG9va2luZyB1cCB0
aGUgdGltZW91dCB2YWx1ZSAoaW4gbXMpIHRvIHVzZSBmb3IgdGhlIGdpdmVuCi0gICAgICAgIHRl
c3QuIiIiCi0gICAgICAgIGlmIHNlbGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9m
aWxlLCB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKToKLSAgICAgICAgICAgIHJldHVybiBUZXN0SW5m
byhzZWxmLl9wb3J0LCB0ZXN0X2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKQotICAgICAgICByZXR1cm4gVGVzdEluZm8oc2Vs
Zi5fcG9ydCwgdGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKQotCi0gICAgZGVm
IF9nZXRfdGVzdF9maWxlX3F1ZXVlKHNlbGYsIHRlc3RfZmlsZXMpOgotICAgICAgICAiIiJDcmVh
dGUgdGhlIHRocmVhZCBzYWZlIHF1ZXVlIG9mIGxpc3RzIG9mICh0ZXN0IGZpbGVuYW1lcywgdGVz
dCBVUklzKQotICAgICAgICB0dXBsZXMuIEVhY2ggVGVzdFNoZWxsVGhyZWFkIHB1bGxzIGEgbGlz
dCBmcm9tIHRoaXMgcXVldWUgYW5kIHJ1bnMKLSAgICAgICAgdGhvc2UgdGVzdHMgaW4gb3JkZXIg
YmVmb3JlIGdyYWJiaW5nIHRoZSBuZXh0IGF2YWlsYWJsZSBsaXN0LgotCi0gICAgICAgIFNoYXJk
IHRoZSBsaXN0cyBieSBkaXJlY3RvcnkuIFRoaXMgaGVscHMgZW5zdXJlIHRoYXQgdGVzdHMgdGhh
dCBkZXBlbmQKLSAgICAgICAgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0ZXN0cyEpIGNvbnRpbnVl
IHRvIHJ1biB0b2dldGhlciBhcyBtb3N0Ci0gICAgICAgIGNyb3NzLXRlc3RzIGRlcGVuZGVuY2ll
cyB0ZW5kIHRvIG9jY3VyIHdpdGhpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLSAgICAgICAgUmV0
dXJuOgotICAgICAgICAgIFRoZSBRdWV1ZSBvZiBsaXN0cyBvZiBUZXN0SW5mbyBvYmplY3RzLgot
ICAgICAgICAiIiIKLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5leHBlcmltZW50YWxfZnVs
bHlfcGFyYWxsZWwgb3IKLSAgICAgICAgICAgIHNlbGYuX2lzX3NpbmdsZV90aHJlYWRlZCgpKToK
LSAgICAgICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICAgICAg
Zm9yIHRlc3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lX3F1
ZXVlLnB1dCgKLSAgICAgICAgICAgICAgICAgICAgKCcuJywgW3NlbGYuX2dldF90ZXN0X2luZm9f
Zm9yX2ZpbGUodGVzdF9maWxlKV0pKQotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lX3F1ZXVl
Ci0KLSAgICAgICAgdGVzdHNfYnlfZGlyID0ge30KLSAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0
ZXN0X2ZpbGVzOgotICAgICAgICAgICAgZGlyZWN0b3J5ID0gc2VsZi5fZ2V0X2Rpcl9mb3JfdGVz
dF9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRp
cmVjdG9yeSwgW10pCi0gICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5hcHBlbmQo
Ci0gICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3Rlc3RfaW5mb19mb3JfZmlsZSh0ZXN0X2ZpbGUp
KQotCi0gICAgICAgICMgU29ydCBieSB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoZSBkaXIgc28g
dGhhdCB0aGUgb25lcyB3aXRoIHRoZQotICAgICAgICAjIG1vc3QgdGVzdHMgZ2V0IHJ1biBmaXJz
dCBpbiBvcmRlciB0byBtYXhpbWl6ZSBwYXJhbGxlbGl6YXRpb24uCi0gICAgICAgICMgTnVtYmVy
IG9mIHRlc3RzIGlzIGEgZ29vZCBlbm91Z2gsIGJ1dCBub3QgcGVyZmVjdCwgYXBwcm94aW1hdGlv
bgotICAgICAgICAjIG9mIGhvdyBsb25nIHRoYXQgc2V0IG9mIHRlc3RzIHdpbGwgdGFrZSB0byBy
dW4uIFdlIGNhbid0IGp1c3QgdXNlCi0gICAgICAgICMgYSBQcmlvcml0eVF1ZXVlIHVudGlsIHdl
IG1vdmUgIyB0byBQeXRob24gMi42LgotICAgICAgICB0ZXN0X2xpc3RzID0gW10KLSAgICAgICAg
aHR0cF90ZXN0cyA9IE5vbmUKLSAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiB0ZXN0c19ieV9kaXI6
Ci0gICAgICAgICAgICB0ZXN0X2xpc3QgPSB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XQotICAgICAg
ICAgICAgIyBLZWVwIHRoZSB0ZXN0cyBpbiBhbHBoYWJldGljYWwgb3JkZXIuCi0gICAgICAgICAg
ICAjIFRPRE86IFJlbW92ZSBvbmNlIHRlc3RzIGFyZSBmaXhlZCBzbyB0aGV5IGNhbiBiZSBydW4g
aW4gYW55Ci0gICAgICAgICAgICAjIG9yZGVyLgotICAgICAgICAgICAgdGVzdF9saXN0LnJldmVy
c2UoKQotICAgICAgICAgICAgdGVzdF9saXN0X3R1cGxlID0gKGRpcmVjdG9yeSwgdGVzdF9saXN0
KQotICAgICAgICAgICAgaWYgZGlyZWN0b3J5ID09ICdMYXlvdXRUZXN0cycgKyBvcy5zZXAgKyAn
aHR0cCc6Ci0gICAgICAgICAgICAgICAgaHR0cF90ZXN0cyA9IHRlc3RfbGlzdF90dXBsZQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZXN0X2xpc3RzLmFwcGVuZCh0ZXN0X2xp
c3RfdHVwbGUpCi0gICAgICAgIHRlc3RfbGlzdHMuc29ydChsYW1iZGEgYSwgYjogY21wKGxlbihi
WzFdKSwgbGVuKGFbMV0pKSkKLQotICAgICAgICAjIFB1dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdC4g
VGhlcmUgYXJlIG9ubHkgYSBjb3VwbGUgaHVuZHJlZCBvZiB0aGVtLAotICAgICAgICAjIGJ1dCBl
YWNoIGh0dHAgdGVzdCB0YWtlcyBhIHZlcnkgbG9uZyB0aW1lIHRvIHJ1biwgc28gc29ydGluZyBi
eSB0aGUKLSAgICAgICAgIyBudW1iZXIgb2YgdGVzdHMgZG9lc24ndCBhY2N1cmF0ZWx5IGNhcHR1
cmUgaG93IGxvbmcgdGhleSB0YWtlIHRvIHJ1bi4KLSAgICAgICAgaWYgaHR0cF90ZXN0czoKLSAg
ICAgICAgICAgIHRlc3RfbGlzdHMuaW5zZXJ0KDAsIGh0dHBfdGVzdHMpCi0KLSAgICAgICAgZmls
ZW5hbWVfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlz
dHM6Ci0gICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRlbSkKLSAgICAgICAgcmV0dXJu
IGZpbGVuYW1lX3F1ZXVlCi0KLSAgICBkZWYgX2dldF90ZXN0X3NoZWxsX2FyZ3Moc2VsZiwgaW5k
ZXgpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSB0dXBsZSBvZiBhcmd1bWVudHMgZm9yIHRlc3Rz
IGFuZCBmb3IgdGVzdF9zaGVsbC4iIiIKLSAgICAgICAgc2hlbGxfYXJncyA9IFtdCi0gICAgICAg
IHRlc3RfYXJncyA9IHRlc3RfdHlwZV9iYXNlLlRlc3RBcmd1bWVudHMoKQotICAgICAgICBwbmdf
cGF0aCA9IE5vbmUKLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMubm9fcGl4ZWxfdGVzdHM6
Ci0gICAgICAgICAgICBwbmdfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3Vs
dHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBuZ19y
ZXN1bHQlcy5wbmciICUgaW5kZXgpCi0gICAgICAgICAgICBzaGVsbF9hcmdzLmFwcGVuZCgiLS1w
aXhlbC10ZXN0cz0iICsgcG5nX3BhdGgpCi0gICAgICAgICAgICB0ZXN0X2FyZ3MucG5nX3BhdGgg
PSBwbmdfcGF0aAotCi0gICAgICAgIHRlc3RfYXJncy5uZXdfYmFzZWxpbmUgPSBzZWxmLl9vcHRp
b25zLm5ld19iYXNlbGluZQotCi0gICAgICAgIHRlc3RfYXJncy5zaG93X3NvdXJjZXMgPSBzZWxm
Ll9vcHRpb25zLnNvdXJjZXMKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnN0YXJ0dXBfZGlh
bG9nOgotICAgICAgICAgICAgc2hlbGxfYXJncy5hcHBlbmQoJy0tdGVzdHNoZWxsLXN0YXJ0dXAt
ZGlhbG9nJykKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdwX2ZhdWx0X2Vycm9yX2JveDoK
LSAgICAgICAgICAgIHNoZWxsX2FyZ3MuYXBwZW5kKCctLWdwLWZhdWx0LWVycm9yLWJveCcpCi0K
LSAgICAgICAgcmV0dXJuIHRlc3RfYXJncywgcG5nX3BhdGgsIHNoZWxsX2FyZ3MKLQotICAgIGRl
ZiBfY29udGFpbnNfdGVzdHMoc2VsZiwgc3ViZGlyKToKLSAgICAgICAgZm9yIHRlc3RfZmlsZSBp
biBzZWxmLl90ZXN0X2ZpbGVzOgotICAgICAgICAgICAgaWYgdGVzdF9maWxlLmZpbmQoc3ViZGly
KSA+PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxz
ZQotCi0gICAgZGVmIF9pbnN0YW50aWF0ZV90ZXN0X3NoZWxsX3RocmVhZHMoc2VsZiwgdGVzdF9m
aWxlcywgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJJbnN0YW50aXRhdGVzIGFuZCBzdGFy
dHMgdGhlIFRlc3RTaGVsbFRocmVhZChzKS4KLQotICAgICAgICBSZXR1cm46Ci0gICAgICAgICAg
VGhlIGxpc3Qgb2YgdGhyZWFkcy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVl
ID0gc2VsZi5fZ2V0X3Rlc3RfZmlsZV9xdWV1ZSh0ZXN0X2ZpbGVzKQotCi0gICAgICAgICMgSW5z
dGFudGlhdGUgVGVzdFNoZWxsVGhyZWFkcyBhbmQgc3RhcnQgdGhlbS4KLSAgICAgICAgdGhyZWFk
cyA9IFtdCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShpbnQoc2VsZi5fb3B0aW9ucy5udW1fdGVz
dF9zaGVsbHMpKToKLSAgICAgICAgICAgICMgQ3JlYXRlIHNlcGFyYXRlIFRlc3RUeXBlcyBpbnN0
YW5jZXMgZm9yIGVhY2ggdGhyZWFkLgotICAgICAgICAgICAgdGVzdF90eXBlcyA9IFtdCi0gICAg
ICAgICAgICBmb3IgdCBpbiBzZWxmLl90ZXN0X3R5cGVzOgotICAgICAgICAgICAgICAgIHRlc3Rf
dHlwZXMuYXBwZW5kKHQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5wbGF0Zm9ybSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJl
Y3RvcnkpKQotCi0gICAgICAgICAgICB0ZXN0X2FyZ3MsIHBuZ19wYXRoLCBzaGVsbF9hcmdzID0g
c2VsZi5fZ2V0X3Rlc3Rfc2hlbGxfYXJncyhpKQotICAgICAgICAgICAgdGhyZWFkID0gdGVzdF9z
aGVsbF90aHJlYWQuVGVzdFNoZWxsVGhyZWFkKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfcXVldWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcmVzdWx0X3F1ZXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfdHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19wYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsX2FyZ3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX3NpbmdsZV90aHJlYWRlZCgp
OgotICAgICAgICAgICAgICAgIHRocmVhZC5ydW5faW5fbWFpbl90aHJlYWQoc2VsZiwgcmVzdWx0
X3N1bW1hcnkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRocmVhZC5zdGFy
dCgpCi0gICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWQpCi0KLSAgICAgICAgcmV0dXJu
IHRocmVhZHMKLQotICAgIGRlZiBfaXNfc2luZ2xlX3RocmVhZGVkKHNlbGYpOgotICAgICAgICAi
IiJSZXR1cm5zIHdoZXRoZXIgd2Ugc2hvdWxkIHJ1biBhbGwgdGhlIHRlc3RzIGluIHRoZSBtYWlu
IHRocmVhZC4iIiIKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9vcHRpb25zLm51bV90ZXN0X3No
ZWxscykgPT0gMQotCi0gICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgZmlsZV9saXN0LCByZXN1bHRf
c3VtbWFyeSk6Ci0gICAgICAgICIiIlJ1bnMgdGhlIHRlc3RzIGluIHRoZSBmaWxlX2xpc3QuCi0K
LSAgICAgICAgUmV0dXJuOiBBIHR1cGxlIChmYWlsdXJlcywgdGhyZWFkX3RpbWluZ3MsIHRlc3Rf
dGltaW5ncywKLSAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQotICAgICAgICAg
ICAgZmFpbHVyZXMgaXMgYSBtYXAgZnJvbSB0ZXN0IHRvIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcwot
ICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MgaXMgYSBsaXN0IG9mIGRpY3RzIHdpdGggdGhlIHRv
dGFsIHJ1bnRpbWUKLSAgICAgICAgICAgICAgb2YgZWFjaCB0aHJlYWQgd2l0aCAnbmFtZScsICdu
dW1fdGVzdHMnLCAndG90YWxfdGltZScgcHJvcGVydGllcwotICAgICAgICAgICAgdGVzdF90aW1p
bmdzIGlzIGEgbGlzdCBvZiB0aW1pbmdzIGZvciBlYWNoIHNoYXJkZWQgc3ViZGlyZWN0b3J5Ci0g
ICAgICAgICAgICAgIG9mIHRoZSBmb3JtIFt0aW1lLCBkaXJlY3RvcnlfbmFtZSwgbnVtX3Rlc3Rz
XQotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgaXMgYSBsaXN0IG9mIHJ1biB0
aW1lcyBmb3IgZWFjaCB0ZXN0Ci0gICAgICAgICAgICAgIGluIHRoZSBmb3JtIHtmaWxlbmFtZTpm
aWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1lfQotICAgICAgICAgICAgcmVzdWx0
X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRlIHdpdGggdGhlIHJlc3VsdHMKLSAg
ICAgICAgIiIiCi0gICAgICAgIHRocmVhZHMgPSBzZWxmLl9pbnN0YW50aWF0ZV90ZXN0X3NoZWxs
X3RocmVhZHMoZmlsZV9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQotCi0gICAgICAgICMgV2FpdCBmb3Ig
dGhlIHRocmVhZHMgdG8gZmluaXNoIGFuZCBjb2xsZWN0IHRlc3QgZmFpbHVyZXMuCi0gICAgICAg
IGZhaWx1cmVzID0ge30KLSAgICAgICAgdGVzdF90aW1pbmdzID0ge30KLSAgICAgICAgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3MgPSBbXQotICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKLSAgICAgICAgICAg
ICAgICB3aGlsZSB0aHJlYWQuaXNBbGl2ZSgpOgotICAgICAgICAgICAgICAgICAgICAjIExldCBp
dCB0aW1lb3V0IG9jY2FzaW9uYWxseSBzbyBpdCBjYW4gbm90aWNlIGEKLSAgICAgICAgICAgICAg
ICAgICAgIyBLZXlib2FyZEludGVycnVwdC4gQWN0dWFsbHksIHRoZSB0aW1lb3V0IGRvZXNuJ3QK
LSAgICAgICAgICAgICAgICAgICAgIyByZWFsbHkgbWF0dGVyOiBhcHBhcmVudGx5IGl0IHN1ZmZp
Y2VzIHRvIG5vdCB1c2UKLSAgICAgICAgICAgICAgICAgICAgIyBhbiBpbmRlZmluaXRlIGJsb2Nr
aW5nIGpvaW4gZm9yIGl0IHRvCi0gICAgICAgICAgICAgICAgICAgICMgYmUgaW50ZXJydXB0aWJs
ZSBieSBLZXlib2FyZEludGVycnVwdC4KLSAgICAgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4o
MC4xKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHJlc3VsdF9zdW1t
YXJ5KQotICAgICAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLmFwcGVuZCh7J25hbWUnOiB0aHJl
YWQuZ2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251
bV90ZXN0cyc6IHRocmVhZC5nZXRfbnVtX3Rlc3RzKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRfdG90YWxfdGltZSgpfSkK
LSAgICAgICAgICAgICAgICB0ZXN0X3RpbWluZ3MudXBkYXRlKHRocmVhZC5nZXRfZGlyZWN0b3J5
X3RpbWluZ19zdGF0cygpKQotICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
LmV4dGVuZCgKLSAgICAgICAgICAgICAgICAgICAgdGhyZWFkLmdldF9pbmRpdmlkdWFsX3Rlc3Rf
c3RhdHMoKSkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAg
Zm9yIHRocmVhZCBpbiB0aHJlYWRzOgotICAgICAgICAgICAgICAgIHRocmVhZC5jYW5jZWwoKQot
ICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRzOgotICAgICAg
ICAgICAgIyBDaGVjayB3aGV0aGVyIGEgVGVzdFNoZWxsVGhyZWFkIGRpZWQgYmVmb3JlIG5vcm1h
bCBjb21wbGV0aW9uLgotICAgICAgICAgICAgZXhjZXB0aW9uX2luZm8gPSB0aHJlYWQuZ2V0X2V4
Y2VwdGlvbl9pbmZvKCkKLSAgICAgICAgICAgIGlmIGV4Y2VwdGlvbl9pbmZvIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgICMgUmUtcmFpc2UgdGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJl
IHRvIG1ha2UgaXQgY2xlYXIgdGhhdAotICAgICAgICAgICAgICAgICMgdGVzdGluZyB3YXMgYWJv
cnRlZC4gT3RoZXJ3aXNlLCB0aGUgdGVzdHMgdGhhdCBkaWQgbm90IHJ1bgotICAgICAgICAgICAg
ICAgICMgd291bGQgYmUgYXNzdW1lZCB0byBoYXZlIHBhc3NlZC4KLSAgICAgICAgICAgICAgICBy
YWlzZSBleGNlcHRpb25faW5mb1swXSwgZXhjZXB0aW9uX2luZm9bMV0sIGV4Y2VwdGlvbl9pbmZv
WzJdCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgcGljayB1cCBhbnkgcmVtYWluaW5nIHRlc3Rz
LgotICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5KQotICAgICAgICBy
ZXR1cm4gKHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQotCi0gICAgZGVmIG5lZWRzX2h0dHAoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgd2hl
dGhlciB0aGUgdGVzdCBydW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCi0gICAgICAgIHJl
dHVybiBzZWxmLl9jb250YWluc190ZXN0cyhzZWxmLkhUVFBfU1VCRElSKQotCi0gICAgZGVmIHJ1
bihzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlJ1biBhbGwgb3VyIHRlc3RzIG9u
IGFsbCBvdXIgdGVzdCBmaWxlcy4KLQotICAgICAgICBGb3IgZWFjaCB0ZXN0IGZpbGUsIHdlIHJ1
biBlYWNoIHRlc3QgdHlwZS4gSWYgdGhlcmUgYXJlIGFueSBmYWlsdXJlcywKLSAgICAgICAgd2Ug
Y29sbGVjdCB0aGVtIGZvciByZXBvcnRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9iamVjdCB0cmFja2luZyB0aGUgdGVzdCByZXN1bHRz
LgotCi0gICAgICAgIFJldHVybjoKLSAgICAgICAgICBXZSByZXR1cm4gbm9uemVybyBpZiB0aGVy
ZSBhcmUgcmVncmVzc2lvbnMgY29tcGFyZWQgdG8gdGhlIGxhc3QgcnVuLgotICAgICAgICAiIiIK
LSAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICByZXR1cm4gMAot
ICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLQotICAgICAgICBpZiBzZWxmLm5lZWRz
X2h0dHAoKToKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQotCi0g
ICAgICAgIGlmIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuV0VCU09DS0VUX1NVQkRJUik6Ci0g
ICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQotICAgICAgICAg
ICAgIyBzZWxmLl93ZWJzb2NrZXRfc2VjdXJlX3NlcnZlci5TdGFydCgpCi0KLSAgICAgICAgdGhy
ZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSAoCi0g
ICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRf
c3VtbWFyeSkpCi0KLSAgICAgICAgIyBXZSBleGNsdWRlIHRoZSBjcmFzaGVzIGZyb20gdGhlIGxp
c3Qgb2YgcmVzdWx0cyB0byByZXRyeSwgYmVjYXVzZQotICAgICAgICAjIHdlIHdhbnQgdG8gdHJl
YXQgZXZlbiBhIHBvdGVudGlhbGx5IGZsYWt5IGNyYXNoIGFzIGFuIGVycm9yLgotICAgICAgICBm
YWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9jcmFz
aGVzPUZhbHNlKQotICAgICAgICByZXRyaWVzID0gMAotICAgICAgICByZXRyeV9zdW1tYXJ5ID0g
cmVzdWx0X3N1bW1hcnkKLSAgICAgICAgd2hpbGUgKHJldHJpZXMgPCBzZWxmLk5VTV9SRVRSWV9P
Tl9VTkVYUEVDVEVEX0ZBSUxVUkUgYW5kCi0gICAgICAgICAgICAgICBsZW4oZmFpbHVyZXMpKToK
LSAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoIlJldHJ5aW5nICVkIHVuZXhwZWN0ZWQgZmFpbHVy
ZShzKSIgJSBsZW4oZmFpbHVyZXMpKQotICAgICAgICAgICAgcmV0cmllcyArPSAxCi0gICAgICAg
ICAgICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIGZh
aWx1cmVzLmtleXMoKSkKLSAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJlcy5rZXlz
KCksIHJldHJ5X3N1bW1hcnkpCi0gICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWls
dXJlcyhyZXRyeV9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLQotICAgICAgICBlbmRf
dGltZSA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgd3JpdGUgPSBjcmVhdGVfbG9nZ2luZ193cml0
ZXIoc2VsZi5fb3B0aW9ucywgJ3RpbWluZycpCi0gICAgICAgIHNlbGYuX3ByaW50X3RpbWluZ19z
dGF0aXN0aWNzKHdyaXRlLCBlbmRfdGltZSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSkKLQotICAg
ICAgICBzZWxmLl9tZXRlci51cGRhdGUoIiIpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52
ZXJib3NlOgotICAgICAgICAgICAgIyBXZSB3cml0ZSB0aGlzIGJsb2NrIHRvIHN0ZG91dCBmb3Ig
Y29tcGF0aWJpbGl0eSB3aXRoIHRoZQotICAgICAgICAgICAgIyBidWlsZGJvdCBsb2cgcGFyc2Vy
LCB3aGljaCBvbmx5IGxvb2tzIGF0IHN0ZG91dCwgbm90IHN0ZGVyciA6KAotICAgICAgICAgICAg
d3JpdGUgPSBsYW1iZGEgczogc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSBzKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgd3JpdGUgPSBjcmVhdGVfbG9nZ2luZ193cml0ZXIoc2VsZi5fb3B0
aW9ucywgJ2FjdHVhbCcpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnkod3Jp
dGUsIHJlc3VsdF9zdW1tYXJ5KQotCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAg
ICBzeXMuc3RkZXJyLmZsdXNoKCkKLQotICAgICAgICBpZiAoTE9HX0RFVEFJTEVEX1BST0dSRVNT
IGluIHNlbGYuX29wdGlvbnMubG9nIG9yCi0gICAgICAgICAgICAoTE9HX1VORVhQRUNURUQgaW4g
c2VsZi5fb3B0aW9ucy5sb2cgYW5kCi0gICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudG90YWwg
IT0gcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQpKToKLSAgICAgICAgICAgIHByaW50Ci0KLSAgICAg
ICAgIyBUaGlzIHN1bW1hcnkgZGF0YSBnZXRzIHdyaXR0ZW4gdG8gc3Rkb3V0IHJlZ2FyZGxlc3Mg
b2YgbG9nIGxldmVsCi0gICAgICAgIHNlbGYuX3ByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0
X3N1bW1hcnkudG90YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
X3N1bW1hcnkuZXhwZWN0ZWQpCi0KLSAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gc2VsZi5f
c3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhyZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAg
IHJldHJ5X3N1bW1hcnkpCi0gICAgICAgIHNlbGYuX3ByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyh1
bmV4cGVjdGVkX3Jlc3VsdHMpCi0KLSAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxv
ZyBmaWxlcy4KLSAgICAgICAgc2VsZi5fd3JpdGVfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3Vs
dHMsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5ncykKLQotICAgICAgICAjIFdyaXRlIHRoZSBzdW1tYXJ5IHRvIGRpc2sg
KHJlc3VsdHMuaHRtbCkgYW5kIG1heWJlIG9wZW4gdGhlCi0gICAgICAgICMgdGVzdF9zaGVsbCB0
byB0aGlzIGZpbGUuCi0gICAgICAgIHdyb3RlX3Jlc3VsdHMgPSBzZWxmLl93cml0ZV9yZXN1bHRz
X2h0bWxfZmlsZShyZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMu
bm9zaG93X3Jlc3VsdHMgYW5kIHdyb3RlX3Jlc3VsdHM6Ci0gICAgICAgICAgICBzZWxmLl9zaG93
X3Jlc3VsdHNfaHRtbF9maWxlKCkKLQotICAgICAgICAjIElnbm9yZSBmbGFreSBmYWlsdXJlcyBh
bmQgdW5leHBlY3RlZCBwYXNzZXMgc28gd2UgZG9uJ3QgdHVybiB0aGUKLSAgICAgICAgIyBib3Qg
cmVkIGZvciB0aG9zZS4KLSAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX3Jl
Z3Jlc3Npb25zJ10KLQotICAgIGRlZiB1cGRhdGVfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFy
eSk6Ci0gICAgICAgICIiIlVwZGF0ZSB0aGUgc3VtbWFyeSB3aGlsZSBydW5uaW5nIHRlc3RzLiIi
IgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
ICh0ZXN0LCBmYWlsX2xpc3QpID0gc2VsZi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKQotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfZmFpbHVyZXMuZGV0ZXJtaW5lX3Jlc3VsdF90eXBl
KGZhaWxfbGlzdCkKLSAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9u
cy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCh0ZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS5hZGQodGVzdCwgZmFpbF9saXN0LCByZXN1
bHQsIGV4cGVjdGVkKQotICAgICAgICAgICAgICAgIGlmIChMT0dfREVUQUlMRURfUFJPR1JFU1Mg
aW4gc2VsZi5fb3B0aW9ucy5sb2cgYW5kCi0gICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRp
b25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCBvcgotICAgICAgICAgICAgICAgICAgICAg
c2VsZi5faXNfc2luZ2xlX3RocmVhZGVkKCkpKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
ZGlzcGxheV9kZXRhaWxlZF9wcm9ncmVzcyhyZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXhwZWN0ZWQgYW5kIExPR19VTkVY
UEVDVEVEIGluIHNlbGYuX29wdGlvbnMubG9nOgotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRfdW5leHBlY3RlZF90ZXN0X3Jlc3VsdCh0ZXN0LCByZXN1bHQpCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Rpc3BsYXlfb25lX2xpbmVfcHJvZ3Jlc3MocmVzdWx0X3N1bW1hcnkp
Ci0gICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICBkZWYgX2Rpc3BsYXlfb25lX2xpbmVfcHJvZ3Jlc3Moc2VsZiwgcmVzdWx0X3N1bW1h
cnkpOgotICAgICAgICAiIiJEaXNwbGF5cyB0aGUgcHJvZ3Jlc3MgdGhyb3VnaCB0aGUgdGVzdCBy
dW4uIiIiCi0gICAgICAgIHNlbGYuX21ldGVyLnVwZGF0ZSgiVGVzdGluZzogJWQgcmFuIGFzIGV4
cGVjdGVkLCAlZCBkaWRuJ3QsICVkIGxlZnQiICUKLSAgICAgICAgICAgIChyZXN1bHRfc3VtbWFy
eS5leHBlY3RlZCwgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZCwKLSAgICAgICAgICAgICByZXN1
bHRfc3VtbWFyeS5yZW1haW5pbmcpKQotCi0gICAgZGVmIF9kaXNwbGF5X2RldGFpbGVkX3Byb2dy
ZXNzKHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiRGlzcGxheSBkZXRhaWxlZCBw
cm9ncmVzcyBvdXRwdXQgd2hlcmUgd2UgcHJpbnQgdGhlIGRpcmVjdG9yeSBuYW1lCi0gICAgICAg
IGFuZCBvbmUgZG90IGZvciBlYWNoIGNvbXBsZXRlZCB0ZXN0LiBUaGlzIGlzIHRyaWdnZXJlZCBi
eQotICAgICAgICAiLS1sb2cgZGV0YWlsZWQtcHJvZ3Jlc3MiLiIiIgotICAgICAgICBpZiBzZWxm
Ll9jdXJyZW50X3Rlc3RfbnVtYmVyID09IGxlbihzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpOgotICAg
ICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbmV4dF90ZXN0ID0gc2VsZi5fdGVzdF9maWxlc19s
aXN0W3NlbGYuX2N1cnJlbnRfdGVzdF9udW1iZXJdCi0gICAgICAgIG5leHRfZGlyID0gb3MucGF0
aC5kaXJuYW1lKAotICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1l
KG5leHRfdGVzdCkpCi0gICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyID09ICIi
OgotICAgICAgICAgICAgc2VsZi5fY3VycmVudF9wcm9ncmVzc19zdHIgPSAiJXM6ICIgJSAobmV4
dF9kaXIpCi0gICAgICAgICAgICBzZWxmLl9jdXJyZW50X2RpciA9IG5leHRfZGlyCi0KLSAgICAg
ICAgd2hpbGUgbmV4dF90ZXN0IGluIHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHM6Ci0gICAgICAgICAg
ICBpZiBuZXh0X2RpciAhPSBzZWxmLl9jdXJyZW50X2RpcjoKLSAgICAgICAgICAgICAgICBzZWxm
Ll9tZXRlci53cml0ZSgiJXNcbiIgJSAoc2VsZi5fY3VycmVudF9wcm9ncmVzc19zdHIpKQotICAg
ICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyID0gIiVzOiAuIiAlIChuZXh0
X2RpcikKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2RpciA9IG5leHRfZGlyCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3Ry
ICs9ICIuIgotCi0gICAgICAgICAgICBpZiAobmV4dF90ZXN0IGluIHJlc3VsdF9zdW1tYXJ5LnVu
ZXhwZWN0ZWRfcmVzdWx0cyBhbmQKLSAgICAgICAgICAgICAgICBMT0dfVU5FWFBFQ1RFRCBpbiBz
ZWxmLl9vcHRpb25zLmxvZyk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0X3N1bW1h
cnkudW5leHBlY3RlZF9yZXN1bHRzW25leHRfdGVzdF0KLSAgICAgICAgICAgICAgICBzZWxmLl9t
ZXRlci53cml0ZSgiJXNcbiIgJSBzZWxmLl9jdXJyZW50X3Byb2dyZXNzX3N0cikKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wcmludF91bmV4cGVjdGVkX3Rlc3RfcmVzdWx0KG5leHRfdGVzdCwgcmVz
dWx0KQotICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyID0gIiVzOiAi
ICUgc2VsZi5fY3VycmVudF9kaXIKLQotICAgICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X251
bWJlciArPSAxCi0gICAgICAgICAgICBpZiBzZWxmLl9jdXJyZW50X3Rlc3RfbnVtYmVyID09IGxl
bihzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAg
ICAgICAgIG5leHRfdGVzdCA9IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdFtzZWxmLl9jdXJyZW50X3Rl
c3RfbnVtYmVyXQotICAgICAgICAgICAgbmV4dF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKG5leHRfdGVzdCkp
Ci0KLSAgICAgICAgaWYgcmVzdWx0X3N1bW1hcnkucmVtYWluaW5nOgotICAgICAgICAgICAgcmVt
YWluX3N0ciA9ICIgKCVkKSIgJSAocmVzdWx0X3N1bW1hcnkucmVtYWluaW5nKQotICAgICAgICAg
ICAgc2VsZi5fbWV0ZXIudXBkYXRlKCIlcyVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyLCByZW1haW5fc3RyKSkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHNlbGYuX21ldGVyLndyaXRlKCIlc1xuIiAlIChzZWxmLl9jdXJy
ZW50X3Byb2dyZXNzX3N0cikpCi0KLSAgICBkZWYgX2dldF9mYWlsdXJlcyhzZWxmLCByZXN1bHRf
c3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzKToKLSAgICAgICAgIiIiRmlsdGVycyBhIGRpY3Qgb2Yg
cmVzdWx0cyBhbmQgcmV0dXJucyBvbmx5IHRoZSBmYWlsdXJlcy4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBydW4KLSAg
ICAgICAgICBpbmNsdWRlX2NyYXNoZXM6IHdoZXRoZXIgY3Jhc2hlcyBhcmUgaW5jbHVkZWQgaW4g
dGhlIG91dHB1dC4KLSAgICAgICAgICAgIFdlIHVzZSBGYWxzZSB3aGVuIGZpbmRpbmcgdGhlIGxp
c3Qgb2YgZmFpbHVyZXMgdG8gcmV0cnkKLSAgICAgICAgICAgIHRvIHNlZSBpZiB0aGUgcmVzdWx0
cyB3ZXJlIGZsYWt5LiBBbHRob3VnaCB0aGUgY3Jhc2hlcyBtYXkgYWxzbyBiZQotICAgICAgICAg
ICAgZmxha3ksIHdlIHRyZWF0IHRoZW0gYXMgaWYgdGhleSBhcmVuJ3Qgc28gdGhhdCB0aGV5J3Jl
IG5vdCBpZ25vcmVkLgotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIGEgZGljdCBvZiBmaWxl
cyAtPiByZXN1bHRzCi0gICAgICAgICIiIgotICAgICAgICBmYWlsZWRfcmVzdWx0cyA9IHt9Ci0g
ICAgICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1
bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0
aW9ucy5QQVNTIG9yCi0gICAgICAgICAgICAgICAgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25z
LkNSQVNIIGFuZCBub3QgaW5jbHVkZV9jcmFzaGVzKToKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgZmFpbGVkX3Jlc3VsdHNbdGVzdF0gPSByZXN1bHQKLQotICAgICAgICBy
ZXR1cm4gZmFpbGVkX3Jlc3VsdHMKLQotICAgIGRlZiBfc3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVz
dWx0cyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSk6Ci0gICAgICAgICIiIlN1
bW1hcml6ZSBhbnkgdW5leHBlY3RlZCByZXN1bHRzIGFzIGEgZGljdC4KLQotICAgICAgICBUT0RP
KGRwcmFua2UpOiBzcGxpdCB0aGlzIGRhdGEgc3RydWN0dXJlIGludG8gYSBzZXBhcmF0ZSBjbGFz
cz8KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9i
amVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCi0gICAgICAgICAgcmV0cnlfc3VtbWFyeTogc3Vt
bWFyeSBvYmplY3QgZnJvbSBmaW5hbCB0ZXN0IHJ1biBvZiByZXRyaWVkIHRlc3RzCi0gICAgICAg
IFJldHVybnM6Ci0gICAgICAgICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9m
IHRoZSB1bmV4cGVjdGVkIHJlc3VsdHMgZnJvbSB0aGUKLSAgICAgICAgICBydW4sIHdpdGggdGhl
IGZvbGxvd2luZyBmaWVsZHM6Ci0gICAgICAgICAgICAndmVyc2lvbic6IGEgdmVyc2lvbiBpbmRp
Y2F0b3IgKDEgaW4gdGhpcyB2ZXJzaW9uKQotICAgICAgICAgICAgJ2ZpeGFibGUnOiAjIG9mIGZp
eGFibGUgdGVzdHMgKE5PVyAtIFBBU1MpCi0gICAgICAgICAgICAnc2tpcHBlZCc6ICMgb2Ygc2tp
cHBlZCB0ZXN0cyAoTk9XICYgU0tJUFBFRCkKLSAgICAgICAgICAgICdudW1fcmVncmVzc2lvbnMn
OiAjIG9mIG5vbi1mbGFreSBmYWlsdXJlcwotICAgICAgICAgICAgJ251bV9mbGFreSc6ICMgb2Yg
Zmxha3kgZmFpbHVyZXMKLSAgICAgICAgICAgICdudW1fcGFzc2VzJzogIyBvZiB1bmV4cGVjdGVk
IHBhc3NlcwotICAgICAgICAgICAgJ3Rlc3RzJzogYSBkaWN0IG9mIHRlc3RzIC0+IHsnZXhwZWN0
ZWQnOiAnLi4uJywgJ2FjdHVhbCc6ICcuLi4nfQotICAgICAgICAiIiIKLSAgICAgICAgcmVzdWx0
cyA9IHt9Ci0gICAgICAgIHJlc3VsdHNbJ3ZlcnNpb24nXSA9IDEKLQotICAgICAgICB0YmUgPSBy
ZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvbgotICAgICAgICB0YnQgPSByZXN1bHRf
c3VtbWFyeS50ZXN0c19ieV90aW1lbGluZQotICAgICAgICByZXN1bHRzWydmaXhhYmxlJ10gPSBs
ZW4odGJ0W3Rlc3RfZXhwZWN0YXRpb25zLk5PV10gLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGJlW3Rlc3RfZXhwZWN0YXRpb25zLlBBU1NdKQotICAgICAgICByZXN1bHRzWydz
a2lwcGVkJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0YXRpb25zLk5PV10gJgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGJlW3Rlc3RfZXhwZWN0YXRpb25zLlNLSVBdKQotCi0gICAg
ICAgIG51bV9wYXNzZXMgPSAwCi0gICAgICAgIG51bV9mbGFreSA9IDAKLSAgICAgICAgbnVtX3Jl
Z3Jlc3Npb25zID0gMAotICAgICAgICBrZXl3b3JkcyA9IHt9Ci0gICAgICAgIGZvciBrLCB2IGlu
IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OUy5pdGVyaXRlbXMoKToKLSAgICAgICAg
ICAgIGtleXdvcmRzW3ZdID0gay51cHBlcigpCi0KLSAgICAgICAgdGVzdHMgPSB7fQotICAgICAg
ICBmb3IgZmlsZW5hbWUsIHJlc3VsdCBpbiByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3Vs
dHMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICAjIE5vdGUgdGhhdCBpZiBhIHRlc3QgY3Jhc2hl
ZCBpbiB0aGUgb3JpZ2luYWwgcnVuLCB3ZSBpZ25vcmUKLSAgICAgICAgICAgICMgd2hldGhlciBv
ciBub3QgaXQgY3Jhc2hlZCB3aGVuIHdlIHJldHJpZWQgaXQgKGlmIHdlIHJldHJpZWQgaXQpLAot
ICAgICAgICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVyIHRoZSByZXN1bHQgbm90IGZsYWt5Lgot
ICAgICAgICAgICAgdGVzdCA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxl
bmFtZSkKLSAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLmdldF9leHBl
Y3RhdGlvbnNfc3RyaW5nKGZpbGVuYW1lKQotICAgICAgICAgICAgYWN0dWFsID0gW2tleXdvcmRz
W3Jlc3VsdF1dCi0KLSAgICAgICAgICAgIGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5Q
QVNTOgotICAgICAgICAgICAgICAgIG51bV9wYXNzZXMgKz0gMQotICAgICAgICAgICAgZWxpZiBy
ZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6Ci0gICAgICAgICAgICAgICAgbnVtX3Jl
Z3Jlc3Npb25zICs9IDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgZmls
ZW5hbWUgbm90IGluIHJldHJ5X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzOgotICAgICAgICAg
ICAgICAgICAgICBhY3R1YWwuZXh0ZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
ZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsZW5hbWUpLnNwbGl0KCIgIikpCi0gICAgICAgICAgICAgICAgICAgIG51bV9mbGFr
eSArPSAxCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0cnlf
cmVzdWx0ID0gcmV0cnlfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHNbZmlsZW5hbWVdCi0gICAg
ICAgICAgICAgICAgICAgIGlmIHJlc3VsdCAhPSByZXRyeV9yZXN1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhY3R1YWwuYXBwZW5kKGtleXdvcmRzW3JldHJ5X3Jlc3VsdF0pCi0gICAgICAg
ICAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQotICAgICAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3JlZ3Jlc3Npb25zICs9IDEKLQotICAgICAg
ICAgICAgdGVzdHNbdGVzdF0gPSB7fQotICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2V4cGVjdGVk
J10gPSBleHBlY3RlZAotICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2FjdHVhbCddID0gIiAiLmpv
aW4oYWN0dWFsKQotCi0gICAgICAgIHJlc3VsdHNbJ3Rlc3RzJ10gPSB0ZXN0cwotICAgICAgICBy
ZXN1bHRzWydudW1fcGFzc2VzJ10gPSBudW1fcGFzc2VzCi0gICAgICAgIHJlc3VsdHNbJ251bV9m
bGFreSddID0gbnVtX2ZsYWt5Ci0gICAgICAgIHJlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddID0g
bnVtX3JlZ3Jlc3Npb25zCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGRlZiBfd3Jp
dGVfanNvbl9maWxlcyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpOgotICAgICAg
ICAiIiJXcml0ZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3QgcnVuIGFzIEpTT04gZmlsZXMgaW50
byB0aGUgcmVzdWx0cwotICAgICAgICBkaXIuCi0KLSAgICAgICAgVGhlcmUgYXJlIHRocmVlIGRp
ZmZlcmVudCBmaWxlcyB3cml0dGVuIGludG8gdGhlIHJlc3VsdHMgZGlyOgotICAgICAgICAgIHVu
ZXhwZWN0ZWRfcmVzdWx0cy5qc29uOiBBIHNob3J0IGxpc3Qgb2YgYW55IHVuZXhwZWN0ZWQgcmVz
dWx0cy4KLSAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBieSB0aGUgYnVpbGRib3RzIHRvIGRpc3Bs
YXkgcmVzdWx0cy4KLSAgICAgICAgICBleHBlY3RhdGlvbnMuanNvbjogVGhpcyBpcyB1c2VkIGJ5
IHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkLgotICAgICAgICAgIHJlc3VsdHMuanNvbjogQSBmdWxs
IGxpc3Qgb2YgdGhlIHJlc3VsdHMgLSB1c2VkIGJ5IHRoZSBmbGFraW5lc3MKLSAgICAgICAgICAg
IGRhc2hib2FyZCBhbmQgdGhlIGFnZ3JlZ2F0ZSByZXN1bHRzIGRhc2hib2FyZC4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0czogZGljdCBvZiB1bmV4cGVjdGVk
IHJlc3VsdHMKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogZnVsbCBzdW1tYXJ5IG9iamVjdAot
ICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBsaXN0IG9mIHRlc3QgdGltZXMgKHVz
ZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAgICAgZGFzaGJvYXJkKS4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGxvZ2dpbmcuZGVidWcoIldyaXRpbmcgSlNPTiBmaWxlcyBpbiAlcy4iICUKLSAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQotICAg
ICAgICB1bmV4cGVjdGVkX2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJl
c3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgInVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIiks
ICJ3IikKLSAgICAgICAgdW5leHBlY3RlZF9maWxlLndyaXRlKHNpbXBsZWpzb24uZHVtcHModW5l
eHBlY3RlZF9yZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlz
PVRydWUsIGluZGVudD0yKSkKLSAgICAgICAgdW5leHBlY3RlZF9maWxlLmNsb3NlKCkKLQotICAg
ICAgICAjIFdyaXRlIGEganNvbiBmaWxlIG9mIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmls
ZSBmb3IgdGhlIGxheW91dAotICAgICAgICAjIHRlc3RzIGRhc2hib2FyZC4KLSAgICAgICAgZXhw
ZWN0YXRpb25zX2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5LAotICAgICAgICAgICAgImV4cGVjdGF0aW9ucy5qc29uIiksICJ3IikKLSAgICAg
ICAgZXhwZWN0YXRpb25zX2pzb24gPSBcCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMu
Z2V0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1zKCkKLSAgICAgICAgZXhwZWN0
YXRpb25zX2ZpbGUud3JpdGUoIkFERF9FWFBFQ1RBVElPTlMoIiArIGV4cGVjdGF0aW9uc19qc29u
ICsgIik7IikKLSAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGUuY2xvc2UoKQotCi0gICAgICAgIGpz
b25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yKAot
ICAgICAgICAgICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5idWlsZGVyX25hbWUsIHNlbGYu
X29wdGlvbnMuYnVpbGRfbmFtZSwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuYnVpbGRfbnVt
YmVyLCBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgQlVJTERF
Ul9CQVNFX1VSTCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICBzZWxmLl9l
eHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCi0KLSAg
ICAgICAgbG9nZ2luZy5kZWJ1ZygiRmluaXNoZWQgd3JpdGluZyBKU09OIGZpbGVzLiIpCi0KLSAg
ICBkZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCB3cml0ZSwgcmVzdWx0
X3N1bW1hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
X3R5cGUsIHJlc3VsdF90eXBlX3N0cik6Ci0gICAgICAgICIiIlByaW50IHRoZSBudW1iZXIgb2Yg
dGhlIHRlc3RzIGluIGEgZ2l2ZW4gcmVzdWx0IGNsYXNzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAg
ICAgICAgd3JpdGU6IEEgY2FsbGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5nLiwgYSBMb2dnaW5n
V3JpdGVyKSBvcgotICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUuCi0gICAgICAgICAgcmVz
dWx0X3N1bW1hcnkgLSB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSByZXN1bHRzIHRvIHJl
cG9ydCBvbgotICAgICAgICAgIHJlc3VsdF90eXBlIC0gdGhlIHBhcnRpY3VsYXIgcmVzdWx0IHR5
cGUgdG8gcmVwb3J0IGluIHRoZSBzdW1tYXJ5LgotICAgICAgICAgIHJlc3VsdF90eXBlX3N0ciAt
IGEgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIHRoZSByZXN1bHRfdHlwZS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHRlc3RzID0gc2VsZi5fZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Jlc3VsdF90
eXBlKHJlc3VsdF90eXBlKQotICAgICAgICBub3cgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90
aW1lbGluZVt0ZXN0X2V4cGVjdGF0aW9ucy5OT1ddCi0gICAgICAgIHdvbnRmaXggPSByZXN1bHRf
c3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0ZXN0X2V4cGVjdGF0aW9ucy5XT05URklYXQotICAg
ICAgICBkZWZlciA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0
YXRpb25zLkRFRkVSXQotCi0gICAgICAgICMgV2UgdXNlIGEgZmFuY3kgZm9ybWF0IHN0cmluZyBp
biBvcmRlciB0byBwcmludCB0aGUgZGF0YSBvdXQgaW4gYQotICAgICAgICAjIG5pY2VseS1hbGln
bmVkIHRhYmxlLgotICAgICAgICBmbXRzdHIgPSAoIkV4cGVjdDogJSU1ZCAlJS04cyAoJSUlZGQg
bm93LCAlJSVkZCBkZWZlciwgJSUlZGQgd29udGZpeCkiCi0gICAgICAgICAgICAgICAgICAlIChz
ZWxmLl9udW1fZGlnaXRzKG5vdyksIHNlbGYuX251bV9kaWdpdHMoZGVmZXIpLAotICAgICAgICAg
ICAgICAgICAgc2VsZi5fbnVtX2RpZ2l0cyh3b250Zml4KSkpCi0gICAgICAgIHdyaXRlKGZtdHN0
ciAlIChsZW4odGVzdHMpLCByZXN1bHRfdHlwZV9zdHIsIGxlbih0ZXN0cyAmIG5vdyksCi0gICAg
ICAgICAgICAgIGxlbih0ZXN0cyAmIGRlZmVyKSwgbGVuKHRlc3RzICYgd29udGZpeCkpKQotCi0g
ICAgZGVmIF9udW1fZGlnaXRzKHNlbGYsIG51bSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG51
bWJlciBvZiBkaWdpdHMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIGEKLSAgICAg
ICAgc2VxdWVuY2UuIiIiCi0gICAgICAgIG5kaWdpdHMgPSAxCi0gICAgICAgIGlmIGxlbihudW0p
OgotICAgICAgICAgICAgbmRpZ2l0cyA9IGludChtYXRoLmxvZzEwKGxlbihudW0pKSkgKyAxCi0g
ICAgICAgIHJldHVybiBuZGlnaXRzCi0KLSAgICBkZWYgX3ByaW50X3RpbWluZ19zdGF0aXN0aWNz
KHNlbGYsIHdyaXRlLCB0b3RhbF90aW1lLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSk6
Ci0gICAgICAgICIiIlJlY29yZCB0aW1pbmctc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIHRoZSB0
ZXN0IHJ1bi4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHdyaXRlOiBBIGNhbGxiYWNrIHRv
IHdyaXRlIGluZm8gdG8gKGUuZy4sIGEgTG9nZ2luZ1dyaXRlcikgb3IKLSAgICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZS4KLSAgICAgICAgICB0b3RhbF90aW1lOiB0b3RhbCBlbGFwc2VkIHRp
bWUgKGluIHNlY29uZHMpIGZvciB0aGUgdGVzdCBydW4KLSAgICAgICAgICB0aHJlYWRfdGltaW5n
czogd2FsbCBjbG9jayB0aW1lIGVhY2ggdGhyZWFkIHJhbiBmb3IKLSAgICAgICAgICBkaXJlY3Rv
cnlfdGVzdF90aW1pbmdzOiB0aW1pbmcgYnkgZGlyZWN0b3J5Ci0gICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3M6IHRpbWluZyBieSBmaWxlCi0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6
IHN1bW1hcnkgb2JqZWN0IGZvciB0aGUgdGVzdCBydW4KLSAgICAgICAgIiIiCi0gICAgICAgIHdy
aXRlKCJUZXN0IHRpbWluZzoiKQotICAgICAgICB3cml0ZSgiICAlNi4yZiB0b3RhbCB0ZXN0aW5n
IHRpbWUiICUgdG90YWxfdGltZSkKLSAgICAgICAgd3JpdGUoIiIpCi0gICAgICAgIHdyaXRlKCJU
aHJlYWQgdGltaW5nOiIpCi0gICAgICAgIGN1bWxfdGltZSA9IDAKLSAgICAgICAgZm9yIHQgaW4g
dGhyZWFkX3RpbWluZ3M6Ci0gICAgICAgICAgICB3cml0ZSgiICAgICUxMHM6ICU1ZCB0ZXN0cywg
JTYuMmYgc2VjcyIgJQotICAgICAgICAgICAgICAgICAgKHRbJ25hbWUnXSwgdFsnbnVtX3Rlc3Rz
J10sIHRbJ3RvdGFsX3RpbWUnXSkpCi0gICAgICAgICAgICBjdW1sX3RpbWUgKz0gdFsndG90YWxf
dGltZSddCi0gICAgICAgIHdyaXRlKCIgICAlNi4yZiBjdW11bGF0aXZlLCAlNi4yZiBvcHRpbWFs
IiAlCi0gICAgICAgICAgICAgIChjdW1sX3RpbWUsIGN1bWxfdGltZSAvIGludChzZWxmLl9vcHRp
b25zLm51bV90ZXN0X3NoZWxscykpKQotICAgICAgICB3cml0ZSgiIikKLQotICAgICAgICBzZWxm
Ll9wcmludF9hZ2dyZWdhdGVfdGVzdF9zdGF0aXN0aWNzKHdyaXRlLCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncykKLSAgICAgICAgc2VsZi5fcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKHdyaXRl
LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQotICAgICAgICBzZWxmLl9wcmludF9kaXJlY3Rv
cnlfdGltaW5ncyh3cml0ZSwgZGlyZWN0b3J5X3Rlc3RfdGltaW5ncykKLQotICAgIGRlZiBfcHJp
bnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhzZWxmLCB3cml0ZSwgaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3MpOgotICAgICAgICAiIiJQcmludHMgYWdncmVnYXRlIHN0YXRpc3RpY3MgKGUuZy4g
bWVkaWFuLCBtZWFuLCBldGMuKSBmb3IgYWxsIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAg
ICAgIHdyaXRlOiBBIGNhbGxiYWNrIHRvIHdyaXRlIGluZm8gdG8gKGUuZy4sIGEgTG9nZ2luZ1dy
aXRlcikgb3IKLSAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZS4KLSAgICAgICAgICBpbmRp
dmlkdWFsX3Rlc3RfdGltaW5nczogTGlzdCBvZiB0ZXN0X3NoZWxsX3RocmVhZC5UZXN0U3RhdHMg
Zm9yIGFsbAotICAgICAgICAgICAgICB0ZXN0cy4KLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3Rf
dHlwZXMgPSBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nc1swXS50aW1lX2Zvcl9kaWZmcy5rZXlzKCkK
LSAgICAgICAgdGltZXNfZm9yX3Rlc3Rfc2hlbGwgPSBbXQotICAgICAgICB0aW1lc19mb3JfZGlm
Zl9wcm9jZXNzaW5nID0gW10KLSAgICAgICAgdGltZXNfcGVyX3Rlc3RfdHlwZSA9IHt9Ci0gICAg
ICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF90eXBlczoKLSAgICAgICAgICAgIHRpbWVzX3Blcl90
ZXN0X3R5cGVbdGVzdF90eXBlXSA9IFtdCi0KLSAgICAgICAgZm9yIHRlc3Rfc3RhdHMgaW4gaW5k
aXZpZHVhbF90ZXN0X3RpbWluZ3M6Ci0gICAgICAgICAgICB0aW1lc19mb3JfdGVzdF9zaGVsbC5h
cHBlbmQodGVzdF9zdGF0cy50ZXN0X3J1bl90aW1lKQotICAgICAgICAgICAgdGltZXNfZm9yX2Rp
ZmZfcHJvY2Vzc2luZy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgdGVzdF9zdGF0cy50b3RhbF90
aW1lX2Zvcl9hbGxfZGlmZnMpCi0gICAgICAgICAgICB0aW1lX2Zvcl9kaWZmcyA9IHRlc3Rfc3Rh
dHMudGltZV9mb3JfZGlmZnMKLSAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF90eXBl
czoKLSAgICAgICAgICAgICAgICB0aW1lc19wZXJfdGVzdF90eXBlW3Rlc3RfdHlwZV0uYXBwZW5k
KAotICAgICAgICAgICAgICAgICAgICB0aW1lX2Zvcl9kaWZmc1t0ZXN0X3R5cGVdKQotCi0gICAg
ICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncyh3cml0ZSwKLSAgICAg
ICAgICAgICJQRVIgVEVTVCBUSU1FIElOIFRFU1RTSEVMTCAoc2Vjb25kcyk6IiwgdGltZXNfZm9y
X3Rlc3Rfc2hlbGwpCi0gICAgICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGlt
aW5ncyh3cml0ZSwKLSAgICAgICAgICAgICJQRVIgVEVTVCBESUZGIFBST0NFU1NJTkcgVElNRVMg
KHNlY29uZHMpOiIsCi0gICAgICAgICAgICB0aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5nKQotICAg
ICAgICBmb3IgdGVzdF90eXBlIGluIHRlc3RfdHlwZXM6Ci0gICAgICAgICAgICBzZWxmLl9wcmlu
dF9zdGF0aXN0aWNzX2Zvcl90ZXN0X3RpbWluZ3Mod3JpdGUsCi0gICAgICAgICAgICAgICAgIlBF
UiBURVNUIFRJTUVTIEJZIFRFU1QgVFlQRTogJXMiICUgdGVzdF90eXBlLAotICAgICAgICAgICAg
ICAgIHRpbWVzX3Blcl90ZXN0X3R5cGVbdGVzdF90eXBlXSkKLQotICAgIGRlZiBfcHJpbnRfaW5k
aXZpZHVhbF90ZXN0X3RpbWVzKHNlbGYsIHdyaXRlLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSk6Ci0gICAg
ICAgICIiIlByaW50cyB0aGUgcnVuIHRpbWVzIGZvciBzbG93LCB0aW1lb3V0IGFuZCBjcmFzaCB0
ZXN0cy4KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB3cml0ZTogQSBjYWxsYmFjayB0byB3cml0
ZSBpbmZvIHRvIChlLmcuLCBhIExvZ2dpbmdXcml0ZXIpIG9yCi0gICAgICAgICAgICAgIHN5cy5z
dGRvdXQud3JpdGUuCi0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2Yg
dGVzdF9zaGVsbF90aHJlYWQuVGVzdFN0YXRzIGZvciBhbGwKLSAgICAgICAgICAgICAgdGVzdHMu
Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZvciB0ZXN0IHJ1bgot
ICAgICAgICAiIiIKLSAgICAgICAgIyBSZXZlcnNlLXNvcnQgYnkgdGhlIHRpbWUgc3BlbnQgaW4g
dGVzdF9zaGVsbC4KLSAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Muc29ydChsYW1iZGEg
YSwgYjoKLSAgICAgICAgICAgIGNtcChiLnRlc3RfcnVuX3RpbWUsIGEudGVzdF9ydW5fdGltZSkp
Ci0KLSAgICAgICAgbnVtX3ByaW50ZWQgPSAwCi0gICAgICAgIHNsb3dfdGVzdHMgPSBbXQotICAg
ICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzID0gW10KLSAgICAgICAgdW5leHBlY3RlZF9zbG93
X3Rlc3RzID0gW10KLSAgICAgICAgZm9yIHRlc3RfdHVwbGUgaW4gaW5kaXZpZHVhbF90ZXN0X3Rp
bWluZ3M6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3RfdHVwbGUuZmlsZW5hbWUKLSAgICAg
ICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IEZhbHNlCi0gICAgICAgICAgICBpZiBz
ZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKGZpbGVuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKToK
LSAgICAgICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBUcnVlCi0gICAgICAg
ICAgICAgICAgc2xvd190ZXN0cy5hcHBlbmQodGVzdF90dXBsZSkKLQotICAgICAgICAgICAgaWYg
ZmlsZW5hbWUgaW4gcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXM6Ci0gICAgICAgICAgICAgICAgcmVz
dWx0ID0gcmVzdWx0X3N1bW1hcnkucmVzdWx0c1tmaWxlbmFtZV0KLSAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQgb3IKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIKToKLSAgICAgICAgICAgICAg
ICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQotCi0gICAgICAgICAg
ICBpZiAobm90IGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyBhbmQKLSAgICAgICAgICAgICAgICBu
dW1fcHJpbnRlZCA8IHNlbGYuX29wdGlvbnMubnVtX3Nsb3dfdGVzdHNfdG9fbG9nKToKLSAgICAg
ICAgICAgICAgICBudW1fcHJpbnRlZCA9IG51bV9wcmludGVkICsgMQotICAgICAgICAgICAgICAg
IHVuZXhwZWN0ZWRfc2xvd190ZXN0cy5hcHBlbmQodGVzdF90dXBsZSkKLQotICAgICAgICB3cml0
ZSgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZyh3cml0ZSwgIiVzIHNs
b3dlc3QgdGVzdHMgdGhhdCBhcmUgbm90ICIKLSAgICAgICAgICAgICJtYXJrZWQgYXMgU0xPVyBh
bmQgZGlkIG5vdCB0aW1lb3V0L2NyYXNoOiIgJQotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5u
dW1fc2xvd190ZXN0c190b19sb2csIHVuZXhwZWN0ZWRfc2xvd190ZXN0cykKLSAgICAgICAgd3Jp
dGUoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcod3JpdGUsICJUZXN0
cyBtYXJrZWQgYXMgU0xPVzoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dfdGVzdHMpCi0gICAgICAgIHdyaXRlKCIiKQotICAgICAgICBzZWxmLl9wcmludF90ZXN0
X2xpc3RfdGltaW5nKHdyaXRlLCAiVGVzdHMgdGhhdCB0aW1lZCBvdXQgb3IgY3Jhc2hlZDoiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVz
dHMpCi0gICAgICAgIHdyaXRlKCIiKQotCi0gICAgZGVmIF9wcmludF90ZXN0X2xpc3RfdGltaW5n
KHNlbGYsIHdyaXRlLCB0aXRsZSwgdGVzdF9saXN0KToKLSAgICAgICAgIiIiUHJpbnQgdGltaW5n
IGluZm8gZm9yIGVhY2ggdGVzdC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHdyaXRlOiBB
IGNhbGxiYWNrIHRvIHdyaXRlIGluZm8gdG8gKGUuZy4sIGEgTG9nZ2luZ1dyaXRlcikgb3IKLSAg
ICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZS4KLSAgICAgICAgICB0aXRsZTogc2VjdGlvbiBo
ZWFkaW5nCi0gICAgICAgICAgdGVzdF9saXN0OiB0ZXN0cyB0aGF0IGZhbGwgaW4gdGhpcyBzZWN0
aW9uCi0gICAgICAgICIiIgotICAgICAgICB3cml0ZSh0aXRsZSkKLSAgICAgICAgZm9yIHRlc3Rf
dHVwbGUgaW4gdGVzdF9saXN0OgotICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0X3R1cGxlLmZp
bGVuYW1lW2xlbigKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIo
KSkgKyAxOl0KLSAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnXFwnLCAn
LycpCi0gICAgICAgICAgICB0ZXN0X3J1bl90aW1lID0gcm91bmQodGVzdF90dXBsZS50ZXN0X3J1
bl90aW1lLCAxKQotICAgICAgICAgICAgd3JpdGUoIiAgJXMgdG9vayAlcyBzZWNvbmRzIiAlIChm
aWxlbmFtZSwgdGVzdF9ydW5fdGltZSkpCi0KLSAgICBkZWYgX3ByaW50X2RpcmVjdG9yeV90aW1p
bmdzKHNlbGYsIHdyaXRlLCBkaXJlY3RvcnlfdGVzdF90aW1pbmdzKToKLSAgICAgICAgIiIiUHJp
bnQgdGltaW5nIGluZm8gYnkgZGlyZWN0b3J5IGZvciBhbnkgZGlyZWN0b3JpZXMgdGhhdAotICAg
ICAgICB0YWtlID4gMTAgc2Vjb25kcyB0byBydW4uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICB3cml0ZTogQSBjYWxsYmFjayB0byB3cml0ZSBpbmZvIHRvIChlLmcuLCBhIExvZ2dpbmdXcml0
ZXIpIG9yCi0gICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUuCi0gICAgICAgICAgZGlyZWN0
b3J5X3Rlc3RfdGltaW5nOiB0aW1lIGluZm8gZm9yIGVhY2ggZGlyZWN0b3J5Ci0gICAgICAgICIi
IgotICAgICAgICB0aW1pbmdzID0gW10KLSAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBkaXJlY3Rv
cnlfdGVzdF90aW1pbmdzOgotICAgICAgICAgICAgbnVtX3Rlc3RzLCB0aW1lX2Zvcl9kaXJlY3Rv
cnkgPSBkaXJlY3RvcnlfdGVzdF90aW1pbmdzW2RpcmVjdG9yeV0KLSAgICAgICAgICAgIHRpbWlu
Z3MuYXBwZW5kKChyb3VuZCh0aW1lX2Zvcl9kaXJlY3RvcnksIDEpLCBkaXJlY3RvcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Rlc3RzKSkKLSAgICAgICAgdGltaW5ncy5zb3J0
KCkKLQotICAgICAgICB3cml0ZSgiVGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3Jp
ZXM6IikKLSAgICAgICAgbWluX3NlY29uZHNfdG9fcHJpbnQgPSAxMAotICAgICAgICBmb3IgdGlt
aW5nIGluIHRpbWluZ3M6Ci0gICAgICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190
b19wcmludDoKLSAgICAgICAgICAgICAgICB3cml0ZSgiICAlcyB0b29rICVzIHNlY29uZHMgdG8g
cnVuICVzIHRlc3RzLiIgJSAodGltaW5nWzFdLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWlu
Z1swXSwgdGltaW5nWzJdKSkKLSAgICAgICAgd3JpdGUoIiIpCi0KLSAgICBkZWYgX3ByaW50X3N0
YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncyhzZWxmLCB3cml0ZSwgdGl0bGUsIHRpbWluZ3MpOgot
ICAgICAgICAiIiJQcmludHMgdGhlIG1lZGlhbiwgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9u
IG9mIHRoZSB2YWx1ZXMgaW4KLSAgICAgICAgdGltaW5ncy4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIHdyaXRlOiBBIGNhbGxiYWNrIHRvIHdyaXRlIGluZm8gdG8gKGUuZy4sIGEgTG9nZ2lu
Z1dyaXRlcikgb3IKLSAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZS4KLSAgICAgICAgICB0
aXRsZTogVGl0bGUgZm9yIHRoZXNlIHRpbWluZ3MuCi0gICAgICAgICAgdGltaW5nczogQSBsaXN0
IG9mIGZsb2F0cyByZXByZXNlbnRpbmcgdGltZXMuCi0gICAgICAgICIiIgotICAgICAgICB3cml0
ZSh0aXRsZSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAgICBudW1fdGVzdHMgPSBs
ZW4odGltaW5ncykKLSAgICAgICAgcGVyY2VudGlsZTkwID0gdGltaW5nc1tpbnQoLjkgKiBudW1f
dGVzdHMpXQotICAgICAgICBwZXJjZW50aWxlOTkgPSB0aW1pbmdzW2ludCguOTkgKiBudW1fdGVz
dHMpXQotCi0gICAgICAgIGlmIG51bV90ZXN0cyAlIDIgPT0gMToKLSAgICAgICAgICAgIG1lZGlh
biA9IHRpbWluZ3NbKChudW1fdGVzdHMgLSAxKSAvIDIpIC0gMV0KLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGxvd2VyID0gdGltaW5nc1tudW1fdGVzdHMgLyAyIC0gMV0KLSAgICAgICAgICAg
IHVwcGVyID0gdGltaW5nc1tudW1fdGVzdHMgLyAyXQotICAgICAgICAgICAgbWVkaWFuID0gKGZs
b2F0KGxvd2VyICsgdXBwZXIpKSAvIDIKLQotICAgICAgICBtZWFuID0gc3VtKHRpbWluZ3MpIC8g
bnVtX3Rlc3RzCi0KLSAgICAgICAgZm9yIHRpbWUgaW4gdGltaW5nczoKLSAgICAgICAgICAgIHN1
bV9vZl9kZXZpYXRpb25zID0gbWF0aC5wb3codGltZSAtIG1lYW4sIDIpCi0KLSAgICAgICAgc3Rk
X2RldmlhdGlvbiA9IG1hdGguc3FydChzdW1fb2ZfZGV2aWF0aW9ucyAvIG51bV90ZXN0cykKLSAg
ICAgICAgd3JpdGUoIiAgTWVkaWFuOiAgICAgICAgICAlNi4zZiIgJSBtZWRpYW4pCi0gICAgICAg
IHdyaXRlKCIgIE1lYW46ICAgICAgICAgICAgJTYuM2YiICUgbWVhbikKLSAgICAgICAgd3JpdGUo
IiAgOTB0aCBwZXJjZW50aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxlOTApCi0gICAgICAgIHdyaXRl
KCIgIDk5dGggcGVyY2VudGlsZTogJTYuM2YiICUgcGVyY2VudGlsZTk5KQotICAgICAgICB3cml0
ZSgiICBTdGFuZGFyZCBkZXY6ICAgICU2LjNmIiAlIHN0ZF9kZXZpYXRpb24pCi0gICAgICAgIHdy
aXRlKCIiKQotCi0gICAgZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeShzZWxmLCB3cml0ZSwgcmVz
dWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJQcmludCBhIHNob3J0IHN1bW1hcnkgYWJvdXQgaG93
IG1hbnkgdGVzdHMgcGFzc2VkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgd3JpdGU6IEEg
Y2FsbGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5nLiwgYSBMb2dnaW5nV3JpdGVyKSBvcgotICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlLgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBp
bmZvcm1hdGlvbiB0byBsb2cKLSAgICAgICAgIiIiCi0gICAgICAgIGZhaWxlZCA9IGxlbihyZXN1
bHRfc3VtbWFyeS5mYWlsdXJlcykKLSAgICAgICAgc2tpcHBlZCA9IGxlbigKLSAgICAgICAgICAg
IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlNL
SVBdKQotICAgICAgICB0b3RhbCA9IHJlc3VsdF9zdW1tYXJ5LnRvdGFsCi0gICAgICAgIHBhc3Nl
ZCA9IHRvdGFsIC0gZmFpbGVkIC0gc2tpcHBlZAotICAgICAgICBwY3RfcGFzc2VkID0gMC4wCi0g
ICAgICAgIGlmIHRvdGFsID4gMDoKLSAgICAgICAgICAgIHBjdF9wYXNzZWQgPSBmbG9hdChwYXNz
ZWQpICogMTAwIC8gdG90YWwKLQotICAgICAgICB3cml0ZSgiIikKLSAgICAgICAgd3JpdGUoIj0+
IFJlc3VsdHM6ICVkLyVkIHRlc3RzIHBhc3NlZCAoJS4xZiUlKSIgJQotICAgICAgICAgICAgICAg
ICAgICAgKHBhc3NlZCwgdG90YWwsIHBjdF9wYXNzZWQpKQotICAgICAgICB3cml0ZSgiIikKLSAg
ICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnlfZW50cnkod3JpdGUsIHJlc3VsdF9zdW1t
YXJ5LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuTk9XLCAiVGVzdHMgdG8gYmUgZml4
ZWQgZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UiKQotCi0gICAgICAgIHdyaXRlKCIiKQotICAgICAg
ICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeSh3cml0ZSwgcmVzdWx0X3N1bW1hcnks
Ci0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5ERUZFUiwKLSAgICAgICAgICAgICJUZXN0
cyB3ZSdsbCBmaXggaW4gdGhlIGZ1dHVyZSBpZiB0aGV5IGZhaWwgKERFRkVSKSIpCi0KLSAgICAg
ICAgd3JpdGUoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHdy
aXRlLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLldPTlRG
SVgsCi0gICAgICAgICAgICAiVGVzdHMgdGhhdCB3aWxsIG9ubHkgYmUgZml4ZWQgaWYgdGhleSBj
cmFzaCAoV09OVEZJWCkiKQotCi0gICAgZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShz
ZWxmLCB3cml0ZSwgcmVzdWx0X3N1bW1hcnksIHRpbWVsaW5lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhZGluZyk6Ci0gICAgICAgICIiIlByaW50IGEgc3VtbWFyeSBi
bG9jayBvZiByZXN1bHRzIGZvciBhIHBhcnRpY3VsYXIgdGltZWxpbmUgb2YgdGVzdC4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgIHdyaXRlOiBBIGNhbGxiYWNrIHRvIHdyaXRlIGluZm8gdG8g
KGUuZy4sIGEgTG9nZ2luZ1dyaXRlcikgb3IKLSAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0
ZS4KLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSB0byBwcmludCByZXN1bHRzIGZv
cgotICAgICAgICAgIHRpbWVsaW5lOiB0aGUgdGltZWxpbmUgdG8gcHJpbnQgcmVzdWx0cyBmb3Ig
KE5PVCwgV09OVEZJWCwgZXRjLikKLSAgICAgICAgICBoZWFkaW5nOiBhIHRleHR1YWwgZGVzY3Jp
cHRpb24gb2YgdGhlIHRpbWVsaW5lCi0gICAgICAgICIiIgotICAgICAgICB0b3RhbCA9IGxlbihy
ZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0pCi0gICAgICAgIG5vdF9w
YXNzaW5nID0gKHRvdGFsIC0KLSAgICAgICAgICAgbGVuKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5
X2V4cGVjdGF0aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlBBU1NdICYKLSAgICAgICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkpCi0gICAgICAgIHdyaXRl
KCI9PiAlcyAoJWQpOiIgJSAoaGVhZGluZywgbm90X3Bhc3NpbmcpKQotCi0gICAgICAgIGZvciBy
ZXN1bHQgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05fT1JERVI6Ci0gICAgICAg
ICAgICBpZiByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUzoKLSAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgcmVzdWx0cyA9IChyZXN1bHRfc3VtbWFyeS50ZXN0c19i
eV9leHBlY3RhdGlvbltyZXN1bHRdICYKLSAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1
bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKQotICAgICAgICAgICAgZGVzYyA9IFRl
c3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OU1tyZXN1bHRdCi0gICAg
ICAgICAgICBpZiBub3RfcGFzc2luZyBhbmQgbGVuKHJlc3VsdHMpOgotICAgICAgICAgICAgICAg
IHBjdCA9IGxlbihyZXN1bHRzKSAqIDEwMC4wIC8gbm90X3Bhc3NpbmcKLSAgICAgICAgICAgICAg
ICB3cml0ZSgiICAlNWQgJS0yNHMgKCU0LjFmJSUpIiAlIChsZW4ocmVzdWx0cyksCi0gICAgICAg
ICAgICAgICAgICAgICAgZGVzY1tsZW4ocmVzdWx0cykgIT0gMV0sIHBjdCkpCi0KLSAgICBkZWYg
X3ByaW50X29uZV9saW5lX3N1bW1hcnkoc2VsZiwgdG90YWwsIGV4cGVjdGVkKToKLSAgICAgICAg
IiIiUHJpbnQgYSBvbmUtbGluZSBzdW1tYXJ5IG9mIHRoZSB0ZXN0IHJ1biB0byBzdGRvdXQuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICB0b3RhbDogdG90YWwgbnVtYmVyIG9mIHRlc3RzIHJ1
bgotICAgICAgICAgIGV4cGVjdGVkOiBudW1iZXIgb2YgZXhwZWN0ZWQgcmVzdWx0cwotICAgICAg
ICAiIiIKLSAgICAgICAgdW5leHBlY3RlZCA9IHRvdGFsIC0gZXhwZWN0ZWQKLSAgICAgICAgaWYg
dW5leHBlY3RlZCA9PSAwOgotICAgICAgICAgICAgcHJpbnQgIkFsbCAlZCB0ZXN0cyByYW4gYXMg
ZXhwZWN0ZWQuIiAlIGV4cGVjdGVkCi0gICAgICAgIGVsaWYgZXhwZWN0ZWQgPT0gMToKLSAgICAg
ICAgICAgIHByaW50ICIxIHRlc3QgcmFuIGFzIGV4cGVjdGVkLCAlZCBkaWRuJ3Q6IiAlIHVuZXhw
ZWN0ZWQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50ICIlZCB0ZXN0cyByYW4gYXMg
ZXhwZWN0ZWQsICVkIGRpZG4ndDoiICUgKGV4cGVjdGVkLAotICAgICAgICAgICAgICAgIHVuZXhw
ZWN0ZWQpCi0KLSAgICBkZWYgX3ByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmLCB1bmV4cGVj
dGVkX3Jlc3VsdHMpOgotICAgICAgICAiIiJQcmludHMgYW55IHVuZXhwZWN0ZWQgcmVzdWx0cyBp
biBhIGh1bWFuLXJlYWRhYmxlIGZvcm0gdG8gc3Rkb3V0LiIiIgotICAgICAgICBwYXNzZXMgPSB7
fQotICAgICAgICBmbGFreSA9IHt9Ci0gICAgICAgIHJlZ3Jlc3Npb25zID0ge30KLQotICAgICAg
ICBpZiBsZW4odW5leHBlY3RlZF9yZXN1bHRzWyd0ZXN0cyddKToKLSAgICAgICAgICAgIHByaW50
ICIiCi0KLSAgICAgICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4gdW5leHBlY3RlZF9yZXN1bHRzWyd0
ZXN0cyddLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgYWN0dWFsID0gcmVzdWx0c1snYWN0dWFs
J10uc3BsaXQoIiAiKQotICAgICAgICAgICAgZXhwZWN0ZWQgPSByZXN1bHRzWydleHBlY3RlZCdd
LnNwbGl0KCIgIikKLSAgICAgICAgICAgIGlmIGFjdHVhbCA9PSBbJ1BBU1MnXToKLSAgICAgICAg
ICAgICAgICBpZiAnQ1JBU0gnIGluIGV4cGVjdGVkOgotICAgICAgICAgICAgICAgICAgICBfYWRk
X3RvX2RpY3Rfb2ZfbGlzdHMocGFzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0V4cGVjdGVkIHRvIGNyYXNoLCBidXQgcGFzc2VkJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QpCi0gICAgICAgICAgICAgICAgZWxp
ZiAnVElNRU9VVCcgaW4gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIF9hZGRfdG9fZGlj
dF9vZl9saXN0cyhwYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnRXhwZWN0ZWQgdG8gdGltZW91dCwgYnV0IHBhc3NlZCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCkKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBfYWRkX3RvX2RpY3Rfb2ZfbGlzdHMocGFzc2VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIHRvIGZhaWwsIGJ1
dCBwYXNzZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dCkKLSAgICAgICAgICAgIGVsaWYgbGVuKGFjdHVhbCkgPiAxOgotICAgICAgICAgICAgICAgICMg
V2UgZ3JvdXAgZmxha3kgdGVzdHMgYnkgdGhlIGZpcnN0IGFjdHVhbCByZXN1bHQgd2UgZ290Lgot
ICAgICAgICAgICAgICAgIF9hZGRfdG9fZGljdF9vZl9saXN0cyhmbGFreSwgYWN0dWFsWzBdLCB0
ZXN0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfYWRkX3RvX2RpY3Rfb2Zf
bGlzdHMocmVncmVzc2lvbnMsIHJlc3VsdHNbJ2FjdHVhbCddLCB0ZXN0KQotCi0gICAgICAgIGlm
IGxlbihwYXNzZXMpOgotICAgICAgICAgICAgZm9yIGtleSwgdGVzdHMgaW4gcGFzc2VzLml0ZXJp
dGVtcygpOgotICAgICAgICAgICAgICAgIHByaW50ICIlczogKCVkKSIgJSAoa2V5LCBsZW4odGVz
dHMpKQotICAgICAgICAgICAgICAgIHRlc3RzLnNvcnQoKQotICAgICAgICAgICAgICAgIGZvciB0
ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgICAgICAgICBwcmludCAiICAlcyIgJSB0ZXN0Ci0g
ICAgICAgICAgICAgICAgcHJpbnQKLQotICAgICAgICBpZiBsZW4oZmxha3kpOgotICAgICAgICAg
ICAgZGVzY3JpcHRpb25zID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05fREVTQ1JJ
UFRJT05TCi0gICAgICAgICAgICBmb3Iga2V5LCB0ZXN0cyBpbiBmbGFreS5pdGVyaXRlbXMoKToK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElP
TlNba2V5Lmxvd2VyKCldCi0gICAgICAgICAgICAgICAgcHJpbnQgIlVuZXhwZWN0ZWQgZmxha2lu
ZXNzOiAlcyAoJWQpIiAlICgKLSAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uc1tyZXN1bHRd
WzFdLCBsZW4odGVzdHMpKQotICAgICAgICAgICAgICAgIHRlc3RzLnNvcnQoKQotCi0gICAgICAg
ICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHVuZXhwZWN0ZWRfcmVzdWx0c1sndGVzdHMnXVt0ZXN0XQotICAgICAgICAgICAgICAgICAgICBh
Y3R1YWwgPSByZXN1bHRbJ2FjdHVhbCddLnNwbGl0KCIgIikKLSAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWQgPSByZXN1bHRbJ2V4cGVjdGVkJ10uc3BsaXQoIiAiKQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlNba2V5Lmxvd2Vy
KCldCi0gICAgICAgICAgICAgICAgICAgIG5ld19leHBlY3RhdGlvbnNfbGlzdCA9IGxpc3Qoc2V0
KGFjdHVhbCkgfCBzZXQoZXhwZWN0ZWQpKQotICAgICAgICAgICAgICAgICAgICBwcmludCAiICAl
cyA9ICVzIiAlICh0ZXN0LCAiICIuam9pbihuZXdfZXhwZWN0YXRpb25zX2xpc3QpKQotICAgICAg
ICAgICAgICAgIHByaW50Ci0KLSAgICAgICAgaWYgbGVuKHJlZ3Jlc3Npb25zKToKLSAgICAgICAg
ICAgIGRlc2NyaXB0aW9ucyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX0RFU0NS
SVBUSU9OUwotICAgICAgICAgICAgZm9yIGtleSwgdGVzdHMgaW4gcmVncmVzc2lvbnMuaXRlcml0
ZW1zKCk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQ
RUNUQVRJT05TW2tleS5sb3dlcigpXQotICAgICAgICAgICAgICAgIHByaW50ICJSZWdyZXNzaW9u
czogVW5leHBlY3RlZCAlcyA6ICglZCkiICUgKAotICAgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b25zW3Jlc3VsdF1bMV0sIGxlbih0ZXN0cykpCi0gICAgICAgICAgICAgICAgdGVzdHMuc29ydCgp
Ci0gICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50ICIgICVzID0gJXMiICUgKHRlc3QsIGtleSkKLSAgICAgICAgICAgICAgICBwcmludAot
Ci0gICAgICAgIGlmIGxlbih1bmV4cGVjdGVkX3Jlc3VsdHNbJ3Rlc3RzJ10pIGFuZCBzZWxmLl9v
cHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCAiLSIgKiA3OAotCi0gICAgZGVmIF9w
cmludF91bmV4cGVjdGVkX3Rlc3RfcmVzdWx0KHNlbGYsIHRlc3QsIHJlc3VsdCk6Ci0gICAgICAg
ICIiIlByaW50cyBvbmUgdW5leHBlY3RlZCB0ZXN0IHJlc3VsdCBsaW5lLiIiIgotICAgICAgICBk
ZXNjID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05fREVTQ1JJUFRJT05TW3Jlc3Vs
dF1bMF0KLSAgICAgICAgc2VsZi5fbWV0ZXIud3JpdGUoIiAgJXMgLT4gdW5leHBlY3RlZCAlc1xu
IiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3Rf
ZmlsZW5hbWUodGVzdCksIGRlc2MpKQotCi0gICAgZGVmIF93cml0ZV9yZXN1bHRzX2h0bWxfZmls
ZShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIldyaXRlIHJlc3VsdHMuaHRtbCB3
aGljaCBpcyBhIHN1bW1hcnkgb2YgdGVzdHMgdGhhdCBmYWlsZWQuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzIDopCi0K
LSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUcnVlIGlmIGFueSByZXN1bHRzIHdlcmUgd3Jp
dHRlbiAoc2luY2UgZXhwZWN0ZWQgZmFpbHVyZXMgbWF5IGJlCi0gICAgICAgICAgb21pdHRlZCkK
LSAgICAgICAgIiIiCi0gICAgICAgICMgdGVzdCBmYWlsdXJlcwotICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLmZ1bGxfcmVzdWx0c19odG1sOgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHJlc3Vs
dF9zdW1tYXJ5LmZhaWx1cmVzLmtleXMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5l
eHBlY3RlZF9mYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwKLSAg
ICAgICAgICAgICAgICBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLSAgICAgICAgICAgIHRlc3RfZmls
ZXMgPSB1bmV4cGVjdGVkX2ZhaWx1cmVzLmtleXMoKQotICAgICAgICBpZiBub3QgbGVuKHRlc3Rf
ZmlsZXMpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgb3V0X2ZpbGVuYW1l
ID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0cy5odG1sIikKLSAgICAgICAgb3V0
X2ZpbGUgPSBvcGVuKG91dF9maWxlbmFtZSwgJ3cnKQotICAgICAgICAjIGhlYWRlcgotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmZ1bGxfcmVzdWx0c19odG1sOgotICAgICAgICAgICAgaDIgPSAi
VGVzdCBGYWlsdXJlcyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGgyID0gIlVuZXhwZWN0
ZWQgVGVzdCBGYWlsdXJlcyIKLSAgICAgICAgb3V0X2ZpbGUud3JpdGUoIjxodG1sPjxoZWFkPjx0
aXRsZT5MYXlvdXQgVGVzdCBSZXN1bHRzICglKHRpbWUpcykiCi0gICAgICAgICAgICAgICAgICAg
ICAgICI8L3RpdGxlPjwvaGVhZD48Ym9keT48aDI+JShoMilzICglKHRpbWUpcyk8L2gyPlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAlIHsnaDInOiBoMiwgJ3RpbWUnOiB0aW1lLmFzY3RpbWUo
KX0pCi0KLSAgICAgICAgdGVzdF9maWxlcy5zb3J0KCkKLSAgICAgICAgZm9yIHRlc3RfZmlsZSBp
biB0ZXN0X2ZpbGVzOgotICAgICAgICAgICAgdGVzdF9mYWlsdXJlcyA9IHJlc3VsdF9zdW1tYXJ5
LmZhaWx1cmVzLmdldCh0ZXN0X2ZpbGUsIFtdKQotICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUo
IjxwPjxhIGhyZWY9JyVzJz4lczwvYT48YnIgLz5cbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICUgKHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfZmlsZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVz
dF9maWxlKSkpCi0gICAgICAgICAgICBmb3IgZmFpbHVyZSBpbiB0ZXN0X2ZhaWx1cmVzOgotICAg
ICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKCImbmJzcDsmbmJzcDslczxici8+IgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICUgZmFpbHVyZS5yZXN1bHRfaHRtbF9vdXRwdXQoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3Rf
ZmlsZW5hbWUodGVzdF9maWxlKSkpCi0gICAgICAgICAgICBvdXRfZmlsZS53cml0ZSgiPC9wPlxu
IikKLQotICAgICAgICAjIGZvb3RlcgotICAgICAgICBvdXRfZmlsZS53cml0ZSgiPC9ib2R5Pjwv
aHRtbD5cbiIpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX3Nob3dfcmVzdWx0c19o
dG1sX2ZpbGUoc2VsZik6Ci0gICAgICAgICIiIkxhdW5jaGVzIHRoZSB0ZXN0IHNoZWxsIG9wZW4g
dG8gdGhlIHJlc3VsdHMuaHRtbCBwYWdlLiIiIgotICAgICAgICByZXN1bHRzX2ZpbGVuYW1lID0g
b3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3VsdHMuaHRtbCIpCi0gICAgICAgIHNl
bGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX2ZpbGVuYW1lKQotCi0KLWRl
ZiBfYWRkX3RvX2RpY3Rfb2ZfbGlzdHMoZGljdCwga2V5LCB2YWx1ZSk6Ci0gICAgZGljdC5zZXRk
ZWZhdWx0KGtleSwgW10pLmFwcGVuZCh2YWx1ZSkKLQotCi1kZWYgcmVhZF90ZXN0X2ZpbGVzKGZp
bGVzKToKLSAgICB0ZXN0cyA9IFtdCi0gICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgIGZv
ciBsaW5lIGluIG9wZW4oZmlsZSk6Ci0gICAgICAgICAgICBsaW5lID0gdGVzdF9leHBlY3RhdGlv
bnMuc3RyaXBfY29tbWVudHMobGluZSkKLSAgICAgICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAg
ICAgICAgdGVzdHMuYXBwZW5kKGxpbmUpCi0gICAgcmV0dXJuIHRlc3RzCi0KLQotZGVmIGNyZWF0
ZV9sb2dnaW5nX3dyaXRlcihvcHRpb25zLCBsb2dfb3B0aW9uKToKLSAgICAiIiJSZXR1cm5zIGEg
d3JpdGUoKSBmdW5jdGlvbiB0aGF0IHdpbGwgd3JpdGUgdGhlIHN0cmluZyB0byBsb2dnaW5nLmlu
Zm8oKQotICAgIGlmIGNvbXAgd2FzIHNwZWNpZmllZCBpbiAtLWxvZyBvciBpZiAtLXZlcmJvc2Ug
aXMgdHJ1ZS4gT3RoZXJ3aXNlIHRoZQotICAgIG1lc3NhZ2UgaXMgZHJvcHBlZC4KLQotICAgIEFy
Z3M6Ci0gICAgICBvcHRpb25zOiBsaXN0IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zIGZyb20gb3B0
cGFyc2UKLSAgICAgIGxvZ19vcHRpb246IG9wdGlvbiB0byBtYXRjaCBpbiBvcHRpb25zLmxvZyBp
biBvcmRlciBmb3IgdGhlIG1lc3NhZ2VzCi0gICAgICAgICAgdG8gYmUgbG9nZ2VkIChlLmcuLCAn
YWN0dWFsJyBvciAnZXhwZWN0ZWQnKQotICAgICIiIgotICAgIGlmIG9wdGlvbnMudmVyYm9zZSBv
ciBsb2dfb3B0aW9uIGluIG9wdGlvbnMubG9nLnNwbGl0KCIsIik6Ci0gICAgICAgIHJldHVybiBs
b2dnaW5nLmluZm8KLSAgICByZXR1cm4gbGFtYmRhIHN0cjogMQotCi0KLWRlZiBtYWluKG9wdGlv
bnMsIGFyZ3MpOgotICAgICIiIlJ1biB0aGUgdGVzdHMuICBXaWxsIGNhbGwgc3lzLmV4aXQgd2hl
biBjb21wbGV0ZS4KLQotICAgIEFyZ3M6Ci0gICAgICBvcHRpb25zOiBhIGRpY3Rpb25hcnkgb2Yg
Y29tbWFuZCBsaW5lIG9wdGlvbnMKLSAgICAgIGFyZ3M6IGEgbGlzdCBvZiBzdWIgZGlyZWN0b3Jp
ZXMgb3IgZmlsZXMgdG8gdGVzdAotICAgICIiIgotCi0gICAgaWYgb3B0aW9ucy5zb3VyY2VzOgot
ICAgICAgICBvcHRpb25zLnZlcmJvc2UgPSBUcnVlCi0KLSAgICAjIFNldCB1cCBvdXIgbG9nZ2lu
ZyBmb3JtYXQuCi0gICAgbWV0ZXIgPSBtZXRlcmVkX3N0cmVhbS5NZXRlcmVkU3RyZWFtKG9wdGlv
bnMudmVyYm9zZSwgc3lzLnN0ZGVycikKLSAgICBsb2dfZm10ID0gJyUobWVzc2FnZSlzJwotICAg
IGxvZ19kYXRlZm10ID0gJyV5JW0lZCAlSDolTTolUycKLSAgICBsb2dfbGV2ZWwgPSBsb2dnaW5n
LklORk8KLSAgICBpZiBvcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgIGxvZ19mbXQgPSAoJyUoYXNj
dGltZSlzICUoZmlsZW5hbWUpczolKGxpbmVubyktNGQgJShsZXZlbG5hbWUpcyAnCi0gICAgICAg
ICAgICAgICAgICAnJShtZXNzYWdlKXMnKQotICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnaW5nLkRF
QlVHCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dfbGV2ZWwsIGZvcm1hdD1sb2df
Zm10LCBkYXRlZm10PWxvZ19kYXRlZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
PW1ldGVyKQotCi0gICAgaWYgbm90IG9wdGlvbnMudGFyZ2V0OgotICAgICAgICBpZiBvcHRpb25z
LmRlYnVnOgotICAgICAgICAgICAgb3B0aW9ucy50YXJnZXQgPSAiRGVidWciCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBvcHRpb25zLnRhcmdldCA9ICJSZWxlYXNlIgotCi0gICAgcG9ydF9v
YmogPSBwb3J0LmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zKQotCi0gICAgaWYgbm90IG9w
dGlvbnMudXNlX2FwYWNoZToKLSAgICAgICAgb3B0aW9ucy51c2VfYXBhY2hlID0gc3lzLnBsYXRm
b3JtIGluICgnZGFyd2luJywgJ2xpbnV4MicpCi0KLSAgICBpZiBvcHRpb25zLnJlc3VsdHNfZGly
ZWN0b3J5LnN0YXJ0c3dpdGgoIi8iKToKLSAgICAgICAgIyBBc3N1bWUgaXQncyBhbiBhYnNvbHV0
ZSBwYXRoIGFuZCBub3JtYWxpemUuCi0gICAgICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3Rvcnkg
PSBwb3J0X29iai5nZXRfYWJzb2x1dGVfcGF0aCgKLSAgICAgICAgICAgIG9wdGlvbnMucmVzdWx0
c19kaXJlY3RvcnkpCi0gICAgZWxzZToKLSAgICAgICAgIyBJZiBpdCdzIGEgcmVsYXRpdmUgcGF0
aCwgbWFrZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSByZWxhdGl2ZSB0bwotICAgICAgICAjIERlYnVn
IG9yIFJlbGVhc2UuCi0gICAgICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkgPSBwb3J0X29i
ai5yZXN1bHRzX2RpcmVjdG9yeSgpCi0KLSAgICBpZiBvcHRpb25zLmNsb2JiZXJfb2xkX3Jlc3Vs
dHM6Ci0gICAgICAgICMgSnVzdCBjbG9iYmVyIHRoZSBhY3R1YWwgdGVzdCByZXN1bHRzIGRpcmVj
dG9yaWVzIHNpbmNlIHRoZSBvdGhlcgotICAgICAgICAjIGZpbGVzIGluIHRoZSByZXN1bHRzIGRp
cmVjdG9yeSBhcmUgZXhwbGljaXRseSB1c2VkIGZvciBjcm9zcy1ydW4KLSAgICAgICAgIyB0cmFj
a2luZy4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5LCAnTGF5b3V0VGVzdHMnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAg
ICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKLQotICAgIGlmIG5vdCBvcHRpb25zLm51bV90
ZXN0X3NoZWxsczoKLSAgICAgICAgIyBUT0RPKG9qYW4pOiBJbnZlc3RpZ2F0ZSBwZXJmL2ZsYWtp
bmVzcyBpbXBhY3Qgb2YgdXNpbmcgbnVtY29yZXMgKyAxLgotICAgICAgICBvcHRpb25zLm51bV90
ZXN0X3NoZWxscyA9IHBvcnRfb2JqLm51bV9jb3JlcygpCi0KLSAgICB3cml0ZSA9IGNyZWF0ZV9s
b2dnaW5nX3dyaXRlcihvcHRpb25zLCAnY29uZmlnJykKLSAgICB3cml0ZSgiUnVubmluZyAlcyB0
ZXN0X3NoZWxscyBpbiBwYXJhbGxlbCIgJSBvcHRpb25zLm51bV90ZXN0X3NoZWxscykKLQotICAg
IGlmIG5vdCBvcHRpb25zLnRpbWVfb3V0X21zOgotICAgICAgICBpZiBvcHRpb25zLnRhcmdldCA9
PSAiRGVidWciOgotICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cigyICogVGVz
dFJ1bm5lci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIoVGVzdFJ1bm5lci5ERUZBVUxUX1RFU1RfVElN
RU9VVF9NUykKLQotICAgIG9wdGlvbnMuc2xvd190aW1lX291dF9tcyA9IHN0cig1ICogaW50KG9w
dGlvbnMudGltZV9vdXRfbXMpKQotICAgIHdyaXRlKCJSZWd1bGFyIHRpbWVvdXQ6ICVzLCBzbG93
IHRlc3QgdGltZW91dDogJXMiICUKLSAgICAgICAgICAob3B0aW9ucy50aW1lX291dF9tcywgb3B0
aW9ucy5zbG93X3RpbWVfb3V0X21zKSkKLQotICAgICMgSW5jbHVkZSBhbGwgdGVzdHMgaWYgbm9u
ZSBhcmUgc3BlY2lmaWVkLgotICAgIG5ld19hcmdzID0gW10KLSAgICBmb3IgYXJnIGluIGFyZ3M6
Ci0gICAgICAgIGlmIGFyZyBhbmQgYXJnICE9ICcnOgotICAgICAgICAgICAgbmV3X2FyZ3MuYXBw
ZW5kKGFyZykKLQotICAgIHBhdGhzID0gbmV3X2FyZ3MKLSAgICBpZiBub3QgcGF0aHM6Ci0gICAg
ICAgIHBhdGhzID0gW10KLSAgICBpZiBvcHRpb25zLnRlc3RfbGlzdDoKLSAgICAgICAgcGF0aHMg
Kz0gcmVhZF90ZXN0X2ZpbGVzKG9wdGlvbnMudGVzdF9saXN0KQotCi0gICAgIyBDcmVhdGUgdGhl
IG91dHB1dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgotICAgIHBvcnRf
b2JqLm1heWJlX21ha2VfZGlyZWN0b3J5KG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCi0gICAg
bWV0ZXIudXBkYXRlKCJHYXRoZXJpbmcgZmlsZXMgLi4uIikKLQotICAgIHRlc3RfcnVubmVyID0g
VGVzdFJ1bm5lcihwb3J0X29iaiwgb3B0aW9ucywgbWV0ZXIpCi0gICAgdGVzdF9ydW5uZXIuZ2F0
aGVyX2ZpbGVfcGF0aHMocGF0aHMpCi0KLSAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9maWxlczoK
LSAgICAgICAgIyBDcmVhdGluZyB0aGUgZXhwZWNhdGlvbnMgZm9yIGVhY2ggcGxhdGZvcm0vdGFy
Z2V0IHBhaXIgZG9lcyBhbGwgdGhlCi0gICAgICAgICMgdGVzdCBsaXN0IHBhcnNpbmcgYW5kIGVu
c3VyZXMgaXQncyBjb3JyZWN0IHN5bnRheCAoZS5nLiBubyBkdXBlcykuCi0gICAgICAgIGZvciBw
bGF0Zm9ybSBpbiBwb3J0X29iai50ZXN0X3BsYXRmb3JtX25hbWVzKCk6Ci0gICAgICAgICAgICB0
ZXN0X3J1bm5lci5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm0sIGlzX2RlYnVnX21vZGU9VHJ1
ZSkKLSAgICAgICAgICAgIHRlc3RfcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucyhwbGF0Zm9ybSwg
aXNfZGVidWdfbW9kZT1GYWxzZSkKLSAgICAgICAgcHJpbnQgKCJJZiB0aGVyZSBhcmUgbm8gZmFp
bCBtZXNzYWdlcywgZXJyb3JzIG9yIGV4Y2VwdGlvbnMsIHRoZW4gdGhlICIKLSAgICAgICAgICAg
ICJsaW50IHN1Y2NlZWRlZC4iKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgd3JpdGUgPSBj
cmVhdGVfbG9nZ2luZ193cml0ZXIob3B0aW9ucywgImNvbmZpZyIpCi0gICAgd3JpdGUoIlVzaW5n
IHBvcnQgJyVzJyIgJSBwb3J0X29iai5uYW1lKCkpCi0gICAgd3JpdGUoIlBsYWNpbmcgdGVzdCBy
ZXN1bHRzIGluICVzIiAlIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCi0gICAgaWYgb3B0aW9u
cy5uZXdfYmFzZWxpbmU6Ci0gICAgICAgIHdyaXRlKCJQbGFjaW5nIG5ldyBiYXNlbGluZXMgaW4g
JXMiICUgcG9ydF9vYmouYmFzZWxpbmVfcGF0aCgpKQotICAgIHdyaXRlKCJVc2luZyAlcyBidWls
ZCIgJSBvcHRpb25zLnRhcmdldCkKLSAgICBpZiBvcHRpb25zLm5vX3BpeGVsX3Rlc3RzOgotICAg
ICAgICB3cml0ZSgiTm90IHJ1bm5pbmcgcGl4ZWwgdGVzdHMiKQotICAgIHdyaXRlKCIiKQotCi0g
ICAgbWV0ZXIudXBkYXRlKCJQYXJzaW5nIGV4cGVjdGF0aW9ucyAuLi4iKQotICAgIHRlc3RfcnVu
bmVyLnBhcnNlX2V4cGVjdGF0aW9ucyhwb3J0X29iai50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50YXJnZXQgPT0gJ0RlYnVn
JykKLQotICAgIHBvcnRfb2JqLnN0YXJ0X2hlbHBlcigpCi0KLSAgICAjIENoZWNrIHRoYXQgdGhl
IHN5c3RlbSBkZXBlbmRlbmNpZXMgKHRoZW1lcywgZm9udHMsIC4uLikgYXJlIGNvcnJlY3QuCi0g
ICAgaWYgKG5vdCBvcHRpb25zLm5vY2hlY2tfc3lzX2RlcHMgYW5kCi0gICAgICAgICBub3QgcG9y
dF9vYmouY2hlY2tfc3lzX2RlcHModGVzdF9ydW5uZXIubmVlZHNfaHR0cCgpKSk6Ci0gICAgICAg
IHN5cy5leGl0KDEpCi0KLSAgICBtZXRlci51cGRhdGUoIlByZXBhcmluZyB0ZXN0cyAuLi4iKQot
ICAgIHdyaXRlID0gY3JlYXRlX2xvZ2dpbmdfd3JpdGVyKG9wdGlvbnMsICJleHBlY3RlZCIpCi0g
ICAgcmVzdWx0X3N1bW1hcnkgPSB0ZXN0X3J1bm5lci5wcmVwYXJlX2xpc3RzX2FuZF9wcmludF9v
dXRwdXQod3JpdGUpCi0KLSAgICBwb3J0X29iai5zZXR1cF90ZXN0X3J1bigpCi0KLSAgICB0ZXN0
X3J1bm5lci5hZGRfdGVzdF90eXBlKHRleHRfZGlmZi5UZXN0VGV4dERpZmYpCi0gICAgaWYgbm90
IG9wdGlvbnMubm9fcGl4ZWxfdGVzdHM6Ci0gICAgICAgIHRlc3RfcnVubmVyLmFkZF90ZXN0X3R5
cGUoaW1hZ2VfZGlmZi5JbWFnZURpZmYpCi0gICAgICAgIGlmIG9wdGlvbnMuZnV6enlfcGl4ZWxf
dGVzdHM6Ci0gICAgICAgICAgICB0ZXN0X3J1bm5lci5hZGRfdGVzdF90eXBlKGZ1enp5X2ltYWdl
X2RpZmYuRnV6enlJbWFnZURpZmYpCi0KLSAgICBtZXRlci51cGRhdGUoIlN0YXJ0aW5nIC4uLiIp
Ci0gICAgaGFzX25ld19mYWlsdXJlcyA9IHRlc3RfcnVubmVyLnJ1bihyZXN1bHRfc3VtbWFyeSkK
LQotICAgIHBvcnRfb2JqLnN0b3BfaGVscGVyKCkKLQotICAgIGxvZ2dpbmcuZGVidWcoIkV4aXQg
c3RhdHVzOiAlZCIgJSBoYXNfbmV3X2ZhaWx1cmVzKQotICAgIHN5cy5leGl0KGhhc19uZXdfZmFp
bHVyZXMpCi0KLQotZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKLSAgICAiIiJQcm92aWRlcyBh
IGRlZmF1bHQgc2V0IG9mIGNvbW1hbmQgbGluZSBhcmdzLgotCi0gICAgUmV0dXJucyBhIHR1cGxl
IG9mIG9wdGlvbnMsIGFyZ3MgZnJvbSBvcHRwYXJzZSIiIgotICAgIG9wdGlvbl9wYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwg
Ii0tbm8tcGl4ZWwtdGVzdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJkaXNhYmxlIHBpeGVsLXRvLXBpeGVsIFBORyBjb21wYXJpc29ucyIpCi0gICAgb3B0
aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1mdXp6eS1waXhlbC10ZXN0cyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkFsc28gdXNlIGZ1enp5IG1hdGNo
aW5nIHRvIGNvbXBhcmUgcGl4ZWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0ZXN0IG91dHB1dHMuIikKLSAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJl
c3VsdHMtZGlyZWN0b3J5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0i
bGF5b3V0LXRlc3QtcmVzdWx0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
Ik91dHB1dCByZXN1bHRzIGRpcmVjdG9yeSBzb3VyY2UgZGlyLCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIHJlbGF0aXZlIHRvIERlYnVnIG9yIFJlbGVhc2UiKQotICAgIG9w
dGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbmV3LWJhc2VsaW5lIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic2F2ZSBhbGwgZ2VuZXJhdGVkIHJlc3Vs
dHMgYXMgbmV3IGJhc2VsaW5lcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
IGludG8gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aGF0ZXZlcidzIGFscmVhZHkgdGhlcmUuIikKLSAgICBv
cHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW5vc2hvdy1yZXN1bHRzIiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwg
aGVscD0iZG9uJ3QgbGF1bmNoIHRoZSB0ZXN0X3NoZWxsIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIHdpdGggcmVzdWx0cyBhZnRlciB0aGUgdGVzdHMgYXJlIGRvbmUiKQotICAgIG9w
dGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tZnVsbC1yZXN1bHRzLWh0bWwiLCBhY3Rpb249
InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LCBoZWxwPSJzaG93IGFsbCBmYWlsdXJlcyBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZXN1bHRzLmh0bWwsIHJhdGhlciB0aGFuIG9ubHkgcmVncmVzc2lvbnMiKQotICAgIG9w
dGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tY2xvYmJlci1vbGQtcmVzdWx0cyIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFs
c2UsIGhlbHA9IkNsb2JiZXJzIHRlc3QgcmVzdWx0cyBmcm9tICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInByZXZpb3VzIHJ1bnMuIikKLSAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRp
b24oIiIsICItLWxpbnQtdGVzdC1maWxlcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1ha2VzIHN1cmUgdGhl
IHRlc3QgZmlsZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2UgZm9yIGFs
bCBjb25maWd1cmF0aW9ucy4gRG9lcyBub3QgcnVuIGFueSAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0ZXN0cy4iKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0t
Zm9yY2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4g
YWxsIHRlc3RzLCBldmVuIHRob3NlIG1hcmtlZCBTS0lQICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaW4gdGhlIHRlc3QgbGlzdCIpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCIiLCAiLS1udW0tdGVzdC1zaGVsbHMiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJOdW1iZXIgb2YgdGVzdHNoZWxscyB0byBydW4gaW4gcGFyYWxsZWwuIikKLSAg
ICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1hcGFjaGUiLCBhY3Rpb249InN0
b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJXaGV0aGVyIHRvIHVzZSBhcGFjaGUg
aW5zdGVhZCBvZiBsaWdodHRwZC4iKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwg
Ii0tdGltZS1vdXQtbXMiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9IlNldCB0aGUgdGltZW91dCBmb3IgZWFjaCB0ZXN0IikKLSAgICBvcHRpb25fcGFy
c2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bi1zaW5nbHkiLCBhY3Rpb249InN0b3JlX3RydWUiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJydW4gYSBzZXBhcmF0ZSB0ZXN0X3NoZWxsIGZvciBlYWNo
IHRlc3QiKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tZGVidWciLCBhY3Rp
b249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJ1c2UgdGhlIGRlYnVnIGJpbmFyeSBpbnN0ZWFkIG9mIHRoZSByZWxlYXNlIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmluYXJ5IikKLSAgICBvcHRpb25f
cGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW51bS1zbG93LXRlc3RzLXRvLWxvZyIsIGRlZmF1bHQ9
NTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBzbG93IHRl
c3RzIHdob3NlIHRpbWluZ3MgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0
byBwcmludC4iKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcGxhdGZvcm0i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJPdmVycmlkZSB0aGUgcGxhdGZv
cm0gZm9yIGV4cGVjdGVkIHJlc3VsdHMiKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigi
IiwgIi0tdGFyZ2V0IiwgZGVmYXVsdD0iIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iU2V0IHRoZSBidWlsZCB0YXJnZXQgY29uZmlndXJhdGlvbiAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIihvdmVycmlkZXMgLS1kZWJ1ZykiKQotICAgIG9wdGlvbl9w
YXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbG9nIiwgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ImRldGFpbGVkLXByb2dyZXNzLHVuZXhwZWN0ZWQi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJsb2cgdmFyaW91cyB0eXBlcyBv
ZiBkYXRhLiBUaGUgcGFyYW0gc2hvdWxkIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
IGJlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdmFsdWVzIGZyb206ICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFjdHVhbCxjb25maWcsIiArIExPR19ERVRBSUxFRF9QUk9HUkVT
UyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsZXhwZWN0ZWQsdGltaW5nLCIgKyBM
T0dfVU5FWFBFQ1RFRCArICIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKGRlZmF1
bHRzIHRvICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1sb2cgZGV0YWlsZWQt
cHJvZ3Jlc3MsdW5leHBlY3RlZCkiKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiLXYi
LCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0iaW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5n
IikKLSAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXNvdXJjZXMiLCBhY3Rpb249
InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IGV4
cGVjdGVkIHJlc3VsdCBmaWxlIHBhdGggZm9yIGVhY2ggIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXN0IChpbXBsaWVzIC0tdmVyYm9zZSkiKQotICAgIG9wdGlvbl9wYXJz
ZXIuYWRkX29wdGlvbigiIiwgIi0tc3RhcnR1cC1kaWFsb2ciLCBhY3Rpb249InN0b3JlX3RydWUi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJjcmVhdGUgYSBkaWFsb2cgb24gdGVzdF9zaGVsbC5l
eGUgc3RhcnR1cCIpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1ncC1mYXVs
dC1lcnJvci1ib3giLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJlbmFibGUgV2luZG93cyBHUCBmYXVsdCBlcnJvciBib3giKQotICAgIG9wdGlvbl9wYXJzZXIu
YWRkX29wdGlvbigiIiwgIi0td3JhcHBlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9IndyYXBwZXIgY29tbWFuZCB0byBpbnNlcnQgYmVmb3JlICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaW52b2NhdGlvbnMgb2YgdGVzdF9zaGVsbDsgb3B0aW9uIGlz
IHNwbGl0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gd2hpdGVzcGFj
ZSBiZWZvcmUgcnVubmluZy4gKEV4YW1wbGU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLS13cmFwcGVyPSd2YWxncmluZCAtLXNtYy1jaGVjaz1hbGwnKSIpCi0gICAgb3B0
aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS10ZXN0LWxpc3QiLCBhY3Rpb249ImFwcGVuZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InJlYWQgbGlzdCBvZiB0ZXN0cyB0
byBydW4gZnJvbSBmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0i
RklMRSIpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1ub2NoZWNrLXN5cy1k
ZXBzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3Qg
Y2hlY2sgdGhlIHN5c3RlbSBkZXBlbmRlbmNpZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIodGhlbWVzKSIpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAi
LS1yYW5kb21pemUtb3JkZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSgiUnVuIHRlc3RzIGluIHJhbmRvbSBvcmRlciAodXNlZnVsIGZvciAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFja2luZyBkb3duIGNvcnJ1cHRpb24pIikp
Ci0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1ydW4tY2h1bmsiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9KCJSdW4gYSBzcGVjaWZpZWQgY2h1bmsgKG46bCksIHRoZSAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudGggb2YgbGVuIGwsIG9mIHRoZSBsYXlv
dXQgdGVzdHMiKSkKLSAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bi1wYXJ0
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSgiUnVuIGEgc3BlY2lmaWVkIHBhcnQgKG46bSksIHRo
ZSBudGggb2YgbSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwYXJ0cywg
b2YgdGhlIGxheW91dCB0ZXN0cyIpKQotICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwg
Ii0tYmF0Y2gtc2l6ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oIlJ1biBhIHRoZSB0ZXN0cyBp
biBiYXRjaGVzIChuKSwgYWZ0ZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZXZlcnkgbiB0ZXN0cywgdGhlIHRlc3Qgc2hlbGwgaXMgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicmVsYXVuY2hlZC4iKSkKLSAgICBvcHRpb25fcGFyc2VyLmFkZF9v
cHRpb24oIiIsICItLWJ1aWxkZXItbmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9IkRVTU1ZX0JVSUxERVJfTkFNRSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9KCJUaGUgbmFtZSBvZiB0aGUgYnVpbGRlciBzaG93biBvbiB0aGUgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2F0ZXJmYWxsIHJ1bm5pbmcgdGhpcyBzY3Jp
cHQgZS5nLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZWJLaXQuIikp
Ci0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1idWlsZC1uYW1lIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0iRFVNTVlfQlVJTERfTkFNRSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJUaGUgbmFtZSBvZiB0aGUgYnVpbGRlciB1
c2VkIGluIGl0cyBwYXRoLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJl
LmcuIHdlYmtpdC1yZWwuIikpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1i
dWlsZC1udW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJEVU1N
WV9CVUlMRF9OVU1CRVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiVGhl
IGJ1aWxkIG51bWJlciBvZiB0aGUgYnVpbGRlciBydW5uaW5nIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGhpcyBzY3JpcHQuIikpCi0gICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCIiLCAiLS1leHBlcmltZW50YWwtZnVsbHktcGFyYWxsZWwiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJydW4gYWxsIHRlc3RzIGluIHBhcmFsbGVs
IikKLSAgICByZXR1cm4gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLWlmICdfX21h
aW5fXycgPT0gX19uYW1lX186Ci0gICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3MoKQotICAg
IG1haW4ob3B0aW9ucywgYXJncykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE0YWZmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CkBAIC0wLDAgKzEsMTYyNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIiIiUnVuIGxheW91dCB0ZXN0cyB1c2luZyB0aGUgdGVzdF9zaGVsbC4KKworVGhpcyBp
cyBhIHBvcnQgb2YgdGhlIGV4aXN0aW5nIHdlYmtpdCB0ZXN0IHNjcmlwdCBydW4td2Via2l0LXRl
c3RzLgorCitUaGUgVGVzdFJ1bm5lciBjbGFzcyBydW5zIGEgc2VyaWVzIG9mIHRlc3RzIChUZXN0
VHlwZSBpbnRlcmZhY2UpIGFnYWluc3QgYSBzZXQKK29mIHRlc3QgZmlsZXMuICBJZiBhIHRlc3Qg
ZmlsZSBmYWlscyBhIFRlc3RUeXBlLCBpdCByZXR1cm5zIGEgbGlzdCBUZXN0RmFpbHVyZQorb2Jq
ZWN0cyB0byB0aGUgVGVzdFJ1bm5lci4gIFRoZSBUZXN0UnVubmVyIHRoZW4gYWdncmVnYXRlcyB0
aGUgVGVzdEZhaWx1cmVzIHRvCitjcmVhdGUgYSBmaW5hbCByZXBvcnQuCisKK1RoaXMgc2NyaXB0
IHJlYWRzIHNldmVyYWwgZmlsZXMsIGlmIHRoZXkgZXhpc3QgaW4gdGhlIHRlc3RfbGlzdHMgc3Vi
ZGlyZWN0b3J5CituZXh0IHRvIHRoaXMgc2NyaXB0IGl0c2VsZi4gIEVhY2ggc2hvdWxkIGNvbnRh
aW4gYSBsaXN0IG9mIHBhdGhzIHRvIGluZGl2aWR1YWwKK3Rlc3RzIG9yIGVudGlyZSBzdWJkaXJl
Y3RvcmllcyBvZiB0ZXN0cywgcmVsYXRpdmUgdG8gdGhlIG91dGVybW9zdCB0ZXN0CitkaXJlY3Rv
cnkuICBFbnRpcmUgbGluZXMgc3RhcnRpbmcgd2l0aCAnLy8nIChjb21tZW50cykgd2lsbCBiZSBp
Z25vcmVkLgorCitGb3IgZGV0YWlscyBvZiB0aGUgZmlsZXMnIGNvbnRlbnRzIGFuZCBwdXJwb3Nl
cywgc2VlIHRlc3RfbGlzdHMvUkVBRE1FLgorIiIiCisKK2ltcG9ydCBlcnJubworaW1wb3J0IGds
b2IKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgbWF0aAoraW1wb3J0IG9wdHBhcnNlCitpbXBvcnQg
b3MKK2ltcG9ydCBRdWV1ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc2h1dGls
CitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworCitpbXBvcnQgc2lt
cGxlanNvbgorCitmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwor
ZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IK
K2Zyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1ldGVyZWRfc3RyZWFtCitmcm9tIGxheW91dF9w
YWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCitmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0
ZXN0X3NoZWxsX3RocmVhZAorZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9maWxlcwor
ZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBmdXp6eV9pbWFnZV9kaWZmCitmcm9tIHRlc3RfdHlwZXMg
aW1wb3J0IGltYWdlX2RpZmYKK2Zyb20gdGVzdF90eXBlcyBpbXBvcnQgdGVzdF90eXBlX2Jhc2UK
K2Zyb20gdGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCisKK2ltcG9ydCBwb3J0CisKKyMgSW5k
aWNhdGVzIHRoYXQgd2Ugd2FudCBkZXRhaWxlZCBwcm9ncmVzcyB1cGRhdGVzIGluIHRoZSBvdXRw
dXQgKHByaW50cworIyBkaXJlY3RvcnktYnktZGlyZWN0b3J5IGZlZWRiYWNrKS4KK0xPR19ERVRB
SUxFRF9QUk9HUkVTUyA9ICdkZXRhaWxlZC1wcm9ncmVzcycKKworIyBMb2cgYW55IHVuZXhwZWN0
ZWQgcmVzdWx0cyB3aGlsZSBydW5uaW5nIChpbnN0ZWFkIG9mIGp1c3QgYXQgdGhlIGVuZCkuCitM
T0dfVU5FWFBFQ1RFRCA9ICd1bmV4cGVjdGVkJworCisjIEJ1aWxkZXIgYmFzZSBVUkwgd2hlcmUg
d2UgaGF2ZSB0aGUgYXJjaGl2ZWQgdGVzdCByZXN1bHRzLgorQlVJTERFUl9CQVNFX1VSTCA9ICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvIgor
CitUZXN0RXhwZWN0YXRpb25zRmlsZSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlv
bnNGaWxlCisKKworY2xhc3MgVGVzdEluZm86CisgICAgIiIiR3JvdXBzIGluZm9ybWF0aW9uIGFi
b3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRpbWVvdXQpOgorICAgICAgICAiIiJHZW5lcmF0ZXMg
dGhlIFVSSSBhbmQgc3RvcmVzIHRoZSBmaWxlbmFtZSBhbmQgdGltZW91dCBmb3IgdGhpcyB0ZXN0
LgorICAgICAgICBBcmdzOgorICAgICAgICAgIGZpbGVuYW1lOiBGdWxsIHBhdGggdG8gdGhlIHRl
c3QuCisgICAgICAgICAgdGltZW91dDogVGltZW91dCBmb3IgcnVubmluZyB0aGUgdGVzdCBpbiBU
ZXN0U2hlbGwuCisgICAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFt
ZQorICAgICAgICBzZWxmLnVyaSA9IHBvcnQuZmlsZW5hbWVfdG9fdXJpKGZpbGVuYW1lKQorICAg
ICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIGV4cGVjdGVkX2hhc2hfZmlsZSA9
IHBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsICcuY2hlY2tzdW0nKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBvcGVuKGV4cGVjdGVkX2hhc2hfZmls
ZSwgInIiKS5yZWFkKCkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgICAgICBp
ZiBlcnJuby5FTk9FTlQgIT0gZS5lcnJubzoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAg
ICAgICAgc2VsZi5pbWFnZV9oYXNoID0gTm9uZQorCisKK2NsYXNzIFJlc3VsdFN1bW1hcnkob2Jq
ZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBwYXJ0aXRpb25pbmcgdGhlIHRlc3QgcmVzdWx0cyB3
ZSBnZXQgaW50byBidWNrZXRzLgorCisgICAgVGhpcyBjbGFzcyBpcyBiYXNpY2FsbHkgYSBnbG9y
aWZpZWQgc3RydWN0IGFuZCBpdCdzIHByaXZhdGUgdG8gdGhpcyBmaWxlCisgICAgc28gd2UgZG9u
J3QgYm90aGVyIHdpdGggYW55IGluZm9ybWF0aW9uIGhpZGluZy4iIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBleHBlY3RhdGlvbnMsIHRlc3RfZmlsZXMpOgorICAgICAgICBzZWxmLnRvdGFs
ID0gbGVuKHRlc3RfZmlsZXMpCisgICAgICAgIHNlbGYucmVtYWluaW5nID0gc2VsZi50b3RhbAor
ICAgICAgICBzZWxmLmV4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucworICAgICAgICBzZWxmLmV4
cGVjdGVkID0gMAorICAgICAgICBzZWxmLnVuZXhwZWN0ZWQgPSAwCisgICAgICAgIHNlbGYudGVz
dHNfYnlfZXhwZWN0YXRpb24gPSB7fQorICAgICAgICBzZWxmLnRlc3RzX2J5X3RpbWVsaW5lID0g
e30KKyAgICAgICAgc2VsZi5yZXN1bHRzID0ge30KKyAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Jl
c3VsdHMgPSB7fQorICAgICAgICBzZWxmLmZhaWx1cmVzID0ge30KKyAgICAgICAgc2VsZi50ZXN0
c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQXSA9IHNldCgpCisgICAgICAg
IGZvciBleHBlY3RhdGlvbiBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlMudmFs
dWVzKCk6CisgICAgICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uW2V4cGVjdGF0aW9u
XSA9IHNldCgpCisgICAgICAgIGZvciB0aW1lbGluZSBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5U
SU1FTElORVMudmFsdWVzKCk6CisgICAgICAgICAgICBzZWxmLnRlc3RzX2J5X3RpbWVsaW5lW3Rp
bWVsaW5lXSA9ICgKKyAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhf
dGltZWxpbmUodGltZWxpbmUpKQorCisgICAgZGVmIGFkZChzZWxmLCB0ZXN0LCBmYWlsdXJlcywg
cmVzdWx0LCBleHBlY3RlZCk6CisgICAgICAgICIiIkFkZCBhIHJlc3VsdCBpbnRvIHRoZSBhcHBy
b3ByaWF0ZSBiaW4uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0ZXN0OiB0ZXN0IGZpbGUg
bmFtZQorICAgICAgICAgIGZhaWx1cmVzOiBsaXN0IG9mIGZhaWx1cmUgb2JqZWN0cyBmcm9tIHRl
c3QgZXhlY3V0aW9uCisgICAgICAgICAgcmVzdWx0OiByZXN1bHQgb2YgdGVzdCAoUEFTUywgSU1B
R0UsIGV0Yy4pLgorICAgICAgICAgIGV4cGVjdGVkOiB3aGV0aGVyIHRoZSByZXN1bHQgd2FzIHdo
YXQgd2UgZXhwZWN0ZWQgaXQgdG8gYmUuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYudGVz
dHNfYnlfZXhwZWN0YXRpb25bcmVzdWx0XS5hZGQodGVzdCkKKyAgICAgICAgc2VsZi5yZXN1bHRz
W3Rlc3RdID0gcmVzdWx0CisgICAgICAgIHNlbGYucmVtYWluaW5nIC09IDEKKyAgICAgICAgaWYg
bGVuKGZhaWx1cmVzKToKKyAgICAgICAgICAgIHNlbGYuZmFpbHVyZXNbdGVzdF0gPSBmYWlsdXJl
cworICAgICAgICBpZiBleHBlY3RlZDoKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgKz0gMQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Jlc3VsdHNbdGVzdF0g
PSByZXN1bHQKKyAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZCArPSAxCisKKworY2xhc3MgVGVz
dFJ1bm5lcjoKKyAgICAiIiJBIGNsYXNzIGZvciBtYW5hZ2luZyBydW5uaW5nIGEgc2VyaWVzIG9m
IHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAorICAgIHRlc3QgZmlsZXMuIiIiCisKKyAgICBI
VFRQX1NVQkRJUiA9IG9zLnNlcC5qb2luKFsnJywgJ2h0dHAnLCAnJ10pCisgICAgV0VCU09DS0VU
X1NVQkRJUiA9IG9zLnNlcC5qb2luKFsnJywgJ3dlYnNvY2tldCcsICcnXSkKKworICAgICMgVGhl
IHBlci10ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLCBpZiBubyAtLXRpbWUtb3V0LW1zIG9w
dGlvbiB3YXMKKyAgICAjIGdpdmVuIHRvIHJ1bl93ZWJraXRfdGVzdHMuIFRoaXMgc2hvdWxkIGNv
cnJlc3BvbmQgdG8gdGhlIGRlZmF1bHQgdGltZW91dAorICAgICMgaW4gdGVzdF9zaGVsbC5leGUu
CisgICAgREVGQVVMVF9URVNUX1RJTUVPVVRfTVMgPSA2ICogMTAwMAorCisgICAgTlVNX1JFVFJZ
X09OX1VORVhQRUNURURfRkFJTFVSRSA9IDEKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
LCBvcHRpb25zLCBtZXRlcik6CisgICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0
YSBzdHJ1Y3R1cmVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcG9ydDogYW4gb2JqZWN0
IGltcGxlbWVudGluZyBwb3J0LXNwZWNpZmljCisgICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9u
YXJ5IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgICAgbWV0ZXI6IGEgTWV0ZXJlZFN0
cmVhbSBvYmplY3QgdG8gcmVjb3JkIHVwZGF0ZXMgdG8uCisgICAgICAgICIiIgorICAgICAgICBz
ZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAg
ICBzZWxmLl9tZXRlciA9IG1ldGVyCisKKyAgICAgICAgIyBkaXNhYmxlIHdzcyBzZXJ2ZXIuIG5l
ZWQgdG8gaW5zdGFsbCBweU9wZW5TU0wgb24gYnVpbGRib3RzLgorICAgICAgICAjIHNlbGYuX3dl
YnNvY2tldF9zZWN1cmVfc2VydmVyID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNvY2tldCgKKyAg
ICAgICAgIyAgICAgICAgb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgdXNlX3Rscz1UcnVlLCBw
b3J0PTkzMjMpCisKKyAgICAgICAgIyBhIGxpc3Qgb2YgVGVzdFR5cGUgb2JqZWN0cworICAgICAg
ICBzZWxmLl90ZXN0X3R5cGVzID0gW10KKworICAgICAgICAjIGEgc2V0IG9mIHRlc3QgZmlsZXMs
IGFuZCB0aGUgc2FtZSB0ZXN0cyBhcyBhIGxpc3QKKyAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9
IHNldCgpCisgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5fcmVzdWx0X3F1ZXVlID0gUXVldWUuUXVldWUoKQorCisgICAgICAgICMgVGhlc2UgYXJlIHVz
ZWQgZm9yIC0tbG9nIGRldGFpbGVkLXByb2dyZXNzIHRvIHRyYWNrIHN0YXR1cyBieQorICAgICAg
ICAjIGRpcmVjdG9yeS4KKyAgICAgICAgc2VsZi5fY3VycmVudF9kaXIgPSBOb25lCisgICAgICAg
IHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyID0gIiIKKyAgICAgICAgc2VsZi5fY3VycmVudF90
ZXN0X251bWJlciA9IDAKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBsb2dnaW5n
LmRlYnVnKCJmbHVzaGluZyBzdGRvdXQiKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAg
ICAgICAgbG9nZ2luZy5kZWJ1ZygiZmx1c2hpbmcgc3RkZXJyIikKKyAgICAgICAgc3lzLnN0ZGVy
ci5mbHVzaCgpCisgICAgICAgIGxvZ2dpbmcuZGVidWcoInN0b3BwaW5nIGh0dHAgc2VydmVyIikK
KyAgICAgICAgc2VsZi5fcG9ydC5zdG9wX2h0dHBfc2VydmVyKCkKKyAgICAgICAgbG9nZ2luZy5k
ZWJ1Zygic3RvcHBpbmcgd2Vic29ja2V0IHNlcnZlciIpCisgICAgICAgIHNlbGYuX3BvcnQuc3Rv
cF93ZWJzb2NrZXRfc2VydmVyKCkKKworICAgIGRlZiBnYXRoZXJfZmlsZV9wYXRocyhzZWxmLCBw
YXRocyk6CisgICAgICAgICIiIkZpbmQgYWxsIHRoZSBmaWxlcyB0byB0ZXN0LgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgcGF0aHM6IGEgbGlzdCBvZiBnbG9icyB0byB1c2UgaW5zdGVhZCBv
ZiB0aGUgZGVmYXVsdHMuIiIiCisgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSB0ZXN0X2ZpbGVz
LmdhdGhlcl90ZXN0X2ZpbGVzKHNlbGYuX3BvcnQsIHBhdGhzKQorCisgICAgZGVmIHBhcnNlX2V4
cGVjdGF0aW9ucyhzZWxmLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGUpOgorICAg
ICAgICAiIiJQYXJzZSB0aGUgZXhwZWN0YXRpb25zIGZyb20gdGhlIHRlc3RfbGlzdCBmaWxlcyBh
bmQgcmV0dXJuIGEgZGF0YQorICAgICAgICBzdHJ1Y3R1cmUgaG9sZGluZyB0aGVtLiBUaHJvd3Mg
YW4gZXJyb3IgaWYgdGhlIHRlc3RfbGlzdCBmaWxlcyBoYXZlCisgICAgICAgIGludmFsaWQgc3lu
dGF4LiIiIgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlczoKKyAgICAg
ICAgICAgIHRlc3RfZmlsZXMgPSBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0
X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxlcworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4
cGVjdGF0aW9uc19zdHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zKCkKKyAgICAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlv
bnMoCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydCwgdGVzdF9maWxlcywgZXhwZWN0YXRpb25z
X3N0ciwgdGVzdF9wbGF0Zm9ybV9uYW1lLAorICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGUs
IHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2V4cGVjdGF0aW9ucworICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlcnI6CisgICAgICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlczoKKyAgICAgICAgICAgICAgICBwcmlu
dCBzdHIoZXJyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBlcnIK
KworICAgIGRlZiBwcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoc2VsZiwgd3JpdGUpOgor
ICAgICAgICAiIiJDcmVhdGUgYXBwcm9wcmlhdGUgc3Vic2V0cyBvZiB0ZXN0IGxpc3RzIGFuZCBy
ZXR1cm5zIGEKKyAgICAgICAgUmVzdWx0U3VtbWFyeSBvYmplY3QuIEFsc28gcHJpbnRzIGV4cGVj
dGVkIHRlc3QgY291bnRzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgd3JpdGU6IEEgY2Fs
bGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5nLiwgYSBMb2dnaW5nV3JpdGVyKSBvcgorICAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUuCisgICAgICAgICIiIgorCisgICAgICAgICMgUmVtb3Zl
IHNraXBwZWQgLSBib3RoIGZpeGFibGUgYW5kIGlnbm9yZWQgLSBmaWxlcyBmcm9tIHRoZQorICAg
ICAgICAjIHRvcC1sZXZlbCBsaXN0IG9mIGZpbGVzIHRvIHRlc3QuCisgICAgICAgIG51bV9hbGxf
dGVzdF9maWxlcyA9IGxlbihzZWxmLl90ZXN0X2ZpbGVzKQorICAgICAgICB3cml0ZSgiRm91bmQ6
ICAlZCB0ZXN0cyIgJSAobGVuKHNlbGYuX3Rlc3RfZmlsZXMpKSkKKyAgICAgICAgc2tpcHBlZCA9
IHNldCgpCisgICAgICAgIGlmIG51bV9hbGxfdGVzdF9maWxlcyA+IDEgYW5kIG5vdCBzZWxmLl9v
cHRpb25zLmZvcmNlOgorICAgICAgICAgICAgc2tpcHBlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5n
ZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfZXhwZWN0YXRpb25zLlNLSVApCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzIC09IHNr
aXBwZWQKKworICAgICAgICAjIENyZWF0ZSBhIHNvcnRlZCBsaXN0IG9mIHRlc3QgZmlsZXMgc28g
dGhlIHN1YnNldCBjaHVuaywKKyAgICAgICAgIyBpZiB1c2VkLCBjb250YWlucyBhbHBoYWJldGlj
YWxseSBjb25zZWN1dGl2ZSB0ZXN0cy4KKyAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0g
bGlzdChzZWxmLl90ZXN0X2ZpbGVzKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJhbmRvbWl6
ZV9vcmRlcjoKKyAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNfbGlz
dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5zb3J0
KCkKKworICAgICAgICAjIElmIHRoZSB1c2VyIHNwZWNpZmllcyB0aGV5IGp1c3Qgd2FudCB0byBy
dW4gYSBzdWJzZXQgb2YgdGhlIHRlc3RzLAorICAgICAgICAjIGp1c3QgZ3JhYiBhIHN1YnNldCBv
ZiB0aGUgbm9uLXNraXBwZWQgdGVzdHMuCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX2No
dW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQ6CisgICAgICAgICAgICBjaHVua192YWx1ZSA9
IHNlbGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQKKyAgICAg
ICAgICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICAoY2h1bmtfbnVtLCBjaHVua19sZW4pID0gY2h1bmtfdmFsdWUu
c3BsaXQoIjoiKQorICAgICAgICAgICAgICAgIGNodW5rX251bSA9IGludChjaHVua19udW0pCisg
ICAgICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA+PSAwKQorICAgICAgICAgICAgICAgIHRl
c3Rfc2l6ZSA9IGludChjaHVua19sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rfc2l6
ZSA+IDApCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0
aWNhbCgiaW52YWxpZCBjaHVuayAnJXMnIiAlIGNodW5rX3ZhbHVlKQorICAgICAgICAgICAgICAg
IHN5cy5leGl0KDEpCisKKyAgICAgICAgICAgICMgR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMKKyAg
ICAgICAgICAgIG51bV90ZXN0cyA9IGxlbih0ZXN0X2ZpbGVzKQorCisgICAgICAgICAgICAjIEdl
dCB0aGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KKyAgICAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMucnVuX2NodW5rOgorICAgICAgICAgICAgICAgIGNodW5rX2xlbiA9IHRlc3Rfc2l6ZQor
ICAgICAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlIGNodW5rX251bSBjYW4gYmUgcmVhbGx5IGxh
cmdlLiBXZSBuZWVkCisgICAgICAgICAgICAgICAgIyB0byBtYWtlIHRoZSBzbGF2ZSBmaXQgaW4g
dGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRlc3RzLgorICAgICAgICAgICAgICAgIHNsaWNlX3N0YXJ0
ID0gKGNodW5rX251bSAqIGNodW5rX2xlbikgJSBudW1fdGVzdHMKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgIyBWYWxpZGF0ZSB0aGUgZGF0YS4KKyAgICAgICAgICAgICAgICBh
c3NlcnQodGVzdF9zaXplIDw9IG51bV90ZXN0cykKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2h1
bmtfbnVtIDw9IHRlc3Rfc2l6ZSkKKworICAgICAgICAgICAgICAgICMgVG8gY291bnQgdGhlIGNo
dW5rX2xlbiwgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBza2lwCisgICAgICAgICAgICAgICAgIyBz
b21lIHRlc3RzLCB3ZSByb3VuZCB0byB0aGUgbmV4dCB2YWx1ZSB0aGF0IGZpdHMgZXhhY3RseQor
ICAgICAgICAgICAgICAgICMgYWxsIHRoZSBwYXJ0cy4KKyAgICAgICAgICAgICAgICByb3VuZGVk
X3Rlc3RzID0gbnVtX3Rlc3RzCisgICAgICAgICAgICAgICAgaWYgcm91bmRlZF90ZXN0cyAlIHRl
c3Rfc2l6ZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gKG51bV90
ZXN0cyArIHRlc3Rfc2l6ZSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG51bV90ZXN0cyAlIHRlc3Rfc2l6ZSkpCisKKyAgICAgICAgICAgICAgICBjaHVua19sZW4gPSBy
b3VuZGVkX3Rlc3RzIC8gdGVzdF9zaXplCisgICAgICAgICAgICAgICAgc2xpY2Vfc3RhcnQgPSBj
aHVua19sZW4gKiAoY2h1bmtfbnVtIC0gMSkKKyAgICAgICAgICAgICAgICAjIEl0IGRvZXMgbm90
IG1pbmQgaWYgd2UgZ28gb3ZlciB0ZXN0X3NpemUuCisKKyAgICAgICAgICAgICMgR2V0IHRoZSBl
bmQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KKyAgICAgICAgICAgIHNsaWNlX2VuZCA9IG1pbihudW1f
dGVzdHMsIHNsaWNlX3N0YXJ0ICsgY2h1bmtfbGVuKQorCisgICAgICAgICAgICBmaWxlcyA9IHRl
c3RfZmlsZXNbc2xpY2Vfc3RhcnQ6c2xpY2VfZW5kXQorCisgICAgICAgICAgICB0ZXN0c19ydW5f
bXNnID0gJ1J1bm5pbmc6ICVkIHRlc3RzIChjaHVuayBzbGljZSBbJWQ6JWRdIG9mICVkKScgJSAo
CisgICAgICAgICAgICAgICAgKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0KSwgc2xpY2Vfc3RhcnQs
IHNsaWNlX2VuZCwgbnVtX3Rlc3RzKQorICAgICAgICAgICAgd3JpdGUodGVzdHNfcnVuX21zZykK
KworICAgICAgICAgICAgIyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgYW5kIHdlIGRvbid0IGhhdmUg
ZW5vdWdoIHRlc3RzLCB3ZSBydW4gc29tZQorICAgICAgICAgICAgIyBmcm9tIHRoZSBiZWdpbm5p
bmcuCisgICAgICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5ydW5fY2h1bmsgYW5kCisgICAgICAg
ICAgICAgICAgKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0IDwgY2h1bmtfbGVuKSk6CisgICAgICAg
ICAgICAgICAgZXh0cmEgPSAxICsgY2h1bmtfbGVuIC0gKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0
KQorICAgICAgICAgICAgICAgIGV4dHJhX21zZyA9ICgnICAgbGFzdCBjaHVuayBpcyBwYXJ0aWFs
LCBhcHBlbmRpbmcgWzA6JWRdJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEp
CisgICAgICAgICAgICAgICAgd3JpdGUoZXh0cmFfbXNnKQorICAgICAgICAgICAgICAgIHRlc3Rz
X3J1bl9tc2cgKz0gIlxuIiArIGV4dHJhX21zZworICAgICAgICAgICAgICAgIGZpbGVzLmV4dGVu
ZCh0ZXN0X2ZpbGVzWzA6ZXh0cmFdKQorICAgICAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0g
b3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RzX3J1bi50eHQiKQorICAg
ICAgICAgICAgdGVzdHNfcnVuX2ZpbGUgPSBvcGVuKHRlc3RzX3J1bl9maWxlbmFtZSwgInciKQor
ICAgICAgICAgICAgdGVzdHNfcnVuX2ZpbGUud3JpdGUodGVzdHNfcnVuX21zZyArICJcbiIpCisg
ICAgICAgICAgICB0ZXN0c19ydW5fZmlsZS5jbG9zZSgpCisKKyAgICAgICAgICAgIGxlbl9za2lw
X2NodW5rID0gaW50KGxlbihmaWxlcykgKiBsZW4oc2tpcHBlZCkgLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQobGVuKHNlbGYuX3Rlc3RfZmlsZXMpKSkKKyAgICAgICAg
ICAgIHNraXBfY2h1bmtfbGlzdCA9IGxpc3Qoc2tpcHBlZClbMDpsZW5fc2tpcF9jaHVua10KKyAg
ICAgICAgICAgIHNraXBfY2h1bmsgPSBzZXQoc2tpcF9jaHVua19saXN0KQorCisgICAgICAgICAg
ICAjIFVwZGF0ZSBleHBlY3RhdGlvbnMgc28gdGhhdCB0aGUgc3RhdHMgYXJlIGNhbGN1bGF0ZWQg
Y29ycmVjdGx5LgorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBhc3MgYSBsaXN0IHRoYXQgaW5j
bHVkZXMgdGhlIHJpZ2h0ICMgb2Ygc2tpcHBlZCBmaWxlcworICAgICAgICAgICAgIyB0byBQYXJz
ZUV4cGVjdGF0aW9ucyBzbyB0aGF0IFJlc3VsdFN1bW1hcnkoKSB3aWxsIGdldCB0aGUgY29ycmVj
dAorICAgICAgICAgICAgIyBzdGF0cy4gU28sIHdlIGFkZCBpbiB0aGUgc3Vic2V0IG9mIHNraXBw
ZWQgZmlsZXMsIGFuZCB0aGVuCisgICAgICAgICAgICAjIHN1YnRyYWN0IHRoZW0gYmFjayBvdXQu
CisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcyArIHNraXBfY2h1bmtf
bGlzdAorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChzZWxmLl90ZXN0X2ZpbGVz
X2xpc3QpCisKKyAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHNlbGYucGFyc2VfZXhw
ZWN0YXRpb25zKAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1l
KCksCisgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50YXJnZXQgPT0gJ0RlYnVnJykKKwor
ICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChmaWxlcykKKyAgICAgICAgICAgIHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
a2lwX2NodW5rID0gc2tpcHBlZAorCisgICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gUmVzdWx0U3Vt
bWFyeShzZWxmLl9leHBlY3RhdGlvbnMsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzIHwg
c2tpcF9jaHVuaykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBl
KHdyaXRlLCByZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBB
U1MsICJwYXNzZXMiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5
cGUod3JpdGUsIHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMu
RkFJTCwgImZhaWx1cmVzIikKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19v
Zl90eXBlKHdyaXRlLCByZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRp
b25zLkZMQUtZLCAiZmxha3kiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRz
X29mX3R5cGUod3JpdGUsIHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3Rh
dGlvbnMuU0tJUCwgInNraXBwZWQiKQorCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5mb3Jj
ZToKKyAgICAgICAgICAgIHdyaXRlKCdSdW5uaW5nIGFsbCB0ZXN0cywgaW5jbHVkaW5nIHNraXBz
ICgtLWZvcmNlKScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBk
b24ndCBhY3R1YWxseSBydW4gdGhlIHNraXBwZWQgdGVzdHMgKHRoZXkgd2VyZQorICAgICAgICAg
ICAgIyBzdWJ0cmFjdGVkIG91dCBvZiBzZWxmLl90ZXN0X2ZpbGVzLCBhYm92ZSksIGJ1dCB3ZSBz
dHViIG91dCB0aGUKKyAgICAgICAgICAgICMgcmVzdWx0cyBoZXJlIHNvIHRoZSBzdGF0aXN0aWNz
IGNhbiByZW1haW4gYWNjdXJhdGUuCisgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lwX2NodW5r
OgorICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFkZCh0ZXN0LCBbXSwgdGVzdF9leHBl
Y3RhdGlvbnMuU0tJUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQ9VHJ1ZSkKKyAgICAgICAgd3JpdGUoIiIpCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9zdW1t
YXJ5CisKKyAgICBkZWYgYWRkX3Rlc3RfdHlwZShzZWxmLCB0ZXN0X3R5cGUpOgorICAgICAgICAi
IiJBZGQgYSBUZXN0VHlwZSB0byB0aGUgVGVzdFJ1bm5lci4iIiIKKyAgICAgICAgc2VsZi5fdGVz
dF90eXBlcy5hcHBlbmQodGVzdF90eXBlKQorCisgICAgZGVmIF9nZXRfZGlyX2Zvcl90ZXN0X2Zp
bGUoc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgaGlnaGVzdC1sZXZl
bCBkaXJlY3RvcnkgYnkgd2hpY2ggdG8gc2hhcmQgdGhlIGdpdmVuCisgICAgICAgIHRlc3QgZmls
ZS4iIiIKKyAgICAgICAgaW5kZXggPSB0ZXN0X2ZpbGUucmZpbmQob3Muc2VwICsgJ0xheW91dFRl
c3RzJyArIG9zLnNlcCkKKworICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVbaW5kZXggKyBs
ZW4oJ0xheW91dFRlc3RzLycpOl0KKyAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVzdF9maWxl
LnNwbGl0KG9zLnNlcCwgMSkKKyAgICAgICAgZGlyZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRzWzBd
CisgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZV9wYXJ0c1sxXQorCisgICAgICAgICMgVGhl
IGh0dHAgdGVzdHMgYXJlIHZlcnkgc3RhYmxlIG9uIG1hYy9saW51eC4KKyAgICAgICAgIyBUT0RP
KG9qYW4pOiBNYWtlIHRoZSBodHRwIHNlcnZlciBvbiBXaW5kb3dzIGJlIGFwYWNoZSBzbyB3ZSBj
YW4KKyAgICAgICAgIyB0dXJuIHNoYXJkIHRoZSBodHRwIHRlc3RzIHRoZXJlIGFzIHdlbGwuIFN3
aXRjaGluZyB0byBhcGFjaGUgaXMKKyAgICAgICAgIyB3aGF0IG1hZGUgdGhlbSBzdGFibGUgb24g
bGludXgvbWFjLgorICAgICAgICByZXR1cm5fdmFsdWUgPSBkaXJlY3RvcnkKKyAgICAgICAgd2hp
bGUgKChkaXJlY3RvcnkgIT0gJ2h0dHAnIG9yIHN5cy5wbGF0Zm9ybSBpbiAoJ2RhcndpbicsICds
aW51eDInKSkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF9maWxlLmZpbmQob3Muc2VwKSA+PSAw
KToKKyAgICAgICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3RfZmlsZS5zcGxpdChvcy5zZXAs
IDEpCisgICAgICAgICAgICBkaXJlY3RvcnkgPSB0ZXN0X2ZpbGVfcGFydHNbMF0KKyAgICAgICAg
ICAgIHJldHVybl92YWx1ZSA9IG9zLnBhdGguam9pbihyZXR1cm5fdmFsdWUsIGRpcmVjdG9yeSkK
KyAgICAgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZV9wYXJ0c1sxXQorCisgICAgICAgIHJl
dHVybiByZXR1cm5fdmFsdWUKKworICAgIGRlZiBfZ2V0X3Rlc3RfaW5mb19mb3JfZmlsZShzZWxm
LCB0ZXN0X2ZpbGUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBUZXN0SW5m
byBvYmplY3QgZm9yIHRoZSBmaWxlLiBNb3N0bHkgdGhpcworICAgICAgICBpcyB1c2VkIGZvciBs
b29raW5nIHVwIHRoZSB0aW1lb3V0IHZhbHVlIChpbiBtcykgdG8gdXNlIGZvciB0aGUgZ2l2ZW4K
KyAgICAgICAgdGVzdC4iIiIKKyAgICAgICAgaWYgc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2Rp
Zmllcih0ZXN0X2ZpbGUsIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpOgorICAgICAgICAgICAgcmV0
dXJuIFRlc3RJbmZvKHNlbGYuX3BvcnQsIHRlc3RfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpCisgICAgICAgIHJldHVybiBU
ZXN0SW5mbyhzZWxmLl9wb3J0LCB0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMp
CisKKyAgICBkZWYgX2dldF90ZXN0X2ZpbGVfcXVldWUoc2VsZiwgdGVzdF9maWxlcyk6CisgICAg
ICAgICIiIkNyZWF0ZSB0aGUgdGhyZWFkIHNhZmUgcXVldWUgb2YgbGlzdHMgb2YgKHRlc3QgZmls
ZW5hbWVzLCB0ZXN0IFVSSXMpCisgICAgICAgIHR1cGxlcy4gRWFjaCBUZXN0U2hlbGxUaHJlYWQg
cHVsbHMgYSBsaXN0IGZyb20gdGhpcyBxdWV1ZSBhbmQgcnVucworICAgICAgICB0aG9zZSB0ZXN0
cyBpbiBvcmRlciBiZWZvcmUgZ3JhYmJpbmcgdGhlIG5leHQgYXZhaWxhYmxlIGxpc3QuCisKKyAg
ICAgICAgU2hhcmQgdGhlIGxpc3RzIGJ5IGRpcmVjdG9yeS4gVGhpcyBoZWxwcyBlbnN1cmUgdGhh
dCB0ZXN0cyB0aGF0IGRlcGVuZAorICAgICAgICBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3Rz
ISkgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QKKyAgICAgICAgY3Jvc3MtdGVzdHMg
ZGVwZW5kZW5jaWVzIHRlbmQgdG8gb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKwor
ICAgICAgICBSZXR1cm46CisgICAgICAgICAgVGhlIFF1ZXVlIG9mIGxpc3RzIG9mIFRlc3RJbmZv
IG9iamVjdHMuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIChzZWxmLl9vcHRpb25zLmV4cGVy
aW1lbnRhbF9mdWxseV9wYXJhbGxlbCBvcgorICAgICAgICAgICAgc2VsZi5faXNfc2luZ2xlX3Ro
cmVhZGVkKCkpOgorICAgICAgICAgICAgZmlsZW5hbWVfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisg
ICAgICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CisgICAgICAgICAgICAgICAg
ZmlsZW5hbWVfcXVldWUucHV0KAorICAgICAgICAgICAgICAgICAgICAoJy4nLCBbc2VsZi5fZ2V0
X3Rlc3RfaW5mb19mb3JfZmlsZSh0ZXN0X2ZpbGUpXSkpCisgICAgICAgICAgICByZXR1cm4gZmls
ZW5hbWVfcXVldWUKKworICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQorICAgICAgICBmb3IgdGVz
dF9maWxlIGluIHRlc3RfZmlsZXM6CisgICAgICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLl9nZXRf
ZGlyX2Zvcl90ZXN0X2ZpbGUodGVzdF9maWxlKQorICAgICAgICAgICAgdGVzdHNfYnlfZGlyLnNl
dGRlZmF1bHQoZGlyZWN0b3J5LCBbXSkKKyAgICAgICAgICAgIHRlc3RzX2J5X2RpcltkaXJlY3Rv
cnldLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9nZXRfdGVzdF9pbmZvX2Zvcl9maWxl
KHRlc3RfZmlsZSkpCisKKyAgICAgICAgIyBTb3J0IGJ5IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4g
dGhlIGRpciBzbyB0aGF0IHRoZSBvbmVzIHdpdGggdGhlCisgICAgICAgICMgbW9zdCB0ZXN0cyBn
ZXQgcnVuIGZpcnN0IGluIG9yZGVyIHRvIG1heGltaXplIHBhcmFsbGVsaXphdGlvbi4KKyAgICAg
ICAgIyBOdW1iZXIgb2YgdGVzdHMgaXMgYSBnb29kIGVub3VnaCwgYnV0IG5vdCBwZXJmZWN0LCBh
cHByb3hpbWF0aW9uCisgICAgICAgICMgb2YgaG93IGxvbmcgdGhhdCBzZXQgb2YgdGVzdHMgd2ls
bCB0YWtlIHRvIHJ1bi4gV2UgY2FuJ3QganVzdCB1c2UKKyAgICAgICAgIyBhIFByaW9yaXR5UXVl
dWUgdW50aWwgd2UgbW92ZSAjIHRvIFB5dGhvbiAyLjYuCisgICAgICAgIHRlc3RfbGlzdHMgPSBb
XQorICAgICAgICBodHRwX3Rlc3RzID0gTm9uZQorICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHRl
c3RzX2J5X2RpcjoKKyAgICAgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RzX2J5X2RpcltkaXJlY3Rv
cnldCisgICAgICAgICAgICAjIEtlZXAgdGhlIHRlc3RzIGluIGFscGhhYmV0aWNhbCBvcmRlci4K
KyAgICAgICAgICAgICMgVE9ETzogUmVtb3ZlIG9uY2UgdGVzdHMgYXJlIGZpeGVkIHNvIHRoZXkg
Y2FuIGJlIHJ1biBpbiBhbnkKKyAgICAgICAgICAgICMgb3JkZXIuCisgICAgICAgICAgICB0ZXN0
X2xpc3QucmV2ZXJzZSgpCisgICAgICAgICAgICB0ZXN0X2xpc3RfdHVwbGUgPSAoZGlyZWN0b3J5
LCB0ZXN0X2xpc3QpCisgICAgICAgICAgICBpZiBkaXJlY3RvcnkgPT0gJ0xheW91dFRlc3RzJyAr
IG9zLnNlcCArICdodHRwJzoKKyAgICAgICAgICAgICAgICBodHRwX3Rlc3RzID0gdGVzdF9saXN0
X3R1cGxlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRlc3RfbGlzdHMuYXBw
ZW5kKHRlc3RfbGlzdF90dXBsZSkKKyAgICAgICAgdGVzdF9saXN0cy5zb3J0KGxhbWJkYSBhLCBi
OiBjbXAobGVuKGJbMV0pLCBsZW4oYVsxXSkpKQorCisgICAgICAgICMgUHV0IHRoZSBodHRwIHRl
c3RzIGZpcnN0LiBUaGVyZSBhcmUgb25seSBhIGNvdXBsZSBodW5kcmVkIG9mIHRoZW0sCisgICAg
ICAgICMgYnV0IGVhY2ggaHR0cCB0ZXN0IHRha2VzIGEgdmVyeSBsb25nIHRpbWUgdG8gcnVuLCBz
byBzb3J0aW5nIGJ5IHRoZQorICAgICAgICAjIG51bWJlciBvZiB0ZXN0cyBkb2Vzbid0IGFjY3Vy
YXRlbHkgY2FwdHVyZSBob3cgbG9uZyB0aGV5IHRha2UgdG8gcnVuLgorICAgICAgICBpZiBodHRw
X3Rlc3RzOgorICAgICAgICAgICAgdGVzdF9saXN0cy5pbnNlcnQoMCwgaHR0cF90ZXN0cykKKwor
ICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgZm9yIGl0ZW0g
aW4gdGVzdF9saXN0czoKKyAgICAgICAgICAgIGZpbGVuYW1lX3F1ZXVlLnB1dChpdGVtKQorICAg
ICAgICByZXR1cm4gZmlsZW5hbWVfcXVldWUKKworICAgIGRlZiBfZ2V0X3Rlc3Rfc2hlbGxfYXJn
cyhzZWxmLCBpbmRleCk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHR1cGxlIG9mIGFyZ3VtZW50
cyBmb3IgdGVzdHMgYW5kIGZvciB0ZXN0X3NoZWxsLiIiIgorICAgICAgICBzaGVsbF9hcmdzID0g
W10KKyAgICAgICAgdGVzdF9hcmdzID0gdGVzdF90eXBlX2Jhc2UuVGVzdEFyZ3VtZW50cygpCisg
ICAgICAgIHBuZ19wYXRoID0gTm9uZQorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ub19w
aXhlbF90ZXN0czoKKyAgICAgICAgICAgIHBuZ19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX29w
dGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicG5nX3Jlc3VsdCVzLnBuZyIgJSBpbmRleCkKKyAgICAgICAgICAgIHNoZWxsX2FyZ3Mu
YXBwZW5kKCItLXBpeGVsLXRlc3RzPSIgKyBwbmdfcGF0aCkKKyAgICAgICAgICAgIHRlc3RfYXJn
cy5wbmdfcGF0aCA9IHBuZ19wYXRoCisKKyAgICAgICAgdGVzdF9hcmdzLm5ld19iYXNlbGluZSA9
IHNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lCisKKyAgICAgICAgdGVzdF9hcmdzLnNob3dfc291
cmNlcyA9IHNlbGYuX29wdGlvbnMuc291cmNlcworCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
c3RhcnR1cF9kaWFsb2c6CisgICAgICAgICAgICBzaGVsbF9hcmdzLmFwcGVuZCgnLS10ZXN0c2hl
bGwtc3RhcnR1cC1kaWFsb2cnKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ3BfZmF1bHRf
ZXJyb3JfYm94OgorICAgICAgICAgICAgc2hlbGxfYXJncy5hcHBlbmQoJy0tZ3AtZmF1bHQtZXJy
b3ItYm94JykKKworICAgICAgICByZXR1cm4gdGVzdF9hcmdzLCBwbmdfcGF0aCwgc2hlbGxfYXJn
cworCisgICAgZGVmIF9jb250YWluc190ZXN0cyhzZWxmLCBzdWJkaXIpOgorICAgICAgICBmb3Ig
dGVzdF9maWxlIGluIHNlbGYuX3Rlc3RfZmlsZXM6CisgICAgICAgICAgICBpZiB0ZXN0X2ZpbGUu
ZmluZChzdWJkaXIpID49IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX2luc3RhbnRpYXRlX3Rlc3Rfc2hlbGxfdGhyZWFkcyhz
ZWxmLCB0ZXN0X2ZpbGVzLCByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIkluc3RhbnRpdGF0
ZXMgYW5kIHN0YXJ0cyB0aGUgVGVzdFNoZWxsVGhyZWFkKHMpLgorCisgICAgICAgIFJldHVybjoK
KyAgICAgICAgICBUaGUgbGlzdCBvZiB0aHJlYWRzLgorICAgICAgICAiIiIKKyAgICAgICAgZmls
ZW5hbWVfcXVldWUgPSBzZWxmLl9nZXRfdGVzdF9maWxlX3F1ZXVlKHRlc3RfZmlsZXMpCisKKyAg
ICAgICAgIyBJbnN0YW50aWF0ZSBUZXN0U2hlbGxUaHJlYWRzIGFuZCBzdGFydCB0aGVtLgorICAg
ICAgICB0aHJlYWRzID0gW10KKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKGludChzZWxmLl9vcHRp
b25zLm51bV90ZXN0X3NoZWxscykpOgorICAgICAgICAgICAgIyBDcmVhdGUgc2VwYXJhdGUgVGVz
dFR5cGVzIGluc3RhbmNlcyBmb3IgZWFjaCB0aHJlYWQuCisgICAgICAgICAgICB0ZXN0X3R5cGVz
ID0gW10KKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX3Rlc3RfdHlwZXM6CisgICAgICAgICAg
ICAgICAgdGVzdF90eXBlcy5hcHBlbmQodChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLnBsYXRm
b3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5y
ZXN1bHRzX2RpcmVjdG9yeSkpCisKKyAgICAgICAgICAgIHRlc3RfYXJncywgcG5nX3BhdGgsIHNo
ZWxsX2FyZ3MgPSBzZWxmLl9nZXRfdGVzdF9zaGVsbF9hcmdzKGkpCisgICAgICAgICAgICB0aHJl
YWQgPSB0ZXN0X3NoZWxsX3RocmVhZC5UZXN0U2hlbGxUaHJlYWQoc2VsZi5fcG9ydCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFt
ZV9xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF90eXBlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX3BhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hlbGxfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zKQorICAgICAgICAgICAgaWYgc2VsZi5faXNfc2luZ2xl
X3RocmVhZGVkKCk6CisgICAgICAgICAgICAgICAgdGhyZWFkLnJ1bl9pbl9tYWluX3RocmVhZChz
ZWxmLCByZXN1bHRfc3VtbWFyeSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
dGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZCkKKworICAg
ICAgICByZXR1cm4gdGhyZWFkcworCisgICAgZGVmIF9pc19zaW5nbGVfdGhyZWFkZWQoc2VsZik6
CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB3ZSBzaG91bGQgcnVuIGFsbCB0aGUgdGVzdHMg
aW4gdGhlIG1haW4gdGhyZWFkLiIiIgorICAgICAgICByZXR1cm4gaW50KHNlbGYuX29wdGlvbnMu
bnVtX3Rlc3Rfc2hlbGxzKSA9PSAxCisKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBmaWxlX2xp
c3QsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUnVucyB0aGUgdGVzdHMgaW4gdGhlIGZp
bGVfbGlzdC4KKworICAgICAgICBSZXR1cm46IEEgdHVwbGUgKGZhaWx1cmVzLCB0aHJlYWRfdGlt
aW5ncywgdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mp
CisgICAgICAgICAgICBmYWlsdXJlcyBpcyBhIG1hcCBmcm9tIHRlc3QgdG8gbGlzdCBvZiBmYWls
dXJlIHR5cGVzCisgICAgICAgICAgICB0aHJlYWRfdGltaW5ncyBpcyBhIGxpc3Qgb2YgZGljdHMg
d2l0aCB0aGUgdG90YWwgcnVudGltZQorICAgICAgICAgICAgICBvZiBlYWNoIHRocmVhZCB3aXRo
ICduYW1lJywgJ251bV90ZXN0cycsICd0b3RhbF90aW1lJyBwcm9wZXJ0aWVzCisgICAgICAgICAg
ICB0ZXN0X3RpbWluZ3MgaXMgYSBsaXN0IG9mIHRpbWluZ3MgZm9yIGVhY2ggc2hhcmRlZCBzdWJk
aXJlY3RvcnkKKyAgICAgICAgICAgICAgb2YgdGhlIGZvcm0gW3RpbWUsIGRpcmVjdG9yeV9uYW1l
LCBudW1fdGVzdHNdCisgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyBpcyBhIGxp
c3Qgb2YgcnVuIHRpbWVzIGZvciBlYWNoIHRlc3QKKyAgICAgICAgICAgICAgaW4gdGhlIGZvcm0g
e2ZpbGVuYW1lOmZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lOnRlc3RfcnVuX3RpbWV9CisgICAgICAg
ICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgdG8gcG9wdWxhdGUgd2l0aCB0aGUg
cmVzdWx0cworICAgICAgICAiIiIKKyAgICAgICAgdGhyZWFkcyA9IHNlbGYuX2luc3RhbnRpYXRl
X3Rlc3Rfc2hlbGxfdGhyZWFkcyhmaWxlX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCisKKyAgICAgICAg
IyBXYWl0IGZvciB0aGUgdGhyZWFkcyB0byBmaW5pc2ggYW5kIGNvbGxlY3QgdGVzdCBmYWlsdXJl
cy4KKyAgICAgICAgZmFpbHVyZXMgPSB7fQorICAgICAgICB0ZXN0X3RpbWluZ3MgPSB7fQorICAg
ICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9IFtdCisgICAgICAgIHRocmVhZF90aW1pbmdz
ID0gW10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRzOgor
ICAgICAgICAgICAgICAgIHdoaWxlIHRocmVhZC5pc0FsaXZlKCk6CisgICAgICAgICAgICAgICAg
ICAgICMgTGV0IGl0IHRpbWVvdXQgb2NjYXNpb25hbGx5IHNvIGl0IGNhbiBub3RpY2UgYQorICAg
ICAgICAgICAgICAgICAgICAjIEtleWJvYXJkSW50ZXJydXB0LiBBY3R1YWxseSwgdGhlIHRpbWVv
dXQgZG9lc24ndAorICAgICAgICAgICAgICAgICAgICAjIHJlYWxseSBtYXR0ZXI6IGFwcGFyZW50
bHkgaXQgc3VmZmljZXMgdG8gbm90IHVzZQorICAgICAgICAgICAgICAgICAgICAjIGFuIGluZGVm
aW5pdGUgYmxvY2tpbmcgam9pbiBmb3IgaXQgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBiZSBp
bnRlcnJ1cHRpYmxlIGJ5IEtleWJvYXJkSW50ZXJydXB0LgorICAgICAgICAgICAgICAgICAgICB0
aHJlYWQuam9pbigwLjEpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX3N1bW1hcnko
cmVzdWx0X3N1bW1hcnkpCisgICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5kKHsn
bmFtZSc6IHRocmVhZC5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbnVtX3Rlc3RzJzogdGhyZWFkLmdldF9udW1fdGVzdHMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogdGhyZWFkLmdldF90b3Rh
bF90aW1lKCl9KQorICAgICAgICAgICAgICAgIHRlc3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdl
dF9kaXJlY3RvcnlfdGltaW5nX3N0YXRzKCkpCisgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3MuZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICB0aHJlYWQuZ2V0X2luZGl2
aWR1YWxfdGVzdF9zdGF0cygpKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Cisg
ICAgICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZHM6CisgICAgICAgICAgICAgICAgdGhyZWFk
LmNhbmNlbCgpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVh
ZHM6CisgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgYSBUZXN0U2hlbGxUaHJlYWQgZGllZCBi
ZWZvcmUgbm9ybWFsIGNvbXBsZXRpb24uCisgICAgICAgICAgICBleGNlcHRpb25faW5mbyA9IHRo
cmVhZC5nZXRfZXhjZXB0aW9uX2luZm8oKQorICAgICAgICAgICAgaWYgZXhjZXB0aW9uX2luZm8g
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBSZS1yYWlzZSB0aGUgdGhyZWFkJ3MgZXhj
ZXB0aW9uIGhlcmUgdG8gbWFrZSBpdCBjbGVhciB0aGF0CisgICAgICAgICAgICAgICAgIyB0ZXN0
aW5nIHdhcyBhYm9ydGVkLiBPdGhlcndpc2UsIHRoZSB0ZXN0cyB0aGF0IGRpZCBub3QgcnVuCisg
ICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBhc3N1bWVkIHRvIGhhdmUgcGFzc2VkLgorICAgICAg
ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhj
ZXB0aW9uX2luZm9bMl0KKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBwaWNrIHVwIGFueSByZW1h
aW5pbmcgdGVzdHMuCisgICAgICAgIHNlbGYudXBkYXRlX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkp
CisgICAgICAgIHJldHVybiAodGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3MpCisKKyAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKKyAgICAgICAgIiIi
UmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4iIiIK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIpCisK
KyAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUnVuIGFsbCBv
dXIgdGVzdHMgb24gYWxsIG91ciB0ZXN0IGZpbGVzLgorCisgICAgICAgIEZvciBlYWNoIHRlc3Qg
ZmlsZSwgd2UgcnVuIGVhY2ggdGVzdCB0eXBlLiBJZiB0aGVyZSBhcmUgYW55IGZhaWx1cmVzLAor
ICAgICAgICB3ZSBjb2xsZWN0IHRoZW0gZm9yIHJlcG9ydGluZy4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBhIHN1bW1hcnkgb2JqZWN0IHRyYWNraW5nIHRoZSB0
ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgUmV0dXJuOgorICAgICAgICAgIFdlIHJldHVybiBub256
ZXJvIGlmIHRoZXJlIGFyZSByZWdyZXNzaW9ucyBjb21wYXJlZCB0byB0aGUgbGFzdCBydW4uCisg
ICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdF9maWxlczoKKyAgICAgICAgICAg
IHJldHVybiAwCisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorCisgICAgICAgIGlm
IHNlbGYubmVlZHNfaHR0cCgpOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3Nl
cnZlcigpCisKKyAgICAgICAgaWYgc2VsZi5fY29udGFpbnNfdGVzdHMoc2VsZi5XRUJTT0NLRVRf
U1VCRElSKToKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigp
CisgICAgICAgICAgICAjIHNlbGYuX3dlYnNvY2tldF9zZWN1cmVfc2VydmVyLlN0YXJ0KCkKKwor
ICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGlt
aW5ncyA9ICgKKyAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhzZWxmLl90ZXN0X2ZpbGVzX2xp
c3QsIHJlc3VsdF9zdW1tYXJ5KSkKKworICAgICAgICAjIFdlIGV4Y2x1ZGUgdGhlIGNyYXNoZXMg
ZnJvbSB0aGUgbGlzdCBvZiByZXN1bHRzIHRvIHJldHJ5LCBiZWNhdXNlCisgICAgICAgICMgd2Ug
d2FudCB0byB0cmVhdCBldmVuIGEgcG90ZW50aWFsbHkgZmxha3kgY3Jhc2ggYXMgYW4gZXJyb3Iu
CisgICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5LCBp
bmNsdWRlX2NyYXNoZXM9RmFsc2UpCisgICAgICAgIHJldHJpZXMgPSAwCisgICAgICAgIHJldHJ5
X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQorICAgICAgICB3aGlsZSAocmV0cmllcyA8IHNlbGYu
TlVNX1JFVFJZX09OX1VORVhQRUNURURfRkFJTFVSRSBhbmQKKyAgICAgICAgICAgICAgIGxlbihm
YWlsdXJlcykpOgorICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiUmV0cnlpbmcgJWQgdW5leHBl
Y3RlZCBmYWlsdXJlKHMpIiAlIGxlbihmYWlsdXJlcykpCisgICAgICAgICAgICByZXRyaWVzICs9
IDEKKyAgICAgICAgICAgIHJldHJ5X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4cGVj
dGF0aW9ucywgZmFpbHVyZXMua2V5cygpKQorICAgICAgICAgICAgc2VsZi5fcnVuX3Rlc3RzKGZh
aWx1cmVzLmtleXMoKSwgcmV0cnlfc3VtbWFyeSkKKyAgICAgICAgICAgIGZhaWx1cmVzID0gc2Vs
Zi5fZ2V0X2ZhaWx1cmVzKHJldHJ5X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQorCisg
ICAgICAgIGVuZF90aW1lID0gdGltZS50aW1lKCkKKworICAgICAgICB3cml0ZSA9IGNyZWF0ZV9s
b2dnaW5nX3dyaXRlcihzZWxmLl9vcHRpb25zLCAndGltaW5nJykKKyAgICAgICAgc2VsZi5fcHJp
bnRfdGltaW5nX3N0YXRpc3RpY3Mod3JpdGUsIGVuZF90aW1lIC0gc3RhcnRfdGltZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWlu
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5KQorCisgICAgICAgIHNlbGYuX21ldGVyLnVwZGF0ZSgiIikKKworICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAjIFdlIHdyaXRlIHRoaXMgYmxvY2sgdG8g
c3Rkb3V0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICAgICAgICAgICAjIGJ1aWxkYm90
IGxvZyBwYXJzZXIsIHdoaWNoIG9ubHkgbG9va3MgYXQgc3Rkb3V0LCBub3Qgc3RkZXJyIDooCisg
ICAgICAgICAgICB3cml0ZSA9IGxhbWJkYSBzOiBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHMp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3cml0ZSA9IGNyZWF0ZV9sb2dnaW5nX3dyaXRl
cihzZWxmLl9vcHRpb25zLCAnYWN0dWFsJykKKworICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRf
c3VtbWFyeSh3cml0ZSwgcmVzdWx0X3N1bW1hcnkpCisKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVz
aCgpCisgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorCisgICAgICAgIGlmIChMT0dfREVUQUlM
RURfUFJPR1JFU1MgaW4gc2VsZi5fb3B0aW9ucy5sb2cgb3IKKyAgICAgICAgICAgIChMT0dfVU5F
WFBFQ1RFRCBpbiBzZWxmLl9vcHRpb25zLmxvZyBhbmQKKyAgICAgICAgICAgICByZXN1bHRfc3Vt
bWFyeS50b3RhbCAhPSByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkpOgorICAgICAgICAgICAgcHJp
bnQKKworICAgICAgICAjIFRoaXMgc3VtbWFyeSBkYXRhIGdldHMgd3JpdHRlbiB0byBzdGRvdXQg
cmVnYXJkbGVzcyBvZiBsb2cgbGV2ZWwKKyAgICAgICAgc2VsZi5fcHJpbnRfb25lX2xpbmVfc3Vt
bWFyeShyZXN1bHRfc3VtbWFyeS50b3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkKKworICAgICAgICB1bmV4cGVjdGVkX3Jlc3Vs
dHMgPSBzZWxmLl9zdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1bHRzKHJlc3VsdF9zdW1tYXJ5LAor
ICAgICAgICAgICAgcmV0cnlfc3VtbWFyeSkKKyAgICAgICAgc2VsZi5fcHJpbnRfdW5leHBlY3Rl
ZF9yZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKKworICAgICAgICAjIFdyaXRlIHRoZSBzYW1l
IGRhdGEgdG8gbG9nIGZpbGVzLgorICAgICAgICBzZWxmLl93cml0ZV9qc29uX2ZpbGVzKHVuZXhw
ZWN0ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorCisgICAgICAgICMgV3JpdGUgdGhlIHN1bW1h
cnkgdG8gZGlzayAocmVzdWx0cy5odG1sKSBhbmQgbWF5YmUgb3BlbiB0aGUKKyAgICAgICAgIyB0
ZXN0X3NoZWxsIHRvIHRoaXMgZmlsZS4KKyAgICAgICAgd3JvdGVfcmVzdWx0cyA9IHNlbGYuX3dy
aXRlX3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdF9zdW1tYXJ5KQorICAgICAgICBpZiBub3Qgc2Vs
Zi5fb3B0aW9ucy5ub3Nob3dfcmVzdWx0cyBhbmQgd3JvdGVfcmVzdWx0czoKKyAgICAgICAgICAg
IHNlbGYuX3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoKQorCisgICAgICAgICMgSWdub3JlIGZsYWt5
IGZhaWx1cmVzIGFuZCB1bmV4cGVjdGVkIHBhc3NlcyBzbyB3ZSBkb24ndCB0dXJuIHRoZQorICAg
ICAgICAjIGJvdCByZWQgZm9yIHRob3NlLgorICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9yZXN1
bHRzWydudW1fcmVncmVzc2lvbnMnXQorCisgICAgZGVmIHVwZGF0ZV9zdW1tYXJ5KHNlbGYsIHJl
c3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiVXBkYXRlIHRoZSBzdW1tYXJ5IHdoaWxlIHJ1bm5p
bmcgdGVzdHMuIiIiCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgKHRlc3QsIGZhaWxfbGlzdCkgPSBzZWxmLl9yZXN1bHRfcXVldWUuZ2V0X25v
d2FpdCgpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9mYWlsdXJlcy5kZXRlcm1pbmVf
cmVzdWx0X3R5cGUoZmFpbF9saXN0KQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi5f
ZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KHRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0KQorICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFkZCh0ZXN0LCBmYWls
X2xpc3QsIHJlc3VsdCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgaWYgKExPR19ERVRBSUxF
RF9QUk9HUkVTUyBpbiBzZWxmLl9vcHRpb25zLmxvZyBhbmQKKyAgICAgICAgICAgICAgICAgICAg
KHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsIG9yCisgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9pc19zaW5nbGVfdGhyZWFkZWQoKSkpOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9kaXNwbGF5X2RldGFpbGVkX3Byb2dyZXNzKHJlc3VsdF9zdW1tYXJ5KQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBleHBlY3RlZCBh
bmQgTE9HX1VORVhQRUNURUQgaW4gc2VsZi5fb3B0aW9ucy5sb2c6CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wcmludF91bmV4cGVjdGVkX3Rlc3RfcmVzdWx0KHRlc3QsIHJlc3VsdCkK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzcGxheV9vbmVfbGluZV9wcm9ncmVzcyhyZXN1
bHRfc3VtbWFyeSkKKyAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKworICAgIGRlZiBfZGlzcGxheV9vbmVfbGluZV9wcm9ncmVzcyhzZWxmLCBy
ZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIkRpc3BsYXlzIHRoZSBwcm9ncmVzcyB0aHJvdWdo
IHRoZSB0ZXN0IHJ1bi4iIiIKKyAgICAgICAgc2VsZi5fbWV0ZXIudXBkYXRlKCJUZXN0aW5nOiAl
ZCByYW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndCwgJWQgbGVmdCIgJQorICAgICAgICAgICAgKHJl
c3VsdF9zdW1tYXJ5LmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkLAorICAgICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5LnJlbWFpbmluZykpCisKKyAgICBkZWYgX2Rpc3BsYXlfZGV0
YWlsZWRfcHJvZ3Jlc3Moc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJEaXNwbGF5
IGRldGFpbGVkIHByb2dyZXNzIG91dHB1dCB3aGVyZSB3ZSBwcmludCB0aGUgZGlyZWN0b3J5IG5h
bWUKKyAgICAgICAgYW5kIG9uZSBkb3QgZm9yIGVhY2ggY29tcGxldGVkIHRlc3QuIFRoaXMgaXMg
dHJpZ2dlcmVkIGJ5CisgICAgICAgICItLWxvZyBkZXRhaWxlZC1wcm9ncmVzcyIuIiIiCisgICAg
ICAgIGlmIHNlbGYuX2N1cnJlbnRfdGVzdF9udW1iZXIgPT0gbGVuKHNlbGYuX3Rlc3RfZmlsZXNf
bGlzdCk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBuZXh0X3Rlc3QgPSBzZWxmLl90
ZXN0X2ZpbGVzX2xpc3Rbc2VsZi5fY3VycmVudF90ZXN0X251bWJlcl0KKyAgICAgICAgbmV4dF9k
aXIgPSBvcy5wYXRoLmRpcm5hbWUoCisgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rl
c3RfZmlsZW5hbWUobmV4dF90ZXN0KSkKKyAgICAgICAgaWYgc2VsZi5fY3VycmVudF9wcm9ncmVz
c19zdHIgPT0gIiI6CisgICAgICAgICAgICBzZWxmLl9jdXJyZW50X3Byb2dyZXNzX3N0ciA9ICIl
czogIiAlIChuZXh0X2RpcikKKyAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfZGlyID0gbmV4dF9k
aXIKKworICAgICAgICB3aGlsZSBuZXh0X3Rlc3QgaW4gcmVzdWx0X3N1bW1hcnkucmVzdWx0czoK
KyAgICAgICAgICAgIGlmIG5leHRfZGlyICE9IHNlbGYuX2N1cnJlbnRfZGlyOgorICAgICAgICAg
ICAgICAgIHNlbGYuX21ldGVyLndyaXRlKCIlc1xuIiAlIChzZWxmLl9jdXJyZW50X3Byb2dyZXNz
X3N0cikpCisgICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF9wcm9ncmVzc19zdHIgPSAiJXM6
IC4iICUgKG5leHRfZGlyKQorICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfZGlyID0gbmV4
dF9kaXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF9w
cm9ncmVzc19zdHIgKz0gIi4iCisKKyAgICAgICAgICAgIGlmIChuZXh0X3Rlc3QgaW4gcmVzdWx0
X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzIGFuZAorICAgICAgICAgICAgICAgIExPR19VTkVY
UEVDVEVEIGluIHNlbGYuX29wdGlvbnMubG9nKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBy
ZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHNbbmV4dF90ZXN0XQorICAgICAgICAgICAg
ICAgIHNlbGYuX21ldGVyLndyaXRlKCIlc1xuIiAlIHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3Ry
KQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X3VuZXhwZWN0ZWRfdGVzdF9yZXN1bHQobmV4
dF90ZXN0LCByZXN1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF9wcm9ncmVzc19z
dHIgPSAiJXM6ICIgJSBzZWxmLl9jdXJyZW50X2RpcgorCisgICAgICAgICAgICBzZWxmLl9jdXJy
ZW50X3Rlc3RfbnVtYmVyICs9IDEKKyAgICAgICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfdGVzdF9u
dW1iZXIgPT0gbGVuKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCk6CisgICAgICAgICAgICAgICAgYnJl
YWsKKworICAgICAgICAgICAgbmV4dF90ZXN0ID0gc2VsZi5fdGVzdF9maWxlc19saXN0W3NlbGYu
X2N1cnJlbnRfdGVzdF9udW1iZXJdCisgICAgICAgICAgICBuZXh0X2RpciA9IG9zLnBhdGguZGly
bmFtZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUo
bmV4dF90ZXN0KSkKKworICAgICAgICBpZiByZXN1bHRfc3VtbWFyeS5yZW1haW5pbmc6CisgICAg
ICAgICAgICByZW1haW5fc3RyID0gIiAoJWQpIiAlIChyZXN1bHRfc3VtbWFyeS5yZW1haW5pbmcp
CisgICAgICAgICAgICBzZWxmLl9tZXRlci51cGRhdGUoIiVzJXMiICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc2VsZi5fY3VycmVudF9wcm9ncmVzc19zdHIsIHJlbWFpbl9zdHIp
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fbWV0ZXIud3JpdGUoIiVzXG4iICUg
KHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyKSkKKworICAgIGRlZiBfZ2V0X2ZhaWx1cmVzKHNl
bGYsIHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXMpOgorICAgICAgICAiIiJGaWx0ZXJz
IGEgZGljdCBvZiByZXN1bHRzIGFuZCByZXR1cm5zIG9ubHkgdGhlIGZhaWx1cmVzLgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHRoZSByZXN1bHRzIG9mIHRoZSB0
ZXN0IHJ1bgorICAgICAgICAgIGluY2x1ZGVfY3Jhc2hlczogd2hldGhlciBjcmFzaGVzIGFyZSBp
bmNsdWRlZCBpbiB0aGUgb3V0cHV0LgorICAgICAgICAgICAgV2UgdXNlIEZhbHNlIHdoZW4gZmlu
ZGluZyB0aGUgbGlzdCBvZiBmYWlsdXJlcyB0byByZXRyeQorICAgICAgICAgICAgdG8gc2VlIGlm
IHRoZSByZXN1bHRzIHdlcmUgZmxha3kuIEFsdGhvdWdoIHRoZSBjcmFzaGVzIG1heSBhbHNvIGJl
CisgICAgICAgICAgICBmbGFreSwgd2UgdHJlYXQgdGhlbSBhcyBpZiB0aGV5IGFyZW4ndCBzbyB0
aGF0IHRoZXkncmUgbm90IGlnbm9yZWQuCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgYSBk
aWN0IG9mIGZpbGVzIC0+IHJlc3VsdHMKKyAgICAgICAgIiIiCisgICAgICAgIGZhaWxlZF9yZXN1
bHRzID0ge30KKyAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBpbiByZXN1bHRfc3VtbWFyeS51bmV4
cGVjdGVkX3Jlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRl
c3RfZXhwZWN0YXRpb25zLlBBU1Mgb3IKKyAgICAgICAgICAgICAgICByZXN1bHQgPT0gdGVzdF9l
eHBlY3RhdGlvbnMuQ1JBU0ggYW5kIG5vdCBpbmNsdWRlX2NyYXNoZXMpOgorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0XSA9IHJlc3VsdAor
CisgICAgICAgIHJldHVybiBmYWlsZWRfcmVzdWx0cworCisgICAgZGVmIF9zdW1tYXJpemVfdW5l
eHBlY3RlZF9yZXN1bHRzKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5KToKKyAg
ICAgICAgIiIiU3VtbWFyaXplIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMgYXMgYSBkaWN0LgorCisg
ICAgICAgIFRPRE8oZHByYW5rZSk6IHNwbGl0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaW50byBhIHNl
cGFyYXRlIGNsYXNzPworCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6
IHN1bW1hcnkgb2JqZWN0IGZyb20gaW5pdGlhbCB0ZXN0IHJ1bnMKKyAgICAgICAgICByZXRyeV9z
dW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGZpbmFsIHRlc3QgcnVuIG9mIHJldHJpZWQgdGVz
dHMKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBBIGRpY3Rpb25hcnkgY29udGFpbmluZyBh
IHN1bW1hcnkgb2YgdGhlIHVuZXhwZWN0ZWQgcmVzdWx0cyBmcm9tIHRoZQorICAgICAgICAgIHJ1
biwgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKKyAgICAgICAgICAgICd2ZXJzaW9uJzogYSB2
ZXJzaW9uIGluZGljYXRvciAoMSBpbiB0aGlzIHZlcnNpb24pCisgICAgICAgICAgICAnZml4YWJs
ZSc6ICMgb2YgZml4YWJsZSB0ZXN0cyAoTk9XIC0gUEFTUykKKyAgICAgICAgICAgICdza2lwcGVk
JzogIyBvZiBza2lwcGVkIHRlc3RzIChOT1cgJiBTS0lQUEVEKQorICAgICAgICAgICAgJ251bV9y
ZWdyZXNzaW9ucyc6ICMgb2Ygbm9uLWZsYWt5IGZhaWx1cmVzCisgICAgICAgICAgICAnbnVtX2Zs
YWt5JzogIyBvZiBmbGFreSBmYWlsdXJlcworICAgICAgICAgICAgJ251bV9wYXNzZXMnOiAjIG9m
IHVuZXhwZWN0ZWQgcGFzc2VzCisgICAgICAgICAgICAndGVzdHMnOiBhIGRpY3Qgb2YgdGVzdHMg
LT4geydleHBlY3RlZCc6ICcuLi4nLCAnYWN0dWFsJzogJy4uLid9CisgICAgICAgICIiIgorICAg
ICAgICByZXN1bHRzID0ge30KKyAgICAgICAgcmVzdWx0c1sndmVyc2lvbiddID0gMQorCisgICAg
ICAgIHRiZSA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uCisgICAgICAgIHRi
dCA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lCisgICAgICAgIHJlc3VsdHNbJ2Zp
eGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAtCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YmVbdGVzdF9leHBlY3RhdGlvbnMuUEFTU10pCisgICAgICAg
IHJlc3VsdHNbJ3NraXBwZWQnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAmCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmVbdGVzdF9leHBlY3RhdGlvbnMuU0tJ
UF0pCisKKyAgICAgICAgbnVtX3Bhc3NlcyA9IDAKKyAgICAgICAgbnVtX2ZsYWt5ID0gMAorICAg
ICAgICBudW1fcmVncmVzc2lvbnMgPSAwCisgICAgICAgIGtleXdvcmRzID0ge30KKyAgICAgICAg
Zm9yIGssIHYgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05TLml0ZXJpdGVtcygp
OgorICAgICAgICAgICAga2V5d29yZHNbdl0gPSBrLnVwcGVyKCkKKworICAgICAgICB0ZXN0cyA9
IHt9CisgICAgICAgIGZvciBmaWxlbmFtZSwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhw
ZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IGlmIGEg
dGVzdCBjcmFzaGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdlIGlnbm9yZQorICAgICAgICAgICAg
IyB3aGV0aGVyIG9yIG5vdCBpdCBjcmFzaGVkIHdoZW4gd2UgcmV0cmllZCBpdCAoaWYgd2UgcmV0
cmllZCBpdCksCisgICAgICAgICAgICAjIGFuZCBhbHdheXMgY29uc2lkZXIgdGhlIHJlc3VsdCBu
b3QgZmxha3kuCisgICAgICAgICAgICB0ZXN0ID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2Zp
bGVuYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9leHBlY3RhdGlv
bnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoZmlsZW5hbWUpCisgICAgICAgICAgICBhY3R1YWwg
PSBba2V5d29yZHNbcmVzdWx0XV0KKworICAgICAgICAgICAgaWYgcmVzdWx0ID09IHRlc3RfZXhw
ZWN0YXRpb25zLlBBU1M6CisgICAgICAgICAgICAgICAgbnVtX3Bhc3NlcyArPSAxCisgICAgICAg
ICAgICBlbGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSDoKKyAgICAgICAgICAg
ICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBpZiBmaWxlbmFtZSBub3QgaW4gcmV0cnlfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHM6
CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbC5leHRlbmQoCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoCisgICAgICAg
ICAgICAgICAgICAgICAgICBmaWxlbmFtZSkuc3BsaXQoIiAiKSkKKyAgICAgICAgICAgICAgICAg
ICAgbnVtX2ZsYWt5ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByZXRyeV9yZXN1bHQgPSByZXRyeV9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0c1tmaWxl
bmFtZV0KKyAgICAgICAgICAgICAgICAgICAgaWYgcmVzdWx0ICE9IHJldHJ5X3Jlc3VsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0g
MQorCisgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IHt9CisgICAgICAgICAgICB0ZXN0c1t0ZXN0
XVsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCisgICAgICAgICAgICB0ZXN0c1t0ZXN0XVsnYWN0dWFs
J10gPSAiICIuam9pbihhY3R1YWwpCisKKyAgICAgICAgcmVzdWx0c1sndGVzdHMnXSA9IHRlc3Rz
CisgICAgICAgIHJlc3VsdHNbJ251bV9wYXNzZXMnXSA9IG51bV9wYXNzZXMKKyAgICAgICAgcmVz
dWx0c1snbnVtX2ZsYWt5J10gPSBudW1fZmxha3kKKyAgICAgICAgcmVzdWx0c1snbnVtX3JlZ3Jl
c3Npb25zJ10gPSBudW1fcmVncmVzc2lvbnMKKworICAgICAgICByZXR1cm4gcmVzdWx0cworCisg
ICAgZGVmIF93cml0ZV9qc29uX2ZpbGVzKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cywgcmVzdWx0
X3N1bW1hcnksCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cyk6CisgICAgICAgICIiIldyaXRlcyB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNP
TiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCisgICAgICAgIGRpci4KKworICAgICAgICBUaGVyZSBh
cmUgdGhyZWUgZGlmZmVyZW50IGZpbGVzIHdyaXR0ZW4gaW50byB0aGUgcmVzdWx0cyBkaXI6Cisg
ICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzLmpzb246IEEgc2hvcnQgbGlzdCBvZiBhbnkgdW5l
eHBlY3RlZCByZXN1bHRzLgorICAgICAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IHRoZSBidWlsZGJv
dHMgdG8gZGlzcGxheSByZXN1bHRzLgorICAgICAgICAgIGV4cGVjdGF0aW9ucy5qc29uOiBUaGlz
IGlzIHVzZWQgYnkgdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQuCisgICAgICAgICAgcmVzdWx0cy5q
c29uOiBBIGZ1bGwgbGlzdCBvZiB0aGUgcmVzdWx0cyAtIHVzZWQgYnkgdGhlIGZsYWtpbmVzcwor
ICAgICAgICAgICAgZGFzaGJvYXJkIGFuZCB0aGUgYWdncmVnYXRlIHJlc3VsdHMgZGFzaGJvYXJk
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzOiBkaWN0IG9m
IHVuZXhwZWN0ZWQgcmVzdWx0cworICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBmdWxsIHN1bW1h
cnkgb2JqZWN0CisgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IGxpc3Qgb2YgdGVz
dCB0aW1lcyAodXNlZCBieSB0aGUgZmxha2luZXNzCisgICAgICAgICAgICBkYXNoYm9hcmQpLgor
ICAgICAgICAiIiIKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiV3JpdGluZyBKU09OIGZpbGVzIGlu
ICVzLiIgJQorICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJl
Y3RvcnkpCisgICAgICAgIHVuZXhwZWN0ZWRfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYu
X29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAidW5leHBlY3RlZF9yZXN1
bHRzLmpzb24iKSwgInciKQorICAgICAgICB1bmV4cGVjdGVkX2ZpbGUud3JpdGUoc2ltcGxlanNv
bi5kdW1wcyh1bmV4cGVjdGVkX3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTIpKQorICAgICAgICB1bmV4cGVjdGVkX2ZpbGUuY2xv
c2UoKQorCisgICAgICAgICMgV3JpdGUgYSBqc29uIGZpbGUgb2YgdGhlIHRlc3RfZXhwZWN0YXRp
b25zLnR4dCBmaWxlIGZvciB0aGUgbGF5b3V0CisgICAgICAgICMgdGVzdHMgZGFzaGJvYXJkLgor
ICAgICAgICBleHBlY3RhdGlvbnNfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX29wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAiZXhwZWN0YXRpb25zLmpzb24iKSwg
InciKQorICAgICAgICBleHBlY3RhdGlvbnNfanNvbiA9IFwKKyAgICAgICAgICAgIHNlbGYuX2V4
cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX2pzb25fZm9yX2FsbF9wbGF0Zm9ybXMoKQorICAg
ICAgICBleHBlY3RhdGlvbnNfZmlsZS53cml0ZSgiQUREX0VYUEVDVEFUSU9OUygiICsgZXhwZWN0
YXRpb25zX2pzb24gKyAiKTsiKQorICAgICAgICBleHBlY3RhdGlvbnNfZmlsZS5jbG9zZSgpCisK
KyAgICAgICAganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91dFJlc3VsdHNH
ZW5lcmF0b3IoCisgICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLmJ1aWxkZXJf
bmFtZSwgc2VsZi5fb3B0aW9ucy5idWlsZF9uYW1lLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5idWlsZF9udW1iZXIsIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAg
ICAgICBCVUlMREVSX0JBU0VfVVJMLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKKyAgICAgICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHNlbGYuX3Rlc3RfZmlsZXNf
bGlzdCkKKworICAgICAgICBsb2dnaW5nLmRlYnVnKCJGaW5pc2hlZCB3cml0aW5nIEpTT04gZmls
ZXMuIikKKworICAgIGRlZiBfcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHdy
aXRlLCByZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3RyKToKKyAgICAgICAgIiIiUHJpbnQgdGhl
IG51bWJlciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiByZXN1bHQgY2xhc3MuCisKKyAgICAgICAg
QXJnczoKKyAgICAgICAgICB3cml0ZTogQSBjYWxsYmFjayB0byB3cml0ZSBpbmZvIHRvIChlLmcu
LCBhIExvZ2dpbmdXcml0ZXIpIG9yCisgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZS4KKyAg
ICAgICAgICByZXN1bHRfc3VtbWFyeSAtIHRoZSBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIHJl
c3VsdHMgdG8gcmVwb3J0IG9uCisgICAgICAgICAgcmVzdWx0X3R5cGUgLSB0aGUgcGFydGljdWxh
ciByZXN1bHQgdHlwZSB0byByZXBvcnQgaW4gdGhlIHN1bW1hcnkuCisgICAgICAgICAgcmVzdWx0
X3R5cGVfc3RyIC0gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHJlc3VsdF90eXBlLgorICAg
ICAgICAiIiIKKyAgICAgICAgdGVzdHMgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dp
dGhfcmVzdWx0X3R5cGUocmVzdWx0X3R5cGUpCisgICAgICAgIG5vdyA9IHJlc3VsdF9zdW1tYXJ5
LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLk5PV10KKyAgICAgICAgd29udGZp
eCA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLldP
TlRGSVhdCisgICAgICAgIGRlZmVyID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVb
dGVzdF9leHBlY3RhdGlvbnMuREVGRVJdCisKKyAgICAgICAgIyBXZSB1c2UgYSBmYW5jeSBmb3Jt
YXQgc3RyaW5nIGluIG9yZGVyIHRvIHByaW50IHRoZSBkYXRhIG91dCBpbiBhCisgICAgICAgICMg
bmljZWx5LWFsaWduZWQgdGFibGUuCisgICAgICAgIGZtdHN0ciA9ICgiRXhwZWN0OiAlJTVkICUl
LThzICglJSVkZCBub3csICUlJWRkIGRlZmVyLCAlJSVkZCB3b250Zml4KSIKKyAgICAgICAgICAg
ICAgICAgICUgKHNlbGYuX251bV9kaWdpdHMobm93KSwgc2VsZi5fbnVtX2RpZ2l0cyhkZWZlciks
CisgICAgICAgICAgICAgICAgICBzZWxmLl9udW1fZGlnaXRzKHdvbnRmaXgpKSkKKyAgICAgICAg
d3JpdGUoZm10c3RyICUgKGxlbih0ZXN0cyksIHJlc3VsdF90eXBlX3N0ciwgbGVuKHRlc3RzICYg
bm93KSwKKyAgICAgICAgICAgICAgbGVuKHRlc3RzICYgZGVmZXIpLCBsZW4odGVzdHMgJiB3b250
Zml4KSkpCisKKyAgICBkZWYgX251bV9kaWdpdHMoc2VsZiwgbnVtKToKKyAgICAgICAgIiIiUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBsZW5ndGgg
b2YgYQorICAgICAgICBzZXF1ZW5jZS4iIiIKKyAgICAgICAgbmRpZ2l0cyA9IDEKKyAgICAgICAg
aWYgbGVuKG51bSk6CisgICAgICAgICAgICBuZGlnaXRzID0gaW50KG1hdGgubG9nMTAobGVuKG51
bSkpKSArIDEKKyAgICAgICAgcmV0dXJuIG5kaWdpdHMKKworICAgIGRlZiBfcHJpbnRfdGltaW5n
X3N0YXRpc3RpY3Moc2VsZiwgd3JpdGUsIHRvdGFsX3RpbWUsIHRocmVhZF90aW1pbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MsIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUmVjb3JkIHRpbWluZy1zcGVjaWZpYyBpbmZvcm1hdGlv
biBmb3IgdGhlIHRlc3QgcnVuLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgd3JpdGU6IEEg
Y2FsbGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5nLiwgYSBMb2dnaW5nV3JpdGVyKSBvcgorICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlLgorICAgICAgICAgIHRvdGFsX3RpbWU6IHRvdGFs
IGVsYXBzZWQgdGltZSAoaW4gc2Vjb25kcykgZm9yIHRoZSB0ZXN0IHJ1bgorICAgICAgICAgIHRo
cmVhZF90aW1pbmdzOiB3YWxsIGNsb2NrIHRpbWUgZWFjaCB0aHJlYWQgcmFuIGZvcgorICAgICAg
ICAgIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3M6IHRpbWluZyBieSBkaXJlY3RvcnkKKyAgICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczogdGltaW5nIGJ5IGZpbGUKKyAgICAgICAgICByZXN1
bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgZm9yIHRoZSB0ZXN0IHJ1bgorICAgICAgICAiIiIK
KyAgICAgICAgd3JpdGUoIlRlc3QgdGltaW5nOiIpCisgICAgICAgIHdyaXRlKCIgICU2LjJmIHRv
dGFsIHRlc3RpbmcgdGltZSIgJSB0b3RhbF90aW1lKQorICAgICAgICB3cml0ZSgiIikKKyAgICAg
ICAgd3JpdGUoIlRocmVhZCB0aW1pbmc6IikKKyAgICAgICAgY3VtbF90aW1lID0gMAorICAgICAg
ICBmb3IgdCBpbiB0aHJlYWRfdGltaW5nczoKKyAgICAgICAgICAgIHdyaXRlKCIgICAgJTEwczog
JTVkIHRlc3RzLCAlNi4yZiBzZWNzIiAlCisgICAgICAgICAgICAgICAgICAodFsnbmFtZSddLCB0
WydudW1fdGVzdHMnXSwgdFsndG90YWxfdGltZSddKSkKKyAgICAgICAgICAgIGN1bWxfdGltZSAr
PSB0Wyd0b3RhbF90aW1lJ10KKyAgICAgICAgd3JpdGUoIiAgICU2LjJmIGN1bXVsYXRpdmUsICU2
LjJmIG9wdGltYWwiICUKKyAgICAgICAgICAgICAgKGN1bWxfdGltZSwgY3VtbF90aW1lIC8gaW50
KHNlbGYuX29wdGlvbnMubnVtX3Rlc3Rfc2hlbGxzKSkpCisgICAgICAgIHdyaXRlKCIiKQorCisg
ICAgICAgIHNlbGYuX3ByaW50X2FnZ3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3Mod3JpdGUsIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzKQorICAgICAgICBzZWxmLl9wcmludF9pbmRpdmlkdWFsX3Rlc3Rf
dGltZXMod3JpdGUsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCisgICAgICAgIHNlbGYuX3By
aW50X2RpcmVjdG9yeV90aW1pbmdzKHdyaXRlLCBkaXJlY3RvcnlfdGVzdF90aW1pbmdzKQorCisg
ICAgZGVmIF9wcmludF9hZ2dyZWdhdGVfdGVzdF9zdGF0aXN0aWNzKHNlbGYsIHdyaXRlLCBpbmRp
dmlkdWFsX3Rlc3RfdGltaW5ncyk6CisgICAgICAgICIiIlByaW50cyBhZ2dyZWdhdGUgc3RhdGlz
dGljcyAoZS5nLiBtZWRpYW4sIG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVzdHMuCisgICAgICAgIEFy
Z3M6CisgICAgICAgICAgd3JpdGU6IEEgY2FsbGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5nLiwg
YSBMb2dnaW5nV3JpdGVyKSBvcgorICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlLgorICAg
ICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIHRlc3Rfc2hlbGxfdGhyZWFk
LlRlc3RTdGF0cyBmb3IgYWxsCisgICAgICAgICAgICAgIHRlc3RzLgorICAgICAgICAiIiIKKyAg
ICAgICAgdGVzdF90eXBlcyA9IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzWzBdLnRpbWVfZm9yX2Rp
ZmZzLmtleXMoKQorICAgICAgICB0aW1lc19mb3JfdGVzdF9zaGVsbCA9IFtdCisgICAgICAgIHRp
bWVzX2Zvcl9kaWZmX3Byb2Nlc3NpbmcgPSBbXQorICAgICAgICB0aW1lc19wZXJfdGVzdF90eXBl
ID0ge30KKyAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgorICAgICAgICAgICAg
dGltZXNfcGVyX3Rlc3RfdHlwZVt0ZXN0X3R5cGVdID0gW10KKworICAgICAgICBmb3IgdGVzdF9z
dGF0cyBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoKKyAgICAgICAgICAgIHRpbWVzX2Zvcl90
ZXN0X3NoZWxsLmFwcGVuZCh0ZXN0X3N0YXRzLnRlc3RfcnVuX3RpbWUpCisgICAgICAgICAgICB0
aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5nLmFwcGVuZCgKKyAgICAgICAgICAgICAgICB0ZXN0X3N0
YXRzLnRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcykKKyAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZz
ID0gdGVzdF9zdGF0cy50aW1lX2Zvcl9kaWZmcworICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBp
biB0ZXN0X3R5cGVzOgorICAgICAgICAgICAgICAgIHRpbWVzX3Blcl90ZXN0X3R5cGVbdGVzdF90
eXBlXS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZzW3Rlc3RfdHlw
ZV0pCisKKyAgICAgICAgc2VsZi5fcHJpbnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1pbmdzKHdy
aXRlLAorICAgICAgICAgICAgIlBFUiBURVNUIFRJTUUgSU4gVEVTVFNIRUxMIChzZWNvbmRzKToi
LCB0aW1lc19mb3JfdGVzdF9zaGVsbCkKKyAgICAgICAgc2VsZi5fcHJpbnRfc3RhdGlzdGljc19m
b3JfdGVzdF90aW1pbmdzKHdyaXRlLAorICAgICAgICAgICAgIlBFUiBURVNUIERJRkYgUFJPQ0VT
U0lORyBUSU1FUyAoc2Vjb25kcyk6IiwKKyAgICAgICAgICAgIHRpbWVzX2Zvcl9kaWZmX3Byb2Nl
c3NpbmcpCisgICAgICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF90eXBlczoKKyAgICAgICAgICAg
IHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncyh3cml0ZSwKKyAgICAgICAg
ICAgICAgICAiUEVSIFRFU1QgVElNRVMgQlkgVEVTVCBUWVBFOiAlcyIgJSB0ZXN0X3R5cGUsCisg
ICAgICAgICAgICAgICAgdGltZXNfcGVyX3Rlc3RfdHlwZVt0ZXN0X3R5cGVdKQorCisgICAgZGVm
IF9wcmludF9pbmRpdmlkdWFsX3Rlc3RfdGltZXMoc2VsZiwgd3JpdGUsIGluZGl2aWR1YWxfdGVz
dF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5KToKKyAgICAgICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMgZm9yIHNsb3csIHRpbWVvdXQg
YW5kIGNyYXNoIHRlc3RzLgorICAgICAgICBBcmdzOgorICAgICAgICAgIHdyaXRlOiBBIGNhbGxi
YWNrIHRvIHdyaXRlIGluZm8gdG8gKGUuZy4sIGEgTG9nZ2luZ1dyaXRlcikgb3IKKyAgICAgICAg
ICAgICAgc3lzLnN0ZG91dC53cml0ZS4KKyAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
czogTGlzdCBvZiB0ZXN0X3NoZWxsX3RocmVhZC5UZXN0U3RhdHMgZm9yIGFsbAorICAgICAgICAg
ICAgICB0ZXN0cy4KKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgZm9y
IHRlc3QgcnVuCisgICAgICAgICIiIgorICAgICAgICAjIFJldmVyc2Utc29ydCBieSB0aGUgdGlt
ZSBzcGVudCBpbiB0ZXN0X3NoZWxsLgorICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5z
b3J0KGxhbWJkYSBhLCBiOgorICAgICAgICAgICAgY21wKGIudGVzdF9ydW5fdGltZSwgYS50ZXN0
X3J1bl90aW1lKSkKKworICAgICAgICBudW1fcHJpbnRlZCA9IDAKKyAgICAgICAgc2xvd190ZXN0
cyA9IFtdCisgICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMgPSBbXQorICAgICAgICB1bmV4
cGVjdGVkX3Nsb3dfdGVzdHMgPSBbXQorICAgICAgICBmb3IgdGVzdF90dXBsZSBpbiBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5nczoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxl
bmFtZQorICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gRmFsc2UKKyAgICAg
ICAgICAgIGlmIHNlbGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIoZmlsZW5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRp
b25zLlNMT1cpOgorICAgICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRy
dWUKKyAgICAgICAgICAgICAgICBzbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisgICAg
ICAgICAgICBpZiBmaWxlbmFtZSBpbiByZXN1bHRfc3VtbWFyeS5mYWlsdXJlczoKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHRfc3VtbWFyeS5yZXN1bHRzW2ZpbGVuYW1lXQorICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVCBvcgorICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0gpOgorICAg
ICAgICAgICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBUcnVlCisgICAgICAg
ICAgICAgICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCisK
KyAgICAgICAgICAgIGlmIChub3QgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93IGFuZAorICAgICAg
ICAgICAgICAgIG51bV9wcmludGVkIDwgc2VsZi5fb3B0aW9ucy5udW1fc2xvd190ZXN0c190b19s
b2cpOgorICAgICAgICAgICAgICAgIG51bV9wcmludGVkID0gbnVtX3ByaW50ZWQgKyAxCisgICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF9zbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisg
ICAgICAgIHdyaXRlKCIiKQorICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGltaW5nKHdy
aXRlLCAiJXMgc2xvd2VzdCB0ZXN0cyB0aGF0IGFyZSBub3QgIgorICAgICAgICAgICAgIm1hcmtl
ZCBhcyBTTE9XIGFuZCBkaWQgbm90IHRpbWVvdXQvY3Jhc2g6IiAlCisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLm51bV9zbG93X3Rlc3RzX3RvX2xvZywgdW5leHBlY3RlZF9zbG93X3Rlc3RzKQor
ICAgICAgICB3cml0ZSgiIikKKyAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZyh3
cml0ZSwgIlRlc3RzIG1hcmtlZCBhcyBTTE9XOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd190ZXN0cykKKyAgICAgICAgd3JpdGUoIiIpCisgICAgICAgIHNlbGYu
X3ByaW50X3Rlc3RfbGlzdF90aW1pbmcod3JpdGUsICJUZXN0cyB0aGF0IHRpbWVkIG91dCBvciBj
cmFzaGVkOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9v
cl9jcmFzaF90ZXN0cykKKyAgICAgICAgd3JpdGUoIiIpCisKKyAgICBkZWYgX3ByaW50X3Rlc3Rf
bGlzdF90aW1pbmcoc2VsZiwgd3JpdGUsIHRpdGxlLCB0ZXN0X2xpc3QpOgorICAgICAgICAiIiJQ
cmludCB0aW1pbmcgaW5mbyBmb3IgZWFjaCB0ZXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgd3JpdGU6IEEgY2FsbGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5nLiwgYSBMb2dnaW5nV3Jp
dGVyKSBvcgorICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlLgorICAgICAgICAgIHRpdGxl
OiBzZWN0aW9uIGhlYWRpbmcKKyAgICAgICAgICB0ZXN0X2xpc3Q6IHRlc3RzIHRoYXQgZmFsbCBp
biB0aGlzIHNlY3Rpb24KKyAgICAgICAgIiIiCisgICAgICAgIHdyaXRlKHRpdGxlKQorICAgICAg
ICBmb3IgdGVzdF90dXBsZSBpbiB0ZXN0X2xpc3Q6CisgICAgICAgICAgICBmaWxlbmFtZSA9IHRl
c3RfdHVwbGUuZmlsZW5hbWVbbGVuKAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQubGF5b3V0
X3Rlc3RzX2RpcigpKSArIDE6XQorICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBs
YWNlKCdcXCcsICcvJykKKyAgICAgICAgICAgIHRlc3RfcnVuX3RpbWUgPSByb3VuZCh0ZXN0X3R1
cGxlLnRlc3RfcnVuX3RpbWUsIDEpCisgICAgICAgICAgICB3cml0ZSgiICAlcyB0b29rICVzIHNl
Y29uZHMiICUgKGZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lKSkKKworICAgIGRlZiBfcHJpbnRfZGly
ZWN0b3J5X3RpbWluZ3Moc2VsZiwgd3JpdGUsIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpOgorICAg
ICAgICAiIiJQcmludCB0aW1pbmcgaW5mbyBieSBkaXJlY3RvcnkgZm9yIGFueSBkaXJlY3Rvcmll
cyB0aGF0CisgICAgICAgIHRha2UgPiAxMCBzZWNvbmRzIHRvIHJ1bi4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgIHdyaXRlOiBBIGNhbGxiYWNrIHRvIHdyaXRlIGluZm8gdG8gKGUuZy4sIGEg
TG9nZ2luZ1dyaXRlcikgb3IKKyAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZS4KKyAgICAg
ICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmc6IHRpbWUgaW5mbyBmb3IgZWFjaCBkaXJlY3RvcnkK
KyAgICAgICAgIiIiCisgICAgICAgIHRpbWluZ3MgPSBbXQorICAgICAgICBmb3IgZGlyZWN0b3J5
IGluIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3M6CisgICAgICAgICAgICBudW1fdGVzdHMsIHRpbWVf
Zm9yX2RpcmVjdG9yeSA9IGRpcmVjdG9yeV90ZXN0X3RpbWluZ3NbZGlyZWN0b3J5XQorICAgICAg
ICAgICAgdGltaW5ncy5hcHBlbmQoKHJvdW5kKHRpbWVfZm9yX2RpcmVjdG9yeSwgMSksIGRpcmVj
dG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fdGVzdHMpKQorICAgICAgICB0
aW1pbmdzLnNvcnQoKQorCisgICAgICAgIHdyaXRlKCJUaW1lIHRvIHByb2Nlc3Mgc2xvd2VzdCBz
dWJkaXJlY3RvcmllczoiKQorICAgICAgICBtaW5fc2Vjb25kc190b19wcmludCA9IDEwCisgICAg
ICAgIGZvciB0aW1pbmcgaW4gdGltaW5nczoKKyAgICAgICAgICAgIGlmIHRpbWluZ1swXSA+IG1p
bl9zZWNvbmRzX3RvX3ByaW50OgorICAgICAgICAgICAgICAgIHdyaXRlKCIgICVzIHRvb2sgJXMg
c2Vjb25kcyB0byBydW4gJXMgdGVzdHMuIiAlICh0aW1pbmdbMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgdGltaW5nWzBdLCB0aW1pbmdbMl0pKQorICAgICAgICB3cml0ZSgiIikKKworICAgIGRl
ZiBfcHJpbnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1pbmdzKHNlbGYsIHdyaXRlLCB0aXRsZSwg
dGltaW5ncyk6CisgICAgICAgICIiIlByaW50cyB0aGUgbWVkaWFuLCBtZWFuIGFuZCBzdGFuZGFy
ZCBkZXZpYXRpb24gb2YgdGhlIHZhbHVlcyBpbgorICAgICAgICB0aW1pbmdzLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgd3JpdGU6IEEgY2FsbGJhY2sgdG8gd3JpdGUgaW5mbyB0byAoZS5n
LiwgYSBMb2dnaW5nV3JpdGVyKSBvcgorICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlLgor
ICAgICAgICAgIHRpdGxlOiBUaXRsZSBmb3IgdGhlc2UgdGltaW5ncy4KKyAgICAgICAgICB0aW1p
bmdzOiBBIGxpc3Qgb2YgZmxvYXRzIHJlcHJlc2VudGluZyB0aW1lcy4KKyAgICAgICAgIiIiCisg
ICAgICAgIHdyaXRlKHRpdGxlKQorICAgICAgICB0aW1pbmdzLnNvcnQoKQorCisgICAgICAgIG51
bV90ZXN0cyA9IGxlbih0aW1pbmdzKQorICAgICAgICBwZXJjZW50aWxlOTAgPSB0aW1pbmdzW2lu
dCguOSAqIG51bV90ZXN0cyldCisgICAgICAgIHBlcmNlbnRpbGU5OSA9IHRpbWluZ3NbaW50KC45
OSAqIG51bV90ZXN0cyldCisKKyAgICAgICAgaWYgbnVtX3Rlc3RzICUgMiA9PSAxOgorICAgICAg
ICAgICAgbWVkaWFuID0gdGltaW5nc1soKG51bV90ZXN0cyAtIDEpIC8gMikgLSAxXQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDIgLSAxXQor
ICAgICAgICAgICAgdXBwZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDJdCisgICAgICAgICAgICBt
ZWRpYW4gPSAoZmxvYXQobG93ZXIgKyB1cHBlcikpIC8gMgorCisgICAgICAgIG1lYW4gPSBzdW0o
dGltaW5ncykgLyBudW1fdGVzdHMKKworICAgICAgICBmb3IgdGltZSBpbiB0aW1pbmdzOgorICAg
ICAgICAgICAgc3VtX29mX2RldmlhdGlvbnMgPSBtYXRoLnBvdyh0aW1lIC0gbWVhbiwgMikKKwor
ICAgICAgICBzdGRfZGV2aWF0aW9uID0gbWF0aC5zcXJ0KHN1bV9vZl9kZXZpYXRpb25zIC8gbnVt
X3Rlc3RzKQorICAgICAgICB3cml0ZSgiICBNZWRpYW46ICAgICAgICAgICU2LjNmIiAlIG1lZGlh
bikKKyAgICAgICAgd3JpdGUoIiAgTWVhbjogICAgICAgICAgICAlNi4zZiIgJSBtZWFuKQorICAg
ICAgICB3cml0ZSgiICA5MHRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5MCkKKyAg
ICAgICAgd3JpdGUoIiAgOTl0aCBwZXJjZW50aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxlOTkpCisg
ICAgICAgIHdyaXRlKCIgIFN0YW5kYXJkIGRldjogICAgJTYuM2YiICUgc3RkX2RldmlhdGlvbikK
KyAgICAgICAgd3JpdGUoIiIpCisKKyAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1tYXJ5KHNlbGYs
IHdyaXRlLCByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlByaW50IGEgc2hvcnQgc3VtbWFy
eSBhYm91dCBob3cgbWFueSB0ZXN0cyBwYXNzZWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICB3cml0ZTogQSBjYWxsYmFjayB0byB3cml0ZSBpbmZvIHRvIChlLmcuLCBhIExvZ2dpbmdXcml0
ZXIpIG9yCisgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUuCisgICAgICAgICAgcmVzdWx0
X3N1bW1hcnk6IGluZm9ybWF0aW9uIHRvIGxvZworICAgICAgICAiIiIKKyAgICAgICAgZmFpbGVk
ID0gbGVuKHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzKQorICAgICAgICBza2lwcGVkID0gbGVuKAor
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBl
Y3RhdGlvbnMuU0tJUF0pCisgICAgICAgIHRvdGFsID0gcmVzdWx0X3N1bW1hcnkudG90YWwKKyAg
ICAgICAgcGFzc2VkID0gdG90YWwgLSBmYWlsZWQgLSBza2lwcGVkCisgICAgICAgIHBjdF9wYXNz
ZWQgPSAwLjAKKyAgICAgICAgaWYgdG90YWwgPiAwOgorICAgICAgICAgICAgcGN0X3Bhc3NlZCA9
IGZsb2F0KHBhc3NlZCkgKiAxMDAgLyB0b3RhbAorCisgICAgICAgIHdyaXRlKCIiKQorICAgICAg
ICB3cml0ZSgiPT4gUmVzdWx0czogJWQvJWQgdGVzdHMgcGFzc2VkICglLjFmJSUpIiAlCisgICAg
ICAgICAgICAgICAgICAgICAocGFzc2VkLCB0b3RhbCwgcGN0X3Bhc3NlZCkpCisgICAgICAgIHdy
aXRlKCIiKQorICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeSh3cml0ZSwg
cmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5OT1csICJUZXN0
cyB0byBiZSBmaXhlZCBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZSIpCisKKyAgICAgICAgd3JpdGUo
IiIpCisgICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHdyaXRlLCByZXN1
bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkRFRkVSLAorICAgICAg
ICAgICAgIlRlc3RzIHdlJ2xsIGZpeCBpbiB0aGUgZnV0dXJlIGlmIHRoZXkgZmFpbCAoREVGRVIp
IikKKworICAgICAgICB3cml0ZSgiIikKKyAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1h
cnlfZW50cnkod3JpdGUsIHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3Rh
dGlvbnMuV09OVEZJWCwKKyAgICAgICAgICAgICJUZXN0cyB0aGF0IHdpbGwgb25seSBiZSBmaXhl
ZCBpZiB0aGV5IGNyYXNoIChXT05URklYKSIpCisKKyAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1t
YXJ5X2VudHJ5KHNlbGYsIHdyaXRlLCByZXN1bHRfc3VtbWFyeSwgdGltZWxpbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKToKKyAgICAgICAgIiIiUHJpbnQg
YSBzdW1tYXJ5IGJsb2NrIG9mIHJlc3VsdHMgZm9yIGEgcGFydGljdWxhciB0aW1lbGluZSBvZiB0
ZXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgd3JpdGU6IEEgY2FsbGJhY2sgdG8gd3Jp
dGUgaW5mbyB0byAoZS5nLiwgYSBMb2dnaW5nV3JpdGVyKSBvcgorICAgICAgICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlLgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IHRvIHByaW50
IHJlc3VsdHMgZm9yCisgICAgICAgICAgdGltZWxpbmU6IHRoZSB0aW1lbGluZSB0byBwcmludCBy
ZXN1bHRzIGZvciAoTk9ULCBXT05URklYLCBldGMuKQorICAgICAgICAgIGhlYWRpbmc6IGEgdGV4
dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgdGltZWxpbmUKKyAgICAgICAgIiIiCisgICAgICAgIHRv
dGFsID0gbGVuKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKKyAg
ICAgICAgbm90X3Bhc3NpbmcgPSAodG90YWwgLQorICAgICAgICAgICBsZW4ocmVzdWx0X3N1bW1h
cnkudGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuUEFTU10gJgorICAgICAg
ICAgICAgICAgcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKSkKKyAg
ICAgICAgd3JpdGUoIj0+ICVzICglZCk6IiAlIChoZWFkaW5nLCBub3RfcGFzc2luZykpCisKKyAg
ICAgICAgZm9yIHJlc3VsdCBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTl9PUkRF
UjoKKyAgICAgICAgICAgIGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXN1bHRzID0gKHJlc3VsdF9zdW1t
YXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Jlc3VsdF0gJgorICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0pCisgICAgICAgICAg
ICBkZXNjID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05fREVTQ1JJUFRJT05TW3Jl
c3VsdF0KKyAgICAgICAgICAgIGlmIG5vdF9wYXNzaW5nIGFuZCBsZW4ocmVzdWx0cyk6CisgICAg
ICAgICAgICAgICAgcGN0ID0gbGVuKHJlc3VsdHMpICogMTAwLjAgLyBub3RfcGFzc2luZworICAg
ICAgICAgICAgICAgIHdyaXRlKCIgICU1ZCAlLTI0cyAoJTQuMWYlJSkiICUgKGxlbihyZXN1bHRz
KSwKKyAgICAgICAgICAgICAgICAgICAgICBkZXNjW2xlbihyZXN1bHRzKSAhPSAxXSwgcGN0KSkK
KworICAgIGRlZiBfcHJpbnRfb25lX2xpbmVfc3VtbWFyeShzZWxmLCB0b3RhbCwgZXhwZWN0ZWQp
OgorICAgICAgICAiIiJQcmludCBhIG9uZS1saW5lIHN1bW1hcnkgb2YgdGhlIHRlc3QgcnVuIHRv
IHN0ZG91dC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHRvdGFsOiB0b3RhbCBudW1iZXIg
b2YgdGVzdHMgcnVuCisgICAgICAgICAgZXhwZWN0ZWQ6IG51bWJlciBvZiBleHBlY3RlZCByZXN1
bHRzCisgICAgICAgICIiIgorICAgICAgICB1bmV4cGVjdGVkID0gdG90YWwgLSBleHBlY3RlZAor
ICAgICAgICBpZiB1bmV4cGVjdGVkID09IDA6CisgICAgICAgICAgICBwcmludCAiQWxsICVkIHRl
c3RzIHJhbiBhcyBleHBlY3RlZC4iICUgZXhwZWN0ZWQKKyAgICAgICAgZWxpZiBleHBlY3RlZCA9
PSAxOgorICAgICAgICAgICAgcHJpbnQgIjEgdGVzdCByYW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4n
dDoiICUgdW5leHBlY3RlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgIiVkIHRl
c3RzIHJhbiBhcyBleHBlY3RlZCwgJWQgZGlkbid0OiIgJSAoZXhwZWN0ZWQsCisgICAgICAgICAg
ICAgICAgdW5leHBlY3RlZCkKKworICAgIGRlZiBfcHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHNl
bGYsIHVuZXhwZWN0ZWRfcmVzdWx0cyk6CisgICAgICAgICIiIlByaW50cyBhbnkgdW5leHBlY3Rl
ZCByZXN1bHRzIGluIGEgaHVtYW4tcmVhZGFibGUgZm9ybSB0byBzdGRvdXQuIiIiCisgICAgICAg
IHBhc3NlcyA9IHt9CisgICAgICAgIGZsYWt5ID0ge30KKyAgICAgICAgcmVncmVzc2lvbnMgPSB7
fQorCisgICAgICAgIGlmIGxlbih1bmV4cGVjdGVkX3Jlc3VsdHNbJ3Rlc3RzJ10pOgorICAgICAg
ICAgICAgcHJpbnQgIiIKKworICAgICAgICBmb3IgdGVzdCwgcmVzdWx0cyBpbiB1bmV4cGVjdGVk
X3Jlc3VsdHNbJ3Rlc3RzJ10uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBhY3R1YWwgPSByZXN1
bHRzWydhY3R1YWwnXS5zcGxpdCgiICIpCisgICAgICAgICAgICBleHBlY3RlZCA9IHJlc3VsdHNb
J2V4cGVjdGVkJ10uc3BsaXQoIiAiKQorICAgICAgICAgICAgaWYgYWN0dWFsID09IFsnUEFTUydd
OgorICAgICAgICAgICAgICAgIGlmICdDUkFTSCcgaW4gZXhwZWN0ZWQ6CisgICAgICAgICAgICAg
ICAgICAgIF9hZGRfdG9fZGljdF9vZl9saXN0cyhwYXNzZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgdG8gY3Jhc2gsIGJ1dCBwYXNzZWQnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCkKKyAgICAgICAg
ICAgICAgICBlbGlmICdUSU1FT1VUJyBpbiBleHBlY3RlZDoKKyAgICAgICAgICAgICAgICAgICAg
X2FkZF90b19kaWN0X29mX2xpc3RzKHBhc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdFeHBlY3RlZCB0byB0aW1lb3V0LCBidXQgcGFzc2VkJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0KQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIF9hZGRfdG9fZGljdF9vZl9saXN0cyhwYXNz
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0ZWQg
dG8gZmFpbCwgYnV0IHBhc3NlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0KQorICAgICAgICAgICAgZWxpZiBsZW4oYWN0dWFsKSA+IDE6CisgICAgICAg
ICAgICAgICAgIyBXZSBncm91cCBmbGFreSB0ZXN0cyBieSB0aGUgZmlyc3QgYWN0dWFsIHJlc3Vs
dCB3ZSBnb3QuCisgICAgICAgICAgICAgICAgX2FkZF90b19kaWN0X29mX2xpc3RzKGZsYWt5LCBh
Y3R1YWxbMF0sIHRlc3QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9hZGRf
dG9fZGljdF9vZl9saXN0cyhyZWdyZXNzaW9ucywgcmVzdWx0c1snYWN0dWFsJ10sIHRlc3QpCisK
KyAgICAgICAgaWYgbGVuKHBhc3Nlcyk6CisgICAgICAgICAgICBmb3Iga2V5LCB0ZXN0cyBpbiBw
YXNzZXMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgcHJpbnQgIiVzOiAoJWQpIiAlIChr
ZXksIGxlbih0ZXN0cykpCisgICAgICAgICAgICAgICAgdGVzdHMuc29ydCgpCisgICAgICAgICAg
ICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICVz
IiAlIHRlc3QKKyAgICAgICAgICAgICAgICBwcmludAorCisgICAgICAgIGlmIGxlbihmbGFreSk6
CisgICAgICAgICAgICBkZXNjcmlwdGlvbnMgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RB
VElPTl9ERVNDUklQVElPTlMKKyAgICAgICAgICAgIGZvciBrZXksIHRlc3RzIGluIGZsYWt5Lml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RFeHBlY3RhdGlvbnNGaWxl
LkVYUEVDVEFUSU9OU1trZXkubG93ZXIoKV0KKyAgICAgICAgICAgICAgICBwcmludCAiVW5leHBl
Y3RlZCBmbGFraW5lc3M6ICVzICglZCkiICUgKAorICAgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b25zW3Jlc3VsdF1bMV0sIGxlbih0ZXN0cykpCisgICAgICAgICAgICAgICAgdGVzdHMuc29ydCgp
CisKKyAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdW5leHBlY3RlZF9yZXN1bHRzWyd0ZXN0cyddW3Rlc3RdCisgICAgICAgICAg
ICAgICAgICAgIGFjdHVhbCA9IHJlc3VsdFsnYWN0dWFsJ10uc3BsaXQoIiAiKQorICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZCA9IHJlc3VsdFsnZXhwZWN0ZWQnXS5zcGxpdCgiICIpCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9O
U1trZXkubG93ZXIoKV0KKyAgICAgICAgICAgICAgICAgICAgbmV3X2V4cGVjdGF0aW9uc19saXN0
ID0gbGlzdChzZXQoYWN0dWFsKSB8IHNldChleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgICAg
IHByaW50ICIgICVzID0gJXMiICUgKHRlc3QsICIgIi5qb2luKG5ld19leHBlY3RhdGlvbnNfbGlz
dCkpCisgICAgICAgICAgICAgICAgcHJpbnQKKworICAgICAgICBpZiBsZW4ocmVncmVzc2lvbnMp
OgorICAgICAgICAgICAgZGVzY3JpcHRpb25zID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNU
QVRJT05fREVTQ1JJUFRJT05TCisgICAgICAgICAgICBmb3Iga2V5LCB0ZXN0cyBpbiByZWdyZXNz
aW9ucy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBUZXN0RXhwZWN0YXRp
b25zRmlsZS5FWFBFQ1RBVElPTlNba2V5Lmxvd2VyKCldCisgICAgICAgICAgICAgICAgcHJpbnQg
IlJlZ3Jlc3Npb25zOiBVbmV4cGVjdGVkICVzIDogKCVkKSIgJSAoCisgICAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbnNbcmVzdWx0XVsxXSwgbGVuKHRlc3RzKSkKKyAgICAgICAgICAgICAgICB0
ZXN0cy5zb3J0KCkKKyAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgIiAgJXMgPSAlcyIgJSAodGVzdCwga2V5KQorICAgICAgICAgICAg
ICAgIHByaW50CisKKyAgICAgICAgaWYgbGVuKHVuZXhwZWN0ZWRfcmVzdWx0c1sndGVzdHMnXSkg
YW5kIHNlbGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgIHByaW50ICItIiAqIDc4CisK
KyAgICBkZWYgX3ByaW50X3VuZXhwZWN0ZWRfdGVzdF9yZXN1bHQoc2VsZiwgdGVzdCwgcmVzdWx0
KToKKyAgICAgICAgIiIiUHJpbnRzIG9uZSB1bmV4cGVjdGVkIHRlc3QgcmVzdWx0IGxpbmUuIiIi
CisgICAgICAgIGRlc2MgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTl9ERVNDUklQ
VElPTlNbcmVzdWx0XVswXQorICAgICAgICBzZWxmLl9tZXRlci53cml0ZSgiICAlcyAtPiB1bmV4
cGVjdGVkICVzXG4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3BvcnQucmVs
YXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0KSwgZGVzYykpCisKKyAgICBkZWYgX3dyaXRlX3Jlc3Vs
dHNfaHRtbF9maWxlKHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiV3JpdGUgcmVz
dWx0cy5odG1sIHdoaWNoIGlzIGEgc3VtbWFyeSBvZiB0ZXN0cyB0aGF0IGZhaWxlZC4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBhIHN1bW1hcnkgb2YgdGhlIHJl
c3VsdHMgOikKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIFRydWUgaWYgYW55IHJlc3Vs
dHMgd2VyZSB3cml0dGVuIChzaW5jZSBleHBlY3RlZCBmYWlsdXJlcyBtYXkgYmUKKyAgICAgICAg
ICBvbWl0dGVkKQorICAgICAgICAiIiIKKyAgICAgICAgIyB0ZXN0IGZhaWx1cmVzCisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuZnVsbF9yZXN1bHRzX2h0bWw6CisgICAgICAgICAgICB0ZXN0X2Zp
bGVzID0gcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMua2V5cygpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9z
dW1tYXJ5LAorICAgICAgICAgICAgICAgIGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQorICAgICAgICAg
ICAgdGVzdF9maWxlcyA9IHVuZXhwZWN0ZWRfZmFpbHVyZXMua2V5cygpCisgICAgICAgIGlmIG5v
dCBsZW4odGVzdF9maWxlcyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBv
dXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHRzLmh0bWwiKQor
ICAgICAgICBvdXRfZmlsZSA9IG9wZW4ob3V0X2ZpbGVuYW1lLCAndycpCisgICAgICAgICMgaGVh
ZGVyCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZnVsbF9yZXN1bHRzX2h0bWw6CisgICAgICAg
ICAgICBoMiA9ICJUZXN0IEZhaWx1cmVzIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaDIg
PSAiVW5leHBlY3RlZCBUZXN0IEZhaWx1cmVzIgorICAgICAgICBvdXRfZmlsZS53cml0ZSgiPGh0
bWw+PGhlYWQ+PHRpdGxlPkxheW91dCBUZXN0IFJlc3VsdHMgKCUodGltZSlzKSIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIjwvdGl0bGU+PC9oZWFkPjxib2R5PjxoMj4lKGgyKXMgKCUodGltZSlz
KTwvaDI+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICUgeydoMic6IGgyLCAndGltZSc6IHRp
bWUuYXNjdGltZSgpfSkKKworICAgICAgICB0ZXN0X2ZpbGVzLnNvcnQoKQorICAgICAgICBmb3Ig
dGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CisgICAgICAgICAgICB0ZXN0X2ZhaWx1cmVzID0gcmVz
dWx0X3N1bW1hcnkuZmFpbHVyZXMuZ2V0KHRlc3RfZmlsZSwgW10pCisgICAgICAgICAgICBvdXRf
ZmlsZS53cml0ZSgiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxiciAvPlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSAoc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmkodGVzdF9maWxlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9m
aWxlbmFtZSh0ZXN0X2ZpbGUpKSkKKyAgICAgICAgICAgIGZvciBmYWlsdXJlIGluIHRlc3RfZmFp
bHVyZXM6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoIiZuYnNwOyZuYnNwOyVzPGJy
Lz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmYWlsdXJlLnJlc3VsdF9odG1s
X291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVs
YXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2ZpbGUpKSkKKyAgICAgICAgICAgIG91dF9maWxlLndy
aXRlKCI8L3A+XG4iKQorCisgICAgICAgICMgZm9vdGVyCisgICAgICAgIG91dF9maWxlLndyaXRl
KCI8L2JvZHk+PC9odG1sPlxuIikKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfc2hv
d19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKKyAgICAgICAgIiIiTGF1bmNoZXMgdGhlIHRlc3Qg
c2hlbGwgb3BlbiB0byB0aGUgcmVzdWx0cy5odG1sIHBhZ2UuIiIiCisgICAgICAgIHJlc3VsdHNf
ZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0cy5odG1sIikK
KyAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfZmlsZW5h
bWUpCisKKworZGVmIF9hZGRfdG9fZGljdF9vZl9saXN0cyhkaWN0LCBrZXksIHZhbHVlKToKKyAg
ICBkaWN0LnNldGRlZmF1bHQoa2V5LCBbXSkuYXBwZW5kKHZhbHVlKQorCisKK2RlZiByZWFkX3Rl
c3RfZmlsZXMoZmlsZXMpOgorICAgIHRlc3RzID0gW10KKyAgICBmb3IgZmlsZSBpbiBmaWxlczoK
KyAgICAgICAgZm9yIGxpbmUgaW4gb3BlbihmaWxlKToKKyAgICAgICAgICAgIGxpbmUgPSB0ZXN0
X2V4cGVjdGF0aW9ucy5zdHJpcF9jb21tZW50cyhsaW5lKQorICAgICAgICAgICAgaWYgbGluZToK
KyAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQobGluZSkKKyAgICByZXR1cm4gdGVzdHMKKwor
CitkZWYgY3JlYXRlX2xvZ2dpbmdfd3JpdGVyKG9wdGlvbnMsIGxvZ19vcHRpb24pOgorICAgICIi
IlJldHVybnMgYSB3cml0ZSgpIGZ1bmN0aW9uIHRoYXQgd2lsbCB3cml0ZSB0aGUgc3RyaW5nIHRv
IGxvZ2dpbmcuaW5mbygpCisgICAgaWYgY29tcCB3YXMgc3BlY2lmaWVkIGluIC0tbG9nIG9yIGlm
IC0tdmVyYm9zZSBpcyB0cnVlLiBPdGhlcndpc2UgdGhlCisgICAgbWVzc2FnZSBpcyBkcm9wcGVk
LgorCisgICAgQXJnczoKKyAgICAgIG9wdGlvbnM6IGxpc3Qgb2YgY29tbWFuZCBsaW5lIG9wdGlv
bnMgZnJvbSBvcHRwYXJzZQorICAgICAgbG9nX29wdGlvbjogb3B0aW9uIHRvIG1hdGNoIGluIG9w
dGlvbnMubG9nIGluIG9yZGVyIGZvciB0aGUgbWVzc2FnZXMKKyAgICAgICAgICB0byBiZSBsb2dn
ZWQgKGUuZy4sICdhY3R1YWwnIG9yICdleHBlY3RlZCcpCisgICAgIiIiCisgICAgaWYgb3B0aW9u
cy52ZXJib3NlIG9yIGxvZ19vcHRpb24gaW4gb3B0aW9ucy5sb2cuc3BsaXQoIiwiKToKKyAgICAg
ICAgcmV0dXJuIGxvZ2dpbmcuaW5mbworICAgIHJldHVybiBsYW1iZGEgc3RyOiAxCisKKworZGVm
IG1haW4ob3B0aW9ucywgYXJncyk6CisgICAgIiIiUnVuIHRoZSB0ZXN0cy4gIFdpbGwgY2FsbCBz
eXMuZXhpdCB3aGVuIGNvbXBsZXRlLgorCisgICAgQXJnczoKKyAgICAgIG9wdGlvbnM6IGEgZGlj
dGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAgYXJnczogYSBsaXN0IG9mIHN1
YiBkaXJlY3RvcmllcyBvciBmaWxlcyB0byB0ZXN0CisgICAgIiIiCisKKyAgICBpZiBvcHRpb25z
LnNvdXJjZXM6CisgICAgICAgIG9wdGlvbnMudmVyYm9zZSA9IFRydWUKKworICAgICMgU2V0IHVw
IG91ciBsb2dnaW5nIGZvcm1hdC4KKyAgICBtZXRlciA9IG1ldGVyZWRfc3RyZWFtLk1ldGVyZWRT
dHJlYW0ob3B0aW9ucy52ZXJib3NlLCBzeXMuc3RkZXJyKQorICAgIGxvZ19mbXQgPSAnJShtZXNz
YWdlKXMnCisgICAgbG9nX2RhdGVmbXQgPSAnJXklbSVkICVIOiVNOiVTJworICAgIGxvZ19sZXZl
bCA9IGxvZ2dpbmcuSU5GTworICAgIGlmIG9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgbG9nX2Zt
dCA9ICgnJShhc2N0aW1lKXMgJShmaWxlbmFtZSlzOiUobGluZW5vKS00ZCAlKGxldmVsbmFtZSlz
ICcKKyAgICAgICAgICAgICAgICAgICclKG1lc3NhZ2UpcycpCisgICAgICAgIGxvZ19sZXZlbCA9
IGxvZ2dpbmcuREVCVUcKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ19sZXZlbCwg
Zm9ybWF0PWxvZ19mbXQsIGRhdGVmbXQ9bG9nX2RhdGVmbXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJlYW09bWV0ZXIpCisKKyAgICBpZiBub3Qgb3B0aW9ucy50YXJnZXQ6CisgICAgICAg
IGlmIG9wdGlvbnMuZGVidWc6CisgICAgICAgICAgICBvcHRpb25zLnRhcmdldCA9ICJEZWJ1ZyIK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMudGFyZ2V0ID0gIlJlbGVhc2UiCisK
KyAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMpCisKKyAg
ICBpZiBub3Qgb3B0aW9ucy51c2VfYXBhY2hlOgorICAgICAgICBvcHRpb25zLnVzZV9hcGFjaGUg
PSBzeXMucGxhdGZvcm0gaW4gKCdkYXJ3aW4nLCAnbGludXgyJykKKworICAgIGlmIG9wdGlvbnMu
cmVzdWx0c19kaXJlY3Rvcnkuc3RhcnRzd2l0aCgiLyIpOgorICAgICAgICAjIEFzc3VtZSBpdCdz
IGFuIGFic29sdXRlIHBhdGggYW5kIG5vcm1hbGl6ZS4KKyAgICAgICAgb3B0aW9ucy5yZXN1bHRz
X2RpcmVjdG9yeSA9IHBvcnRfb2JqLmdldF9hYnNvbHV0ZV9wYXRoKAorICAgICAgICAgICAgb3B0
aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICBlbHNlOgorICAgICAgICAjIElmIGl0J3MgYSBy
ZWxhdGl2ZSBwYXRoLCBtYWtlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHJlbGF0aXZlIHRvCisgICAg
ICAgICMgRGVidWcgb3IgUmVsZWFzZS4KKyAgICAgICAgb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSA9IHBvcnRfb2JqLnJlc3VsdHNfZGlyZWN0b3J5KCkKKworICAgIGlmIG9wdGlvbnMuY2xvYmJl
cl9vbGRfcmVzdWx0czoKKyAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJl
c3VsdHMgZGlyZWN0b3JpZXMgc2luY2UgdGhlIG90aGVyCisgICAgICAgICMgZmlsZXMgaW4gdGhl
IHJlc3VsdHMgZGlyZWN0b3J5IGFyZSBleHBsaWNpdGx5IHVzZWQgZm9yIGNyb3NzLXJ1bgorICAg
ICAgICAjIHRyYWNraW5nLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKG9wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnksICdMYXlvdXRUZXN0cycpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KHBhdGgpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorCisgICAgaWYgbm90IG9w
dGlvbnMubnVtX3Rlc3Rfc2hlbGxzOgorICAgICAgICAjIFRPRE8ob2phbik6IEludmVzdGlnYXRl
IHBlcmYvZmxha2luZXNzIGltcGFjdCBvZiB1c2luZyBudW1jb3JlcyArIDEuCisgICAgICAgIG9w
dGlvbnMubnVtX3Rlc3Rfc2hlbGxzID0gcG9ydF9vYmoubnVtX2NvcmVzKCkKKworICAgIHdyaXRl
ID0gY3JlYXRlX2xvZ2dpbmdfd3JpdGVyKG9wdGlvbnMsICdjb25maWcnKQorICAgIHdyaXRlKCJS
dW5uaW5nICVzIHRlc3Rfc2hlbGxzIGluIHBhcmFsbGVsIiAlIG9wdGlvbnMubnVtX3Rlc3Rfc2hl
bGxzKQorCisgICAgaWYgbm90IG9wdGlvbnMudGltZV9vdXRfbXM6CisgICAgICAgIGlmIG9wdGlv
bnMudGFyZ2V0ID09ICJEZWJ1ZyI6CisgICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0g
c3RyKDIgKiBUZXN0UnVubmVyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cihUZXN0UnVubmVyLkRFRkFV
TFRfVEVTVF9USU1FT1VUX01TKQorCisgICAgb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zID0gc3Ry
KDUgKiBpbnQob3B0aW9ucy50aW1lX291dF9tcykpCisgICAgd3JpdGUoIlJlZ3VsYXIgdGltZW91
dDogJXMsIHNsb3cgdGVzdCB0aW1lb3V0OiAlcyIgJQorICAgICAgICAgIChvcHRpb25zLnRpbWVf
b3V0X21zLCBvcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpKQorCisgICAgIyBJbmNsdWRlIGFsbCB0
ZXN0cyBpZiBub25lIGFyZSBzcGVjaWZpZWQuCisgICAgbmV3X2FyZ3MgPSBbXQorICAgIGZvciBh
cmcgaW4gYXJnczoKKyAgICAgICAgaWYgYXJnIGFuZCBhcmcgIT0gJyc6CisgICAgICAgICAgICBu
ZXdfYXJncy5hcHBlbmQoYXJnKQorCisgICAgcGF0aHMgPSBuZXdfYXJncworICAgIGlmIG5vdCBw
YXRoczoKKyAgICAgICAgcGF0aHMgPSBbXQorICAgIGlmIG9wdGlvbnMudGVzdF9saXN0OgorICAg
ICAgICBwYXRocyArPSByZWFkX3Rlc3RfZmlsZXMob3B0aW9ucy50ZXN0X2xpc3QpCisKKyAgICAj
IENyZWF0ZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3Qu
CisgICAgcG9ydF9vYmoubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3B0aW9ucy5yZXN1bHRzX2RpcmVj
dG9yeSkKKyAgICBtZXRlci51cGRhdGUoIkdhdGhlcmluZyBmaWxlcyAuLi4iKQorCisgICAgdGVz
dF9ydW5uZXIgPSBUZXN0UnVubmVyKHBvcnRfb2JqLCBvcHRpb25zLCBtZXRlcikKKyAgICB0ZXN0
X3J1bm5lci5nYXRoZXJfZmlsZV9wYXRocyhwYXRocykKKworICAgIGlmIG9wdGlvbnMubGludF90
ZXN0X2ZpbGVzOgorICAgICAgICAjIENyZWF0aW5nIHRoZSBleHBlY2F0aW9ucyBmb3IgZWFjaCBw
bGF0Zm9ybS90YXJnZXQgcGFpciBkb2VzIGFsbCB0aGUKKyAgICAgICAgIyB0ZXN0IGxpc3QgcGFy
c2luZyBhbmQgZW5zdXJlcyBpdCdzIGNvcnJlY3Qgc3ludGF4IChlLmcuIG5vIGR1cGVzKS4KKyAg
ICAgICAgZm9yIHBsYXRmb3JtIGluIHBvcnRfb2JqLnRlc3RfcGxhdGZvcm1fbmFtZXMoKToKKyAg
ICAgICAgICAgIHRlc3RfcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucyhwbGF0Zm9ybSwgaXNfZGVi
dWdfbW9kZT1UcnVlKQorICAgICAgICAgICAgdGVzdF9ydW5uZXIucGFyc2VfZXhwZWN0YXRpb25z
KHBsYXRmb3JtLCBpc19kZWJ1Z19tb2RlPUZhbHNlKQorICAgICAgICBwcmludCAoIklmIHRoZXJl
IGFyZSBubyBmYWlsIG1lc3NhZ2VzLCBlcnJvcnMgb3IgZXhjZXB0aW9ucywgdGhlbiB0aGUgIgor
ICAgICAgICAgICAgImxpbnQgc3VjY2VlZGVkLiIpCisgICAgICAgIHN5cy5leGl0KDApCisKKyAg
ICB3cml0ZSA9IGNyZWF0ZV9sb2dnaW5nX3dyaXRlcihvcHRpb25zLCAiY29uZmlnIikKKyAgICB3
cml0ZSgiVXNpbmcgcG9ydCAnJXMnIiAlIHBvcnRfb2JqLm5hbWUoKSkKKyAgICB3cml0ZSgiUGxh
Y2luZyB0ZXN0IHJlc3VsdHMgaW4gJXMiICUgb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAg
ICBpZiBvcHRpb25zLm5ld19iYXNlbGluZToKKyAgICAgICAgd3JpdGUoIlBsYWNpbmcgbmV3IGJh
c2VsaW5lcyBpbiAlcyIgJSBwb3J0X29iai5iYXNlbGluZV9wYXRoKCkpCisgICAgd3JpdGUoIlVz
aW5nICVzIGJ1aWxkIiAlIG9wdGlvbnMudGFyZ2V0KQorICAgIGlmIG9wdGlvbnMubm9fcGl4ZWxf
dGVzdHM6CisgICAgICAgIHdyaXRlKCJOb3QgcnVubmluZyBwaXhlbCB0ZXN0cyIpCisgICAgd3Jp
dGUoIiIpCisKKyAgICBtZXRlci51cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4uLiIpCisg
ICAgdGVzdF9ydW5uZXIucGFyc2VfZXhwZWN0YXRpb25zKHBvcnRfb2JqLnRlc3RfcGxhdGZvcm1f
bmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRhcmdl
dCA9PSAnRGVidWcnKQorCisgICAgcG9ydF9vYmouc3RhcnRfaGVscGVyKCkKKworICAgICMgQ2hl
Y2sgdGhhdCB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyAodGhlbWVzLCBmb250cywgLi4uKSBhcmUg
Y29ycmVjdC4KKyAgICBpZiAobm90IG9wdGlvbnMubm9jaGVja19zeXNfZGVwcyBhbmQKKyAgICAg
ICAgIG5vdCBwb3J0X29iai5jaGVja19zeXNfZGVwcyh0ZXN0X3J1bm5lci5uZWVkc19odHRwKCkp
KToKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIG1ldGVyLnVwZGF0ZSgiUHJlcGFyaW5nIHRl
c3RzIC4uLiIpCisgICAgd3JpdGUgPSBjcmVhdGVfbG9nZ2luZ193cml0ZXIob3B0aW9ucywgImV4
cGVjdGVkIikKKyAgICByZXN1bHRfc3VtbWFyeSA9IHRlc3RfcnVubmVyLnByZXBhcmVfbGlzdHNf
YW5kX3ByaW50X291dHB1dCh3cml0ZSkKKworICAgIHBvcnRfb2JqLnNldHVwX3Rlc3RfcnVuKCkK
KworICAgIHRlc3RfcnVubmVyLmFkZF90ZXN0X3R5cGUodGV4dF9kaWZmLlRlc3RUZXh0RGlmZikK
KyAgICBpZiBub3Qgb3B0aW9ucy5ub19waXhlbF90ZXN0czoKKyAgICAgICAgdGVzdF9ydW5uZXIu
YWRkX3Rlc3RfdHlwZShpbWFnZV9kaWZmLkltYWdlRGlmZikKKyAgICAgICAgaWYgb3B0aW9ucy5m
dXp6eV9waXhlbF90ZXN0czoKKyAgICAgICAgICAgIHRlc3RfcnVubmVyLmFkZF90ZXN0X3R5cGUo
ZnV6enlfaW1hZ2VfZGlmZi5GdXp6eUltYWdlRGlmZikKKworICAgIG1ldGVyLnVwZGF0ZSgiU3Rh
cnRpbmcgLi4uIikKKyAgICBoYXNfbmV3X2ZhaWx1cmVzID0gdGVzdF9ydW5uZXIucnVuKHJlc3Vs
dF9zdW1tYXJ5KQorCisgICAgcG9ydF9vYmouc3RvcF9oZWxwZXIoKQorCisgICAgbG9nZ2luZy5k
ZWJ1ZygiRXhpdCBzdGF0dXM6ICVkIiAlIGhhc19uZXdfZmFpbHVyZXMpCisgICAgc3lzLmV4aXQo
aGFzX25ld19mYWlsdXJlcykKKworCitkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgorICAgICIi
IlByb3ZpZGVzIGEgZGVmYXVsdCBzZXQgb2YgY29tbWFuZCBsaW5lIGFyZ3MuCisKKyAgICBSZXR1
cm5zIGEgdHVwbGUgb2Ygb3B0aW9ucywgYXJncyBmcm9tIG9wdHBhcnNlIiIiCisgICAgb3B0aW9u
X3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCisgICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCIiLCAiLS1uby1waXhlbC10ZXN0cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9ImRpc2FibGUgcGl4ZWwtdG8tcGl4ZWwgUE5HIGNvbXBhcmlzb25z
IikKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLWZ1enp5LXBpeGVsLXRlc3Rz
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQWxzbyB1c2Ug
ZnV6enkgbWF0Y2hpbmcgdG8gY29tcGFyZSBwaXhlbCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRlc3Qgb3V0cHV0cy4iKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlv
bigiIiwgIi0tcmVzdWx0cy1kaXJlY3RvcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PSJsYXlvdXQtdGVzdC1yZXN1bHRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0iT3V0cHV0IHJlc3VsdHMgZGlyZWN0b3J5IHNvdXJjZSBkaXIsIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVsYXRpdmUgdG8gRGVidWcgb3IgUmVsZWFz
ZSIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1uZXctYmFzZWxpbmUiLCBh
Y3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzYXZlIGFsbCBnZW5l
cmF0ZWQgcmVzdWx0cyBhcyBuZXcgYmFzZWxpbmVzIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgaW50byB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5LCBvdmVyd3JpdGluZyAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoYXRldmVyJ3MgYWxyZWFkeSB0aGVy
ZS4iKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbm9zaG93LXJlc3VsdHMi
LCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PUZhbHNlLCBoZWxwPSJkb24ndCBsYXVuY2ggdGhlIHRlc3Rfc2hlbGwiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgd2l0aCByZXN1bHRzIGFmdGVyIHRoZSB0ZXN0cyBhcmUgZG9u
ZSIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1mdWxsLXJlc3VsdHMtaHRt
bCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9RmFsc2UsIGhlbHA9InNob3cgYWxsIGZhaWx1cmVzIGluICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJlc3VsdHMuaHRtbCwgcmF0aGVyIHRoYW4gb25seSByZWdyZXNzaW9u
cyIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1jbG9iYmVyLW9sZC1yZXN1
bHRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xvYmJlcnMgdGVzdCByZXN1bHRzIGZyb20gIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicHJldmlvdXMgcnVucy4iKQorICAgIG9wdGlvbl9wYXJz
ZXIuYWRkX29wdGlvbigiIiwgIi0tbGludC10ZXN0LWZpbGVzIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0iTWFr
ZXMgc3VyZSB0aGUgdGVzdCBmaWxlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXJzZSBmb3IgYWxsIGNvbmZpZ3VyYXRpb25zLiBEb2VzIG5vdCBydW4gYW55ICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3RzLiIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0
aW9uKCIiLCAiLS1mb3JjZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9IlJ1biBhbGwgdGVzdHMsIGV2ZW4gdGhvc2UgbWFya2VkIFNLSVAgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGVzdCBsaXN0IikKKyAgICBvcHRpb25f
cGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW51bS10ZXN0LXNoZWxscyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiB0ZXN0c2hlbGxzIHRvIHJ1biBpbiBwYXJh
bGxlbC4iKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWFwYWNoZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IldoZXRoZXIgdG8g
dXNlIGFwYWNoZSBpbnN0ZWFkIG9mIGxpZ2h0dHBkLiIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCIiLCAiLS10aW1lLW91dC1tcyIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0iU2V0IHRoZSB0aW1lb3V0IGZvciBlYWNoIHRlc3QiKQorICAg
IG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcnVuLXNpbmdseSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InJ1biBhIHNlcGFyYXRlIHRlc3Rfc2hl
bGwgZm9yIGVhY2ggdGVzdCIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1k
ZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9InVzZSB0aGUgZGVidWcgYmluYXJ5IGluc3RlYWQgb2YgdGhl
IHJlbGVhc2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiaW5hcnkiKQor
ICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbnVtLXNsb3ctdGVzdHMtdG8tbG9n
IiwgZGVmYXVsdD01MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iTnVtYmVy
IG9mIHNsb3cgdGVzdHMgd2hvc2UgdGltaW5ncyAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRvIHByaW50LiIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAi
LS1wbGF0Zm9ybSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik92ZXJyaWRl
IHRoZSBwbGF0Zm9ybSBmb3IgZXhwZWN0ZWQgcmVzdWx0cyIpCisgICAgb3B0aW9uX3BhcnNlci5h
ZGRfb3B0aW9uKCIiLCAiLS10YXJnZXQiLCBkZWZhdWx0PSIiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJTZXQgdGhlIGJ1aWxkIHRhcmdldCBjb25maWd1cmF0aW9uICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKG92ZXJyaWRlcyAtLWRlYnVnKSIpCisg
ICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1sb2ciLCBhY3Rpb249InN0b3JlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0iZGV0YWlsZWQtcHJvZ3Jlc3Ms
dW5leHBlY3RlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImxvZyB2YXJp
b3VzIHR5cGVzIG9mIGRhdGEuIFRoZSBwYXJhbSBzaG91bGQiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgYmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB2YWx1ZXMgZnJvbTogIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsLGNvbmZpZywiICsgTE9HX0RFVEFJ
TEVEX1BST0dSRVNTICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIixleHBlY3RlZCx0
aW1pbmcsIiArIExPR19VTkVYUEVDVEVEICsgIiAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIoZGVmYXVsdHMgdG8gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWxv
ZyBkZXRhaWxlZC1wcm9ncmVzcyx1bmV4cGVjdGVkKSIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJpbmNsdWRlIGRlYnVnLWxl
dmVsIGxvZ2dpbmciKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tc291cmNl
cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9InNob3cgZXhwZWN0ZWQgcmVzdWx0IGZpbGUgcGF0aCBmb3IgZWFjaCAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgKGltcGxpZXMgLS12ZXJib3NlKSIpCisgICAg
b3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1zdGFydHVwLWRpYWxvZyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNyZWF0ZSBhIGRpYWxvZyBvbiB0
ZXN0X3NoZWxsLmV4ZSBzdGFydHVwIikKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIs
ICItLWdwLWZhdWx0LWVycm9yLWJveCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9ImVuYWJsZSBXaW5kb3dzIEdQIGZhdWx0IGVycm9yIGJveCIpCisgICAgb3B0
aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS13cmFwcGVyIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0id3JhcHBlciBjb21tYW5kIHRvIGluc2VydCBiZWZvcmUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvY2F0aW9ucyBvZiB0ZXN0X3NoZWxs
OyBvcHRpb24gaXMgc3BsaXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJv
biB3aGl0ZXNwYWNlIGJlZm9yZSBydW5uaW5nLiAoRXhhbXBsZTogIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICItLXdyYXBwZXI9J3ZhbGdyaW5kIC0tc21jLWNoZWNrPWFsbCcp
IikKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXRlc3QtbGlzdCIsIGFjdGlv
bj0iYXBwZW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0icmVhZCBsaXN0
IG9mIHRlc3RzIHRvIHJ1biBmcm9tIGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRhdmFyPSJGSUxFIikKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW5v
Y2hlY2stc3lzLWRlcHMiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJEb24ndCBjaGVjayB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIih0aGVtZXMpIikKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9v
cHRpb24oIiIsICItLXJhbmRvbWl6ZS1vcmRlciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCJSdW4gdGVzdHMgaW4gcmFuZG9tIG9yZGVyICh1c2VmdWwgZm9y
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNraW5nIGRvd24gY29y
cnVwdGlvbikiKSkKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bi1jaHVu
ayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0oIlJ1biBhIHNwZWNpZmllZCBjaHVuayAobjpsKSwg
dGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm50aCBvZiBsZW4gbCwg
b2YgdGhlIGxheW91dCB0ZXN0cyIpKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwg
Ii0tcnVuLXBhcnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJSdW4gYSBzcGVjaWZpZWQgcGFy
dCAobjptKSwgdGhlIG50aCBvZiBtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIHBhcnRzLCBvZiB0aGUgbGF5b3V0IHRlc3RzIikpCisgICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCIiLCAiLS1iYXRjaC1zaXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiUnVuIGEg
dGhlIHRlc3RzIGluIGJhdGNoZXMgKG4pLCBhZnRlciAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJldmVyeSBuIHRlc3RzLCB0aGUgdGVzdCBzaGVsbCBpcyAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWxhdW5jaGVkLiIpKQorICAgIG9wdGlvbl9w
YXJzZXIuYWRkX29wdGlvbigiIiwgIi0tYnVpbGRlci1uYW1lIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD0iRFVNTVlfQlVJTERFUl9OQU1FIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0oIlRoZSBuYW1lIG9mIHRoZSBidWlsZGVyIHNob3duIG9uIHRo
ZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXRlcmZhbGwgcnVubmlu
ZyB0aGlzIHNjcmlwdCBlLmcuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IldlYktpdC4iKSkKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLWJ1aWxkLW5h
bWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJEVU1NWV9CVUlMRF9O
QU1FIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oIlRoZSBuYW1lIG9mIHRo
ZSBidWlsZGVyIHVzZWQgaW4gaXRzIHBhdGgsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImUuZy4gd2Via2l0LXJlbC4iKSkKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRp
b24oIiIsICItLWJ1aWxkLW51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9IkRVTU1ZX0JVSUxEX05VTUJFUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCJUaGUgYnVpbGQgbnVtYmVyIG9mIHRoZSBidWlsZGVyIHJ1bm5pbmciCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIHNjcmlwdC4iKSkKKyAgICBvcHRpb25f
cGFyc2VyLmFkZF9vcHRpb24oIiIsICItLWV4cGVyaW1lbnRhbC1mdWxseS1wYXJhbGxlbCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9
RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InJ1biBhbGwgdGVzdHMg
aW4gcGFyYWxsZWwiKQorICAgIHJldHVybiBvcHRpb25fcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykK
KworaWYgJ19fbWFpbl9fJyA9PSBfX25hbWVfXzoKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2Vf
YXJncygpCisgICAgbWFpbihvcHRpb25zLCBhcmdzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49550</attachid>
            <date>2010-02-25 17:12:02 -0800</date>
            <delta_ts>2010-02-25 17:14:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35408-20100225171201.patch</filename>
            <type>text/plain</type>
            <size>1503</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4Y2JhMjJmLi4yMThkZjFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIwMTAtMDIt
MjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAgIEZpeCB0eXBvIGlu
IG15IGxhc3QgY2hhbmdlLiAgTm8gcmV2aWV3LgorCisgICAgICAgIFJlbmFtZSBydW4tY2hyb21p
dW0td2Via2l0LXRlc3RzIHRvIG5ldy1ydW4td2Via2l0LXRlc3RzIHRvIHN0b3AgY29uZnVzaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTQwOAor
CisgICAgICAgICogU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0czoKKworMjAxMC0wMi0yNSAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KIAogICAgICAgICBSZW5hbWUgcnVuLWNocm9taXVtLXdlYmtpdC10ZXN0cyB0byBu
ZXctcnVuLXdlYmtpdC10ZXN0cyB0byBzdG9wIGNvbmZ1c2lvbgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bmV3LXJ1bi13ZWJraXQtdGVzdHMKaW5kZXggNGU5YTg5Yi4uYjE5MThhMCAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0cworKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXRlc3RzCkBAIC0zMSwxMCArMzEsMTEgQEAKIGltcG9y
dCBvcwogaW1wb3J0IHN5cwogCi1fc2NyaXB0c19kaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUo
b3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKSkKLV93ZWJraXRweV9kaXJlY3RvcnkgPSBvcy5w
YXRoLmpvaW4oc2NyaXB0c19kaXJlY3RvcnksICJ3ZWJraXRweSIpCi1zeXMucGF0aC5hcHBlbmQo
b3MucGF0aC5qb2luKF93ZWJraXRweV9kaXJlY3RvcnksICJsYXlvdXRfdGVzdHMiKSkKLXN5cy5w
YXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oX3dlYmtpdHB5X2RpcmVjdG9yeSwgInRoaXJkcGFydHki
KSkgICMgRm9yIHNpbXBsZWpzb24uCitzY3JpcHRzX2RpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMF0pKQord2Via2l0cHlfZGlyZWN0b3J5ID0gb3Mu
cGF0aC5qb2luKHNjcmlwdHNfZGlyZWN0b3J5LCAid2Via2l0cHkiKQorc3lzLnBhdGguYXBwZW5k
KG9zLnBhdGguam9pbih3ZWJraXRweV9kaXJlY3RvcnksICJsYXlvdXRfdGVzdHMiKSkKK3N5cy5w
YXRoLmFwcGVuZChvcy5wYXRoLmpvaW4od2Via2l0cHlfZGlyZWN0b3J5LCAidGhpcmRwYXJ0eSIp
KSAgIyBGb3Igc2ltcGxlanNvbi4KKwogaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIAogaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>