<?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>105685</bug_id>
          
          <creation_ts>2012-12-22 23:52:19 -0800</creation_ts>
          <short_desc>Cleanup perftest* tests and add a test for computing statistics</short_desc>
          <delta_ts>2013-01-04 01:04:34 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97510</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796722</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-22 23:52:19 -0800</bug_when>
    <thetext>This is a preparation for the bug 97510. We need a test for calculate_statistics, and we need to refactor tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796724</commentid>
    <comment_count>1</comment_count>
      <attachid>180617</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-23 00:12:01 -0800</bug_when>
    <thetext>Created attachment 180617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796725</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-23 00:14:58 -0800</bug_when>
    <thetext>Attachment 180617 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:210:  expected 1 blank line, found 0  [pep8/E301] [5]
Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:498:  [MainTest.test_upload_json.MockFileUploader.__init__] Method should have &quot;self&quot; as first argument  [pylint/E0213] [5]
Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:503:  [MainTest.test_upload_json.MockFileUploader.upload_single_text_file] Method should have &quot;self&quot; as first argument  [pylint/E0213] [5]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799889</commentid>
    <comment_count>3</comment_count>
      <attachid>180617</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-03 18:37:22 -0800</bug_when>
    <thetext>Comment on attachment 180617
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=180617&amp;action=review

OK.

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:215
&gt; +    @staticmethod
&gt; +    def compute_statistics(values):

static methods are rarely worth it in python. :(  They&apos;re just hard to mock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799926</commentid>
    <comment_count>4</comment_count>
      <attachid>180617</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 19:47:25 -0800</bug_when>
    <thetext>Comment on attachment 180617
Patch

Clearing flags on attachment: 180617

Committed r138774: &lt;http://trac.webkit.org/changeset/138774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799927</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 19:47:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800066</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-04 01:04:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/12955988&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180617</attachid>
            <date>2012-12-23 00:12:01 -0800</date>
            <delta_ts>2013-01-03 19:47:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105685-20121223000915.patch</filename>
            <type>text/plain</type>
            <size>84794</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzODQxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ1IEBACisyMDEyLTEyLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIENsZWFudXAgcGVyZnRlc3QqIHRlc3RzIGFuZCBhZGQgYSB0ZXN0IGZvciBjb21w
dXRpbmcgc3RhdGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgdGVzdCBmb3IgUGVyZlRlc3QuY29tcHV0ZV9zdGF0aXN0aWNzIChtb3Zl
ZCBhbmQgcmVuYW1lZCBmcm9tIFBhZ2VMb2FkaW5nUGVyZlRlc3QuY2FsY3VsYXRlX3N0YXRpc3Rp
Y3MpIGFuZAorICAgICAgICBleHRyYWN0ZWQgcGVyZnRlc3RzcnVubmVyX2l0ZWdyYXRpb250ZXN0
cy5weSBmcm9tIHBlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdHMucHkuCisKKyAgICAgICAgQWxzbyBm
aXhlZCBhIGJ1ZyBpbiBjb21wdXRlX3N0YXRpc3RpY3MgdGhhdCB0aGUgbWVhbiAoJ2F2ZycpIHZh
bHVlIGNhbiBoYXZlIGEgbGFyZ2Ugcm91bmRpbmcgZXJyb3JzIGluIHNvbWUgY2FzZXMuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5Ogor
ICAgICAgICAoUGVyZlRlc3QuY29tcHV0ZV9zdGF0aXN0aWNzKTogTW92ZWQgZnJvbSBQYWdlTG9h
ZGluZ1BlcmZUZXN0IHRvIHByZXBhcmUgZm9yIHRoZSBidWcgOTc1MTAuIEFsc28gY29tcHV0ZSB0
aGUgbWVhbgorICAgICAgICBkaXJlY3RseSBmcm9tIHNvcnRlZF92YWx1ZXMgaW5zdGVhZCBvZiB1
c2luZyB0aGUgb25lIGZyb20gS251dGgncyBvbmxpbmUgYWxnb3JpdGhtLiBUaGlzIGFwcHJvYWNo
IGdpdmVzIG1vcmUKKyAgICAgICAgYWNjdXJhdGUgcmVzdWx0IGZvciB0aGUgbWVhbi4KKyAgICAg
ICAgKFBhZ2VMb2FkaW5nUGVyZlRlc3QucnVuX3NpbmdsZSk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weToKKyAgICAgICAg
KE1haW5UZXN0LnRlc3RfY29tcHV0ZV9zdGF0aXN0aWNzKToKKyAgICAgICAgKE1haW5UZXN0LnRl
c3RfY29tcHV0ZV9zdGF0aXN0aWNzLmNvbXB1dGVfc3RhdGlzdGljcyk6IEFkZGVkLgorICAgICAg
ICAoVGVzdFBhZ2VMb2FkaW5nUGVyZlRlc3QudGVzdF9ydW4pOiBmbG9hdGlmeSB2YWx1ZXMuCisg
ICAgICAgIChUZXN0UGFnZUxvYWRpbmdQZXJmVGVzdC50ZXN0X3J1bl93aXRoX21lbW9yeV9vdXRw
dXQpOiBEaXR0by4gQWxzbyBnb3QgcmlkIG9mICIuMCIgZnJvbSBtZWFuIHZhbHVlcyBub3cgdGhh
dCBQeXRob24KKyAgICAgICAgY29ycmVjdGx5IHJlY29nbml6ZXMgdGhlbSBhcyBpbnRlZ2Vycy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3Rz
cnVubmVyX2ludGVncmF0aW9udGVzdC5weTogQ29waWVkIGZyb20KKyAgICAgICAgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3Qu
cHkuCisgICAgICAgIChUZXN0RHJpdmVyKTogTW92ZWQgb3V0IG9mIE1haW5UZXN0LgorICAgICAg
ICAoTWFpblRlc3QpOiBHb3QgcmlkIG9mIGFzc2VydFdyaXR0ZW4gYW5kIGFsbCB1bml0IHRlc3Rz
LgorICAgICAgICAoTWFpblRlc3QuX25vcm1hbGl6ZV9vdXRwdXQpOiBSZW5hbWVkIGZyb20gbm9y
bWFsaXplRmluaXNoZWRUaW1lIHRvIG1hdGNoIHRoZSBQRVA4IG5hbWluZyBjb252ZW50aW9uLgor
ICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fdGVzdF9zZXRfa2lsbHNfZHJ0X3Blcl9ydW4uVGVz
dERyaXZlcldpdGhTdG9wQ291bnQpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fdGVzdF9z
ZXRfZm9yX3BhcnNlcl90ZXN0cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3J1bl9tZW1vcnlf
dGVzdCk6CisgICAgICAgIChNYWluVGVzdC5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dCk6Cisg
ICAgICAgIChNYWluVGVzdC50ZXN0X3J1bl9nZW5lcmF0ZXNfanNvbl9ieV9kZWZhdWx0KToKKyAg
ICAgICAgKE1haW5UZXN0LnRlc3RfcnVuX21lcmdlc19vdXRwdXRfYnlfZGVmYXVsdCk6CisgICAg
ICAgIChNYWluVGVzdC50ZXN0X3J1bl9yZXNwZWN0c19yZXNldF9yZXN1bHRzKToKKyAgICAgICAg
KE1haW5UZXN0LnRlc3RfcnVuX2dlbmVyYXRlc19hbmRfc2hvd19yZXN1bHRzX3BhZ2UpOiBVc2Ug
cnVubmVyLmxvYWRfb3V0cHV0X2pzb24oKSBpbnN0ZWFkIG9mIG1hbnVhbGx5IGxvYWRpbmcgYW5k
CisgICAgICAgIHBhcnNpbmcgb3V0cHV0IEpTT04gZmlsZXMuIEp1c3QgdmVyaWZ5IHRoYXQgdGhl
IG91dHB1dCBwYXRoIGlzIGNvcnJlY3QgaW5zdGVhZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weToKKyAgICAg
ICAgKE1haW5UZXN0KTogUmVtb3ZlZCBhbGwgaW50ZWdyYXRpb24gdGVzdHMuCisgICAgICAgIChN
YWluVGVzdC5jcmVhdGVfcnVubmVyKTogU2ltcGxpZmllZC4KKwogMjAxMi0xMi0yMSAgTmljbyBX
ZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgY2hyb21pdW06IHdlYmtpdC1i
dWlsZC1kaXJlY3RvcnkgZG9lc24ndCBoYW5kbGUgbmluamEgb3V0cHV0IGRpcnMKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dC5weQkocmV2aXNpb24gMTM4MzUxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwyNyBA
QCBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogCiAgICAgICAgIHJldHVybiByZXN1bHRzCiAKKyAg
ICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNvbXB1dGVfc3RhdGlzdGljcyh2YWx1ZXMpOgorICAg
ICAgICBzb3J0ZWRfdmFsdWVzID0gc29ydGVkKHZhbHVlcykKKworICAgICAgICAjIENvbXB1dGUg
dGhlIG1lYW4gYW5kIHZhcmlhbmNlIHVzaW5nIEtudXRoJ3Mgb25saW5lIGFsZ29yaXRobSAoaGFz
IGdvb2QgbnVtZXJpY2FsIHN0YWJpbGl0eSkuCisgICAgICAgIHNxdWFyZVN1bSA9IDAKKyAgICAg
ICAgbWVhbiA9IDAKKyAgICAgICAgZm9yIGksIHRpbWUgaW4gZW51bWVyYXRlKHNvcnRlZF92YWx1
ZXMpOgorICAgICAgICAgICAgZGVsdGEgPSB0aW1lIC0gbWVhbgorICAgICAgICAgICAgc3dlZXAg
PSBpICsgMS4wCisgICAgICAgICAgICBtZWFuICs9IGRlbHRhIC8gc3dlZXAKKyAgICAgICAgICAg
IHNxdWFyZVN1bSArPSBkZWx0YSAqICh0aW1lIC0gbWVhbikKKworICAgICAgICBtaWRkbGUgPSBp
bnQobGVuKHNvcnRlZF92YWx1ZXMpIC8gMikKKyAgICAgICAgcmVzdWx0ID0geydhdmcnOiBzdW0o
c29ydGVkX3ZhbHVlcykgLyBsZW4odmFsdWVzKSwKKyAgICAgICAgICAgICdtaW4nOiBzb3J0ZWRf
dmFsdWVzWzBdLAorICAgICAgICAgICAgJ21heCc6IHNvcnRlZF92YWx1ZXNbLTFdLAorICAgICAg
ICAgICAgJ21lZGlhbic6IHNvcnRlZF92YWx1ZXNbbWlkZGxlXSBpZiBsZW4oc29ydGVkX3ZhbHVl
cykgJSAyIGVsc2UgKHNvcnRlZF92YWx1ZXNbbWlkZGxlIC0gMV0gKyBzb3J0ZWRfdmFsdWVzW21p
ZGRsZV0pIC8gMiwKKyAgICAgICAgICAgICdzdGRldic6IG1hdGguc3FydChzcXVhcmVTdW0gLyAo
bGVuKHNvcnRlZF92YWx1ZXMpIC0gMSkpfQorICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICBk
ZWYgb3V0cHV0X3N0YXRpc3RpY3Moc2VsZiwgdGVzdF9uYW1lLCByZXN1bHRzKToKICAgICAgICAg
dW5pdCA9IHJlc3VsdHNbJ3VuaXQnXQogICAgICAgICBfbG9nLmluZm8oJ1JFU1VMVCAlcz0gJXMg
JXMnICUgKHRlc3RfbmFtZS5yZXBsYWNlKCc6JywgJzogJykucmVwbGFjZSgnLycsICc6ICcpLCBy
ZXN1bHRzWydhdmcnXSwgdW5pdCkpCkBAIC0yNTgsMjYgKzI3OSw2IEBAIGNsYXNzIFBhZ2VMb2Fk
aW5nUGVyZlRlc3QoUGVyZlRlc3QpOgogICAgICAgICBzdXBlcihQYWdlTG9hZGluZ1BlcmZUZXN0
LCBzZWxmKS5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi5mb3JjZV9nY190ZXN0LCB0aW1lX291dF9t
cywgRmFsc2UpCiAgICAgICAgIHJldHVybiBzdXBlcihQYWdlTG9hZGluZ1BlcmZUZXN0LCBzZWxm
KS5ydW5fc2luZ2xlKGRyaXZlciwgdGVzdF9wYXRoLCB0aW1lX291dF9tcywgc2hvdWxkX3J1bl9w
aXhlbF90ZXN0KQogCi0gICAgZGVmIGNhbGN1bGF0ZV9zdGF0aXN0aWNzKHNlbGYsIHZhbHVlcyk6
Ci0gICAgICAgIHNvcnRlZF92YWx1ZXMgPSBzb3J0ZWQodmFsdWVzKQotCi0gICAgICAgICMgQ29t
cHV0ZSB0aGUgbWVhbiBhbmQgdmFyaWFuY2UgdXNpbmcgS251dGgncyBvbmxpbmUgYWxnb3JpdGht
IChoYXMgZ29vZCBudW1lcmljYWwgc3RhYmlsaXR5KS4KLSAgICAgICAgc3F1YXJlU3VtID0gMAot
ICAgICAgICBtZWFuID0gMAotICAgICAgICBmb3IgaSwgdGltZSBpbiBlbnVtZXJhdGUoc29ydGVk
X3ZhbHVlcyk6Ci0gICAgICAgICAgICBkZWx0YSA9IHRpbWUgLSBtZWFuCi0gICAgICAgICAgICBz
d2VlcCA9IGkgKyAxLjAKLSAgICAgICAgICAgIG1lYW4gKz0gZGVsdGEgLyBzd2VlcAotICAgICAg
ICAgICAgc3F1YXJlU3VtICs9IGRlbHRhICogKHRpbWUgLSBtZWFuKQotCi0gICAgICAgIG1pZGRs
ZSA9IGludChsZW4oc29ydGVkX3ZhbHVlcykgLyAyKQotICAgICAgICByZXN1bHQgPSB7J2F2Zyc6
IG1lYW4sCi0gICAgICAgICAgICAnbWluJzogc29ydGVkX3ZhbHVlc1swXSwKLSAgICAgICAgICAg
ICdtYXgnOiBzb3J0ZWRfdmFsdWVzWy0xXSwKLSAgICAgICAgICAgICdtZWRpYW4nOiBzb3J0ZWRf
dmFsdWVzW21pZGRsZV0gaWYgbGVuKHNvcnRlZF92YWx1ZXMpICUgMiBlbHNlIChzb3J0ZWRfdmFs
dWVzW21pZGRsZSAtIDFdICsgc29ydGVkX3ZhbHVlc1ttaWRkbGVdKSAvIDIsCi0gICAgICAgICAg
ICAnc3RkZXYnOiBtYXRoLnNxcnQoc3F1YXJlU3VtIC8gKGxlbihzb3J0ZWRfdmFsdWVzKSAtIDEp
KX0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCiAgICAgZGVmIF9ydW5fd2l0aF9kcml2ZXIoc2Vs
ZiwgZHJpdmVyLCB0aW1lX291dF9tcyk6CiAgICAgICAgIHJlc3VsdHMgPSB7fQogICAgICAgICBy
ZXN1bHRzLnNldGRlZmF1bHQoc2VsZi50ZXN0X25hbWUoKSwgeyd1bml0JzogJ21zJywgJ3ZhbHVl
cyc6IFtdfSkKQEAgLTMwMyw3ICszMDQsNyBAQCBjbGFzcyBQYWdlTG9hZGluZ1BlcmZUZXN0KFBl
cmZUZXN0KToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tuYW1lXVsndW5pdCddID0gJ2J5
dGVzJwogCiAgICAgICAgIGZvciByZXN1bHRfY2xhc3MgaW4gcmVzdWx0cy5rZXlzKCk6Ci0gICAg
ICAgICAgICByZXN1bHRzW3Jlc3VsdF9jbGFzc10udXBkYXRlKHNlbGYuY2FsY3VsYXRlX3N0YXRp
c3RpY3MocmVzdWx0c1tyZXN1bHRfY2xhc3NdWyd2YWx1ZXMnXSkpCisgICAgICAgICAgICByZXN1
bHRzW3Jlc3VsdF9jbGFzc10udXBkYXRlKHNlbGYuY29tcHV0ZV9zdGF0aXN0aWNzKHJlc3VsdHNb
cmVzdWx0X2NsYXNzXVsndmFsdWVzJ10pKQogICAgICAgICAgICAgc2VsZi5vdXRwdXRfc3RhdGlz
dGljcyhyZXN1bHRfY2xhc3MsIHJlc3VsdHNbcmVzdWx0X2NsYXNzXSkKIAogICAgICAgICByZXR1
cm4gcmVzdWx0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMzgz
NTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IGpzb24KIGltcG9ydCBtYXRoCiBpbXBvcnQg
dW5pdHRlc3QKIApAQCAtNDcsNiArNDgsMjYgQEAgY2xhc3MgTW9ja1BvcnQoVGVzdFBvcnQpOgog
ICAgICAgICBzdXBlcihNb2NrUG9ydCwgc2VsZikuX19pbml0X18oaG9zdD1Nb2NrSG9zdCgpLCBj
dXN0b21fcnVuX3Rlc3Q9Y3VzdG9tX3J1bl90ZXN0KQogCiBjbGFzcyBNYWluVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY29tcHV0ZV9zdGF0aXN0aWNzKHNlbGYpOgorICAg
ICAgICBkZWYgY29tcHV0ZV9zdGF0aXN0aWNzKHZhbHVlcyk6CisgICAgICAgICAgICBzdGF0aXN0
aWNzID0gUGVyZlRlc3QuY29tcHV0ZV9zdGF0aXN0aWNzKG1hcChsYW1iZGEgeDogZmxvYXQoeCks
IHZhbHVlcykpCisgICAgICAgICAgICByZXR1cm4ganNvbi5sb2Fkcyhqc29uLmR1bXBzKHN0YXRp
c3RpY3MpKQorCisgICAgICAgIHN0YXRpc3RpY3MgPSBjb21wdXRlX3N0YXRpc3RpY3MoWzEwLCA5
LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAyMCwgMTksIDE4LCAxNywgMTYsIDE1LCAxNCwgMTMs
IDEyLCAxMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHN0YXRpc3RpY3Mua2V5
cygpKSwgWydhdmcnLCAnbWF4JywgJ21lZGlhbicsICdtaW4nLCAnc3RkZXYnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzWydhdmcnXSwgMTAuNSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdGF0aXN0aWNzWydtaW4nXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdGF0aXN0aWNzWydtYXgnXSwgMjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlz
dGljc1snbWVkaWFuJ10sIDEwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHV0ZV9z
dGF0aXN0aWNzKFs4LCA5LCAxMCwgMTEsIDEyXSlbJ2F2ZyddLCAxMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21wdXRlX3N0YXRpc3RpY3MoWzgsIDksIDEwLCAxMSwgMTJdICogNClbJ2F2
ZyddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wdXRlX3N0YXRpc3RpY3MoWzEs
IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywg
MTgsIDE5XSlbJ2F2ZyddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJmVGVzdC5j
b21wdXRlX3N0YXRpc3RpY3MoWzEsIDUsIDIsIDgsIDddKVsnbWVkaWFuJ10sIDUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUGVyZlRlc3QuY29tcHV0ZV9zdGF0aXN0aWNzKFsxLCA2LCAyLCA4
LCA3LCAyXSlbJ21lZGlhbiddLCA0KQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHN0
YXRpc3RpY3NbJ3N0ZGV2J10sIG1hdGguc3FydCgzNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoY29tcHV0ZV9zdGF0aXN0aWNzKFsxLCAyLCAzLCA0LCA1LCA2XSlbJ3N0ZGV2J10s
IG1hdGguc3FydCgzLjUpKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNvbXB1dGVf
c3RhdGlzdGljcyhbNCwgMiwgNSwgOCwgNl0pWydzdGRldiddLCBtYXRoLnNxcnQoNSkpCisKICAg
ICBkZWYgdGVzdF9wYXJzZV9vdXRwdXQoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IERyaXZlck91
dHB1dCgnXG4nLmpvaW4oWwogICAgICAgICAgICAgJ1J1bm5pbmcgMjAgdGltZXMnLApAQCAtMTg4
LDEyICsyMDksMTIgQEAgY2xhc3MgVGVzdFBhZ2VMb2FkaW5nUGVyZlRlc3QodW5pdHRlc3QuVAog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QuX3J1bl93aXRo
X2RyaXZlcihkcml2ZXIsIE5vbmUpLAogICAgICAgICAgICAgICAgIHsnc29tZS10ZXN0Jzogeydt
YXgnOiAyMDAwMCwgJ2F2Zyc6IDExMDAwLjAsICdtZWRpYW4nOiAxMTAwMCwgJ3N0ZGV2JzogNTYy
Ny4zMTQzMzg3MTEzNzgsICdtaW4nOiAyMDAwLCAndW5pdCc6ICdtcycsCi0gICAgICAgICAgICAg
ICAgICAgICd2YWx1ZXMnOiBbaSAqIDEwMDAgZm9yIGkgaW4gcmFuZ2UoMiwgMjEpXX19KQorICAg
ICAgICAgICAgICAgICAgICAndmFsdWVzJzogW2Zsb2F0KGkgKiAxMDAwKSBmb3IgaSBpbiByYW5n
ZSgyLCAyMSldfX0pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0
LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0
cHV0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChhY3R1YWxfbG9ncywgJ1JFU1VMVCBzb21lLXRlc3Q9IDExMDAwLjAgbXNcbm1lZGlh
bj0gMTEwMDAgbXMsIHN0ZGV2PSA1NjI3LjMxNDMzODcxIG1zLCBtaW49IDIwMDAgbXMsIG1heD0g
MjAwMDAgbXNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICdSRVNV
TFQgc29tZS10ZXN0PSAxMTAwMCBtc1xubWVkaWFuPSAxMTAwMCBtcywgc3RkZXY9IDU2MjcuMzE0
MzM4NzEgbXMsIG1pbj0gMjAwMCBtcywgbWF4PSAyMDAwMCBtc1xuJykKIAogICAgIGRlZiB0ZXN0
X3J1bl93aXRoX21lbW9yeV9vdXRwdXQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBNb2NrUG9ydCgp
CkBAIC0yMDYsMTggKzIyNywxOCBAQCBjbGFzcyBUZXN0UGFnZUxvYWRpbmdQZXJmVGVzdCh1bml0
dGVzdC5UCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5f
cnVuX3dpdGhfZHJpdmVyKGRyaXZlciwgTm9uZSksCiAgICAgICAgICAgICAgICAgeydzb21lLXRl
c3QnOiB7J21heCc6IDIwMDAwLCAnYXZnJzogMTEwMDAuMCwgJ21lZGlhbic6IDExMDAwLCAnc3Rk
ZXYnOiA1NjI3LjMxNDMzODcxMTM3OCwgJ21pbic6IDIwMDAsICd1bml0JzogJ21zJywKLSAgICAg
ICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtpICogMTAwMCBmb3IgaSBpbiByYW5nZSgyLCAyMSld
fSwKKyAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtmbG9hdChpICogMTAwMCkgZm9yIGkg
aW4gcmFuZ2UoMiwgMjEpXX0sCiAgICAgICAgICAgICAgICAgICdzb21lLXRlc3Q6TWFsbG9jJzog
eydtYXgnOiAxMCwgJ2F2Zyc6IDEwLjAsICdtZWRpYW4nOiAxMCwgJ21pbic6IDEwLCAnc3RkZXYn
OiAwLjAsICd1bml0JzogJ2J5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFsx
MF0gKiAxOX0sCisgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnOiBbZmxvYXQoMTApXSAqIDE5
fSwKICAgICAgICAgICAgICAgICAgJ3NvbWUtdGVzdDpKU0hlYXAnOiB7J21heCc6IDUsICdhdmcn
OiA1LjAsICdtZWRpYW4nOiA1LCAnbWluJzogNSwgJ3N0ZGV2JzogMC4wLCAndW5pdCc6ICdieXRl
cycsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnOiBbNV0gKiAxOX19KQorICAgICAgICAg
ICAgICAgICAgICAndmFsdWVzJzogW2Zsb2F0KDUpXSAqIDE5fX0pCiAgICAgICAgIGZpbmFsbHk6
CiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9
IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChhY3R1YWxfc3Rkb3V0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rk
ZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ1JFU1VMVCBz
b21lLXRlc3Q9IDExMDAwLjAgbXNcbm1lZGlhbj0gMTEwMDAgbXMsIHN0ZGV2PSA1NjI3LjMxNDMz
ODcxIG1zLCBtaW49IDIwMDAgbXMsIG1heD0gMjAwMDAgbXNcbicKLSAgICAgICAgICAgICsgJ1JF
U1VMVCBzb21lLXRlc3Q6IE1hbGxvYz0gMTAuMCBieXRlc1xubWVkaWFuPSAxMCBieXRlcywgc3Rk
ZXY9IDAuMCBieXRlcywgbWluPSAxMCBieXRlcywgbWF4PSAxMCBieXRlc1xuJwotICAgICAgICAg
ICAgKyAnUkVTVUxUIHNvbWUtdGVzdDogSlNIZWFwPSA1LjAgYnl0ZXNcbm1lZGlhbj0gNSBieXRl
cywgc3RkZXY9IDAuMCBieXRlcywgbWluPSA1IGJ5dGVzLCBtYXg9IDUgYnl0ZXNcbicpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICdSRVNVTFQgc29tZS10ZXN0PSAxMTAw
MCBtc1xubWVkaWFuPSAxMTAwMCBtcywgc3RkZXY9IDU2MjcuMzE0MzM4NzEgbXMsIG1pbj0gMjAw
MCBtcywgbWF4PSAyMDAwMCBtc1xuJworICAgICAgICAgICAgKyAnUkVTVUxUIHNvbWUtdGVzdDog
TWFsbG9jPSAxMCBieXRlc1xubWVkaWFuPSAxMCBieXRlcywgc3RkZXY9IDAuMCBieXRlcywgbWlu
PSAxMCBieXRlcywgbWF4PSAxMCBieXRlc1xuJworICAgICAgICAgICAgKyAnUkVTVUxUIHNvbWUt
dGVzdDogSlNIZWFwPSA1IGJ5dGVzXG5tZWRpYW49IDUgYnl0ZXMsIHN0ZGV2PSAwLjAgYnl0ZXMs
IG1pbj0gNSBieXRlcywgbWF4PSA1IGJ5dGVzXG4nKQogCiAgICAgZGVmIHRlc3RfcnVuX3dpdGhf
YmFkX291dHB1dChzZWxmKToKICAgICAgICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJl
KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRl
c3QucHkJKHJldmlzaW9uIDEzODM1MSkJKGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHk6MTM4MzUxKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50
ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMxIEBACisjIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgcnVuX3BlcmZfdGVzdHMuIiIiCisKK2ltcG9y
dCBTdHJpbmdJTworaW1wb3J0IGpzb24KK2ltcG9ydCByZQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zy
b20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZl
cklucHV0LCBEcml2ZXJPdXRwdXQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVz
dCBpbXBvcnQgVGVzdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9y
dCBwcmludGluZworZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBv
cnQgQ2hyb21pdW1TdHlsZVBlcmZUZXN0Citmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3Rz
LnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdAorZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0
cy5wZXJmdGVzdHNydW5uZXIgaW1wb3J0IFBlcmZUZXN0c1J1bm5lcgorCisKK2NsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0V3JpdHRlbihzZWxmLCBzdHJl
YW0sIGNvbnRlbnRzKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uYnVmbGlzdCwg
Y29udGVudHMpCisKKyAgICBkZWYgbm9ybWFsaXplRmluaXNoZWRUaW1lKHNlbGYsIGxvZyk6Cisg
ICAgICAgIHJldHVybiByZS5zdWIocidGaW5pc2hlZDogWzAtOVwuXSsgcycsICdGaW5pc2hlZDog
MC4xIHMnLCBsb2cpCisKKyAgICBjbGFzcyBUZXN0RHJpdmVyOgorICAgICAgICBkZWYgcnVuX3Rl
c3Qoc2VsZiwgZHJpdmVyX2lucHV0LCBzdG9wX3doZW5fZG9uZSk6CisgICAgICAgICAgICB0ZXh0
ID0gJycKKyAgICAgICAgICAgIHRpbWVvdXQgPSBGYWxzZQorICAgICAgICAgICAgY3Jhc2ggPSBG
YWxzZQorICAgICAgICAgICAgaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgncGFz
cy5odG1sJyk6CisgICAgICAgICAgICAgICAgdGV4dCA9ICdSRVNVTFQgZ3JvdXBfbmFtZTogdGVz
dF9uYW1lPSA0MiBtcycKKyAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5l
bmRzd2l0aCgndGltZW91dC5odG1sJyk6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IFRydWUK
KyAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnZmFpbGVk
Lmh0bWwnKToKKyAgICAgICAgICAgICAgICB0ZXh0ID0gTm9uZQorICAgICAgICAgICAgZWxpZiBk
cml2ZXJfaW5wdXQudGVzdF9uYW1lLmVuZHN3aXRoKCd0b25ndWV5Lmh0bWwnKToKKyAgICAgICAg
ICAgICAgICB0ZXh0ID0gJ3dlIGFyZSBub3QgZXhwZWN0aW5nIGFuIG91dHB1dCBmcm9tIHBlcmYg
dGVzdHMgYnV0IFJFU1VMVCBibGFibGFibGEnCisgICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1
dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2NyYXNoLmh0bWwnKToKKyAgICAgICAgICAgICAgICBjcmFz
aCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0
aCgnZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCcpOgorICAgICAgICAgICAgICAgIHRleHQgPSAi
IiJSdW5uaW5nIDIwIHRpbWVzCitJZ25vcmluZyB3YXJtLXVwIHJ1biAoMTUwMikKKzE1MDQKKzE1
MDUKKzE1MTAKKzE1MDQKKzE1MDcKKzE1MDkKKzE1MTAKKzE0ODcKKzE0ODgKKzE0NzIKKzE0NzIK
KzE0ODgKKzE0NzMKKzE0NzIKKzE0NzUKKzE0ODcKKzE0ODYKKzE0ODYKKzE0NzUKKzE0NzEKKwor
VGltZToKK3ZhbHVlcyAxNTA0LCAxNTA1LCAxNTEwLCAxNTA0LCAxNTA3LCAxNTA5LCAxNTEwLCAx
NDg3LCAxNDg4LCAxNDcyLCAxNDcyLCAxNDg4LCAxNDczLCAxNDcyLCAxNDc1LCAxNDg3LCAxNDg2
LCAxNDg2LCAxNDc1LCAxNDcxIG1zCithdmcgMTQ4OS4wNSBtcworbWVkaWFuIDE0ODcgbXMKK3N0
ZGV2IDE0LjQ2IG1zCittaW4gMTQ3MSBtcworbWF4IDE1MTAgbXMKKyIiIgorICAgICAgICAgICAg
ZWxpZiBkcml2ZXJfaW5wdXQudGVzdF9uYW1lLmVuZHN3aXRoKCdzb21lLXBhcnNlci5odG1sJyk6
CisgICAgICAgICAgICAgICAgdGV4dCA9ICIiIlJ1bm5pbmcgMjAgdGltZXMKK0lnbm9yaW5nIHdh
cm0tdXAgcnVuICgxMTE1KQorCitUaW1lOgordmFsdWVzIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5IG1zCithdmcgMTEwMCBt
cworbWVkaWFuIDExMDEgbXMKK3N0ZGV2IDExIG1zCittaW4gMTA4MCBtcworbWF4IDExMjAgbXMK
KyIiIgorICAgICAgICAgICAgZWxpZiBkcml2ZXJfaW5wdXQudGVzdF9uYW1lLmVuZHN3aXRoKCdt
ZW1vcnktdGVzdC5odG1sJyk6CisgICAgICAgICAgICAgICAgdGV4dCA9ICIiIlJ1bm5pbmcgMjAg
dGltZXMKK0lnbm9yaW5nIHdhcm0tdXAgcnVuICgxMTE1KQorCitUaW1lOgordmFsdWVzIDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgs
IDE5IG1zCithdmcgMTEwMCBtcworbWVkaWFuIDExMDEgbXMKK3N0ZGV2IDExIG1zCittaW4gMTA4
MCBtcworbWF4IDExMjAgbXMKKworSlMgSGVhcDoKK3ZhbHVlcyAxLCAyLCAzLCA0LCA1LCA2LCA3
LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSBieXRlcworYXZn
IDgzMjAwMCBieXRlcworbWVkaWFuIDgyOTAwMCBieXRlcworc3RkZXYgMTUwMDAgYnl0ZXMKK21p
biA4MTEwMDAgYnl0ZXMKK21heCA4NDgwMDAgYnl0ZXMKKworTWFsbG9jOgordmFsdWVzIDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgs
IDE5IGJ5dGVzCithdmcgNTMyMDAwIGJ5dGVzCittZWRpYW4gNTI5MDAwIGJ5dGVzCitzdGRldiAx
MzAwMCBieXRlcworbWluIDUxMTAwMCBieXRlcworbWF4IDU0ODAwMCBieXRlcworIiIiCisgICAg
ICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsICcnLCAnJywgJycsIGNyYXNoPWNyYXNo
LCB0aW1lb3V0PXRpbWVvdXQpCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAg
ICAgIiIiZG8gbm90aGluZyIiIgorCisgICAgICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAg
ICAgIiIiZG8gbm90aGluZyIiIgorCisgICAgZGVmIGNyZWF0ZV9ydW5uZXIoc2VsZiwgYXJncz1b
XSwgZHJpdmVyX2NsYXNzPVRlc3REcml2ZXIpOgorICAgICAgICBvcHRpb25zLCBwYXJzZWRfYXJn
cyA9IFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyhhcmdzKQorICAgICAgICB0ZXN0X3BvcnQg
PSBUZXN0UG9ydChob3N0PU1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgdGVz
dF9wb3J0LmNyZWF0ZV9kcml2ZXIgPSBsYW1iZGEgd29ya2VyX251bWJlcj1Ob25lLCBub190aW1l
b3V0PUZhbHNlOiBkcml2ZXJfY2xhc3MoKQorCisgICAgICAgIHJ1bm5lciA9IFBlcmZUZXN0c1J1
bm5lcihhcmdzPWFyZ3MsIHBvcnQ9dGVzdF9wb3J0KQorICAgICAgICBydW5uZXIuX2hvc3QuZmls
ZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShydW5uZXIuX2Jhc2VfcGF0aCwgJ2luc3BlY3Rv
cicpCisgICAgICAgIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5
KHJ1bm5lci5fYmFzZV9wYXRoLCAnQmluZGluZ3MnKQorICAgICAgICBydW5uZXIuX2hvc3QuZmls
ZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShydW5uZXIuX2Jhc2VfcGF0aCwgJ1BhcnNlcicp
CisKKyAgICAgICAgZmlsZXN5c3RlbSA9IHJ1bm5lci5faG9zdC5maWxlc3lzdGVtCisgICAgICAg
IHJ1bm5lci5sb2FkX291dHB1dF9qc29uID0gbGFtYmRhOiBqc29uLmxvYWRzKGZpbGVzeXN0ZW0u
cmVhZF90ZXh0X2ZpbGUocnVubmVyLl9vdXRwdXRfanNvbl9wYXRoKCkpKQorICAgICAgICByZXR1
cm4gcnVubmVyLCB0ZXN0X3BvcnQKKworICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0X25hbWUp
OgorICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoKQorICAgICAgICBy
ZXR1cm4gcnVubmVyLl9ydW5fc2luZ2xlX3Rlc3QoQ2hyb21pdW1TdHlsZVBlcmZUZXN0KHBvcnQs
IHRlc3RfbmFtZSwgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uam9pbignc29tZS1kaXInLCB0ZXN0
X25hbWUpKSkKKworICAgIGRlZiB0ZXN0X3J1bl9wYXNzaW5nX3Rlc3Qoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnJ1bl90ZXN0KCdwYXNzLmh0bWwnKSkKKworICAgIGRlZiB0
ZXN0X3J1bl9zaWxlbnRfdGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxm
LnJ1bl90ZXN0KCdzaWxlbnQuaHRtbCcpKQorCisgICAgZGVmIHRlc3RfcnVuX2ZhaWxlZF90ZXN0
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3Rlc3QoJ2ZhaWxlZC5o
dG1sJykpCisKKyAgICBkZWYgdGVzdF9ydW5fdG9uZ3VleV90ZXN0KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3Rlc3QoJ3Rvbmd1ZXkuaHRtbCcpKQorCisgICAgZGVm
IHRlc3RfcnVuX3RpbWVvdXRfdGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShz
ZWxmLnJ1bl90ZXN0KCd0aW1lb3V0Lmh0bWwnKSkKKworICAgIGRlZiB0ZXN0X3J1bl9jcmFzaF90
ZXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3Rlc3QoJ2NyYXNo
Lmh0bWwnKSkKKworICAgIGRlZiBfdGVzdHNfZm9yX3J1bm5lcihzZWxmLCBydW5uZXIsIHRlc3Rf
bmFtZXMpOgorICAgICAgICBmaWxlc3lzdGVtID0gcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0KKyAg
ICAgICAgdGVzdHMgPSBbXQorICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0X25hbWVzOgorICAgICAg
ICAgICAgcGF0aCA9IGZpbGVzeXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwgdGVzdCkKKyAg
ICAgICAgICAgIGRpcm5hbWUgPSBmaWxlc3lzdGVtLmRpcm5hbWUocGF0aCkKKyAgICAgICAgICAg
IGlmIHRlc3Quc3RhcnRzd2l0aCgnaW5zcGVjdG9yLycpOgorICAgICAgICAgICAgICAgIHRlc3Rz
LmFwcGVuZChDaHJvbWl1bVN0eWxlUGVyZlRlc3QocnVubmVyLl9wb3J0LCB0ZXN0LCBwYXRoKSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFBlcmZUZXN0
KHJ1bm5lci5fcG9ydCwgdGVzdCwgcGF0aCkpCisgICAgICAgIHJldHVybiB0ZXN0cworCisgICAg
ZGVmIHRlc3RfcnVuX3Rlc3Rfc2V0KHNlbGYpOgorICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxm
LmNyZWF0ZV9ydW5uZXIoKQorICAgICAgICB0ZXN0cyA9IHNlbGYuX3Rlc3RzX2Zvcl9ydW5uZXIo
cnVubmVyLCBbJ2luc3BlY3Rvci9wYXNzLmh0bWwnLCAnaW5zcGVjdG9yL3NpbGVudC5odG1sJywg
J2luc3BlY3Rvci9mYWlsZWQuaHRtbCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL3Rvbmd1ZXku
aHRtbCcsICdpbnNwZWN0b3IvdGltZW91dC5odG1sJywgJ2luc3BlY3Rvci9jcmFzaC5odG1sJ10p
CisgICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvdXRwdXQuY2FwdHVy
ZV9vdXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCA9IHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cywgcG9ydCkKKyAgICAgICAgZmluYWxs
eToKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyLCBsb2cgPSBvdXRwdXQucmVzdG9yZV9vdXRw
dXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50LCBs
ZW4odGVzdHMpIC0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcblJFU1VMVCBncm91cF9u
YW1lOiB0ZXN0X25hbWU9IDQyIG1zXG4nIGluIGxvZykKKworICAgIGRlZiB0ZXN0X3J1bl90ZXN0
X3NldF9raWxsc19kcnRfcGVyX3J1bihzZWxmKToKKworICAgICAgICBjbGFzcyBUZXN0RHJpdmVy
V2l0aFN0b3BDb3VudChNYWluVGVzdC5UZXN0RHJpdmVyKToKKyAgICAgICAgICAgIHN0b3BfY291
bnQgPSAwCisKKyAgICAgICAgICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAgICAgICAgIFRl
c3REcml2ZXJXaXRoU3RvcENvdW50LnN0b3BfY291bnQgKz0gMQorCisgICAgICAgIHJ1bm5lciwg
cG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcihkcml2ZXJfY2xhc3M9VGVzdERyaXZlcldpdGhTdG9w
Q291bnQpCisKKyAgICAgICAgdGVzdHMgPSBzZWxmLl90ZXN0c19mb3JfcnVubmVyKHJ1bm5lciwg
WydpbnNwZWN0b3IvcGFzcy5odG1sJywgJ2luc3BlY3Rvci9zaWxlbnQuaHRtbCcsICdpbnNwZWN0
b3IvZmFpbGVkLmh0bWwnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci90b25ndWV5Lmh0bWwnLCAn
aW5zcGVjdG9yL3RpbWVvdXQuaHRtbCcsICdpbnNwZWN0b3IvY3Jhc2guaHRtbCddKQorICAgICAg
ICB1bmV4cGVjdGVkX3Jlc3VsdF9jb3VudCA9IHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cywg
cG9ydCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3REcml2ZXJXaXRoU3RvcENvdW50
LnN0b3BfY291bnQsIDYpCisKKyAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXRfZm9yX3BhcnNlcl90
ZXN0cyhzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKCkK
KyAgICAgICAgdGVzdHMgPSBzZWxmLl90ZXN0c19mb3JfcnVubmVyKHJ1bm5lciwgWydCaW5kaW5n
cy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sJywgJ1BhcnNlci9zb21lLXBhcnNlci5odG1sJ10p
CisgICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvdXRwdXQuY2FwdHVy
ZV9vdXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCA9IHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cywgcG9ydCkKKyAgICAgICAgZmluYWxs
eToKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyLCBsb2cgPSBvdXRwdXQucmVzdG9yZV9vdXRw
dXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50LCAw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubm9ybWFsaXplRmluaXNoZWRUaW1lKGxv
ZyksICdcbicuam9pbihbJ1J1bm5pbmcgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRt
bCAoMSBvZiAyKScsCisgICAgICAgICdSRVNVTFQgQmluZGluZ3M6IGV2ZW50LXRhcmdldC13cmFw
cGVyPSAxNDg5LjA1IG1zJywKKyAgICAgICAgJ21lZGlhbj0gMTQ4Ny4wIG1zLCBzdGRldj0gMTQu
NDYgbXMsIG1pbj0gMTQ3MS4wIG1zLCBtYXg9IDE1MTAuMCBtcycsCisgICAgICAgICdGaW5pc2hl
ZDogMC4xIHMnLAorICAgICAgICAnJywKKyAgICAgICAgJ1J1bm5pbmcgUGFyc2VyL3NvbWUtcGFy
c2VyLmh0bWwgKDIgb2YgMiknLAorICAgICAgICAnUkVTVUxUIFBhcnNlcjogc29tZS1wYXJzZXI9
IDExMDAuMCBtcycsCisgICAgICAgICdtZWRpYW49IDExMDEuMCBtcywgc3RkZXY9IDExLjAgbXMs
IG1pbj0gMTA4MC4wIG1zLCBtYXg9IDExMjAuMCBtcycsCisgICAgICAgICdGaW5pc2hlZDogMC4x
IHMnLAorICAgICAgICAnJywgJyddKSkKKworICAgIGRlZiB0ZXN0X3J1bl9tZW1vcnlfdGVzdChz
ZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1
cF9yZXN1bHRzX3RlbXBsYXRlKCkKKyAgICAgICAgcnVubmVyLl90aW1lc3RhbXAgPSAxMjM0NTY3
ODkKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5lci5f
YmFzZV9wYXRoICsgJy9QYXJzZXIvbWVtb3J5LXRlc3QuaHRtbCcsICdzb21lIGNvbnRlbnQnKQor
CisgICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvdXRwdXQuY2FwdHVy
ZV9vdXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCA9IHJ1bm5lci5ydW4oKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3Rkb3V0
LCBzdGRlcnIsIGxvZyA9IG91dHB1dC5yZXN0b3JlX291dHB1dCgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodW5leHBlY3RlZF9yZXN1bHRfY291bnQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5ub3JtYWxpemVGaW5pc2hlZFRpbWUobG9nKSwgJ1xuJy5qb2luKFsKKyAgICAg
ICAgICAgICdSdW5uaW5nIDEgdGVzdHMnLAorICAgICAgICAgICAgJ1J1bm5pbmcgUGFyc2VyL21l
bW9yeS10ZXN0Lmh0bWwgKDEgb2YgMSknLAorICAgICAgICAgICAgJ1JFU1VMVCBQYXJzZXI6IG1l
bW9yeS10ZXN0PSAxMTAwLjAgbXMnLAorICAgICAgICAgICAgJ21lZGlhbj0gMTEwMS4wIG1zLCBz
dGRldj0gMTEuMCBtcywgbWluPSAxMDgwLjAgbXMsIG1heD0gMTEyMC4wIG1zJywKKyAgICAgICAg
ICAgICdSRVNVTFQgUGFyc2VyOiBtZW1vcnktdGVzdDogSlNIZWFwPSA4MzIwMDAuMCBieXRlcycs
CisgICAgICAgICAgICAnbWVkaWFuPSA4MjkwMDAuMCBieXRlcywgc3RkZXY9IDE1MDAwLjAgYnl0
ZXMsIG1pbj0gODExMDAwLjAgYnl0ZXMsIG1heD0gODQ4MDAwLjAgYnl0ZXMnLAorICAgICAgICAg
ICAgJ1JFU1VMVCBQYXJzZXI6IG1lbW9yeS10ZXN0OiBNYWxsb2M9IDUzMjAwMC4wIGJ5dGVzJywK
KyAgICAgICAgICAgICdtZWRpYW49IDUyOTAwMC4wIGJ5dGVzLCBzdGRldj0gMTMwMDAuMCBieXRl
cywgbWluPSA1MTEwMDAuMCBieXRlcywgbWF4PSA1NDgwMDAuMCBieXRlcycsCisgICAgICAgICAg
ICAnRmluaXNoZWQ6IDAuMSBzJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ01PQ0s6
IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi4nLAorICAgICAgICAgICAgJyddKSkKKyAgICAgICAg
cmVzdWx0cyA9IHJ1bm5lci5sb2FkX291dHB1dF9qc29uKClbMF1bJ3Jlc3VsdHMnXQorICAgICAg
ICB2YWx1ZXMgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0
LCAxNSwgMTYsIDE3LCAxOCwgMTldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0c1sn
UGFyc2VyL21lbW9yeS10ZXN0J10sIHsnbWluJzogMTA4MC4wLCAnbWF4JzogMTEyMC4wLCAnbWVk
aWFuJzogMTEwMS4wLCAnc3RkZXYnOiAxMS4wLCAnYXZnJzogMTEwMC4wLCAndW5pdCc6ICdtcycs
ICd2YWx1ZXMnOiB2YWx1ZXN9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHNbJ1Bh
cnNlci9tZW1vcnktdGVzdDpKU0hlYXAnXSwgeydtaW4nOiA4MTEwMDAuMCwgJ21heCc6IDg0ODAw
MC4wLCAnbWVkaWFuJzogODI5MDAwLjAsICdzdGRldic6IDE1MDAwLjAsICdhdmcnOiA4MzIwMDAu
MCwgJ3VuaXQnOiAnYnl0ZXMnLCAndmFsdWVzJzogdmFsdWVzfSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHRzWydQYXJzZXIvbWVtb3J5LXRlc3Q6TWFsbG9jJ10sIHsnbWluJzogNTEx
MDAwLjAsICdtYXgnOiA1NDgwMDAuMCwgJ21lZGlhbic6IDUyOTAwMC4wLCAnc3RkZXYnOiAxMzAw
MC4wLCAnYXZnJzogNTMyMDAwLjAsICd1bml0JzogJ2J5dGVzJywgJ3ZhbHVlcyc6IHZhbHVlc30p
CisKKyAgICBkZWYgX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQoc2VsZiwgcnVubmVyLCBmaWxl
c3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1GYWxzZSwgcmVzdWx0c19zaG93bj1UcnVlLCBleHBlY3Rl
ZF9leGl0X2NvZGU9MCk6CisgICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5l
ci5fYmFzZV9wYXRoICsgJy9pbnNwZWN0b3IvcGFzcy5odG1sJywgJ3NvbWUgY29udGVudCcpCisg
ICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5lci5fYmFzZV9wYXRoICsgJy9C
aW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sJywgJ3NvbWUgY29udGVudCcpCisKKyAg
ICAgICAgdXBsb2FkZWQgPSBbRmFsc2VdCisKKyAgICAgICAgZGVmIG1vY2tfdXBsb2FkX2pzb24o
aG9zdG5hbWUsIGpzb25fcGF0aCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhvc3Ru
YW1lLCAnc29tZS5ob3N0JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbl9wYXRo
LCAnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nKQorICAgICAgICAgICAgdXBsb2FkZWRbMF0g
PSB1cGxvYWRfc3VjZWVkcworICAgICAgICAgICAgcmV0dXJuIHVwbG9hZF9zdWNlZWRzCisKKyAg
ICAgICAgcnVubmVyLl91cGxvYWRfanNvbiA9IG1vY2tfdXBsb2FkX2pzb24KKyAgICAgICAgcnVu
bmVyLl90aW1lc3RhbXAgPSAxMjM0NTY3ODkKKyAgICAgICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRw
dXRDYXB0dXJlKCkKKyAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5ydW4oKSwgZXhw
ZWN0ZWRfZXhpdF9jb2RlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3Rkb3V0LCBz
dGRlcnIsIGxvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCisKKyAgICAgICAg
aWYgbm90IGV4cGVjdGVkX2V4aXRfY29kZToKKyAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAn
XG4nLmpvaW4oWydSdW5uaW5nIDIgdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1J1bm5pbmcgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCAo
MSBvZiAyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUkVTVUxU
IEJpbmRpbmdzOiBldmVudC10YXJnZXQtd3JhcHBlcj0gMTQ4OS4wNSBtcycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVkaWFuPSAxNDg3LjAgbXMsIHN0ZGV2PSAx
NC40NiBtcywgbWluPSAxNDcxLjAgbXMsIG1heD0gMTUxMC4wIG1zJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdGaW5pc2hlZDogMC4xIHMnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnUnVubmluZyBpbnNwZWN0b3IvcGFzcy5odG1sICgyIG9mIDIpJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRVNVTFQgZ3JvdXBfbmFtZTog
dGVzdF9uYW1lPSA0MiBtcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRmluaXNoZWQ6IDAuMSBzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcnLCAnJ10pCisgICAgICAgICAgICBpZiByZXN1bHRzX3Nob3duOgorICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX2xvZ3MgKz0gJ01PQ0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi5cbicK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ub3JtYWxpemVGaW5pc2hlZFRpbWUo
bG9ncyksIGV4cGVjdGVkX2xvZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cGxvYWRl
ZFswXSwgdXBsb2FkX3N1Y2VlZHMpCisKKyAgICAgICAgcmV0dXJuIGxvZ3MKKworICAgIF9ldmVu
dF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMgPSB7CisgICAgICAgICJCaW5k
aW5ncy9ldmVudC10YXJnZXQtd3JhcHBlciI6IHsibWF4IjogMTUxMCwgImF2ZyI6IDE0ODkuMDUs
ICJtZWRpYW4iOiAxNDg3LCAibWluIjogMTQ3MSwgInN0ZGV2IjogMTQuNDYsICJ1bml0IjogIm1z
IiwKKyAgICAgICAgICAgInZhbHVlcyI6IFsxNTA0LCAxNTA1LCAxNTEwLCAxNTA0LCAxNTA3LCAx
NTA5LCAxNTEwLCAxNDg3LCAxNDg4LCAxNDcyLCAxNDcyLCAxNDg4LCAxNDczLCAxNDcyLCAxNDc1
LCAxNDg3LCAxNDg2LCAxNDg2LCAxNDc1LCAxNDcxXX0sCisgICAgICAgICJpbnNwZWN0b3IvcGFz
cy5odG1sOmdyb3VwX25hbWU6dGVzdF9uYW1lIjogNDJ9CisKKyAgICBkZWYgdGVzdF9ydW5fd2l0
aF9qc29uX291dHB1dChzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVf
cnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBh
dGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAorICAgICAgICAgICAgJy0tdGVzdC1yZXN1
bHRzLXNlcnZlcj1zb21lLmhvc3QnXSkKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29u
X291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1UcnVl
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5sb2FkX291dHB1dF9qc29uKCksIFt7
CisgICAgICAgICAgICAidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVzdWx0cyI6IHNlbGYuX2V2
ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKKyAgICAgICAgICAgICJ3
ZWJraXQtcmV2aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0LXRydW5rIn1dKQorCisg
ICAgICAgIGZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoZmlsZXN5c3RlbS5pc2ZpbGUocnVubmVyLl9vdXRwdXRfanNvbl9wYXRoKCkpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXN5c3RlbS5pc2ZpbGUoZmlsZXN5c3RlbS5zcGxp
dGV4dChydW5uZXIuX291dHB1dF9qc29uX3BhdGgoKSlbMF0gKyAnLmh0bWwnKSkKKworICAgIGRl
ZiB0ZXN0X3J1bl93aXRoX2Rlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICBydW5uZXIsIHBvcnQg
PSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoYXJncz1bJy0t
b3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNvbicsCisgICAgICAgICAg
ICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWUuaG9zdCcsICctLWRlc2NyaXB0aW9uJywgJ3Nv
bWUgZGVzY3JpcHRpb24nXSkKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1
dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1UcnVlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5sb2FkX291dHB1dF9qc29uKCksIFt7CisgICAg
ICAgICAgICAidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAiZGVzY3JpcHRpb24iOiAic29tZSBkZXNj
cmlwdGlvbiIsCisgICAgICAgICAgICAicmVzdWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFw
cGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKKyAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24i
OiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0LXRydW5rIn1dKQorCisgICAgZGVmIGNyZWF0ZV9y
dW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoc2VsZiwgYXJncz1bXSk6CisgICAgICAg
IHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcihhcmdzKQorICAgICAgICBmaWxlc3lz
dGVtID0gcG9ydC5ob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUocnVubmVyLl9iYXNlX3BhdGggKyAnL3Jlc291cmNlcy9yZXN1bHRzLXRlbXBsYXRlLmh0
bWwnLAorICAgICAgICAgICAgJ0JFR0lOPHNjcmlwdCBzcmM9IiVBYnNvbHV0ZVBhdGhUb1dlYktp
dFRydW5rJS9zb21lLmpzIj48L3NjcmlwdD4nCisgICAgICAgICAgICAnPHNjcmlwdCBzcmM9IiVB
YnNvbHV0ZVBhdGhUb1dlYktpdFRydW5rJS9vdGhlci5qcyI+PC9zY3JpcHQ+PHNjcmlwdD4lUGVm
b3JtYW5jZVRlc3RzUmVzdWx0c0pTT04lPC9zY3JpcHQ+RU5EJykKKyAgICAgICAgZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUocnVubmVyLl9iYXNlX3BhdGggKyAnL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnLCAnanF1ZXJ5IGNvbnRlbnQnKQorICAg
ICAgICByZXR1cm4gcnVubmVyLCBwb3J0CisKKyAgICBkZWYgdGVzdF9ydW5fcmVzcGVjdHNfbm9f
cmVzdWx0cyhzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVy
KGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAor
ICAgICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21lLmhvc3QnLCAnLS1uby1yZXN1
bHRzJ10pCisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBw
b3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9RmFsc2UsIHJlc3VsdHNfc2hvd249
RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5ob3N0LmZpbGVzeXN0ZW0uaXNm
aWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuanNvbicpKQorCisgICAgZGVmIHRlc3RfcnVuX2dl
bmVyYXRlc19qc29uX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNl
bGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZSgpCisgICAgICAgIGZp
bGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBvdXRwdXRfanNvbl9wYXRo
ID0gcnVubmVyLl9vdXRwdXRfanNvbl9wYXRoKCkKKyAgICAgICAgcmVzdWx0c19wYWdlX3BhdGgg
PSBmaWxlc3lzdGVtLnNwbGl0ZXh0KG91dHB1dF9qc29uX3BhdGgpWzBdICsgJy5odG1sJworCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmlsZXN5c3RlbS5pc2ZpbGUob3V0cHV0X2pzb25fcGF0
aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmlsZXN5c3RlbS5pc2ZpbGUocmVzdWx0c19w
YWdlX3BhdGgpKQorCisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVu
bmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpz
b24ubG9hZHMocG9ydC5ob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUob3V0cHV0X2pzb25f
cGF0aCkpLCBbeworICAgICAgICAgICAgInRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMi
OiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCisgICAg
ICAgICAgICAid2Via2l0LXJldmlzaW9uIjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVu
ayJ9XSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXN5c3RlbS5pc2ZpbGUob3V0cHV0
X2pzb25fcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlc3lzdGVtLmlzZmlsZShy
ZXN1bHRzX3BhZ2VfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9ydW5fbWVyZ2VzX291dHB1dF9ieV9k
ZWZhdWx0KHNlbGYpOgorICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJf
YW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoKQorICAgICAgICBmaWxlc3lzdGVtID0gcG9ydC5o
b3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgb3V0cHV0X2pzb25fcGF0aCA9IHJ1bm5lci5fb3V0cHV0
X2pzb25fcGF0aCgpCisKKyAgICAgICAgZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3V0cHV0
X2pzb25fcGF0aCwgJ1t7InByZXZpb3VzIjogInJlc3VsdHMifV0nKQorCisgICAgICAgIHNlbGYu
X3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSkK
KworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMocG9ydC5ob3N0LmZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUob3V0cHV0X2pzb25fcGF0aCkpLCBbeyJwcmV2aW91cyI6ICJyZXN1
bHRzIn0sIHsKKyAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJyZXN1bHRzIjog
c2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRzLAorICAgICAg
ICAgICAgIndlYmtpdC1yZXZpc2lvbiI6ICI1Njc4IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsi
fV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlc3lzdGVtLmlzZmlsZShmaWxlc3lzdGVt
LnNwbGl0ZXh0KG91dHB1dF9qc29uX3BhdGgpWzBdICsgJy5odG1sJykpCisKKyAgICBkZWYgdGVz
dF9ydW5fcmVzcGVjdHNfcmVzZXRfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0
ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyIt
LXJlc2V0LXJlc3VsdHMiXSkKKyAgICAgICAgZmlsZXN5c3RlbSA9IHBvcnQuaG9zdC5maWxlc3lz
dGVtCisgICAgICAgIG91dHB1dF9qc29uX3BhdGggPSBydW5uZXIuX291dHB1dF9qc29uX3BhdGgo
KQorCisgICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKG91dHB1dF9qc29uX3BhdGgs
ICdbeyJwcmV2aW91cyI6ICJyZXN1bHRzIn1dJykKKworICAgICAgICBzZWxmLl90ZXN0X3J1bl93
aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0pCisKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKHBvcnQuaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKG91dHB1dF9qc29uX3BhdGgpKSwgW3sKKyAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAx
MjM0NTY3ODksICJyZXN1bHRzIjogc2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3Bl
Y3Rvcl9yZXN1bHRzLAorICAgICAgICAgICAgIndlYmtpdC1yZXZpc2lvbiI6ICI1Njc4IiwgImJy
YW5jaCI6ICJ3ZWJraXQtdHJ1bmsifV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlc3lz
dGVtLmlzZmlsZShmaWxlc3lzdGVtLnNwbGl0ZXh0KG91dHB1dF9qc29uX3BhdGgpWzBdICsgJy5o
dG1sJykpCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3J1bl9nZW5lcmF0ZXNfYW5kX3No
b3dfcmVzdWx0c19wYWdlKHNlbGYpOgorICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0
ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoYXJncz1bJy0tb3V0cHV0LWpzb24t
cGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNvbiddKQorICAgICAgICBwYWdlX3Nob3duID0g
W10KKyAgICAgICAgcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlID0gbGFtYmRhIHBhdGg6IHBh
Z2Vfc2hvd24uYXBwZW5kKHBhdGgpCisgICAgICAgIGZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmls
ZXN5c3RlbQorICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwg
ZmlsZXN5c3RlbSwgcmVzdWx0c19zaG93bj1GYWxzZSkKKworICAgICAgICBleHBlY3RlZF9lbnRy
eSA9IHsidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVzdWx0cyI6IHNlbGYuX2V2ZW50X3Rhcmdl
dF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywKKyAgICAgICAgICAgICJ3ZWJraXQtcmV2
aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0LXRydW5rIn0KKworICAgICAgICBzZWxm
Lm1heERpZmYgPSBOb25lCisgICAgICAgIGpzb25fb3V0cHV0ID0gcG9ydC5ob3N0LmZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKGpzb25fb3V0cHV0KSwgW2V4cGVjdGVkX2VudHJ5
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcv
bW9jay1jaGVja291dC9vdXRwdXQuaHRtbCcpLAorICAgICAgICAgICAgJ0JFR0lOPHNjcmlwdCBz
cmM9Ii90ZXN0LmNoZWNrb3V0L3NvbWUuanMiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvdGVzdC5j
aGVja291dC9vdGhlci5qcyI+PC9zY3JpcHQ+JworICAgICAgICAgICAgJzxzY3JpcHQ+JXM8L3Nj
cmlwdD5FTkQnICUganNvbl9vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFnZV9z
aG93blswXSwgJy9tb2NrLWNoZWNrb3V0L291dHB1dC5odG1sJykKKworICAgICAgICBzZWxmLl90
ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgZmlsZXN5c3RlbSwgcmVzdWx0c19zaG93
bj1GYWxzZSkKKyAgICAgICAganNvbl9vdXRwdXQgPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5yZWFk
X3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGpzb24ubG9hZHMoanNvbl9vdXRwdXQpLCBbZXhwZWN0ZWRfZW50cnksIGV4cGVj
dGVkX2VudHJ5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuaHRtbCcpLAorICAgICAgICAgICAgJ0JFR0lO
PHNjcmlwdCBzcmM9Ii90ZXN0LmNoZWNrb3V0L3NvbWUuanMiPjwvc2NyaXB0PjxzY3JpcHQgc3Jj
PSIvdGVzdC5jaGVja291dC9vdGhlci5qcyI+PC9zY3JpcHQ+JworICAgICAgICAgICAgJzxzY3Jp
cHQ+JXM8L3NjcmlwdD5FTkQnICUganNvbl9vdXRwdXQpCisKKyAgICBkZWYgdGVzdF9ydW5fcmVz
cGVjdHNfbm9fc2hvd19yZXN1bHRzKHNlbGYpOgorICAgICAgICBzaG93X3Jlc3VsdHNfaHRtbF9m
aWxlID0gbGFtYmRhIHBhdGg6IHBhZ2Vfc2hvd24uYXBwZW5kKHBhdGgpCisKKyAgICAgICAgcnVu
bmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRl
KGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nXSkK
KyAgICAgICAgcGFnZV9zaG93biA9IFtdCisgICAgICAgIHBvcnQuc2hvd19yZXN1bHRzX2h0bWxf
ZmlsZSA9IHNob3dfcmVzdWx0c19odG1sX2ZpbGUKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0
aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCByZXN1bHRzX3Nob3du
PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhZ2Vfc2hvd25bMF0sICcvbW9jay1j
aGVja291dC9vdXRwdXQuaHRtbCcpCisKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVh
dGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29u
LXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAorICAgICAgICAgICAgJy0tbm8tc2hv
dy1yZXN1bHRzJ10pCisgICAgICAgIHBhZ2Vfc2hvd24gPSBbXQorICAgICAgICBwb3J0LnNob3df
cmVzdWx0c19odG1sX2ZpbGUgPSBzaG93X3Jlc3VsdHNfaHRtbF9maWxlCisgICAgICAgIHNlbGYu
X3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwg
cmVzdWx0c19zaG93bj1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWdlX3Nob3du
LCBbXSkKKworICAgIGRlZiB0ZXN0X3J1bl93aXRoX2JhZF9vdXRwdXRfanNvbihzZWxmKToKKyAg
ICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRz
X3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0
Lmpzb24nXSkKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcv
bW9jay1jaGVja291dC9vdXRwdXQuanNvbicsICdiYWQganNvbicpCisgICAgICAgIHNlbGYuX3Rl
c3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgZXhw
ZWN0ZWRfZXhpdF9jb2RlPVBlcmZUZXN0c1J1bm5lci5FWElUX0NPREVfQkFEX01FUkdFKQorICAg
ICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0
L291dHB1dC5qc29uJywgJ3siYW5vdGhlciBiYWQganNvbiI6ICIxIn0nKQorICAgICAgICBzZWxm
Ll90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0s
IGV4cGVjdGVkX2V4aXRfY29kZT1QZXJmVGVzdHNSdW5uZXIuRVhJVF9DT0RFX0JBRF9NRVJHRSkK
KworICAgIGRlZiB0ZXN0X3J1bl93aXRoX3NsYXZlX2NvbmZpZ19qc29uKHNlbGYpOgorICAgICAg
ICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVt
cGxhdGUoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNv
bicsCisgICAgICAgICAgICAnLS1zbGF2ZS1jb25maWctanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0
L3NsYXZlLWNvbmZpZy5qc29uJywgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21lLmhvc3QnXSkK
KyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVj
a291dC9zbGF2ZS1jb25maWcuanNvbicsICd7ImtleSI6ICJ2YWx1ZSJ9JykKKyAgICAgICAgc2Vs
Zi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVt
LCB1cGxvYWRfc3VjZWVkcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5s
b2FkX291dHB1dF9qc29uKCksIFt7CisgICAgICAgICAgICAidGltZXN0YW1wIjogMTIzNDU2Nzg5
LCAicmVzdWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVz
dWx0cywKKyAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAi
d2Via2l0LXRydW5rIiwgImtleSI6ICJ2YWx1ZSJ9XSkKKworICAgIGRlZiB0ZXN0X3J1bl93aXRo
X2JhZF9zbGF2ZV9jb25maWdfanNvbihzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2Vs
Zi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1
dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAorICAgICAgICAgICAgJy0t
c2xhdmUtY29uZmlnLWpzb24tcGF0aD0vbW9jay1jaGVja291dC9zbGF2ZS1jb25maWcuanNvbics
ICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0J10pCisgICAgICAgIGxvZ3MgPSBzZWxm
Ll90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0s
IGV4cGVjdGVkX2V4aXRfY29kZT1QZXJmVGVzdHNSdW5uZXIuRVhJVF9DT0RFX0JBRF9TT1VSQ0Vf
SlNPTikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdNaXNzaW5nIHNsYXZlIGNvbmZpZ3VyYXRp
b24gSlNPTiBmaWxlOiAvbW9jay1jaGVja291dC9zbGF2ZS1jb25maWcuanNvbicgaW4gbG9ncykK
KyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVj
a291dC9zbGF2ZS1jb25maWcuanNvbicsICdiYWQganNvbicpCisgICAgICAgIHNlbGYuX3Rlc3Rf
cnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgZXhwZWN0
ZWRfZXhpdF9jb2RlPVBlcmZUZXN0c1J1bm5lci5FWElUX0NPREVfQkFEX1NPVVJDRV9KU09OKQor
ICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNr
b3V0L3NsYXZlLWNvbmZpZy5qc29uJywgJ1siYW5vdGhlciBiYWQganNvbiJdJykKKyAgICAgICAg
c2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lz
dGVtLCBleHBlY3RlZF9leGl0X2NvZGU9UGVyZlRlc3RzUnVubmVyLkVYSVRfQ09ERV9CQURfU09V
UkNFX0pTT04pCisKKyAgICBkZWYgdGVzdF9ydW5fd2l0aF9tdWx0aXBsZV9yZXBvc2l0b3JpZXMo
c2VsZik6CisgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0
dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNr
b3V0L291dHB1dC5qc29uJywKKyAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29t
ZS5ob3N0J10pCisgICAgICAgIHBvcnQucmVwb3NpdG9yeV9wYXRocyA9IGxhbWJkYTogWygnd2Vi
a2l0JywgJy9tb2NrLWNoZWNrb3V0JyksICgnc29tZScsICcvbW9jay1jaGVja291dC9zb21lJyld
CisgICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhv
c3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChydW5uZXIubG9hZF9vdXRwdXRfanNvbigpLCBbeworICAgICAgICAgICAgInRpbWVzdGFt
cCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRf
aW5zcGVjdG9yX3Jlc3VsdHMsCisgICAgICAgICAgICAid2Via2l0LXJldmlzaW9uIjogIjU2Nzgi
LCAic29tZS1yZXZpc2lvbiI6ICI1Njc4IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsifV0pCisK
KyAgICBkZWYgdGVzdF9ydW5fd2l0aF91cGxvYWRfanNvbihzZWxmKToKKyAgICAgICAgcnVubmVy
LCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFy
Z3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAorICAg
ICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcicsICdzb21lLmhvc3QnLCAnLS1wbGF0Zm9y
bScsICdwbGF0Zm9ybTEnLCAnLS1idWlsZGVyLW5hbWUnLCAnYnVpbGRlcjEnLCAnLS1idWlsZC1u
dW1iZXInLCAnMTIzJ10pCisKKyAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1
dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1UcnVlKQorICAg
ICAgICBnZW5lcmF0ZWRfanNvbiA9IGpzb24ubG9hZHMocG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmls
ZXNbJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZ2VuZXJhdGVkX2pzb25bMF1bJ3BsYXRmb3JtJ10sICdwbGF0Zm9ybTEnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGdlbmVyYXRlZF9qc29uWzBdWydidWlsZGVyLW5hbWUnXSwgJ2J1aWxk
ZXIxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5lcmF0ZWRfanNvblswXVsnYnVpbGQt
bnVtYmVyJ10sIDEyMykKKworICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0
KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPUZhbHNlLCBleHBl
Y3RlZF9leGl0X2NvZGU9UGVyZlRlc3RzUnVubmVyLkVYSVRfQ09ERV9GQUlMRURfVVBMT0FESU5H
KQorCisgICAgZGVmIHRlc3RfdXBsb2FkX2pzb24oc2VsZik6CisgICAgICAgIHJ1bm5lciwgcG9y
dCA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZp
bGVzWycvbW9jay1jaGVja291dC9zb21lLmpzb24nXSA9ICdzb21lIGNvbnRlbnQnCisKKyAgICAg
ICAgY2FsbGVkID0gW10KKyAgICAgICAgdXBsb2FkX3NpbmdsZV90ZXh0X2ZpbGVfdGhyb3dzID0g
RmFsc2UKKyAgICAgICAgdXBsb2FkX3NpbmdsZV90ZXh0X2ZpbGVfcmV0dXJuX3ZhbHVlID0gU3Ry
aW5nSU8uU3RyaW5nSU8oJ09LJykKKworICAgICAgICBjbGFzcyBNb2NrRmlsZVVwbG9hZGVyOgor
ICAgICAgICAgICAgZGVmIF9faW5pdF9fKG1vY2ssIHVybCwgdGltZW91dCk6CisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmwsICdodHRwczovL3NvbWUuaG9zdC9hcGkvdGVzdC9y
ZXBvcnQnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHRpbWVv
dXQsIGludCkgYW5kIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgnRmls
ZVVwbG9hZGVyJykKKworICAgICAgICAgICAgZGVmIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxlKG1v
Y2ssIGZpbGVzeXN0ZW0sIGNvbnRlbnRfdHlwZSwgZmlsZW5hbWUpOgorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbSwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0pCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X3R5cGUsICdhcHBsaWNhdGlvbi9q
c29uJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCAnc29tZS5q
c29uJykKKyAgICAgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCd1cGxvYWRfc2luZ2xlX3RleHRf
ZmlsZScpCisgICAgICAgICAgICAgICAgaWYgdXBsb2FkX3NpbmdsZV90ZXh0X2ZpbGVfdGhyb3dz
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSAiU29tZSBleGNlcHRpb24iCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxlX3JldHVybl92YWx1ZQorCisgICAg
ICAgIHJ1bm5lci5fdXBsb2FkX2pzb24oJ3NvbWUuaG9zdCcsICdzb21lLmpzb24nLCBNb2NrRmls
ZVVwbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxlZCwgWydGaWxlVXBsb2Fk
ZXInLCAndXBsb2FkX3NpbmdsZV90ZXh0X2ZpbGUnXSkKKworICAgICAgICBvdXRwdXQgPSBPdXRw
dXRDYXB0dXJlKCkKKyAgICAgICAgb3V0cHV0LmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdXBs
b2FkX3NpbmdsZV90ZXh0X2ZpbGVfcmV0dXJuX3ZhbHVlID0gU3RyaW5nSU8uU3RyaW5nSU8oJ1Nv
bWUgZXJyb3InKQorICAgICAgICBydW5uZXIuX3VwbG9hZF9qc29uKCdzb21lLmhvc3QnLCAnc29t
ZS5qc29uJywgTW9ja0ZpbGVVcGxvYWRlcikKKyAgICAgICAgXywgXywgbG9ncyA9IG91dHB1dC5y
ZXN0b3JlX291dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9ncywgJ1VwbG9hZGVk
IEpTT04gYnV0IGdvdCBhIGJhZCByZXNwb25zZTpcblNvbWUgZXJyb3JcbicpCisKKyAgICAgICAg
IyBUaHJvd2luZyBhbiBleGNlcHRpb24gdXBsb2FkX3NpbmdsZV90ZXh0X2ZpbGUgc2hvdWxkbid0
IGJsb3cgdXAgX3VwbG9hZF9qc29uCisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHVwbG9h
ZF9zaW5nbGVfdGV4dF9maWxlX3Rocm93cyA9IFRydWUKKyAgICAgICAgcnVubmVyLl91cGxvYWRf
anNvbignc29tZS5ob3N0JywgJ3NvbWUuanNvbicsIE1vY2tGaWxlVXBsb2FkZXIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLCBbJ0ZpbGVVcGxvYWRlcicsICd1cGxvYWRfc2luZ2xl
X3RleHRfZmlsZSddKQorCisgICAgZGVmIF9hZGRfZmlsZShzZWxmLCBydW5uZXIsIGRpcm5hbWUs
IGZpbGVuYW1lLCBjb250ZW50PVRydWUpOgorICAgICAgICBkaXJuYW1lID0gcnVubmVyLl9ob3N0
LmZpbGVzeXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwgZGlybmFtZSkgaWYgZGlybmFtZSBl
bHNlIHJ1bm5lci5fYmFzZV9wYXRoCisgICAgICAgIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLm1h
eWJlX21ha2VfZGlyZWN0b3J5KGRpcm5hbWUpCisgICAgICAgIHJ1bm5lci5faG9zdC5maWxlc3lz
dGVtLmZpbGVzW3J1bm5lci5faG9zdC5maWxlc3lzdGVtLmpvaW4oZGlybmFtZSwgZmlsZW5hbWUp
XSA9IGNvbnRlbnQKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHMoc2VsZik6CisgICAgICAg
IHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCisgICAgICAgIHNlbGYuX2FkZF9m
aWxlKHJ1bm5lciwgJ2luc3BlY3RvcicsICdhX2ZpbGUuaHRtbCcsICdhIGNvbnRlbnQnKQorICAg
ICAgICB0ZXN0cyA9IHJ1bm5lci5fY29sbGVjdF90ZXN0cygpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHRlc3RzKSwgMSkKKworICAgIGRlZiBfY29sbGVjdF90ZXN0c19hbmRfc29ydF90
ZXN0X25hbWUoc2VsZiwgcnVubmVyKToKKyAgICAgICAgcmV0dXJuIHNvcnRlZChbdGVzdC50ZXN0
X25hbWUoKSBmb3IgdGVzdCBpbiBydW5uZXIuX2NvbGxlY3RfdGVzdHMoKV0pCisKKyAgICBkZWYg
dGVzdF9jb2xsZWN0X3Rlc3RzX3dpdGhfbXVsdGlsZV9maWxlcyhzZWxmKToKKyAgICAgICAgcnVu
bmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKGFyZ3M9WydQZXJmb3JtYW5jZVRlc3RzL3Rl
c3QxLmh0bWwnLCAndGVzdDIuaHRtbCddKQorCisgICAgICAgIGRlZiBhZGRfZmlsZShmaWxlbmFt
ZSk6CisgICAgICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1tydW5uZXIuX2hvc3Qu
ZmlsZXN5c3RlbS5qb2luKHJ1bm5lci5fYmFzZV9wYXRoLCBmaWxlbmFtZSldID0gJ3NvbWUgY29u
dGVudCcKKworICAgICAgICBhZGRfZmlsZSgndGVzdDEuaHRtbCcpCisgICAgICAgIGFkZF9maWxl
KCd0ZXN0Mi5odG1sJykKKyAgICAgICAgYWRkX2ZpbGUoJ3Rlc3QzLmh0bWwnKQorICAgICAgICBw
b3J0Lmhvc3QuZmlsZXN5c3RlbS5jaGRpcihydW5uZXIuX3BvcnQucGVyZl90ZXN0c19kaXIoKVs6
cnVubmVyLl9wb3J0LnBlcmZfdGVzdHNfZGlyKCkucmZpbmQocnVubmVyLl9ob3N0LmZpbGVzeXN0
ZW0uc2VwKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fY29sbGVjdF90ZXN0c19h
bmRfc29ydF90ZXN0X25hbWUocnVubmVyKSwgWyd0ZXN0MS5odG1sJywgJ3Rlc3QyLmh0bWwnXSkK
KworICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHNfd2l0aF9za2lwcGVkX2xpc3Qoc2VsZik6Cisg
ICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCisKKyAgICAgICAgc2Vs
Zi5fYWRkX2ZpbGUocnVubmVyLCAnaW5zcGVjdG9yJywgJ3Rlc3QxLmh0bWwnKQorICAgICAgICBz
ZWxmLl9hZGRfZmlsZShydW5uZXIsICdpbnNwZWN0b3InLCAndW5zdXBwb3J0ZWRfdGVzdDEuaHRt
bCcpCisgICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ2luc3BlY3RvcicsICd0ZXN0Mi5o
dG1sJykKKyAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnaW5zcGVjdG9yL3Jlc291cmNl
cycsICdyZXNvdXJjZV9maWxlLmh0bWwnKQorICAgICAgICBzZWxmLl9hZGRfZmlsZShydW5uZXIs
ICd1bnN1cHBvcnRlZCcsICd1bnN1cHBvcnRlZF90ZXN0Mi5odG1sJykKKyAgICAgICAgcG9ydC5z
a2lwcGVkX3BlcmZfdGVzdHMgPSBsYW1iZGE6IFsnaW5zcGVjdG9yL3Vuc3VwcG9ydGVkX3Rlc3Qx
Lmh0bWwnLCAndW5zdXBwb3J0ZWQnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2Nv
bGxlY3RfdGVzdHNfYW5kX3NvcnRfdGVzdF9uYW1lKHJ1bm5lciksIFsnaW5zcGVjdG9yL3Rlc3Qx
Lmh0bWwnLCAnaW5zcGVjdG9yL3Rlc3QyLmh0bWwnXSkKKworICAgIGRlZiB0ZXN0X2NvbGxlY3Rf
dGVzdHNfd2l0aF9za2lwcGVkX2xpc3RfYW5kX2ZpbGVzKHNlbGYpOgorICAgICAgICBydW5uZXIs
IHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYXJncz1bJ1N1aXRlL1Rlc3QxLmh0bWwnLCAnU3Vp
dGUvU2tpcHBlZFRlc3QxLmh0bWwnLCAnU2tpcHBlZFN1aXRlL1Rlc3QxLmh0bWwnXSkKKworICAg
ICAgICBzZWxmLl9hZGRfZmlsZShydW5uZXIsICdTa2lwcGVkU3VpdGUnLCAnVGVzdDEuaHRtbCcp
CisgICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ1NraXBwZWRTdWl0ZScsICdUZXN0Mi5o
dG1sJykKKyAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnU3VpdGUnLCAnVGVzdDEuaHRt
bCcpCisgICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ1N1aXRlJywgJ1Rlc3QyLmh0bWwn
KQorICAgICAgICBzZWxmLl9hZGRfZmlsZShydW5uZXIsICdTdWl0ZScsICdTa2lwcGVkVGVzdDEu
aHRtbCcpCisgICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ1N1aXRlJywgJ1NraXBwZWRU
ZXN0Mi5odG1sJykKKyAgICAgICAgcG9ydC5za2lwcGVkX3BlcmZfdGVzdHMgPSBsYW1iZGE6IFsn
U3VpdGUvU2tpcHBlZFRlc3QxLmh0bWwnLCAnU3VpdGUvU2tpcHBlZFRlc3QxLmh0bWwnLCAnU2tp
cHBlZFN1aXRlJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb2xsZWN0X3Rlc3Rz
X2FuZF9zb3J0X3Rlc3RfbmFtZShydW5uZXIpLAorICAgICAgICAgICAgWydTa2lwcGVkU3VpdGUv
VGVzdDEuaHRtbCcsICdTdWl0ZS9Ta2lwcGVkVGVzdDEuaHRtbCcsICdTdWl0ZS9UZXN0MS5odG1s
J10pCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X3Rlc3RzX3dpdGhfaWdub3JlZF9za2lwcGVkX2xp
c3Qoc2VsZik6CisgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcihhcmdz
PVsnLS1mb3JjZSddKQorCisgICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ2luc3BlY3Rv
cicsICd0ZXN0MS5odG1sJykKKyAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnaW5zcGVj
dG9yJywgJ3Vuc3VwcG9ydGVkX3Rlc3QxLmh0bWwnKQorICAgICAgICBzZWxmLl9hZGRfZmlsZShy
dW5uZXIsICdpbnNwZWN0b3InLCAndGVzdDIuaHRtbCcpCisgICAgICAgIHNlbGYuX2FkZF9maWxl
KHJ1bm5lciwgJ2luc3BlY3Rvci9yZXNvdXJjZXMnLCAncmVzb3VyY2VfZmlsZS5odG1sJykKKyAg
ICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAndW5zdXBwb3J0ZWQnLCAndW5zdXBwb3J0ZWRf
dGVzdDIuaHRtbCcpCisgICAgICAgIHBvcnQuc2tpcHBlZF9wZXJmX3Rlc3RzID0gbGFtYmRhOiBb
J2luc3BlY3Rvci91bnN1cHBvcnRlZF90ZXN0MS5odG1sJywgJ3Vuc3VwcG9ydGVkJ10KKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb2xsZWN0X3Rlc3RzX2FuZF9zb3J0X3Rlc3RfbmFt
ZShydW5uZXIpLCBbJ2luc3BlY3Rvci90ZXN0MS5odG1sJywgJ2luc3BlY3Rvci90ZXN0Mi5odG1s
JywgJ2luc3BlY3Rvci91bnN1cHBvcnRlZF90ZXN0MS5odG1sJywgJ3Vuc3VwcG9ydGVkL3Vuc3Vw
cG9ydGVkX3Rlc3QyLmh0bWwnXSkKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHNfc2hvdWxk
X2lnbm9yZV9yZXBsYXlfdGVzdHNfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgcnVubmVyLCBw
b3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKCkKKyAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVy
LCAnUmVwbGF5JywgJ3d3dy53ZWJraXQub3JnLnJlcGxheScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocnVubmVyLl9jb2xsZWN0X3Rlc3RzKCksIFtdKQorCisgICAgZGVmIHRlc3RfY29sbGVj
dF90ZXN0c193aXRoX3JlcGxheV90ZXN0cyhzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0g
c2VsZi5jcmVhdGVfcnVubmVyKGFyZ3M9WyctLXJlcGxheSddKQorICAgICAgICBzZWxmLl9hZGRf
ZmlsZShydW5uZXIsICdSZXBsYXknLCAnd3d3LndlYmtpdC5vcmcucmVwbGF5JykKKyAgICAgICAg
dGVzdHMgPSBydW5uZXIuX2NvbGxlY3RfdGVzdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbih0ZXN0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNbMF0uX19jbGFz
c19fLl9fbmFtZV9fLCAnUmVwbGF5UGVyZlRlc3QnKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYXJn
cyhzZWxmKToKKyAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKCkKKyAg
ICAgICAgb3B0aW9ucywgYXJncyA9IFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyhbCisgICAg
ICAgICAgICAgICAgJy0tYnVpbGQtZGlyZWN0b3J5PWZvbGRlcjQyJywKKyAgICAgICAgICAgICAg
ICAnLS1wbGF0Zm9ybT1wbGF0Zm9ybTQyJywKKyAgICAgICAgICAgICAgICAnLS1idWlsZGVyLW5h
bWUnLCAnd2Via2l0LW1hYy0xJywKKyAgICAgICAgICAgICAgICAnLS1idWlsZC1udW1iZXI9NTYn
LAorICAgICAgICAgICAgICAgICctLXRpbWUtb3V0LW1zPTQyJywKKyAgICAgICAgICAgICAgICAn
LS1uby1zaG93LXJlc3VsdHMnLAorICAgICAgICAgICAgICAgICctLXJlc2V0LXJlc3VsdHMnLAor
ICAgICAgICAgICAgICAgICctLW91dHB1dC1qc29uLXBhdGg9YS9vdXRwdXQuanNvbicsCisgICAg
ICAgICAgICAgICAgJy0tc2xhdmUtY29uZmlnLWpzb24tcGF0aD1hL3NvdXJjZS5qc29uJywKKyAg
ICAgICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWVob3N0JywKKyAgICAgICAg
ICAgICAgICAnLS1kZWJ1ZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYnVp
bGQsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5idWlsZF9kaXJlY3Rv
cnksICdmb2xkZXI0MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5wbGF0Zm9y
bSwgJ3BsYXRmb3JtNDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYnVpbGRl
cl9uYW1lLCAnd2Via2l0LW1hYy0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25z
LmJ1aWxkX251bWJlciwgJzU2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnRp
bWVfb3V0X21zLCAnNDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmln
dXJhdGlvbiwgJ0RlYnVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnNob3df
cmVzdWx0cywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5yZXNldF9y
ZXN1bHRzLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMub3V0cHV0X2pz
b25fcGF0aCwgJ2Evb3V0cHV0Lmpzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlv
bnMuc2xhdmVfY29uZmlnX2pzb25fcGF0aCwgJ2Evc291cmNlLmpzb24nKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciwgJ3NvbWVob3N0JykKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVu
bmVyX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHkJ
KHJldmlzaW9uIDEzODM1MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiVW5p
dCB0ZXN0cyBmb3IgcnVuX3BlcmZfdGVzdHMuIiIiCisiIiJJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Ig
cnVuX3BlcmZfdGVzdHMuIiIiCiAKIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IGpzb24KQEAgLTM0
LDQwICszNCwzMSBAQCBpbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJJbnB1dCwgRHJp
dmVyT3V0cHV0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmRyaXZlciBpbXBvcnQg
RHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0
IFRlc3RQb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRp
bmcKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IENocm9t
aXVtU3R5bGVQZXJmVGVzdAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVz
dCBpbXBvcnQgUGVyZlRlc3QKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRl
c3RzcnVubmVyIGltcG9ydCBQZXJmVGVzdHNSdW5uZXIKIAogCi1jbGFzcyBNYWluVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGFzc2VydFdyaXR0ZW4oc2VsZiwgc3RyZWFtLCBjb250
ZW50cyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmJ1Zmxpc3QsIGNvbnRlbnRz
KQotCi0gICAgZGVmIG5vcm1hbGl6ZUZpbmlzaGVkVGltZShzZWxmLCBsb2cpOgotICAgICAgICBy
ZXR1cm4gcmUuc3ViKHInRmluaXNoZWQ6IFswLTlcLl0rIHMnLCAnRmluaXNoZWQ6IDAuMSBzJywg
bG9nKQotCi0gICAgY2xhc3MgVGVzdERyaXZlcjoKLSAgICAgICAgZGVmIHJ1bl90ZXN0KHNlbGYs
IGRyaXZlcl9pbnB1dCwgc3RvcF93aGVuX2RvbmUpOgotICAgICAgICAgICAgdGV4dCA9ICcnCi0g
ICAgICAgICAgICB0aW1lb3V0ID0gRmFsc2UKLSAgICAgICAgICAgIGNyYXNoID0gRmFsc2UKLSAg
ICAgICAgICAgIGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3Bhc3MuaHRtbCcp
OgotICAgICAgICAgICAgICAgIHRleHQgPSAnUkVTVUxUIGdyb3VwX25hbWU6IHRlc3RfbmFtZT0g
NDIgbXMnCi0gICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgo
J3RpbWVvdXQuaHRtbCcpOgotICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBUcnVlCi0gICAgICAg
ICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2ZhaWxlZC5odG1sJyk6
Ci0gICAgICAgICAgICAgICAgdGV4dCA9IE5vbmUKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lu
cHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgndG9uZ3VleS5odG1sJyk6Ci0gICAgICAgICAgICAgICAg
dGV4dCA9ICd3ZSBhcmUgbm90IGV4cGVjdGluZyBhbiBvdXRwdXQgZnJvbSBwZXJmIHRlc3RzIGJ1
dCBSRVNVTFQgYmxhYmxhYmxhJwotICAgICAgICAgICAgZWxpZiBkcml2ZXJfaW5wdXQudGVzdF9u
YW1lLmVuZHN3aXRoKCdjcmFzaC5odG1sJyk6Ci0gICAgICAgICAgICAgICAgY3Jhc2ggPSBUcnVl
Ci0gICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2V2ZW50
LXRhcmdldC13cmFwcGVyLmh0bWwnKToKLSAgICAgICAgICAgICAgICB0ZXh0ID0gIiIiUnVubmlu
ZyAyMCB0aW1lcworY2xhc3MgVGVzdERyaXZlcjoKKyAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgZHJp
dmVyX2lucHV0LCBzdG9wX3doZW5fZG9uZSk6CisgICAgICAgIHRleHQgPSAnJworICAgICAgICB0
aW1lb3V0ID0gRmFsc2UKKyAgICAgICAgY3Jhc2ggPSBGYWxzZQorICAgICAgICBpZiBkcml2ZXJf
aW5wdXQudGVzdF9uYW1lLmVuZHN3aXRoKCdwYXNzLmh0bWwnKToKKyAgICAgICAgICAgIHRleHQg
PSAnUkVTVUxUIGdyb3VwX25hbWU6IHRlc3RfbmFtZT0gNDIgbXMnCisgICAgICAgIGVsaWYgZHJp
dmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgndGltZW91dC5odG1sJyk6CisgICAgICAgICAg
ICB0aW1lb3V0ID0gVHJ1ZQorICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5k
c3dpdGgoJ2ZhaWxlZC5odG1sJyk6CisgICAgICAgICAgICB0ZXh0ID0gTm9uZQorICAgICAgICBl
bGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3Rvbmd1ZXkuaHRtbCcpOgorICAg
ICAgICAgICAgdGV4dCA9ICd3ZSBhcmUgbm90IGV4cGVjdGluZyBhbiBvdXRwdXQgZnJvbSBwZXJm
IHRlc3RzIGJ1dCBSRVNVTFQgYmxhYmxhYmxhJworICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50
ZXN0X25hbWUuZW5kc3dpdGgoJ2NyYXNoLmh0bWwnKToKKyAgICAgICAgICAgIGNyYXNoID0gVHJ1
ZQorICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2V2ZW50LXRh
cmdldC13cmFwcGVyLmh0bWwnKToKKyAgICAgICAgICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRp
bWVzCiBJZ25vcmluZyB3YXJtLXVwIHJ1biAoMTUwMikKIDE1MDQKIDE1MDUKQEAgLTk4LDggKzg5
LDggQEAgc3RkZXYgMTQuNDYgbXMKIG1pbiAxNDcxIG1zCiBtYXggMTUxMCBtcwogIiIiCi0gICAg
ICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3NvbWUtcGFyc2Vy
Lmh0bWwnKToKLSAgICAgICAgICAgICAgICB0ZXh0ID0gIiIiUnVubmluZyAyMCB0aW1lcworICAg
ICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3NvbWUtcGFyc2VyLmh0
bWwnKToKKyAgICAgICAgICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCiBJZ25vcmluZyB3
YXJtLXVwIHJ1biAoMTExNSkKIAogVGltZToKQEAgLTExMCw4ICsxMDEsOCBAQCBzdGRldiAxMSBt
cwogbWluIDEwODAgbXMKIG1heCAxMTIwIG1zCiAiIiIKLSAgICAgICAgICAgIGVsaWYgZHJpdmVy
X2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnbWVtb3J5LXRlc3QuaHRtbCcpOgotICAgICAgICAg
ICAgICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCisgICAgICAgIGVsaWYgZHJpdmVyX2lu
cHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnbWVtb3J5LXRlc3QuaHRtbCcpOgorICAgICAgICAgICAg
dGV4dCA9ICIiIlJ1bm5pbmcgMjAgdGltZXMKIElnbm9yaW5nIHdhcm0tdXAgcnVuICgxMTE1KQog
CiBUaW1lOgpAQCAtMTM4LDEzICsxMjksMTggQEAgc3RkZXYgMTMwMDAgYnl0ZXMKIG1pbiA1MTEw
MDAgYnl0ZXMKIG1heCA1NDgwMDAgYnl0ZXMKICIiIgotICAgICAgICAgICAgcmV0dXJuIERyaXZl
ck91dHB1dCh0ZXh0LCAnJywgJycsICcnLCBjcmFzaD1jcmFzaCwgdGltZW91dD10aW1lb3V0KQor
ICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsICcnLCAnJywgJycsIGNyYXNoPWNyYXNo
LCB0aW1lb3V0PXRpbWVvdXQpCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICIiImRv
IG5vdGhpbmciIiIKIAotICAgICAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgICAgICAiIiJk
byBub3RoaW5nIiIiCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICIiImRvIG5vdGhpbmci
IiIKIAotICAgICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgICAgICIiImRvIG5vdGhpbmci
IiIKKworY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfbm9ybWFs
aXplX291dHB1dChzZWxmLCBsb2cpOgorICAgICAgICByZXR1cm4gcmUuc3ViKHInRmluaXNoZWQ6
IFswLTlcLl0rIHMnLCAnRmluaXNoZWQ6IDAuMSBzJywgbG9nKQogCiAgICAgZGVmIGNyZWF0ZV9y
dW5uZXIoc2VsZiwgYXJncz1bXSwgZHJpdmVyX2NsYXNzPVRlc3REcml2ZXIpOgogICAgICAgICBv
cHRpb25zLCBwYXJzZWRfYXJncyA9IFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyhhcmdzKQpA
QCAtMjA5LDkgKzIwNSw4IEBAIG1heCA1NDgwMDAgYnl0ZXMKIAogICAgIGRlZiB0ZXN0X3J1bl90
ZXN0X3NldF9raWxsc19kcnRfcGVyX3J1bihzZWxmKToKIAotICAgICAgICBjbGFzcyBUZXN0RHJp
dmVyV2l0aFN0b3BDb3VudChNYWluVGVzdC5UZXN0RHJpdmVyKToKKyAgICAgICAgY2xhc3MgVGVz
dERyaXZlcldpdGhTdG9wQ291bnQoVGVzdERyaXZlcik6CiAgICAgICAgICAgICBzdG9wX2NvdW50
ID0gMAotCiAgICAgICAgICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgICAgICAgICBUZXN0
RHJpdmVyV2l0aFN0b3BDb3VudC5zdG9wX2NvdW50ICs9IDEKIApAQCAtMjMzLDcgKzIyOCw3IEBA
IG1heCA1NDgwMDAgYnl0ZXMKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN0ZG91dCwg
c3RkZXJyLCBsb2cgPSBvdXRwdXQucmVzdG9yZV9vdXRwdXQoKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYubm9ybWFsaXplRmluaXNoZWRUaW1lKGxvZyksICdcbicuam9pbihbJ1J1bm5pbmcg
QmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCAoMSBvZiAyKScsCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5fbm9ybWFsaXplX291dHB1dChsb2cpLCAnXG4nLmpvaW4oWydS
dW5uaW5nIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwgKDEgb2YgMiknLAogICAg
ICAgICAnUkVTVUxUIEJpbmRpbmdzOiBldmVudC10YXJnZXQtd3JhcHBlcj0gMTQ4OS4wNSBtcycs
CiAgICAgICAgICdtZWRpYW49IDE0ODcuMCBtcywgc3RkZXY9IDE0LjQ2IG1zLCBtaW49IDE0NzEu
MCBtcywgbWF4PSAxNTEwLjAgbXMnLAogICAgICAgICAnRmluaXNoZWQ6IDAuMSBzJywKQEAgLTI1
Niw3ICsyNTEsNyBAQCBtYXggNTQ4MDAwIGJ5dGVzCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAg
ICAgICBzdGRvdXQsIHN0ZGVyciwgbG9nID0gb3V0cHV0LnJlc3RvcmVfb3V0cHV0KCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh1bmV4cGVjdGVkX3Jlc3VsdF9jb3VudCwgMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLm5vcm1hbGl6ZUZpbmlzaGVkVGltZShsb2cpLCAnXG4nLmpv
aW4oWworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX25vcm1hbGl6ZV9vdXRwdXQobG9n
KSwgJ1xuJy5qb2luKFsKICAgICAgICAgICAgICdSdW5uaW5nIDEgdGVzdHMnLAogICAgICAgICAg
ICAgJ1J1bm5pbmcgUGFyc2VyL21lbW9yeS10ZXN0Lmh0bWwgKDEgb2YgMSknLAogICAgICAgICAg
ICAgJ1JFU1VMVCBQYXJzZXI6IG1lbW9yeS10ZXN0PSAxMTAwLjAgbXMnLApAQCAtMzA5LDcgKzMw
NCw3IEBAIG1heCA1NDgwMDAgYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcnLCAnJ10pCiAgICAgICAgICAgICBpZiByZXN1bHRzX3Nob3duOgogICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2xvZ3MgKz0gJ01PQ0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi5c
bicKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ub3JtYWxpemVGaW5pc2hlZFRp
bWUobG9ncyksIGV4cGVjdGVkX2xvZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuX25vcm1hbGl6ZV9vdXRwdXQobG9ncyksIGV4cGVjdGVkX2xvZ3MpCiAKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh1cGxvYWRlZFswXSwgdXBsb2FkX3N1Y2VlZHMpCiAKQEAgLTM2Nyw3ICsz
NjIsNyBAQCBtYXggNTQ4MDAwIGJ5dGVzCiAKICAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9q
c29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtKQogCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoanNvbi5sb2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShvdXRwdXRfanNvbl9wYXRoKSksIFt7CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVy
LmxvYWRfb3V0cHV0X2pzb24oKSwgW3sKICAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3
ODksICJyZXN1bHRzIjogc2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9y
ZXN1bHRzLAogICAgICAgICAgICAgIndlYmtpdC1yZXZpc2lvbiI6ICI1Njc4IiwgImJyYW5jaCI6
ICJ3ZWJraXQtdHJ1bmsifV0pCiAKQEAgLTM4Myw3ICszNzgsNyBAQCBtYXggNTQ4MDAwIGJ5dGVz
CiAKICAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQu
aG9zdC5maWxlc3lzdGVtKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2Fkcyhw
b3J0Lmhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShvdXRwdXRfanNvbl9wYXRoKSksIFt7
InByZXZpb3VzIjogInJlc3VsdHMifSwgeworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5l
ci5sb2FkX291dHB1dF9qc29uKCksIFt7InByZXZpb3VzIjogInJlc3VsdHMifSwgewogICAgICAg
ICAgICAgInRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxmLl9ldmVudF90YXJn
ZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCiAgICAgICAgICAgICAid2Via2l0LXJl
dmlzaW9uIjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayJ9XSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGZpbGVzeXN0ZW0uaXNmaWxlKGZpbGVzeXN0ZW0uc3BsaXRleHQob3V0cHV0
X2pzb25fcGF0aClbMF0gKyAnLmh0bWwnKSkKQEAgLTM5Nyw3ICszOTIsNyBAQCBtYXggNTQ4MDAw
IGJ5dGVzCiAKICAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIs
IHBvcnQuaG9zdC5maWxlc3lzdGVtKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5s
b2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShvdXRwdXRfanNvbl9wYXRo
KSksIFt7CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVyLmxvYWRfb3V0cHV0X2pzb24o
KSwgW3sKICAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJyZXN1bHRzIjogc2Vs
Zi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRzLAogICAgICAgICAg
ICAgIndlYmtpdC1yZXZpc2lvbiI6ICI1Njc4IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsifV0p
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlc3lzdGVtLmlzZmlsZShmaWxlc3lzdGVtLnNw
bGl0ZXh0KG91dHB1dF9qc29uX3BhdGgpWzBdICsgJy5odG1sJykpCkBAIC00MTQsMTkgKzQwOSwx
OSBAQCBtYXggNTQ4MDAwIGJ5dGVzCiAgICAgICAgICAgICAid2Via2l0LXJldmlzaW9uIjogIjU2
NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayJ9CiAKICAgICAgICAgc2VsZi5tYXhEaWZmID0g
Tm9uZQotICAgICAgICBqc29uX291dHB1dCA9IHBvcnQuaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuanNvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoanNvbi5sb2Fkcyhqc29uX291dHB1dCksIFtleHBlY3RlZF9lbnRyeV0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocnVubmVyLl9vdXRwdXRfanNvbl9wYXRoKCksICcvbW9jay1jaGVj
a291dC9vdXRwdXQuanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVyLmxvYWRf
b3V0cHV0X2pzb24oKSwgW2V4cGVjdGVkX2VudHJ5XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChmaWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuaHRtbCcp
LAogICAgICAgICAgICAgJ0JFR0lOPHNjcmlwdCBzcmM9Ii90ZXN0LmNoZWNrb3V0L3NvbWUuanMi
Pjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvdGVzdC5jaGVja291dC9vdGhlci5qcyI+PC9zY3JpcHQ+
JwotICAgICAgICAgICAgJzxzY3JpcHQ+JXM8L3NjcmlwdD5FTkQnICUganNvbl9vdXRwdXQpCisg
ICAgICAgICAgICAnPHNjcmlwdD4lczwvc2NyaXB0PkVORCcgJSBwb3J0Lmhvc3QuZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZShydW5uZXIuX291dHB1dF9qc29uX3BhdGgoKSkpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFnZV9zaG93blswXSwgJy9tb2NrLWNoZWNrb3V0L291dHB1dC5odG1s
JykKIAogICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgZmls
ZXN5c3RlbSwgcmVzdWx0c19zaG93bj1GYWxzZSkKLSAgICAgICAganNvbl9vdXRwdXQgPSBwb3J0
Lmhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpz
b24nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMoanNvbl9vdXRwdXQpLCBb
ZXhwZWN0ZWRfZW50cnksIGV4cGVjdGVkX2VudHJ5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChydW5uZXIuX291dHB1dF9qc29uX3BhdGgoKSwgJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29u
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIubG9hZF9vdXRwdXRfanNvbigpLCBb
ZXhwZWN0ZWRfZW50cnksIGV4cGVjdGVkX2VudHJ5XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChmaWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuaHRtbCcp
LAogICAgICAgICAgICAgJ0JFR0lOPHNjcmlwdCBzcmM9Ii90ZXN0LmNoZWNrb3V0L3NvbWUuanMi
Pjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvdGVzdC5jaGVja291dC9vdGhlci5qcyI+PC9zY3JpcHQ+
JwotICAgICAgICAgICAgJzxzY3JpcHQ+JXM8L3NjcmlwdD5FTkQnICUganNvbl9vdXRwdXQpCisg
ICAgICAgICAgICAnPHNjcmlwdD4lczwvc2NyaXB0PkVORCcgJSBwb3J0Lmhvc3QuZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZShydW5uZXIuX291dHB1dF9qc29uX3BhdGgoKSkpCiAKICAgICBkZWYg
dGVzdF9ydW5fcmVzcGVjdHNfbm9fc2hvd19yZXN1bHRzKHNlbGYpOgogICAgICAgICBzaG93X3Jl
c3VsdHNfaHRtbF9maWxlID0gbGFtYmRhIHBhdGg6IHBhZ2Vfc2hvd24uYXBwZW5kKHBhdGgpCkBA
IC01MjksMTAzICs1MjQsMyBAQCBtYXggNTQ4MDAwIGJ5dGVzCiAgICAgICAgIHVwbG9hZF9zaW5n
bGVfdGV4dF9maWxlX3Rocm93cyA9IFRydWUKICAgICAgICAgcnVubmVyLl91cGxvYWRfanNvbign
c29tZS5ob3N0JywgJ3NvbWUuanNvbicsIE1vY2tGaWxlVXBsb2FkZXIpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY2FsbGVkLCBbJ0ZpbGVVcGxvYWRlcicsICd1cGxvYWRfc2luZ2xlX3RleHRf
ZmlsZSddKQotCi0gICAgZGVmIF9hZGRfZmlsZShzZWxmLCBydW5uZXIsIGRpcm5hbWUsIGZpbGVu
YW1lLCBjb250ZW50PVRydWUpOgotICAgICAgICBkaXJuYW1lID0gcnVubmVyLl9ob3N0LmZpbGVz
eXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwgZGlybmFtZSkgaWYgZGlybmFtZSBlbHNlIHJ1
bm5lci5fYmFzZV9wYXRoCi0gICAgICAgIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLm1heWJlX21h
a2VfZGlyZWN0b3J5KGRpcm5hbWUpCi0gICAgICAgIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLmZp
bGVzW3J1bm5lci5faG9zdC5maWxlc3lzdGVtLmpvaW4oZGlybmFtZSwgZmlsZW5hbWUpXSA9IGNv
bnRlbnQKLQotICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJ1bm5l
ciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCi0gICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1
bm5lciwgJ2luc3BlY3RvcicsICdhX2ZpbGUuaHRtbCcsICdhIGNvbnRlbnQnKQotICAgICAgICB0
ZXN0cyA9IHJ1bm5lci5fY29sbGVjdF90ZXN0cygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHRlc3RzKSwgMSkKLQotICAgIGRlZiBfY29sbGVjdF90ZXN0c19hbmRfc29ydF90ZXN0X25h
bWUoc2VsZiwgcnVubmVyKToKLSAgICAgICAgcmV0dXJuIHNvcnRlZChbdGVzdC50ZXN0X25hbWUo
KSBmb3IgdGVzdCBpbiBydW5uZXIuX2NvbGxlY3RfdGVzdHMoKV0pCi0KLSAgICBkZWYgdGVzdF9j
b2xsZWN0X3Rlc3RzX3dpdGhfbXVsdGlsZV9maWxlcyhzZWxmKToKLSAgICAgICAgcnVubmVyLCBw
b3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKGFyZ3M9WydQZXJmb3JtYW5jZVRlc3RzL3Rlc3QxLmh0
bWwnLCAndGVzdDIuaHRtbCddKQotCi0gICAgICAgIGRlZiBhZGRfZmlsZShmaWxlbmFtZSk6Ci0g
ICAgICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1tydW5uZXIuX2hvc3QuZmlsZXN5
c3RlbS5qb2luKHJ1bm5lci5fYmFzZV9wYXRoLCBmaWxlbmFtZSldID0gJ3NvbWUgY29udGVudCcK
LQotICAgICAgICBhZGRfZmlsZSgndGVzdDEuaHRtbCcpCi0gICAgICAgIGFkZF9maWxlKCd0ZXN0
Mi5odG1sJykKLSAgICAgICAgYWRkX2ZpbGUoJ3Rlc3QzLmh0bWwnKQotICAgICAgICBwb3J0Lmhv
c3QuZmlsZXN5c3RlbS5jaGRpcihydW5uZXIuX3BvcnQucGVyZl90ZXN0c19kaXIoKVs6cnVubmVy
Ll9wb3J0LnBlcmZfdGVzdHNfZGlyKCkucmZpbmQocnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uc2Vw
KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fY29sbGVjdF90ZXN0c19hbmRfc29y
dF90ZXN0X25hbWUocnVubmVyKSwgWyd0ZXN0MS5odG1sJywgJ3Rlc3QyLmh0bWwnXSkKLQotICAg
IGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHNfd2l0aF9za2lwcGVkX2xpc3Qoc2VsZik6Ci0gICAgICAg
IHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCi0KLSAgICAgICAgc2VsZi5fYWRk
X2ZpbGUocnVubmVyLCAnaW5zcGVjdG9yJywgJ3Rlc3QxLmh0bWwnKQotICAgICAgICBzZWxmLl9h
ZGRfZmlsZShydW5uZXIsICdpbnNwZWN0b3InLCAndW5zdXBwb3J0ZWRfdGVzdDEuaHRtbCcpCi0g
ICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ2luc3BlY3RvcicsICd0ZXN0Mi5odG1sJykK
LSAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnaW5zcGVjdG9yL3Jlc291cmNlcycsICdy
ZXNvdXJjZV9maWxlLmh0bWwnKQotICAgICAgICBzZWxmLl9hZGRfZmlsZShydW5uZXIsICd1bnN1
cHBvcnRlZCcsICd1bnN1cHBvcnRlZF90ZXN0Mi5odG1sJykKLSAgICAgICAgcG9ydC5za2lwcGVk
X3BlcmZfdGVzdHMgPSBsYW1iZGE6IFsnaW5zcGVjdG9yL3Vuc3VwcG9ydGVkX3Rlc3QxLmh0bWwn
LCAndW5zdXBwb3J0ZWQnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2NvbGxlY3Rf
dGVzdHNfYW5kX3NvcnRfdGVzdF9uYW1lKHJ1bm5lciksIFsnaW5zcGVjdG9yL3Rlc3QxLmh0bWwn
LCAnaW5zcGVjdG9yL3Rlc3QyLmh0bWwnXSkKLQotICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHNf
d2l0aF9za2lwcGVkX2xpc3RfYW5kX2ZpbGVzKHNlbGYpOgotICAgICAgICBydW5uZXIsIHBvcnQg
PSBzZWxmLmNyZWF0ZV9ydW5uZXIoYXJncz1bJ1N1aXRlL1Rlc3QxLmh0bWwnLCAnU3VpdGUvU2tp
cHBlZFRlc3QxLmh0bWwnLCAnU2tpcHBlZFN1aXRlL1Rlc3QxLmh0bWwnXSkKLQotICAgICAgICBz
ZWxmLl9hZGRfZmlsZShydW5uZXIsICdTa2lwcGVkU3VpdGUnLCAnVGVzdDEuaHRtbCcpCi0gICAg
ICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ1NraXBwZWRTdWl0ZScsICdUZXN0Mi5odG1sJykK
LSAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnU3VpdGUnLCAnVGVzdDEuaHRtbCcpCi0g
ICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ1N1aXRlJywgJ1Rlc3QyLmh0bWwnKQotICAg
ICAgICBzZWxmLl9hZGRfZmlsZShydW5uZXIsICdTdWl0ZScsICdTa2lwcGVkVGVzdDEuaHRtbCcp
Ci0gICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ1N1aXRlJywgJ1NraXBwZWRUZXN0Mi5o
dG1sJykKLSAgICAgICAgcG9ydC5za2lwcGVkX3BlcmZfdGVzdHMgPSBsYW1iZGE6IFsnU3VpdGUv
U2tpcHBlZFRlc3QxLmh0bWwnLCAnU3VpdGUvU2tpcHBlZFRlc3QxLmh0bWwnLCAnU2tpcHBlZFN1
aXRlJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb2xsZWN0X3Rlc3RzX2FuZF9z
b3J0X3Rlc3RfbmFtZShydW5uZXIpLAotICAgICAgICAgICAgWydTa2lwcGVkU3VpdGUvVGVzdDEu
aHRtbCcsICdTdWl0ZS9Ta2lwcGVkVGVzdDEuaHRtbCcsICdTdWl0ZS9UZXN0MS5odG1sJ10pCi0K
LSAgICBkZWYgdGVzdF9jb2xsZWN0X3Rlc3RzX3dpdGhfaWdub3JlZF9za2lwcGVkX2xpc3Qoc2Vs
Zik6Ci0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcihhcmdzPVsnLS1m
b3JjZSddKQotCi0gICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5lciwgJ2luc3BlY3RvcicsICd0
ZXN0MS5odG1sJykKLSAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnaW5zcGVjdG9yJywg
J3Vuc3VwcG9ydGVkX3Rlc3QxLmh0bWwnKQotICAgICAgICBzZWxmLl9hZGRfZmlsZShydW5uZXIs
ICdpbnNwZWN0b3InLCAndGVzdDIuaHRtbCcpCi0gICAgICAgIHNlbGYuX2FkZF9maWxlKHJ1bm5l
ciwgJ2luc3BlY3Rvci9yZXNvdXJjZXMnLCAncmVzb3VyY2VfZmlsZS5odG1sJykKLSAgICAgICAg
c2VsZi5fYWRkX2ZpbGUocnVubmVyLCAndW5zdXBwb3J0ZWQnLCAndW5zdXBwb3J0ZWRfdGVzdDIu
aHRtbCcpCi0gICAgICAgIHBvcnQuc2tpcHBlZF9wZXJmX3Rlc3RzID0gbGFtYmRhOiBbJ2luc3Bl
Y3Rvci91bnN1cHBvcnRlZF90ZXN0MS5odG1sJywgJ3Vuc3VwcG9ydGVkJ10KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLl9jb2xsZWN0X3Rlc3RzX2FuZF9zb3J0X3Rlc3RfbmFtZShydW5u
ZXIpLCBbJ2luc3BlY3Rvci90ZXN0MS5odG1sJywgJ2luc3BlY3Rvci90ZXN0Mi5odG1sJywgJ2lu
c3BlY3Rvci91bnN1cHBvcnRlZF90ZXN0MS5odG1sJywgJ3Vuc3VwcG9ydGVkL3Vuc3VwcG9ydGVk
X3Rlc3QyLmh0bWwnXSkKLQotICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHNfc2hvdWxkX2lnbm9y
ZV9yZXBsYXlfdGVzdHNfYnlfZGVmYXVsdChzZWxmKToKLSAgICAgICAgcnVubmVyLCBwb3J0ID0g
c2VsZi5jcmVhdGVfcnVubmVyKCkKLSAgICAgICAgc2VsZi5fYWRkX2ZpbGUocnVubmVyLCAnUmVw
bGF5JywgJ3d3dy53ZWJraXQub3JnLnJlcGxheScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cnVubmVyLl9jb2xsZWN0X3Rlc3RzKCksIFtdKQotCi0gICAgZGVmIHRlc3RfY29sbGVjdF90ZXN0
c193aXRoX3JlcGxheV90ZXN0cyhzZWxmKToKLSAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5j
cmVhdGVfcnVubmVyKGFyZ3M9WyctLXJlcGxheSddKQotICAgICAgICBzZWxmLl9hZGRfZmlsZShy
dW5uZXIsICdSZXBsYXknLCAnd3d3LndlYmtpdC5vcmcucmVwbGF5JykKLSAgICAgICAgdGVzdHMg
PSBydW5uZXIuX2NvbGxlY3RfdGVzdHMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0
ZXN0cyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNbMF0uX19jbGFzc19fLl9f
bmFtZV9fLCAnUmVwbGF5UGVyZlRlc3QnKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfYXJncyhzZWxm
KToKLSAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKCkKLSAgICAgICAg
b3B0aW9ucywgYXJncyA9IFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyhbCi0gICAgICAgICAg
ICAgICAgJy0tYnVpbGQtZGlyZWN0b3J5PWZvbGRlcjQyJywKLSAgICAgICAgICAgICAgICAnLS1w
bGF0Zm9ybT1wbGF0Zm9ybTQyJywKLSAgICAgICAgICAgICAgICAnLS1idWlsZGVyLW5hbWUnLCAn
d2Via2l0LW1hYy0xJywKLSAgICAgICAgICAgICAgICAnLS1idWlsZC1udW1iZXI9NTYnLAotICAg
ICAgICAgICAgICAgICctLXRpbWUtb3V0LW1zPTQyJywKLSAgICAgICAgICAgICAgICAnLS1uby1z
aG93LXJlc3VsdHMnLAotICAgICAgICAgICAgICAgICctLXJlc2V0LXJlc3VsdHMnLAotICAgICAg
ICAgICAgICAgICctLW91dHB1dC1qc29uLXBhdGg9YS9vdXRwdXQuanNvbicsCi0gICAgICAgICAg
ICAgICAgJy0tc2xhdmUtY29uZmlnLWpzb24tcGF0aD1hL3NvdXJjZS5qc29uJywKLSAgICAgICAg
ICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWVob3N0JywKLSAgICAgICAgICAgICAg
ICAnLS1kZWJ1ZyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYnVpbGQsIFRy
dWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5idWlsZF9kaXJlY3RvcnksICdm
b2xkZXI0MicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5wbGF0Zm9ybSwgJ3Bs
YXRmb3JtNDInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYnVpbGRlcl9uYW1l
LCAnd2Via2l0LW1hYy0xJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmJ1aWxk
X251bWJlciwgJzU2JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnRpbWVfb3V0
X21zLCAnNDInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlv
biwgJ0RlYnVnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnNob3dfcmVzdWx0
cywgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5yZXNldF9yZXN1bHRz
LCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMub3V0cHV0X2pzb25fcGF0
aCwgJ2Evb3V0cHV0Lmpzb24nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuc2xh
dmVfY29uZmlnX2pzb25fcGF0aCwgJ2Evc291cmNlLmpzb24nKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG9wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciwgJ3NvbWVob3N0JykKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFu
Y2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMzgzNTEpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5l
cl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsNTAyICszNCwyMCBAQCBpbXBvcnQg
cmUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1w
b3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2Nr
IGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJJbnB1dCwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0Ci1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKLWZyb20gd2Via2l0cHkucGVyZm9y
bWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IENocm9taXVtU3R5bGVQZXJmVGVzdAotZnJvbSB3
ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3QKIGZyb20g
d2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3RzcnVubmVyIGltcG9ydCBQZXJmVGVz
dHNSdW5uZXIKIAogCiBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IGFzc2VydFdyaXR0ZW4oc2VsZiwgc3RyZWFtLCBjb250ZW50cyk6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLmJ1Zmxpc3QsIGNvbnRlbnRzKQotCi0gICAgZGVmIG5vcm1hbGl6ZUZp
bmlzaGVkVGltZShzZWxmLCBsb2cpOgotICAgICAgICByZXR1cm4gcmUuc3ViKHInRmluaXNoZWQ6
IFswLTlcLl0rIHMnLCAnRmluaXNoZWQ6IDAuMSBzJywgbG9nKQotCi0gICAgY2xhc3MgVGVzdERy
aXZlcjoKLSAgICAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGRyaXZlcl9pbnB1dCwgc3RvcF93aGVu
X2RvbmUpOgotICAgICAgICAgICAgdGV4dCA9ICcnCi0gICAgICAgICAgICB0aW1lb3V0ID0gRmFs
c2UKLSAgICAgICAgICAgIGNyYXNoID0gRmFsc2UKLSAgICAgICAgICAgIGlmIGRyaXZlcl9pbnB1
dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3Bhc3MuaHRtbCcpOgotICAgICAgICAgICAgICAgIHRleHQg
PSAnUkVTVUxUIGdyb3VwX25hbWU6IHRlc3RfbmFtZT0gNDIgbXMnCi0gICAgICAgICAgICBlbGlm
IGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3RpbWVvdXQuaHRtbCcpOgotICAgICAg
ICAgICAgICAgIHRpbWVvdXQgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50
ZXN0X25hbWUuZW5kc3dpdGgoJ2ZhaWxlZC5odG1sJyk6Ci0gICAgICAgICAgICAgICAgdGV4dCA9
IE5vbmUKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgn
dG9uZ3VleS5odG1sJyk6Ci0gICAgICAgICAgICAgICAgdGV4dCA9ICd3ZSBhcmUgbm90IGV4cGVj
dGluZyBhbiBvdXRwdXQgZnJvbSBwZXJmIHRlc3RzIGJ1dCBSRVNVTFQgYmxhYmxhYmxhJwotICAg
ICAgICAgICAgZWxpZiBkcml2ZXJfaW5wdXQudGVzdF9uYW1lLmVuZHN3aXRoKCdjcmFzaC5odG1s
Jyk6Ci0gICAgICAgICAgICAgICAgY3Jhc2ggPSBUcnVlCi0gICAgICAgICAgICBlbGlmIGRyaXZl
cl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwnKToK
LSAgICAgICAgICAgICAgICB0ZXh0ID0gIiIiUnVubmluZyAyMCB0aW1lcwotSWdub3Jpbmcgd2Fy
bS11cCBydW4gKDE1MDIpCi0xNTA0Ci0xNTA1Ci0xNTEwCi0xNTA0Ci0xNTA3Ci0xNTA5Ci0xNTEw
Ci0xNDg3Ci0xNDg4Ci0xNDcyCi0xNDcyCi0xNDg4Ci0xNDczCi0xNDcyCi0xNDc1Ci0xNDg3Ci0x
NDg2Ci0xNDg2Ci0xNDc1Ci0xNDcxCi0KLVRpbWU6Ci12YWx1ZXMgMTUwNCwgMTUwNSwgMTUxMCwg
MTUwNCwgMTUwNywgMTUwOSwgMTUxMCwgMTQ4NywgMTQ4OCwgMTQ3MiwgMTQ3MiwgMTQ4OCwgMTQ3
MywgMTQ3MiwgMTQ3NSwgMTQ4NywgMTQ4NiwgMTQ4NiwgMTQ3NSwgMTQ3MSBtcwotYXZnIDE0ODku
MDUgbXMKLW1lZGlhbiAxNDg3IG1zCi1zdGRldiAxNC40NiBtcwotbWluIDE0NzEgbXMKLW1heCAx
NTEwIG1zCi0iIiIKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRz
d2l0aCgnc29tZS1wYXJzZXIuaHRtbCcpOgotICAgICAgICAgICAgICAgIHRleHQgPSAiIiJSdW5u
aW5nIDIwIHRpbWVzCi1JZ25vcmluZyB3YXJtLXVwIHJ1biAoMTExNSkKLQotVGltZToKLXZhbHVl
cyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwg
MTcsIDE4LCAxOSBtcwotYXZnIDExMDAgbXMKLW1lZGlhbiAxMTAxIG1zCi1zdGRldiAxMSBtcwot
bWluIDEwODAgbXMKLW1heCAxMTIwIG1zCi0iIiIKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lu
cHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnbWVtb3J5LXRlc3QuaHRtbCcpOgotICAgICAgICAgICAg
ICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCi1JZ25vcmluZyB3YXJtLXVwIHJ1biAoMTEx
NSkKLQotVGltZToKLXZhbHVlcyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSBtcwotYXZnIDExMDAgbXMKLW1lZGlhbiAxMTAx
IG1zCi1zdGRldiAxMSBtcwotbWluIDEwODAgbXMKLW1heCAxMTIwIG1zCi0KLUpTIEhlYXA6Ci12
YWx1ZXMgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwg
MTYsIDE3LCAxOCwgMTkgYnl0ZXMKLWF2ZyA4MzIwMDAgYnl0ZXMKLW1lZGlhbiA4MjkwMDAgYnl0
ZXMKLXN0ZGV2IDE1MDAwIGJ5dGVzCi1taW4gODExMDAwIGJ5dGVzCi1tYXggODQ4MDAwIGJ5dGVz
Ci0KLU1hbGxvYzoKLXZhbHVlcyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSBieXRlcwotYXZnIDUzMjAwMCBieXRlcwotbWVk
aWFuIDUyOTAwMCBieXRlcwotc3RkZXYgMTMwMDAgYnl0ZXMKLW1pbiA1MTEwMDAgYnl0ZXMKLW1h
eCA1NDgwMDAgYnl0ZXMKLSIiIgotICAgICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dCh0ZXh0
LCAnJywgJycsICcnLCBjcmFzaD1jcmFzaCwgdGltZW91dD10aW1lb3V0KQotCi0gICAgICAgIGRl
ZiBzdGFydChzZWxmKToKLSAgICAgICAgICAgICIiImRvIG5vdGhpbmciIiIKLQotICAgICAgICBk
ZWYgc3RvcChzZWxmKToKLSAgICAgICAgICAgICIiImRvIG5vdGhpbmciIiIKLQotICAgIGRlZiBj
cmVhdGVfcnVubmVyKHNlbGYsIGFyZ3M9W10sIGRyaXZlcl9jbGFzcz1UZXN0RHJpdmVyKToKKyAg
ICBkZWYgY3JlYXRlX3J1bm5lcihzZWxmLCBhcmdzPVtdKToKICAgICAgICAgb3B0aW9ucywgcGFy
c2VkX2FyZ3MgPSBQZXJmVGVzdHNSdW5uZXIuX3BhcnNlX2FyZ3MoYXJncykKICAgICAgICAgdGVz
dF9wb3J0ID0gVGVzdFBvcnQoaG9zdD1Nb2NrSG9zdCgpLCBvcHRpb25zPW9wdGlvbnMpCi0gICAg
ICAgIHRlc3RfcG9ydC5jcmVhdGVfZHJpdmVyID0gbGFtYmRhIHdvcmtlcl9udW1iZXI9Tm9uZSwg
bm9fdGltZW91dD1GYWxzZTogZHJpdmVyX2NsYXNzKCkKLQogICAgICAgICBydW5uZXIgPSBQZXJm
VGVzdHNSdW5uZXIoYXJncz1hcmdzLCBwb3J0PXRlc3RfcG9ydCkKICAgICAgICAgcnVubmVyLl9o
b3N0LmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocnVubmVyLl9iYXNlX3BhdGgsICdp
bnNwZWN0b3InKQogICAgICAgICBydW5uZXIuX2hvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2Rp
cmVjdG9yeShydW5uZXIuX2Jhc2VfcGF0aCwgJ0JpbmRpbmdzJykKICAgICAgICAgcnVubmVyLl9o
b3N0LmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocnVubmVyLl9iYXNlX3BhdGgsICdQ
YXJzZXInKQotCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBydW5uZXIuX2hvc3QuZmlsZXN5c3RlbQot
ICAgICAgICBydW5uZXIubG9hZF9vdXRwdXRfanNvbiA9IGxhbWJkYToganNvbi5sb2FkcyhmaWxl
c3lzdGVtLnJlYWRfdGV4dF9maWxlKHJ1bm5lci5fb3V0cHV0X2pzb25fcGF0aCgpKSkKICAgICAg
ICAgcmV0dXJuIHJ1bm5lciwgdGVzdF9wb3J0CiAKLSAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdGVz
dF9uYW1lKToKLSAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKCkKLSAg
ICAgICAgcmV0dXJuIHJ1bm5lci5fcnVuX3NpbmdsZV90ZXN0KENocm9taXVtU3R5bGVQZXJmVGVz
dChwb3J0LCB0ZXN0X25hbWUsIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLmpvaW4oJ3NvbWUtZGly
JywgdGVzdF9uYW1lKSkpCi0KLSAgICBkZWYgdGVzdF9ydW5fcGFzc2luZ190ZXN0KHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5ydW5fdGVzdCgncGFzcy5odG1sJykpCi0KLSAg
ICBkZWYgdGVzdF9ydW5fc2lsZW50X3Rlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uoc2VsZi5ydW5fdGVzdCgnc2lsZW50Lmh0bWwnKSkKLQotICAgIGRlZiB0ZXN0X3J1bl9mYWls
ZWRfdGVzdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl90ZXN0KCdm
YWlsZWQuaHRtbCcpKQotCi0gICAgZGVmIHRlc3RfcnVuX3Rvbmd1ZXlfdGVzdChzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl90ZXN0KCd0b25ndWV5Lmh0bWwnKSkKLQot
ICAgIGRlZiB0ZXN0X3J1bl90aW1lb3V0X3Rlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2Uoc2VsZi5ydW5fdGVzdCgndGltZW91dC5odG1sJykpCi0KLSAgICBkZWYgdGVzdF9ydW5f
Y3Jhc2hfdGVzdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl90ZXN0
KCdjcmFzaC5odG1sJykpCi0KLSAgICBkZWYgX3Rlc3RzX2Zvcl9ydW5uZXIoc2VsZiwgcnVubmVy
LCB0ZXN0X25hbWVzKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IHJ1bm5lci5faG9zdC5maWxlc3lz
dGVtCi0gICAgICAgIHRlc3RzID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoK
LSAgICAgICAgICAgIHBhdGggPSBmaWxlc3lzdGVtLmpvaW4ocnVubmVyLl9iYXNlX3BhdGgsIHRl
c3QpCi0gICAgICAgICAgICBkaXJuYW1lID0gZmlsZXN5c3RlbS5kaXJuYW1lKHBhdGgpCi0gICAg
ICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoJ2luc3BlY3Rvci8nKToKLSAgICAgICAgICAgICAg
ICB0ZXN0cy5hcHBlbmQoQ2hyb21pdW1TdHlsZVBlcmZUZXN0KHJ1bm5lci5fcG9ydCwgdGVzdCwg
cGF0aCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlc3RzLmFwcGVuZChQ
ZXJmVGVzdChydW5uZXIuX3BvcnQsIHRlc3QsIHBhdGgpKQotICAgICAgICByZXR1cm4gdGVzdHMK
LQotICAgIGRlZiB0ZXN0X3J1bl90ZXN0X3NldChzZWxmKToKLSAgICAgICAgcnVubmVyLCBwb3J0
ID0gc2VsZi5jcmVhdGVfcnVubmVyKCkKLSAgICAgICAgdGVzdHMgPSBzZWxmLl90ZXN0c19mb3Jf
cnVubmVyKHJ1bm5lciwgWydpbnNwZWN0b3IvcGFzcy5odG1sJywgJ2luc3BlY3Rvci9zaWxlbnQu
aHRtbCcsICdpbnNwZWN0b3IvZmFpbGVkLmh0bWwnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci90
b25ndWV5Lmh0bWwnLCAnaW5zcGVjdG9yL3RpbWVvdXQuaHRtbCcsICdpbnNwZWN0b3IvY3Jhc2gu
aHRtbCddKQotICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb3V0cHV0
LmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdW5leHBlY3RlZF9y
ZXN1bHRfY291bnQgPSBydW5uZXIuX3J1bl90ZXN0c19zZXQodGVzdHMsIHBvcnQpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciwgbG9nID0gb3V0cHV0LnJlc3Rv
cmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCwgbGVuKHRlc3RzKSAtIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXG5SRVNVTFQg
Z3JvdXBfbmFtZTogdGVzdF9uYW1lPSA0MiBtc1xuJyBpbiBsb2cpCi0KLSAgICBkZWYgdGVzdF9y
dW5fdGVzdF9zZXRfa2lsbHNfZHJ0X3Blcl9ydW4oc2VsZik6Ci0KLSAgICAgICAgY2xhc3MgVGVz
dERyaXZlcldpdGhTdG9wQ291bnQoTWFpblRlc3QuVGVzdERyaXZlcik6Ci0gICAgICAgICAgICBz
dG9wX2NvdW50ID0gMAotCi0gICAgICAgICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgICAg
ICAgICBUZXN0RHJpdmVyV2l0aFN0b3BDb3VudC5zdG9wX2NvdW50ICs9IDEKLQotICAgICAgICBy
dW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoZHJpdmVyX2NsYXNzPVRlc3REcml2ZXJX
aXRoU3RvcENvdW50KQotCi0gICAgICAgIHRlc3RzID0gc2VsZi5fdGVzdHNfZm9yX3J1bm5lcihy
dW5uZXIsIFsnaW5zcGVjdG9yL3Bhc3MuaHRtbCcsICdpbnNwZWN0b3Ivc2lsZW50Lmh0bWwnLCAn
aW5zcGVjdG9yL2ZhaWxlZC5odG1sJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvdG9uZ3VleS5o
dG1sJywgJ2luc3BlY3Rvci90aW1lb3V0Lmh0bWwnLCAnaW5zcGVjdG9yL2NyYXNoLmh0bWwnXSkK
LSAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRfY291bnQgPSBydW5uZXIuX3J1bl90ZXN0c19zZXQo
dGVzdHMsIHBvcnQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0RHJpdmVyV2l0aFN0
b3BDb3VudC5zdG9wX2NvdW50LCA2KQotCi0gICAgZGVmIHRlc3RfcnVuX3Rlc3Rfc2V0X2Zvcl9w
YXJzZXJfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1
bm5lcigpCi0gICAgICAgIHRlc3RzID0gc2VsZi5fdGVzdHNfZm9yX3J1bm5lcihydW5uZXIsIFsn
QmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCcsICdQYXJzZXIvc29tZS1wYXJzZXIu
aHRtbCddKQotICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb3V0cHV0
LmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdW5leHBlY3RlZF9y
ZXN1bHRfY291bnQgPSBydW5uZXIuX3J1bl90ZXN0c19zZXQodGVzdHMsIHBvcnQpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciwgbG9nID0gb3V0cHV0LnJlc3Rv
cmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5vcm1hbGl6ZUZpbmlzaGVk
VGltZShsb2cpLCAnXG4nLmpvaW4oWydSdW5uaW5nIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFw
cGVyLmh0bWwgKDEgb2YgMiknLAotICAgICAgICAnUkVTVUxUIEJpbmRpbmdzOiBldmVudC10YXJn
ZXQtd3JhcHBlcj0gMTQ4OS4wNSBtcycsCi0gICAgICAgICdtZWRpYW49IDE0ODcuMCBtcywgc3Rk
ZXY9IDE0LjQ2IG1zLCBtaW49IDE0NzEuMCBtcywgbWF4PSAxNTEwLjAgbXMnLAotICAgICAgICAn
RmluaXNoZWQ6IDAuMSBzJywKLSAgICAgICAgJycsCi0gICAgICAgICdSdW5uaW5nIFBhcnNlci9z
b21lLXBhcnNlci5odG1sICgyIG9mIDIpJywKLSAgICAgICAgJ1JFU1VMVCBQYXJzZXI6IHNvbWUt
cGFyc2VyPSAxMTAwLjAgbXMnLAotICAgICAgICAnbWVkaWFuPSAxMTAxLjAgbXMsIHN0ZGV2PSAx
MS4wIG1zLCBtaW49IDEwODAuMCBtcywgbWF4PSAxMTIwLjAgbXMnLAotICAgICAgICAnRmluaXNo
ZWQ6IDAuMSBzJywKLSAgICAgICAgJycsICcnXSkpCi0KLSAgICBkZWYgdGVzdF9ydW5fbWVtb3J5
X3Rlc3Qoc2VsZik6Ci0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9h
bmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZSgpCi0gICAgICAgIHJ1bm5lci5fdGltZXN0YW1wID0g
MTIzNDU2Nzg5Ci0gICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShy
dW5uZXIuX2Jhc2VfcGF0aCArICcvUGFyc2VyL21lbW9yeS10ZXN0Lmh0bWwnLCAnc29tZSBjb250
ZW50JykKLQotICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb3V0cHV0
LmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdW5leHBlY3RlZF9y
ZXN1bHRfY291bnQgPSBydW5uZXIucnVuKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
IHN0ZG91dCwgc3RkZXJyLCBsb2cgPSBvdXRwdXQucmVzdG9yZV9vdXRwdXQoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50LCAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYubm9ybWFsaXplRmluaXNoZWRUaW1lKGxvZyksICdcbicuam9pbihb
Ci0gICAgICAgICAgICAnUnVubmluZyAxIHRlc3RzJywKLSAgICAgICAgICAgICdSdW5uaW5nIFBh
cnNlci9tZW1vcnktdGVzdC5odG1sICgxIG9mIDEpJywKLSAgICAgICAgICAgICdSRVNVTFQgUGFy
c2VyOiBtZW1vcnktdGVzdD0gMTEwMC4wIG1zJywKLSAgICAgICAgICAgICdtZWRpYW49IDExMDEu
MCBtcywgc3RkZXY9IDExLjAgbXMsIG1pbj0gMTA4MC4wIG1zLCBtYXg9IDExMjAuMCBtcycsCi0g
ICAgICAgICAgICAnUkVTVUxUIFBhcnNlcjogbWVtb3J5LXRlc3Q6IEpTSGVhcD0gODMyMDAwLjAg
Ynl0ZXMnLAotICAgICAgICAgICAgJ21lZGlhbj0gODI5MDAwLjAgYnl0ZXMsIHN0ZGV2PSAxNTAw
MC4wIGJ5dGVzLCBtaW49IDgxMTAwMC4wIGJ5dGVzLCBtYXg9IDg0ODAwMC4wIGJ5dGVzJywKLSAg
ICAgICAgICAgICdSRVNVTFQgUGFyc2VyOiBtZW1vcnktdGVzdDogTWFsbG9jPSA1MzIwMDAuMCBi
eXRlcycsCi0gICAgICAgICAgICAnbWVkaWFuPSA1MjkwMDAuMCBieXRlcywgc3RkZXY9IDEzMDAw
LjAgYnl0ZXMsIG1pbj0gNTExMDAwLjAgYnl0ZXMsIG1heD0gNTQ4MDAwLjAgYnl0ZXMnLAotICAg
ICAgICAgICAgJ0ZpbmlzaGVkOiAwLjEgcycsCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAg
ICdNT0NLOiB1c2VyLm9wZW5fdXJsOiBmaWxlOi8vLi4uJywKLSAgICAgICAgICAgICcnXSkpCi0g
ICAgICAgIHJlc3VsdHMgPSBydW5uZXIubG9hZF9vdXRwdXRfanNvbigpWzBdWydyZXN1bHRzJ10K
LSAgICAgICAgdmFsdWVzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIs
IDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdHNbJ1BhcnNlci9tZW1vcnktdGVzdCddLCB7J21pbic6IDEwODAuMCwgJ21heCc6IDExMjAu
MCwgJ21lZGlhbic6IDExMDEuMCwgJ3N0ZGV2JzogMTEuMCwgJ2F2Zyc6IDExMDAuMCwgJ3VuaXQn
OiAnbXMnLCAndmFsdWVzJzogdmFsdWVzfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1
bHRzWydQYXJzZXIvbWVtb3J5LXRlc3Q6SlNIZWFwJ10sIHsnbWluJzogODExMDAwLjAsICdtYXgn
OiA4NDgwMDAuMCwgJ21lZGlhbic6IDgyOTAwMC4wLCAnc3RkZXYnOiAxNTAwMC4wLCAnYXZnJzog
ODMyMDAwLjAsICd1bml0JzogJ2J5dGVzJywgJ3ZhbHVlcyc6IHZhbHVlc30pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0c1snUGFyc2VyL21lbW9yeS10ZXN0Ok1hbGxvYyddLCB7J21p
bic6IDUxMTAwMC4wLCAnbWF4JzogNTQ4MDAwLjAsICdtZWRpYW4nOiA1MjkwMDAuMCwgJ3N0ZGV2
JzogMTMwMDAuMCwgJ2F2Zyc6IDUzMjAwMC4wLCAndW5pdCc6ICdieXRlcycsICd2YWx1ZXMnOiB2
YWx1ZXN9KQotCi0gICAgZGVmIF90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHNlbGYsIHJ1bm5l
ciwgZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9RmFsc2UsIHJlc3VsdHNfc2hvd249VHJ1ZSwg
ZXhwZWN0ZWRfZXhpdF9jb2RlPTApOgotICAgICAgICBmaWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShydW5uZXIuX2Jhc2VfcGF0aCArICcvaW5zcGVjdG9yL3Bhc3MuaHRtbCcsICdzb21lIGNvbnRl
bnQnKQotICAgICAgICBmaWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShydW5uZXIuX2Jhc2VfcGF0
aCArICcvQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCcsICdzb21lIGNvbnRlbnQn
KQotCi0gICAgICAgIHVwbG9hZGVkID0gW0ZhbHNlXQotCi0gICAgICAgIGRlZiBtb2NrX3VwbG9h
ZF9qc29uKGhvc3RuYW1lLCBqc29uX3BhdGgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChob3N0bmFtZSwgJ3NvbWUuaG9zdCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpz
b25fcGF0aCwgJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJykKLSAgICAgICAgICAgIHVwbG9h
ZGVkWzBdID0gdXBsb2FkX3N1Y2VlZHMKLSAgICAgICAgICAgIHJldHVybiB1cGxvYWRfc3VjZWVk
cwotCi0gICAgICAgIHJ1bm5lci5fdXBsb2FkX2pzb24gPSBtb2NrX3VwbG9hZF9qc29uCi0gICAg
ICAgIHJ1bm5lci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5Ci0gICAgICAgIG91dHB1dF9jYXB0dXJl
ID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0
KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIucnVu
KCksIGV4cGVjdGVkX2V4aXRfY29kZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0
ZG91dCwgc3RkZXJyLCBsb2dzID0gb3V0cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQotCi0g
ICAgICAgIGlmIG5vdCBleHBlY3RlZF9leGl0X2NvZGU6Ci0gICAgICAgICAgICBleHBlY3RlZF9s
b2dzID0gJ1xuJy5qb2luKFsnUnVubmluZyAyIHRlc3RzJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdSdW5uaW5nIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVy
Lmh0bWwgKDEgb2YgMiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1JFU1VMVCBCaW5kaW5nczogZXZlbnQtdGFyZ2V0LXdyYXBwZXI9IDE0ODkuMDUgbXMnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGlhbj0gMTQ4Ny4wIG1zLCBz
dGRldj0gMTQuNDYgbXMsIG1pbj0gMTQ3MS4wIG1zLCBtYXg9IDE1MTAuMCBtcycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmluaXNoZWQ6IDAuMSBzJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1J1bm5pbmcgaW5zcGVjdG9yL3Bhc3MuaHRtbCAoMiBvZiAy
KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUkVTVUxUIGdyb3Vw
X25hbWU6IHRlc3RfbmFtZT0gNDIgbXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0ZpbmlzaGVkOiAwLjEgcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnJywgJyddKQotICAgICAgICAgICAgaWYgcmVzdWx0c19zaG93bjoKLSAgICAg
ICAgICAgICAgICBleHBlY3RlZF9sb2dzICs9ICdNT0NLOiB1c2VyLm9wZW5fdXJsOiBmaWxlOi8v
Li4uXG4nCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubm9ybWFsaXplRmluaXNo
ZWRUaW1lKGxvZ3MpLCBleHBlY3RlZF9sb2dzKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dXBsb2FkZWRbMF0sIHVwbG9hZF9zdWNlZWRzKQotCi0gICAgICAgIHJldHVybiBsb2dzCi0KLSAg
ICBfZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRzID0gewotICAgICAg
ICAiQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIiOiB7Im1heCI6IDE1MTAsICJhdmciOiAx
NDg5LjA1LCAibWVkaWFuIjogMTQ4NywgIm1pbiI6IDE0NzEsICJzdGRldiI6IDE0LjQ2LCAidW5p
dCI6ICJtcyIsCi0gICAgICAgICAgICJ2YWx1ZXMiOiBbMTUwNCwgMTUwNSwgMTUxMCwgMTUwNCwg
MTUwNywgMTUwOSwgMTUxMCwgMTQ4NywgMTQ4OCwgMTQ3MiwgMTQ3MiwgMTQ4OCwgMTQ3MywgMTQ3
MiwgMTQ3NSwgMTQ4NywgMTQ4NiwgMTQ4NiwgMTQ3NSwgMTQ3MV19LAotICAgICAgICAiaW5zcGVj
dG9yL3Bhc3MuaHRtbDpncm91cF9uYW1lOnRlc3RfbmFtZSI6IDQyfQotCi0gICAgZGVmIHRlc3Rf
cnVuX3dpdGhfanNvbl9vdXRwdXQoc2VsZik6Ci0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYu
Y3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdzPVsnLS1vdXRwdXQt
anNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKLSAgICAgICAgICAgICctLXRl
c3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0J10pCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dp
dGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2Vl
ZHM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIubG9hZF9vdXRwdXRfanNv
bigpLCBbewotICAgICAgICAgICAgInRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBz
ZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCi0gICAgICAg
ICAgICAid2Via2l0LXJldmlzaW9uIjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayJ9
XSkKLQotICAgICAgICBmaWxlc3lzdGVtID0gcG9ydC5ob3N0LmZpbGVzeXN0ZW0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGZpbGVzeXN0ZW0uaXNmaWxlKHJ1bm5lci5fb3V0cHV0X2pzb25fcGF0
aCgpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVzeXN0ZW0uaXNmaWxlKGZpbGVzeXN0
ZW0uc3BsaXRleHQocnVubmVyLl9vdXRwdXRfanNvbl9wYXRoKCkpWzBdICsgJy5odG1sJykpCi0K
LSAgICBkZWYgdGVzdF9ydW5fd2l0aF9kZXNjcmlwdGlvbihzZWxmKToKLSAgICAgICAgcnVubmVy
LCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFy
Z3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLAotICAg
ICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21lLmhvc3QnLCAnLS1kZXNjcmlwdGlv
bicsICdzb21lIGRlc2NyaXB0aW9uJ10pCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNv
bl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9VHJ1
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIubG9hZF9vdXRwdXRfanNvbigpLCBb
ewotICAgICAgICAgICAgInRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgImRlc2NyaXB0aW9uIjogInNv
bWUgZGVzY3JpcHRpb24iLAotICAgICAgICAgICAgInJlc3VsdHMiOiBzZWxmLl9ldmVudF90YXJn
ZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCi0gICAgICAgICAgICAid2Via2l0LXJl
dmlzaW9uIjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayJ9XSkKLQotICAgIGRlZiBj
cmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKHNlbGYsIGFyZ3M9W10pOgot
ICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYXJncykKLSAgICAgICAg
ZmlsZXN5c3RlbSA9IHBvcnQuaG9zdC5maWxlc3lzdGVtCi0gICAgICAgIGZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKHJ1bm5lci5fYmFzZV9wYXRoICsgJy9yZXNvdXJjZXMvcmVzdWx0cy10ZW1w
bGF0ZS5odG1sJywKLSAgICAgICAgICAgICdCRUdJTjxzY3JpcHQgc3JjPSIlQWJzb2x1dGVQYXRo
VG9XZWJLaXRUcnVuayUvc29tZS5qcyI+PC9zY3JpcHQ+JwotICAgICAgICAgICAgJzxzY3JpcHQg
c3JjPSIlQWJzb2x1dGVQYXRoVG9XZWJLaXRUcnVuayUvb3RoZXIuanMiPjwvc2NyaXB0PjxzY3Jp
cHQ+JVBlZm9ybWFuY2VUZXN0c1Jlc3VsdHNKU09OJTwvc2NyaXB0PkVORCcpCi0gICAgICAgIGZp
bGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5lci5fYmFzZV9wYXRoICsgJy9Ecm9tYWVvL3Jl
c291cmNlcy9kcm9tYWVvL3dlYi9saWIvanF1ZXJ5LTEuNi40LmpzJywgJ2pxdWVyeSBjb250ZW50
JykKLSAgICAgICAgcmV0dXJuIHJ1bm5lciwgcG9ydAotCi0gICAgZGVmIHRlc3RfcnVuX3Jlc3Bl
Y3RzX25vX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRl
X3J1bm5lcihhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5q
c29uJywKLSAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0JywgJy0t
bm8tcmVzdWx0cyddKQotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1
bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPUZhbHNlLCByZXN1bHRz
X3Nob3duPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuaG9zdC5maWxlc3lz
dGVtLmlzZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nKSkKLQotICAgIGRlZiB0ZXN0
X3J1bl9nZW5lcmF0ZXNfanNvbl9ieV9kZWZhdWx0KHNlbGYpOgotICAgICAgICBydW5uZXIsIHBv
cnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoKQotICAg
ICAgICBmaWxlc3lzdGVtID0gcG9ydC5ob3N0LmZpbGVzeXN0ZW0KLSAgICAgICAgb3V0cHV0X2pz
b25fcGF0aCA9IHJ1bm5lci5fb3V0cHV0X2pzb25fcGF0aCgpCi0gICAgICAgIHJlc3VsdHNfcGFn
ZV9wYXRoID0gZmlsZXN5c3RlbS5zcGxpdGV4dChvdXRwdXRfanNvbl9wYXRoKVswXSArICcuaHRt
bCcKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbGVzeXN0ZW0uaXNmaWxlKG91dHB1dF9q
c29uX3BhdGgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbGVzeXN0ZW0uaXNmaWxlKHJl
c3VsdHNfcGFnZV9wYXRoKSkKLQotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0
cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0pCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChqc29uLmxvYWRzKHBvcnQuaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG91dHB1
dF9qc29uX3BhdGgpKSwgW3sKLSAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJy
ZXN1bHRzIjogc2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBwZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRz
LAotICAgICAgICAgICAgIndlYmtpdC1yZXZpc2lvbiI6ICI1Njc4IiwgImJyYW5jaCI6ICJ3ZWJr
aXQtdHJ1bmsifV0pCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVzeXN0ZW0uaXNmaWxl
KG91dHB1dF9qc29uX3BhdGgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXN5c3RlbS5p
c2ZpbGUocmVzdWx0c19wYWdlX3BhdGgpKQotCi0gICAgZGVmIHRlc3RfcnVuX21lcmdlc19vdXRw
dXRfYnlfZGVmYXVsdChzZWxmKToKLSAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVf
cnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKCkKLSAgICAgICAgZmlsZXN5c3RlbSA9
IHBvcnQuaG9zdC5maWxlc3lzdGVtCi0gICAgICAgIG91dHB1dF9qc29uX3BhdGggPSBydW5uZXIu
X291dHB1dF9qc29uX3BhdGgoKQotCi0gICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KG91dHB1dF9qc29uX3BhdGgsICdbeyJwcmV2aW91cyI6ICJyZXN1bHRzIn1dJykKLQotICAgICAg
ICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVz
eXN0ZW0pCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKHBvcnQuaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG91dHB1dF9qc29uX3BhdGgpKSwgW3sicHJldmlvdXMi
OiAicmVzdWx0cyJ9LCB7Ci0gICAgICAgICAgICAidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVz
dWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywK
LSAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0
LXRydW5rIn1dKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXN5c3RlbS5pc2ZpbGUoZmls
ZXN5c3RlbS5zcGxpdGV4dChvdXRwdXRfanNvbl9wYXRoKVswXSArICcuaHRtbCcpKQotCi0gICAg
ZGVmIHRlc3RfcnVuX3Jlc3BlY3RzX3Jlc2V0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIHJ1bm5l
ciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShh
cmdzPVsiLS1yZXNldC1yZXN1bHRzIl0pCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3Qu
ZmlsZXN5c3RlbQotICAgICAgICBvdXRwdXRfanNvbl9wYXRoID0gcnVubmVyLl9vdXRwdXRfanNv
bl9wYXRoKCkKLQotICAgICAgICBmaWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvdXRwdXRfanNv
bl9wYXRoLCAnW3sicHJldmlvdXMiOiAicmVzdWx0cyJ9XScpCi0KLSAgICAgICAgc2VsZi5fdGVz
dF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5y
ZWFkX3RleHRfZmlsZShvdXRwdXRfanNvbl9wYXRoKSksIFt7Ci0gICAgICAgICAgICAidGltZXN0
YW1wIjogMTIzNDU2Nzg5LCAicmVzdWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2Fu
ZF9pbnNwZWN0b3JfcmVzdWx0cywKLSAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24iOiAiNTY3
OCIsICJicmFuY2giOiAid2Via2l0LXRydW5rIn1dKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZmlsZXN5c3RlbS5pc2ZpbGUoZmlsZXN5c3RlbS5zcGxpdGV4dChvdXRwdXRfanNvbl9wYXRoKVsw
XSArICcuaHRtbCcpKQotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9ydW5fZ2VuZXJhdGVz
X2FuZF9zaG93X3Jlc3VsdHNfcGFnZShzZWxmKToKLSAgICAgICAgcnVubmVyLCBwb3J0ID0gc2Vs
Zi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1
dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nXSkKLSAgICAgICAgcGFnZV9z
aG93biA9IFtdCi0gICAgICAgIHBvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZSA9IGxhbWJkYSBw
YXRoOiBwYWdlX3Nob3duLmFwcGVuZChwYXRoKQotICAgICAgICBmaWxlc3lzdGVtID0gcG9ydC5o
b3N0LmZpbGVzeXN0ZW0KLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChy
dW5uZXIsIGZpbGVzeXN0ZW0sIHJlc3VsdHNfc2hvd249RmFsc2UpCi0KLSAgICAgICAgZXhwZWN0
ZWRfZW50cnkgPSB7InRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxmLl9ldmVu
dF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCi0gICAgICAgICAgICAid2Vi
a2l0LXJldmlzaW9uIjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayJ9Ci0KLSAgICAg
ICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBqc29uX291dHB1dCA9IHBvcnQuaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9vdXRwdXQuanNvbicpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2Fkcyhqc29uX291dHB1dCksIFtleHBlY3Rl
ZF9lbnRyeV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5yZWFkX3RleHRf
ZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmh0bWwnKSwKLSAgICAgICAgICAgICdCRUdJTjxz
Y3JpcHQgc3JjPSIvdGVzdC5jaGVja291dC9zb21lLmpzIj48L3NjcmlwdD48c2NyaXB0IHNyYz0i
L3Rlc3QuY2hlY2tvdXQvb3RoZXIuanMiPjwvc2NyaXB0PicKLSAgICAgICAgICAgICc8c2NyaXB0
PiVzPC9zY3JpcHQ+RU5EJyAlIGpzb25fb3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhZ2Vfc2hvd25bMF0sICcvbW9jay1jaGVja291dC9vdXRwdXQuaHRtbCcpCi0KLSAgICAgICAg
c2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIGZpbGVzeXN0ZW0sIHJlc3Vs
dHNfc2hvd249RmFsc2UpCi0gICAgICAgIGpzb25fb3V0cHV0ID0gcG9ydC5ob3N0LmZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKGpzb25fb3V0cHV0KSwgW2V4cGVjdGVkX2VudHJ5
LCBleHBlY3RlZF9lbnRyeV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5y
ZWFkX3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmh0bWwnKSwKLSAgICAgICAgICAg
ICdCRUdJTjxzY3JpcHQgc3JjPSIvdGVzdC5jaGVja291dC9zb21lLmpzIj48L3NjcmlwdD48c2Ny
aXB0IHNyYz0iL3Rlc3QuY2hlY2tvdXQvb3RoZXIuanMiPjwvc2NyaXB0PicKLSAgICAgICAgICAg
ICc8c2NyaXB0PiVzPC9zY3JpcHQ+RU5EJyAlIGpzb25fb3V0cHV0KQotCi0gICAgZGVmIHRlc3Rf
cnVuX3Jlc3BlY3RzX25vX3Nob3dfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgc2hvd19yZXN1bHRz
X2h0bWxfZmlsZSA9IGxhbWJkYSBwYXRoOiBwYWdlX3Nob3duLmFwcGVuZChwYXRoKQotCi0gICAg
ICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190
ZW1wbGF0ZShhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5q
c29uJ10pCi0gICAgICAgIHBhZ2Vfc2hvd24gPSBbXQotICAgICAgICBwb3J0LnNob3dfcmVzdWx0
c19odG1sX2ZpbGUgPSBzaG93X3Jlc3VsdHNfaHRtbF9maWxlCi0gICAgICAgIHNlbGYuX3Rlc3Rf
cnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgcmVzdWx0
c19zaG93bj1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWdlX3Nob3duWzBdLCAn
L21vY2stY2hlY2tvdXQvb3V0cHV0Lmh0bWwnKQotCi0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNl
bGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdzPVsnLS1vdXRw
dXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKLSAgICAgICAgICAgICct
LW5vLXNob3ctcmVzdWx0cyddKQotICAgICAgICBwYWdlX3Nob3duID0gW10KLSAgICAgICAgcG9y
dC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlID0gc2hvd19yZXN1bHRzX2h0bWxfZmlsZQotICAgICAg
ICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVz
eXN0ZW0sIHJlc3VsdHNfc2hvd249RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFn
ZV9zaG93biwgW10pCi0KLSAgICBkZWYgdGVzdF9ydW5fd2l0aF9iYWRfb3V0cHV0X2pzb24oc2Vs
Zik6Ci0gICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBf
cmVzdWx0c190ZW1wbGF0ZShhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0
L291dHB1dC5qc29uJ10pCi0gICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLCAnYmFkIGpzb24nKQotICAgICAgICBz
ZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0
ZW0sIGV4cGVjdGVkX2V4aXRfY29kZT1QZXJmVGVzdHNSdW5uZXIuRVhJVF9DT0RFX0JBRF9NRVJH
RSkKLSAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1j
aGVja291dC9vdXRwdXQuanNvbicsICd7ImFub3RoZXIgYmFkIGpzb24iOiAiMSJ9JykKLSAgICAg
ICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxl
c3lzdGVtLCBleHBlY3RlZF9leGl0X2NvZGU9UGVyZlRlc3RzUnVubmVyLkVYSVRfQ09ERV9CQURf
TUVSR0UpCi0KLSAgICBkZWYgdGVzdF9ydW5fd2l0aF9zbGF2ZV9jb25maWdfanNvbihzZWxmKToK
LSAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1
bHRzX3RlbXBsYXRlKGFyZ3M9WyctLW91dHB1dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0
cHV0Lmpzb24nLAotICAgICAgICAgICAgJy0tc2xhdmUtY29uZmlnLWpzb24tcGF0aD0vbW9jay1j
aGVja291dC9zbGF2ZS1jb25maWcuanNvbicsICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5o
b3N0J10pCi0gICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21v
Y2stY2hlY2tvdXQvc2xhdmUtY29uZmlnLmpzb24nLCAneyJrZXkiOiAidmFsdWUifScpCi0gICAg
ICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmls
ZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
dW5uZXIubG9hZF9vdXRwdXRfanNvbigpLCBbewotICAgICAgICAgICAgInRpbWVzdGFtcCI6IDEy
MzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVj
dG9yX3Jlc3VsdHMsCi0gICAgICAgICAgICAid2Via2l0LXJldmlzaW9uIjogIjU2NzgiLCAiYnJh
bmNoIjogIndlYmtpdC10cnVuayIsICJrZXkiOiAidmFsdWUifV0pCi0KLSAgICBkZWYgdGVzdF9y
dW5fd2l0aF9iYWRfc2xhdmVfY29uZmlnX2pzb24oc2VsZik6Ci0gICAgICAgIHJ1bm5lciwgcG9y
dCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0ZShhcmdzPVsn
LS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKLSAgICAgICAg
ICAgICctLXNsYXZlLWNvbmZpZy1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvc2xhdmUtY29uZmln
Lmpzb24nLCAnLS10ZXN0LXJlc3VsdHMtc2VydmVyPXNvbWUuaG9zdCddKQotICAgICAgICBsb2dz
ID0gc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxl
c3lzdGVtLCBleHBlY3RlZF9leGl0X2NvZGU9UGVyZlRlc3RzUnVubmVyLkVYSVRfQ09ERV9CQURf
U09VUkNFX0pTT04pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnTWlzc2luZyBzbGF2ZSBjb25m
aWd1cmF0aW9uIEpTT04gZmlsZTogL21vY2stY2hlY2tvdXQvc2xhdmUtY29uZmlnLmpzb24nIGlu
IGxvZ3MpCi0gICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21v
Y2stY2hlY2tvdXQvc2xhdmUtY29uZmlnLmpzb24nLCAnYmFkIGpzb24nKQotICAgICAgICBzZWxm
Ll90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0s
IGV4cGVjdGVkX2V4aXRfY29kZT1QZXJmVGVzdHNSdW5uZXIuRVhJVF9DT0RFX0JBRF9TT1VSQ0Vf
SlNPTikKLSAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9j
ay1jaGVja291dC9zbGF2ZS1jb25maWcuanNvbicsICdbImFub3RoZXIgYmFkIGpzb24iXScpCi0g
ICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3Qu
ZmlsZXN5c3RlbSwgZXhwZWN0ZWRfZXhpdF9jb2RlPVBlcmZUZXN0c1J1bm5lci5FWElUX0NPREVf
QkFEX1NPVVJDRV9KU09OKQotCi0gICAgZGVmIHRlc3RfcnVuX3dpdGhfbXVsdGlwbGVfcmVwb3Np
dG9yaWVzKHNlbGYpOgotICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXJf
YW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0vbW9j
ay1jaGVja291dC9vdXRwdXQuanNvbicsCi0gICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMtc2Vy
dmVyPXNvbWUuaG9zdCddKQotICAgICAgICBwb3J0LnJlcG9zaXRvcnlfcGF0aHMgPSBsYW1iZGE6
IFsoJ3dlYmtpdCcsICcvbW9jay1jaGVja291dCcpLCAoJ3NvbWUnLCAnL21vY2stY2hlY2tvdXQv
c29tZScpXQotICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwg
cG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHVwbG9hZF9zdWNlZWRzPVRydWUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocnVubmVyLmxvYWRfb3V0cHV0X2pzb24oKSwgW3sKLSAgICAgICAgICAgICJ0
aW1lc3RhbXAiOiAxMjM0NTY3ODksICJyZXN1bHRzIjogc2VsZi5fZXZlbnRfdGFyZ2V0X3dyYXBw
ZXJfYW5kX2luc3BlY3Rvcl9yZXN1bHRzLAotICAgICAgICAgICAgIndlYmtpdC1yZXZpc2lvbiI6
ICI1Njc4IiwgInNvbWUtcmV2aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0LXRydW5r
In1dKQotCi0gICAgZGVmIHRlc3RfcnVuX3dpdGhfdXBsb2FkX2pzb24oc2VsZik6Ci0gICAgICAg
IHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1w
bGF0ZShhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29u
JywKLSAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXInLCAnc29tZS5ob3N0JywgJy0t
cGxhdGZvcm0nLCAncGxhdGZvcm0xJywgJy0tYnVpbGRlci1uYW1lJywgJ2J1aWxkZXIxJywgJy0t
YnVpbGQtbnVtYmVyJywgJzEyMyddKQotCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVuX3dpdGhfanNv
bl9vdXRwdXQocnVubmVyLCBwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgdXBsb2FkX3N1Y2VlZHM9VHJ1
ZSkKLSAgICAgICAgZ2VuZXJhdGVkX2pzb24gPSBqc29uLmxvYWRzKHBvcnQuaG9zdC5maWxlc3lz
dGVtLmZpbGVzWycvbW9jay1jaGVja291dC9vdXRwdXQuanNvbiddKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGdlbmVyYXRlZF9qc29uWzBdWydwbGF0Zm9ybSddLCAncGxhdGZvcm0xJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5lcmF0ZWRfanNvblswXVsnYnVpbGRlci1uYW1lJ10s
ICdidWlsZGVyMScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuZXJhdGVkX2pzb25bMF1b
J2J1aWxkLW51bWJlciddLCAxMjMpCi0KLSAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29u
X291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1GYWxz
ZSwgZXhwZWN0ZWRfZXhpdF9jb2RlPVBlcmZUZXN0c1J1bm5lci5FWElUX0NPREVfRkFJTEVEX1VQ
TE9BRElORykKLQotICAgIGRlZiB0ZXN0X3VwbG9hZF9qc29uKHNlbGYpOgotICAgICAgICBydW5u
ZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoKQotICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5
c3RlbS5maWxlc1snL21vY2stY2hlY2tvdXQvc29tZS5qc29uJ10gPSAnc29tZSBjb250ZW50Jwot
Ci0gICAgICAgIGNhbGxlZCA9IFtdCi0gICAgICAgIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxlX3Ro
cm93cyA9IEZhbHNlCi0gICAgICAgIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxlX3JldHVybl92YWx1
ZSA9IFN0cmluZ0lPLlN0cmluZ0lPKCdPSycpCi0KLSAgICAgICAgY2xhc3MgTW9ja0ZpbGVVcGxv
YWRlcjoKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhtb2NrLCB1cmwsIHRpbWVvdXQpOgotICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJsLCAnaHR0cHM6Ly9zb21lLmhvc3QvYXBp
L3Rlc3QvcmVwb3J0JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5j
ZSh0aW1lb3V0LCBpbnQpIGFuZCB0aW1lb3V0KQotICAgICAgICAgICAgICAgIGNhbGxlZC5hcHBl
bmQoJ0ZpbGVVcGxvYWRlcicpCi0KLSAgICAgICAgICAgIGRlZiB1cGxvYWRfc2luZ2xlX3RleHRf
ZmlsZShtb2NrLCBmaWxlc3lzdGVtLCBjb250ZW50X3R5cGUsIGZpbGVuYW1lKToKLSAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0sIHBvcnQuaG9zdC5maWxlc3lzdGVt
KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF90eXBlLCAnYXBwbGlj
YXRpb24vanNvbicpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbmFtZSwg
J3NvbWUuanNvbicpCi0gICAgICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgndXBsb2FkX3Npbmds
ZV90ZXh0X2ZpbGUnKQotICAgICAgICAgICAgICAgIGlmIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxl
X3Rocm93czoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlNvbWUgZXhjZXB0aW9uIgotICAg
ICAgICAgICAgICAgIHJldHVybiB1cGxvYWRfc2luZ2xlX3RleHRfZmlsZV9yZXR1cm5fdmFsdWUK
LQotICAgICAgICBydW5uZXIuX3VwbG9hZF9qc29uKCdzb21lLmhvc3QnLCAnc29tZS5qc29uJywg
TW9ja0ZpbGVVcGxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsZWQsIFsnRmls
ZVVwbG9hZGVyJywgJ3VwbG9hZF9zaW5nbGVfdGV4dF9maWxlJ10pCi0KLSAgICAgICAgb3V0cHV0
ID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dC5jYXB0dXJlX291dHB1dCgpCi0gICAg
ICAgIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxlX3JldHVybl92YWx1ZSA9IFN0cmluZ0lPLlN0cmlu
Z0lPKCdTb21lIGVycm9yJykKLSAgICAgICAgcnVubmVyLl91cGxvYWRfanNvbignc29tZS5ob3N0
JywgJ3NvbWUuanNvbicsIE1vY2tGaWxlVXBsb2FkZXIpCi0gICAgICAgIF8sIF8sIGxvZ3MgPSBv
dXRwdXQucmVzdG9yZV9vdXRwdXQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ3MsICdV
cGxvYWRlZCBKU09OIGJ1dCBnb3QgYSBiYWQgcmVzcG9uc2U6XG5Tb21lIGVycm9yXG4nKQotCi0g
ICAgICAgICMgVGhyb3dpbmcgYW4gZXhjZXB0aW9uIHVwbG9hZF9zaW5nbGVfdGV4dF9maWxlIHNo
b3VsZG4ndCBibG93IHVwIF91cGxvYWRfanNvbgotICAgICAgICBjYWxsZWQgPSBbXQotICAgICAg
ICB1cGxvYWRfc2luZ2xlX3RleHRfZmlsZV90aHJvd3MgPSBUcnVlCi0gICAgICAgIHJ1bm5lci5f
dXBsb2FkX2pzb24oJ3NvbWUuaG9zdCcsICdzb21lLmpzb24nLCBNb2NrRmlsZVVwbG9hZGVyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxlZCwgWydGaWxlVXBsb2FkZXInLCAndXBsb2Fk
X3NpbmdsZV90ZXh0X2ZpbGUnXSkKLQogICAgIGRlZiBfYWRkX2ZpbGUoc2VsZiwgcnVubmVyLCBk
aXJuYW1lLCBmaWxlbmFtZSwgY29udGVudD1UcnVlKToKICAgICAgICAgZGlybmFtZSA9IHJ1bm5l
ci5faG9zdC5maWxlc3lzdGVtLmpvaW4ocnVubmVyLl9iYXNlX3BhdGgsIGRpcm5hbWUpIGlmIGRp
cm5hbWUgZWxzZSBydW5uZXIuX2Jhc2VfcGF0aAogICAgICAgICBydW5uZXIuX2hvc3QuZmlsZXN5
c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShkaXJuYW1lKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>