<?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>58754</bug_id>
          
          <creation_ts>2011-04-17 16:33:24 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: obsolete old code, part 3 - rename test_runner to manager</short_desc>
          <delta_ts>2011-04-21 20:27:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>58753</dependson>
          <blocked>58756</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>387457</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 16:33:24 -0700</bug_when>
    <thetext>new-run-webkit-tests: obsolete old code, part 3 - rename test_runner to manager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387459</commentid>
    <comment_count>1</comment_count>
      <attachid>89970</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 16:37:58 -0700</bug_when>
    <thetext>Created attachment 89970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387468</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 16:58:30 -0700</bug_when>
    <thetext>This is all cut&amp;paste, there should be no real changes here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387470</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 16:59:42 -0700</bug_when>
    <thetext>Oh, and for reasons I don&apos;t understand (a bug?) webkit-patch and/or pretty-diff are not picking up on test_runner.py being renamed to manager.py, so imagine that is happening in the diff (for both test_runner and test_runner_unittest).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387479</commentid>
    <comment_count>4</comment_count>
      <attachid>89977</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 17:19:01 -0700</bug_when>
    <thetext>Created attachment 89977
add raw patch to pick up the rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387480</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 17:19:40 -0700</bug_when>
    <thetext>Okay, I&apos;ve posted the raw git diff, which appears to be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387483</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-17 17:43:28 -0700</bug_when>
    <thetext>This may be the changed_files optimization in webkit-patch biting us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388547</commentid>
    <comment_count>7</comment_count>
      <attachid>89977</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-19 09:29:08 -0700</bug_when>
    <thetext>Comment on attachment 89977
add raw patch to pick up the rename

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390564</commentid>
    <comment_count>8</comment_count>
      <attachid>90656</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-21 20:13:37 -0700</bug_when>
    <thetext>Created attachment 90656
rebase to HEAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390571</commentid>
    <comment_count>9</comment_count>
      <attachid>90658</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-21 20:19:53 -0700</bug_when>
    <thetext>Created attachment 90658
raw git diff of patch, to pick up the rename, rebased to HEAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390573</commentid>
    <comment_count>10</comment_count>
      <attachid>90660</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-21 20:24:38 -0700</bug_when>
    <thetext>Created attachment 90660
try again with the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390575</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-21 20:27:00 -0700</bug_when>
    <thetext>Committed r84594: &lt;http://trac.webkit.org/changeset/84594&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89970</attachid>
            <date>2011-04-17 16:37:58 -0700</date>
            <delta_ts>2011-04-17 17:19:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58754-20110417163756.patch</filename>
            <type>text/plain</type>
            <size>6201</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYmQ4NTA4NTQyNDYwNzNlYzcxM2VkMDg4Yzc1MTlhODg4
MGI4MDdiLi5hYjZhYTVmNzQ5ZDI0YzcxNzAzZjFmOTEzMTY2NWUzOTViNTM3OWRmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjUg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBuZXct
cnVuLXdlYmtpdC10ZXN0czogb2Jzb2xldGUgb2xkIGNvZGUsIHBhcnQgMyAtIHJlbmFtZSB0ZXN0
X3J1bm5lciB0byBtYW5hZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01ODc1NAorCisgICAgICAgIHRlc3RfcnVubmVyIGhhc24ndCBiZWVuIGEgZ3Jl
YXQgbmFtZSBmb3Igc29tZSB0aW1lLCBzaW5jZSBhbGwgb2YKKyAgICAgICAgdGhlIHRlc3QgcnVu
bmluZyBpcyBhY3R1YWxseSBkb25lIGluIHdvcmtlciBhbmQKKyAgICAgICAgc2luZ2xlX3Rlc3Rf
cnVubmVyLiBSZW5hbWUgdG8gbWFuYWdlciB0byBtYXRjaCB0aGUgdGVybWlub2xvZ3kKKyAgICAg
ICAgZWxzZXdoZXJlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91bml0dGVzdC5weTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvcHJpbnRpbmdfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHk6IFJlbW92ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5u
ZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKworMjAxMS0wNC0xNyAgRGlyayBQcmFua2Ug
IDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKwogICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogb2Jzb2xldGUgb2xkIHRocmVh
ZGluZyBjb2RlLCBwYXJ0IDIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4NzUzCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRl
c3QucHkKaW5kZXggOGY2M2VkZDg5NDE4MjU2NmI3OTcxMmQxNmIzODYzYjY1ZWE1ZmY5MC4uMGVh
ODc5MTEzNWFiZjY3MWRkZmRlNTE3OWQxNDQ2NDQzYzE2MTUxNyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKQEAgLTM3LDEyICszNywxMiBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9y
dCBwb3J0CiAKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9y
dCBtYW5hZ2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQgcHJpbnRpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGlt
cG9ydCByZXN1bHRfc3VtbWFyeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwotZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcnVubmVyCiAKIAogZGVm
IGdldF9vcHRpb25zKGFyZ3MpOgpAQCAtNTEzLDcgKzUxMyw3IEBAIGNsYXNzICBUZXN0cHJpbnRl
cih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0
X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcpLCBUcnVlKQogICAgICAgICAgICAgICAgIHJldHJ5
LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcpLCBU
cnVlKQogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVz
L2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwgVHJ1ZSkKLSAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVz
dWx0cyA9IHRlc3RfcnVubmVyLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIGV4cCwgcnMs
IHJldHJ5LCB0ZXN0X3RpbWluZ3M9e30sIG9ubHlfdW5leHBlY3RlZD1UcnVlKQorICAgICAgICAg
ICAgdW5leHBlY3RlZF9yZXN1bHRzID0gbWFuYWdlci5zdW1tYXJpemVfcmVzdWx0cyhzZWxmLl9w
b3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90aW1pbmdzPXt9LCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1
ZSkKICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHMKIAogICAgICAgICB0ZXN0
cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwn
LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkKaW5kZXggNzFmZjRkODA4ZTNlMTA1YmRjMTNjZWUwYzU1NGYyYWVlMjAy
MjI2Ni4uMTBmNzc5NWU4Yzg4MzBmNmQ1MGI5MjY5M2Y0MzliZDA1MDEyZmFlNSAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzLnB5CkBAIC0zNywxNSArMzcsMTQgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCiBpbXBv
cnQgc3lzCiAKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0
b3IKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCi1mcm9tIGxheW91dF9wYWNr
YWdlIGltcG9ydCB0ZXN0X3J1bm5lcgotCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1w
b3J0IHVzZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBsYXlvdXRfcGFja2Fn
ZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9y
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWFuYWdl
cgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50
aW5nCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IHNpbXBsZWpzb24KIAotaW1wb3J0
IHBvcnQKLQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTg4LDMy
ICs4NywzMiBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5
cy5zdGRlcnIsCiAgICAgIyBpbiBhIHRyeS9maW5hbGx5IHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFu
IHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uCiAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0
cyA9IC0xCiAgICAgdHJ5OgotICAgICAgICBydW5uZXIgPSB0ZXN0X3J1bm5lci5UZXN0UnVubmVy
KHBvcnQsIG9wdGlvbnMsIHByaW50ZXIpCi0gICAgICAgIHJ1bm5lci5fcHJpbnRfY29uZmlnKCkK
KyAgICAgICAgbWFuYWdlciA9IGxheW91dF9wYWNrYWdlLm1hbmFnZXIuTWFuYWdlcihwb3J0LCBv
cHRpb25zLCBwcmludGVyKQorICAgICAgICBtYW5hZ2VyLl9wcmludF9jb25maWcoKQogCiAgICAg
ICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJDb2xsZWN0aW5nIHRlc3RzIC4uLiIpCiAgICAgICAg
IHRyeToKLSAgICAgICAgICAgIHJ1bm5lci5jb2xsZWN0X3Rlc3RzKGFyZ3MsIGxhc3RfdW5leHBl
Y3RlZF9yZXN1bHRzKQorICAgICAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3RzKGFyZ3MsIGxh
c3RfdW5leHBlY3RlZF9yZXN1bHRzKQogICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKICAgICAg
ICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgIHJldHVy
biAtMQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9m
aWxlczoKLSAgICAgICAgICAgIHJldHVybiBydW5uZXIubGludCgpCisgICAgICAgICAgICByZXR1
cm4gbWFuYWdlci5saW50KCkKIAogICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiUGFyc2lu
ZyBleHBlY3RhdGlvbnMgLi4uIikKLSAgICAgICAgcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucygp
CisgICAgICAgIG1hbmFnZXIucGFyc2VfZXhwZWN0YXRpb25zKCkKIAogICAgICAgICBwcmludGVy
LnByaW50X3VwZGF0ZSgiQ2hlY2tpbmcgYnVpbGQgLi4uIikKLSAgICAgICAgaWYgbm90IHBvcnQu
Y2hlY2tfYnVpbGQocnVubmVyLm5lZWRzX2h0dHAoKSk6CisgICAgICAgIGlmIG5vdCBwb3J0LmNo
ZWNrX2J1aWxkKG1hbmFnZXIubmVlZHNfaHR0cCgpKToKICAgICAgICAgICAgIF9sb2cuZXJyb3Io
IkJ1aWxkIGNoZWNrIGZhaWxlZCIpCiAgICAgICAgICAgICByZXR1cm4gLTEKIAotICAgICAgICBy
ZXN1bHRfc3VtbWFyeSA9IHJ1bm5lci5zZXRfdXBfcnVuKCkKKyAgICAgICAgcmVzdWx0X3N1bW1h
cnkgPSBtYW5hZ2VyLnNldF91cF9ydW4oKQogICAgICAgICBpZiByZXN1bHRfc3VtbWFyeToKLSAg
ICAgICAgICAgIG51bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSBydW5uZXIucnVuKHJlc3VsdF9zdW1t
YXJ5KQotICAgICAgICAgICAgcnVubmVyLmNsZWFuX3VwX3J1bigpCisgICAgICAgICAgICBudW1f
dW5leHBlY3RlZF9yZXN1bHRzID0gbWFuYWdlci5ydW4ocmVzdWx0X3N1bW1hcnkpCisgICAgICAg
ICAgICBtYW5hZ2VyLmNsZWFuX3VwX3J1bigpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCJUZXN0
aW5nIGNvbXBsZXRlZCwgRXhpdCBzdGF0dXM6ICVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAg
IG51bV91bmV4cGVjdGVkX3Jlc3VsdHMpCiAgICAgZmluYWxseToKQEAgLTE0OSw5ICsxNDgsOSBA
QCBkZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydF9vYmosIG9wdGlvbnMpOgogCiAgICAg
aWYgbm90IG9wdGlvbnMudGltZV9vdXRfbXM6CiAgICAgICAgIGlmIG9wdGlvbnMuY29uZmlndXJh
dGlvbiA9PSAiRGVidWciOgotICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cigy
ICogdGVzdF9ydW5uZXIuVGVzdFJ1bm5lci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykKKyAgICAg
ICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIoMiAqIG1hbmFnZXIuTWFuYWdlci5ERUZB
VUxUX1RFU1RfVElNRU9VVF9NUykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wdGlvbnMu
dGltZV9vdXRfbXMgPSBzdHIodGVzdF9ydW5uZXIuVGVzdFJ1bm5lci5ERUZBVUxUX1RFU1RfVElN
RU9VVF9NUykKKyAgICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIobWFuYWdlci5N
YW5hZ2VyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQogCiAgICAgb3B0aW9ucy5zbG93X3RpbWVf
b3V0X21zID0gc3RyKDUgKiBpbnQob3B0aW9ucy50aW1lX291dF9tcykpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89977</attachid>
            <date>2011-04-17 17:19:01 -0700</date>
            <delta_ts>2011-04-21 20:13:33 -0700</delta_ts>
            <desc>add raw patch to pick up the rename</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>134869</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYmQ4
NTA4Li5hYjZhYTVmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0yLDYgKzIsMjUgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KIAorICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogb2Jzb2xldGUgb2xkIGNvZGUs
IHBhcnQgMyAtIHJlbmFtZSB0ZXN0X3J1bm5lciB0byBtYW5hZ2VyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc1NAorCisgICAgICAgIHRlc3RfcnVu
bmVyIGhhc24ndCBiZWVuIGEgZ3JlYXQgbmFtZSBmb3Igc29tZSB0aW1lLCBzaW5jZSBhbGwgb2YK
KyAgICAgICAgdGhlIHRlc3QgcnVubmluZyBpcyBhY3R1YWxseSBkb25lIGluIHdvcmtlciBhbmQK
KyAgICAgICAgc2luZ2xlX3Rlc3RfcnVubmVyLiBSZW5hbWUgdG8gbWFuYWdlciB0byBtYXRjaCB0
aGUgdGVybWlub2xvZ3kKKyAgICAgICAgZWxzZXdoZXJlLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIu
cHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKworMjAx
MS0wNC0xNyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0
czogb2Jzb2xldGUgb2xkIHRocmVhZGluZyBjb2RlLCBwYXJ0IDIKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzUzCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5h
Z2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MWRkZmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9tYW5hZ2VyLnB5CkBAIC0wLDAgKzEsMTMzOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3pl
Z2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgor
VGhlIE1hbmFnZXIgY2xhc3MgcnVucyBhIHNlcmllcyBvZiB0ZXN0cyAoVGVzdFR5cGUgaW50ZXJm
YWNlKSBhZ2FpbnN0IGEgc2V0CitvZiB0ZXN0IGZpbGVzLiAgSWYgYSB0ZXN0IGZpbGUgZmFpbHMg
YSBUZXN0VHlwZSwgaXQgcmV0dXJucyBhIGxpc3QgVGVzdEZhaWx1cmUKK29iamVjdHMgdG8gdGhl
IE1hbmFnZXIuICBUaGUgTWFuYWdlciB0aGVuIGFnZ3JlZ2F0ZXMgdGhlIFRlc3RGYWlsdXJlcyB0
bworY3JlYXRlIGEgZmluYWwgcmVwb3J0LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKKworaW1wb3J0IGNvcHkKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCBtYXRoCitpbXBvcnQgUXVldWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGlt
cG9ydCBwcmludGluZworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Ug
aW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxvYWRlcgorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHdvcmtlcgorCitm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS5yZXN1bHRfc3VtbWFyeSBp
bXBvcnQgUmVzdWx0U3VtbWFyeQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0CisKK2Zyb20gd2Via2l0cHkudGhpcmRw
YXJ0eSBpbXBvcnQgc2ltcGxlanNvbgorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBncmFtbWFy
CisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworIyBCdWlsZGVyIGJhc2Ug
VVJMIHdoZXJlIHdlIGhhdmUgdGhlIGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4KK0JVSUxERVJfQkFT
RV9VUkwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJvdC9sYXlvdXRfdGVzdF9y
ZXN1bHRzLyIKKworVGVzdEV4cGVjdGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0
RXhwZWN0YXRpb25zRmlsZQorCisKK2RlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwgZXhw
ZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzdF90aW1pbmdzLCBv
bmx5X3VuZXhwZWN0ZWQpOgorICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBlY3RlZCByZXN1bHRz
IGFzIGEgZGljdC4KKworICAgIEZJWE1FOiBzcGxpdCB0aGlzIGRhdGEgc3RydWN0dXJlIGludG8g
YSBzZXBhcmF0ZSBjbGFzcz8KKworICAgIEFyZ3M6CisgICAgICAgIHBvcnRfb2JqOiBpbnRlcmZh
Y2UgdG8gcG9ydC1zcGVjaWZpYyBob29rcworICAgICAgICBleHBlY3RhdGlvbnM6IHRlc3RfZXhw
ZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMgb2JqZWN0CisgICAgICAgIHJlc3VsdF9zdW1tYXJ5
OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCisgICAgICAgIHJldHJ5X3N1
bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gZmluYWwgdGVzdCBydW4gb2YgcmV0cmllZCB0ZXN0
cworICAgICAgICB0ZXN0X3RpbWluZ3M6IGEgbGlzdCBvZiBUZXN0UmVzdWx0IG9iamVjdHMgd2hp
Y2ggY29udGFpbiB0ZXN0IHJ1bnRpbWVzIGluIHNlY29uZHMKKyAgICAgICAgb25seV91bmV4cGVj
dGVkOiB3aGV0aGVyIHRvIHJldHVybiBhIHN1bW1hcnkgb25seSBmb3IgdGhlIHVuZXhwZWN0ZWQg
cmVzdWx0cworICAgIFJldHVybnM6CisgICAgICAgIEEgZGljdGlvbmFyeSBjb250YWluaW5nIGEg
c3VtbWFyeSBvZiB0aGUgdW5leHBlY3RlZCByZXN1bHRzIGZyb20gdGhlCisgICAgICAgIHJ1biwg
d2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKKyAgICAgICAgJ3ZlcnNpb24nOiBhIHZlcnNpb24g
aW5kaWNhdG9yICgxIGluIHRoaXMgdmVyc2lvbikKKyAgICAgICAgJ2ZpeGFibGUnOiAjIG9mIGZp
eGFibGUgdGVzdHMgKE5PVyAtIFBBU1MpCisgICAgICAgICdza2lwcGVkJzogIyBvZiBza2lwcGVk
IHRlc3RzIChOT1cgJiBTS0lQUEVEKQorICAgICAgICAnbnVtX3JlZ3Jlc3Npb25zJzogIyBvZiBu
b24tZmxha3kgZmFpbHVyZXMKKyAgICAgICAgJ251bV9mbGFreSc6ICMgb2YgZmxha3kgZmFpbHVy
ZXMKKyAgICAgICAgJ251bV9wYXNzZXMnOiAjIG9mIHVuZXhwZWN0ZWQgcGFzc2VzCisgICAgICAg
ICd0ZXN0cyc6IGEgZGljdCBvZiB0ZXN0cyAtPiB7J2V4cGVjdGVkJzogJy4uLicsICdhY3R1YWwn
OiAnLi4uJywgJ3RpbWVfbXMnOiAuLi59CisgICAgIiIiCisgICAgcmVzdWx0cyA9IHt9CisgICAg
cmVzdWx0c1sndmVyc2lvbiddID0gMQorCisgICAgdGVzdF90aW1pbmdzX21hcCA9IGRpY3QoKHRl
c3RfcmVzdWx0LmZpbGVuYW1lLCB0ZXN0X3Jlc3VsdC50ZXN0X3J1bl90aW1lKSBmb3IgdGVzdF9y
ZXN1bHQgaW4gdGVzdF90aW1pbmdzKQorCisgICAgdGJlID0gcmVzdWx0X3N1bW1hcnkudGVzdHNf
YnlfZXhwZWN0YXRpb24KKyAgICB0YnQgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGlu
ZQorICAgIHJlc3VsdHNbJ2ZpeGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9X
XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiZVt0ZXN0X2V4cGVjdGF0aW9u
cy5QQVNTXSkKKyAgICByZXN1bHRzWydza2lwcGVkJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0YXRp
b25zLk5PV10gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmVbdGVzdF9leHBl
Y3RhdGlvbnMuU0tJUF0pCisKKyAgICBudW1fcGFzc2VzID0gMAorICAgIG51bV9mbGFreSA9IDAK
KyAgICBudW1fcmVncmVzc2lvbnMgPSAwCisgICAga2V5d29yZHMgPSB7fQorICAgIGZvciBleHBl
Y2F0aW9uX3N0cmluZywgZXhwZWN0YXRpb25fZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5F
WFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6CisgICAgICAgIGtleXdvcmRzW2V4cGVjdGF0aW9uX2Vu
dW1dID0gZXhwZWNhdGlvbl9zdHJpbmcudXBwZXIoKQorCisgICAgZm9yIG1vZGlmaWVyX3N0cmlu
ZywgbW9kaWZpZXJfZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlMuaXRlcml0
ZW1zKCk6CisgICAgICAgIGtleXdvcmRzW21vZGlmaWVyX2VudW1dID0gbW9kaWZpZXJfc3RyaW5n
LnVwcGVyKCkKKworICAgIHRlc3RzID0ge30KKyAgICBvcmlnaW5hbF9yZXN1bHRzID0gcmVzdWx0
X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzIGlmIG9ubHlfdW5leHBlY3RlZCBlbHNlIHJlc3Vs
dF9zdW1tYXJ5LnJlc3VsdHMKKworICAgIGZvciBmaWxlbmFtZSwgcmVzdWx0IGluIG9yaWdpbmFs
X3Jlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAgICAgICMgTm90ZSB0aGF0IGlmIGEgdGVzdCBjcmFz
aGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdlIGlnbm9yZQorICAgICAgICAjIHdoZXRoZXIgb3Ig
bm90IGl0IGNyYXNoZWQgd2hlbiB3ZSByZXRyaWVkIGl0IChpZiB3ZSByZXRyaWVkIGl0KSwKKyAg
ICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVyIHRoZSByZXN1bHQgbm90IGZsYWt5LgorICAgICAg
ICB0ZXN0ID0gcG9ydF9vYmoucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkKKyAgICAg
ICAgZXhwZWN0ZWQgPSBleHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoZmlsZW5h
bWUpCisgICAgICAgIHJlc3VsdF90eXBlID0gcmVzdWx0LnR5cGUKKyAgICAgICAgYWN0dWFsID0g
W2tleXdvcmRzW3Jlc3VsdF90eXBlXV0KKworICAgICAgICBpZiByZXN1bHRfdHlwZSA9PSB0ZXN0
X2V4cGVjdGF0aW9ucy5QQVNTOgorICAgICAgICAgICAgbnVtX3Bhc3NlcyArPSAxCisgICAgICAg
IGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6CisgICAgICAgICAg
ICBudW1fcmVncmVzc2lvbnMgKz0gMQorICAgICAgICBlbGlmIGZpbGVuYW1lIGluIHJlc3VsdF9z
dW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIG5vdCBp
biByZXRyeV9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKKyAgICAgICAgICAgICAgICBhY3R1
YWwuZXh0ZW5kKGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZyhmaWxlbmFtZSku
c3BsaXQoIiAiKSkKKyAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRfdHlwZSA9IHJldHJ5X3N1bW1hcnku
dW5leHBlY3RlZF9yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCisgICAgICAgICAgICAgICAgaWYgcmVz
dWx0X3R5cGUgIT0gcmV0cnlfcmVzdWx0X3R5cGU6CisgICAgICAgICAgICAgICAgICAgIGFjdHVh
bC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0X3R5cGVdKQorICAgICAgICAgICAgICAgICAg
ICBudW1fZmxha3kgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIG51bV9yZWdyZXNzaW9ucyArPSAxCisKKyAgICAgICAgdGVzdHNbdGVzdF0gPSB7fQorICAg
ICAgICB0ZXN0c1t0ZXN0XVsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCisgICAgICAgIHRlc3RzW3Rl
c3RdWydhY3R1YWwnXSA9ICIgIi5qb2luKGFjdHVhbCkKKworICAgICAgICBpZiBmaWxlbmFtZSBp
biB0ZXN0X3RpbWluZ3NfbWFwOgorICAgICAgICAgICAgdGltZV9zZWNvbmRzID0gdGVzdF90aW1p
bmdzX21hcFtmaWxlbmFtZV0KKyAgICAgICAgICAgIHRlc3RzW3Rlc3RdWyd0aW1lX21zJ10gPSBp
bnQoMTAwMCAqIHRpbWVfc2Vjb25kcykKKworICAgIHJlc3VsdHNbJ3Rlc3RzJ10gPSB0ZXN0cwor
ICAgIHJlc3VsdHNbJ251bV9wYXNzZXMnXSA9IG51bV9wYXNzZXMKKyAgICByZXN1bHRzWydudW1f
Zmxha3knXSA9IG51bV9mbGFreQorICAgIHJlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddID0gbnVt
X3JlZ3Jlc3Npb25zCisKKyAgICByZXR1cm4gcmVzdWx0cworCisKK2NsYXNzIFRlc3RSdW5JbnRl
cnJ1cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlJhaXNlZCB3aGVuIGEgdGVzdCBy
dW4gc2hvdWxkIGJlIHN0b3BwZWQgaW1tZWRpYXRlbHkuIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlYXNvbik6CisgICAgICAgIHNlbGYucmVhc29uID0gcmVhc29uCisKKyAgICBkZWYgX19y
ZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5yZWFz
b24sKQorCisKK2NsYXNzIE1hbmFnZXIob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBtYW5h
Z2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAorICAg
IHRlc3QgZmlsZXMuIiIiCisKKworICAgICMgVGhlIHBlci10ZXN0IHRpbWVvdXQgaW4gbWlsbGlz
ZWNvbmRzLCBpZiBubyAtLXRpbWUtb3V0LW1zIG9wdGlvbiB3YXMKKyAgICAjIGdpdmVuIHRvIHJ1
bl93ZWJraXRfdGVzdHMuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlIGRlZmF1bHQgdGlt
ZW91dAorICAgICMgaW4gRHVtcFJlbmRlclRyZWUuCisgICAgREVGQVVMVF9URVNUX1RJTUVPVVRf
TVMgPSA2ICogMTAwMAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHBy
aW50ZXIpOgorICAgICAgICAiIiJBcmdzOgorICAgICAgICAgIHBvcnQ6IGFuIG9iamVjdCBpbXBs
ZW1lbnRpbmcgcG9ydC1zcGVjaWZpYworICAgICAgICAgIG9wdGlvbnM6IGEgZGljdGlvbmFyeSBv
ZiBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAgICAgIHByaW50ZXI6IGEgUHJpbnRlciBvYmpl
Y3QgdG8gcmVjb3JkIHVwZGF0ZXMgdG8uCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9wb3J0
ID0gcG9ydAorICAgICAgICBzZWxmLl9mcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50ZXIKKyAg
ICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisKKyAgICAgICAgc2VsZi5IVFRQX1NV
QkRJUiA9IHNlbGYuX2ZzLmpvaW4oJycsICdodHRwJywgJycpCisgICAgICAgIHNlbGYuV0VCU09D
S0VUX1NVQkRJUiA9IHNlbGYuX2ZzLmpvaW4oJycsICd3ZWJzb2NrZXQnLCAnJykKKyAgICAgICAg
c2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZID0gIkxheW91dFRlc3RzIiArIHNlbGYuX2ZzLnNl
cAorCisKKyAgICAgICAgIyBkaXNhYmxlIHdzcyBzZXJ2ZXIuIG5lZWQgdG8gaW5zdGFsbCBweU9w
ZW5TU0wgb24gYnVpbGRib3RzLgorICAgICAgICAjIHNlbGYuX3dlYnNvY2tldF9zZWN1cmVfc2Vy
dmVyID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNvY2tldCgKKyAgICAgICAgIyAgICAgICAgb3B0
aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgdXNlX3Rscz1UcnVlLCBwb3J0PTkzMjMpCisKKyAgICAg
ICAgIyBhIHNldCBvZiB0ZXN0IGZpbGVzLCBhbmQgdGhlIHNhbWUgdGVzdHMgYXMgYSBsaXN0Cisg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoKQorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVz
X2xpc3QgPSBOb25lCisgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkK
KyAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSA9IHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKQorCisgICAgICAgIHNlbGYu
X2FsbF9yZXN1bHRzID0gW10KKyAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMgPSB7fQorICAgICAg
ICBzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5ID0gTm9uZQorCisgICAgICAgICMgVGhpcyBt
YXBzIHdvcmtlciBuYW1lcyB0byB0aGUgc3RhdGUgd2UgYXJlIHRyYWNraW5nIGZvciBlYWNoIG9m
IHRoZW0uCisgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXMgPSB7fQorCisKKyAgICBkZWYgY29s
bGVjdF90ZXN0cyhzZWxmLCBhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cyk6CisgICAgICAg
ICIiIkZpbmQgYWxsIHRoZSBmaWxlcyB0byB0ZXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgYXJnczogbGlzdCBvZiB0ZXN0IGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKKyAg
ICAgICAgICBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0czogbGlzdCBvZiB1bmV4cGVjdGVkIHJlc3Vs
dHMgdG8gcmV0ZXN0LCBpZiBhbnkKKworICAgICAgICAiIiIKKyAgICAgICAgcGF0aHMgPSBzZWxm
Ll9zdHJpcF90ZXN0X2Rpcl9wcmVmaXhlcyhhcmdzKQorICAgICAgICBwYXRocyArPSBsYXN0X3Vu
ZXhwZWN0ZWRfcmVzdWx0cworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnRlc3RfbGlzdDoKKyAg
ICAgICAgICAgIHBhdGhzICs9IHNlbGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKHJlYWRfdGVz
dF9maWxlcyhzZWxmLl9mcywgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3QpKQorICAgICAgICBzZWxm
Ll90ZXN0X2ZpbGVzID0gc2VsZi5fcG9ydC50ZXN0cyhwYXRocykKKworICAgIGRlZiBfc3RyaXBf
dGVzdF9kaXJfcHJlZml4ZXMoc2VsZiwgcGF0aHMpOgorICAgICAgICByZXR1cm4gW3NlbGYuX3N0
cmlwX3Rlc3RfZGlyX3ByZWZpeChwYXRoKSBmb3IgcGF0aCBpbiBwYXRocyBpZiBwYXRoXQorCisg
ICAgZGVmIF9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBh
dGguc3RhcnRzd2l0aChzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlkpOgorICAgICAgICAgICAg
cmV0dXJuIHBhdGhbbGVuKHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6XQorICAgICAgICBy
ZXR1cm4gcGF0aAorCisgICAgZGVmIGxpbnQoc2VsZik6CisgICAgICAgIGxpbnRfZmFpbGVkID0g
RmFsc2UKKyAgICAgICAgZm9yIHRlc3RfY29uZmlndXJhdGlvbiBpbiBzZWxmLl9wb3J0LmFsbF90
ZXN0X2NvbmZpZ3VyYXRpb25zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
c2VsZi5saW50X2V4cGVjdGF0aW9ucyh0ZXN0X2NvbmZpZ3VyYXRpb24pCisgICAgICAgICAgICBl
eGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoKKyAgICAgICAgICAgICAgICBsaW50
X2ZhaWxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIiKQor
CisgICAgICAgIGlmIGxpbnRfZmFpbGVkOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiTGludCBm
YWlsZWQuIikKKyAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgICAgIF9sb2cuaW5mbygiTGlu
dCBzdWNjZWVkZWQuIikKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBsaW50X2V4cGVjdGF0
aW9ucyhzZWxmLCBjb25maWcpOgorICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAorICAgICAgICB0
ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAorICAgICAgICAgICAgcG9ydCwKKyAg
ICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksCisg
ICAgICAgICAgICBjb25maWcsCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9m
aWxlcywKKyAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkpCisK
KyAgICBkZWYgcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgorICAgICAgICAiIiJQYXJzZSB0aGUg
ZXhwZWN0YXRpb25zIGZyb20gdGhlIHRlc3RfbGlzdCBmaWxlcyBhbmQgcmV0dXJuIGEgZGF0YQor
ICAgICAgICBzdHJ1Y3R1cmUgaG9sZGluZyB0aGVtLiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRl
c3RfbGlzdCBmaWxlcyBoYXZlCisgICAgICAgIGludmFsaWQgc3ludGF4LiIiIgorICAgICAgICBw
b3J0ID0gc2VsZi5fcG9ydAorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVj
dGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAorICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXMsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zKCks
CisgICAgICAgICAgICBwb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0
YXRpb25zX292ZXJyaWRlcygpKQorCisgICAgIyBGSVhNRTogVGhpcyBtZXRob2QgaXMgd2F5IHRv
byBsb25nIGFuZCBuZWVkcyB0byBiZSBicm9rZW4gaW50byBwaWVjZXMuCisgICAgZGVmIHByZXBh
cmVfbGlzdHNfYW5kX3ByaW50X291dHB1dChzZWxmKToKKyAgICAgICAgIiIiQ3JlYXRlIGFwcHJv
cHJpYXRlIHN1YnNldHMgb2YgdGVzdCBsaXN0cyBhbmQgcmV0dXJucyBhCisgICAgICAgIFJlc3Vs
dFN1bW1hcnkgb2JqZWN0LiBBbHNvIHByaW50cyBleHBlY3RlZCB0ZXN0IGNvdW50cy4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgIyBSZW1vdmUgc2tpcHBlZCAtIGJvdGggZml4YWJsZSBhbmQgaWdu
b3JlZCAtIGZpbGVzIGZyb20gdGhlCisgICAgICAgICMgdG9wLWxldmVsIGxpc3Qgb2YgZmlsZXMg
dG8gdGVzdC4KKyAgICAgICAgbnVtX2FsbF90ZXN0X2ZpbGVzID0gbGVuKHNlbGYuX3Rlc3RfZmls
ZXMpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoIkZvdW5kOiAgJWQgdGVz
dHMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX3Rl
c3RfZmlsZXMpKSkKKyAgICAgICAgaWYgbm90IG51bV9hbGxfdGVzdF9maWxlczoKKyAgICAgICAg
ICAgIF9sb2cuY3JpdGljYWwoJ05vIHRlc3RzIHRvIHJ1bi4nKQorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICBza2lwcGVkID0gc2V0KCkKKyAgICAgICAgaWYgbnVtX2FsbF90ZXN0
X2ZpbGVzID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZm9yY2U6CisgICAgICAgICAgICBza2lw
cGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCkKKyAgICAgICAg
ICAgIHNlbGYuX3Rlc3RfZmlsZXMgLT0gc2tpcHBlZAorCisgICAgICAgICMgQ3JlYXRlIGEgc29y
dGVkIGxpc3Qgb2YgdGVzdCBmaWxlcyBzbyB0aGUgc3Vic2V0IGNodW5rLAorICAgICAgICAjIGlm
IHVzZWQsIGNvbnRhaW5zIGFscGhhYmV0aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgorICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBsaXN0KHNlbGYuX3Rlc3RfZmlsZXMpCisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMucmFuZG9taXplX29yZGVyOgorICAgICAgICAgICAgcmFuZG9tLnNo
dWZmbGUoc2VsZi5fdGVzdF9maWxlc19saXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi5fdGVzdF9maWxlc19saXN0LnNvcnQoKQorCisgICAgICAgICMgSWYgdGhlIHVzZXIgc3Bl
Y2lmaWVzIHRoZXkganVzdCB3YW50IHRvIHJ1biBhIHN1YnNldCBvZiB0aGUgdGVzdHMsCisgICAg
ICAgICMganVzdCBncmFiIGEgc3Vic2V0IG9mIHRoZSBub24tc2tpcHBlZCB0ZXN0cy4KKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5fY2h1bmsgb3Igc2VsZi5fb3B0aW9ucy5ydW5fcGFydDoK
KyAgICAgICAgICAgIGNodW5rX3ZhbHVlID0gc2VsZi5fb3B0aW9ucy5ydW5fY2h1bmsgb3Igc2Vs
Zi5fb3B0aW9ucy5ydW5fcGFydAorICAgICAgICAgICAgdGVzdF9maWxlcyA9IHNlbGYuX3Rlc3Rf
ZmlsZXNfbGlzdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIChjaHVua19udW0s
IGNodW5rX2xlbikgPSBjaHVua192YWx1ZS5zcGxpdCgiOiIpCisgICAgICAgICAgICAgICAgY2h1
bmtfbnVtID0gaW50KGNodW5rX251bSkKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2h1bmtfbnVt
ID49IDApCisgICAgICAgICAgICAgICAgdGVzdF9zaXplID0gaW50KGNodW5rX2xlbikKKyAgICAg
ICAgICAgICAgICBhc3NlcnQodGVzdF9zaXplID4gMCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAg
ICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCJpbnZhbGlkIGNodW5rICclcyciICUgY2h1bmtf
dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgIyBHZXQg
dGhlIG51bWJlciBvZiB0ZXN0cworICAgICAgICAgICAgbnVtX3Rlc3RzID0gbGVuKHRlc3RfZmls
ZXMpCisKKyAgICAgICAgICAgICMgR2V0IHRoZSBzdGFydCBvZmZzZXQgb2YgdGhlIHNsaWNlLgor
ICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5fY2h1bms6CisgICAgICAgICAgICAgICAg
Y2h1bmtfbGVuID0gdGVzdF9zaXplCisgICAgICAgICAgICAgICAgIyBJbiB0aGlzIGNhc2UgY2h1
bmtfbnVtIGNhbiBiZSByZWFsbHkgbGFyZ2UuIFdlIG5lZWQKKyAgICAgICAgICAgICAgICAjIHRv
IG1ha2UgdGhlIHNsYXZlIGZpdCBpbiB0aGUgY3VycmVudCBudW1iZXIgb2YgdGVzdHMuCisgICAg
ICAgICAgICAgICAgc2xpY2Vfc3RhcnQgPSAoY2h1bmtfbnVtICogY2h1bmtfbGVuKSAlIG51bV90
ZXN0cworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFZhbGlkYXRlIHRoZSBk
YXRhLgorICAgICAgICAgICAgICAgIGFzc2VydCh0ZXN0X3NpemUgPD0gbnVtX3Rlc3RzKQorICAg
ICAgICAgICAgICAgIGFzc2VydChjaHVua19udW0gPD0gdGVzdF9zaXplKQorCisgICAgICAgICAg
ICAgICAgIyBUbyBjb3VudCB0aGUgY2h1bmtfbGVuLCBhbmQgbWFrZSBzdXJlIHdlIGRvbid0IHNr
aXAKKyAgICAgICAgICAgICAgICAjIHNvbWUgdGVzdHMsIHdlIHJvdW5kIHRvIHRoZSBuZXh0IHZh
bHVlIHRoYXQgZml0cyBleGFjdGx5CisgICAgICAgICAgICAgICAgIyBhbGwgdGhlIHBhcnRzLgor
ICAgICAgICAgICAgICAgIHJvdW5kZWRfdGVzdHMgPSBudW1fdGVzdHMKKyAgICAgICAgICAgICAg
ICBpZiByb3VuZGVkX3Rlc3RzICUgdGVzdF9zaXplICE9IDA6CisgICAgICAgICAgICAgICAgICAg
IHJvdW5kZWRfdGVzdHMgPSAobnVtX3Rlc3RzICsgdGVzdF9zaXplIC0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobnVtX3Rlc3RzICUgdGVzdF9zaXplKSkKKworICAgICAg
ICAgICAgICAgIGNodW5rX2xlbiA9IHJvdW5kZWRfdGVzdHMgLyB0ZXN0X3NpemUKKyAgICAgICAg
ICAgICAgICBzbGljZV9zdGFydCA9IGNodW5rX2xlbiAqIChjaHVua19udW0gLSAxKQorICAgICAg
ICAgICAgICAgICMgSXQgZG9lcyBub3QgbWluZCBpZiB3ZSBnbyBvdmVyIHRlc3Rfc2l6ZS4KKwor
ICAgICAgICAgICAgIyBHZXQgdGhlIGVuZCBvZmZzZXQgb2YgdGhlIHNsaWNlLgorICAgICAgICAg
ICAgc2xpY2VfZW5kID0gbWluKG51bV90ZXN0cywgc2xpY2Vfc3RhcnQgKyBjaHVua19sZW4pCisK
KyAgICAgICAgICAgIGZpbGVzID0gdGVzdF9maWxlc1tzbGljZV9zdGFydDpzbGljZV9lbmRdCisK
KyAgICAgICAgICAgIHRlc3RzX3J1bl9tc2cgPSAnUnVubmluZzogJWQgdGVzdHMgKGNodW5rIHNs
aWNlIFslZDolZF0gb2YgJWQpJyAlICgKKyAgICAgICAgICAgICAgICAoc2xpY2VfZW5kIC0gc2xp
Y2Vfc3RhcnQpLCBzbGljZV9zdGFydCwgc2xpY2VfZW5kLCBudW1fdGVzdHMpCisgICAgICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKHRlc3RzX3J1bl9tc2cpCisKKyAgICAgICAg
ICAgICMgSWYgd2UgcmVhY2hlZCB0aGUgZW5kIGFuZCB3ZSBkb24ndCBoYXZlIGVub3VnaCB0ZXN0
cywgd2UgcnVuIHNvbWUKKyAgICAgICAgICAgICMgZnJvbSB0aGUgYmVnaW5uaW5nLgorICAgICAg
ICAgICAgaWYgc2xpY2VfZW5kIC0gc2xpY2Vfc3RhcnQgPCBjaHVua19sZW46CisgICAgICAgICAg
ICAgICAgZXh0cmEgPSBjaHVua19sZW4gLSAoc2xpY2VfZW5kIC0gc2xpY2Vfc3RhcnQpCisgICAg
ICAgICAgICAgICAgZXh0cmFfbXNnID0gKCcgICBsYXN0IGNodW5rIGlzIHBhcnRpYWwsIGFwcGVu
ZGluZyBbMDolZF0nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYSkKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKGV4dHJhX21zZykKKyAgICAg
ICAgICAgICAgICB0ZXN0c19ydW5fbXNnICs9ICJcbiIgKyBleHRyYV9tc2cKKyAgICAgICAgICAg
ICAgICBmaWxlcy5leHRlbmQodGVzdF9maWxlc1swOmV4dHJhXSkKKyAgICAgICAgICAgIHRlc3Rz
X3J1bl9maWxlbmFtZSA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJ0
ZXN0c19ydW4udHh0IikKKyAgICAgICAgICAgIHNlbGYuX2ZzLndyaXRlX3RleHRfZmlsZSh0ZXN0
c19ydW5fZmlsZW5hbWUsIHRlc3RzX3J1bl9tc2cpCisKKyAgICAgICAgICAgIGxlbl9za2lwX2No
dW5rID0gaW50KGxlbihmaWxlcykgKiBsZW4oc2tpcHBlZCkgLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQobGVuKHNlbGYuX3Rlc3RfZmlsZXMpKSkKKyAgICAgICAgICAg
IHNraXBfY2h1bmtfbGlzdCA9IGxpc3Qoc2tpcHBlZClbMDpsZW5fc2tpcF9jaHVua10KKyAgICAg
ICAgICAgIHNraXBfY2h1bmsgPSBzZXQoc2tpcF9jaHVua19saXN0KQorCisgICAgICAgICAgICAj
IFVwZGF0ZSBleHBlY3RhdGlvbnMgc28gdGhhdCB0aGUgc3RhdHMgYXJlIGNhbGN1bGF0ZWQgY29y
cmVjdGx5LgorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBhc3MgYSBsaXN0IHRoYXQgaW5jbHVk
ZXMgdGhlIHJpZ2h0ICMgb2Ygc2tpcHBlZCBmaWxlcworICAgICAgICAgICAgIyB0byBQYXJzZUV4
cGVjdGF0aW9ucyBzbyB0aGF0IFJlc3VsdFN1bW1hcnkoKSB3aWxsIGdldCB0aGUgY29ycmVjdAor
ICAgICAgICAgICAgIyBzdGF0cy4gU28sIHdlIGFkZCBpbiB0aGUgc3Vic2V0IG9mIHNraXBwZWQg
ZmlsZXMsIGFuZCB0aGVuCisgICAgICAgICAgICAjIHN1YnRyYWN0IHRoZW0gYmFjayBvdXQuCisg
ICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcyArIHNraXBfY2h1bmtfbGlz
dAorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChzZWxmLl90ZXN0X2ZpbGVzX2xp
c3QpCisKKyAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKCkKKworICAgICAgICAg
ICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChmaWxlcykKKyAgICAgICAgICAgIHNlbGYuX3Rlc3Rf
ZmlsZXNfbGlzdCA9IGZpbGVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBza2lwX2NodW5r
ID0gc2tpcHBlZAorCisgICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxm
Ll9leHBlY3RhdGlvbnMsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzIHwgc2tpcF9jaHVu
aykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9z
dW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuUEFTUywgInBhc3NlcyIpCisg
ICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFy
eSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkZBSUwsICJmYWlsdXJlcyIpCisgICAg
ICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwK
KyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkZMQUtZLCAiZmxha3kiKQorICAgICAgICBz
ZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCisgICAg
ICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQLCAic2tpcHBlZCIpCisKKyAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5mb3JjZToKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhw
ZWN0ZWQoJ1J1bm5pbmcgYWxsIHRlc3RzLCBpbmNsdWRpbmcgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc2tpcHMgKC0tZm9yY2UpJykKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHJ1biB0aGUgc2tpcHBl
ZCB0ZXN0cyAodGhleSB3ZXJlCisgICAgICAgICAgICAjIHN1YnRyYWN0ZWQgb3V0IG9mIHNlbGYu
X3Rlc3RfZmlsZXMsIGFib3ZlKSwgYnV0IHdlIHN0dWIgb3V0IHRoZQorICAgICAgICAgICAgIyBy
ZXN1bHRzIGhlcmUgc28gdGhlIHN0YXRpc3RpY3MgY2FuIHJlbWFpbiBhY2N1cmF0ZS4KKyAgICAg
ICAgICAgIGZvciB0ZXN0IGluIHNraXBfY2h1bms6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
dGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdCkKKyAgICAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IHRlc3RfZXhwZWN0YXRpb25zLlNLSVAKKyAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFy
eS5hZGQocmVzdWx0LCBleHBlY3RlZD1UcnVlKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X2V4cGVjdGVkKCcnKQorCisgICAgICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGRpZG4ndCBm
aWx0ZXIgb3V0IGFsbCBvZiB0aGUgdGVzdHMuCisgICAgICAgIGlmIG5vdCBsZW4oc2VsZi5fdGVz
dF9maWxlcyk6CisgICAgICAgICAgICBfbG9nLmluZm8oIkFsbCB0ZXN0cyBhcmUgYmVpbmcgc2tp
cHBlZCIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiByZXN1bHRf
c3VtbWFyeQorCisgICAgZGVmIF9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUoc2VsZiwgdGVzdF9maWxl
KToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgaGlnaGVzdC1sZXZlbCBkaXJlY3RvcnkgYnkgd2hp
Y2ggdG8gc2hhcmQgdGhlIGdpdmVuCisgICAgICAgIHRlc3QgZmlsZS4iIiIKKyAgICAgICAgaW5k
ZXggPSB0ZXN0X2ZpbGUucmZpbmQoc2VsZi5fZnMuc2VwICsgc2VsZi5MQVlPVVRfVEVTVFNfRElS
RUNUT1JZKQorCisgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZVtpbmRleCArIGxlbihzZWxm
LkxBWU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KKyAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVz
dF9maWxlLnNwbGl0KHNlbGYuX2ZzLnNlcCwgMSkKKyAgICAgICAgZGlyZWN0b3J5ID0gdGVzdF9m
aWxlX3BhcnRzWzBdCisgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZV9wYXJ0c1sxXQorCisg
ICAgICAgICMgVGhlIGh0dHAgdGVzdHMgYXJlIHZlcnkgc3RhYmxlIG9uIG1hYy9saW51eC4KKyAg
ICAgICAgIyBUT0RPKG9qYW4pOiBNYWtlIHRoZSBodHRwIHNlcnZlciBvbiBXaW5kb3dzIGJlIGFw
YWNoZSBzbyB3ZSBjYW4KKyAgICAgICAgIyB0dXJuIHNoYXJkIHRoZSBodHRwIHRlc3RzIHRoZXJl
IGFzIHdlbGwuIFN3aXRjaGluZyB0byBhcGFjaGUgaXMKKyAgICAgICAgIyB3aGF0IG1hZGUgdGhl
bSBzdGFibGUgb24gbGludXgvbWFjLgorICAgICAgICByZXR1cm5fdmFsdWUgPSBkaXJlY3RvcnkK
KyAgICAgICAgd2hpbGUgKChkaXJlY3RvcnkgIT0gJ2h0dHAnIG9yIHN5cy5wbGF0Zm9ybSBpbiAo
J2RhcndpbicsICdsaW51eDInKSkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF9maWxlLmZpbmQo
c2VsZi5fZnMuc2VwKSA+PSAwKToKKyAgICAgICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3Rf
ZmlsZS5zcGxpdChzZWxmLl9mcy5zZXAsIDEpCisgICAgICAgICAgICBkaXJlY3RvcnkgPSB0ZXN0
X2ZpbGVfcGFydHNbMF0KKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHNlbGYuX2ZzLmpvaW4o
cmV0dXJuX3ZhbHVlLCBkaXJlY3RvcnkpCisgICAgICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2Zp
bGVfcGFydHNbMV0KKworICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCisKKyAgICBkZWYgX2dl
dF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgICIiIlJldHVy
bnMgdGhlIGFwcHJvcHJpYXRlIFRlc3RJbnB1dCBvYmplY3QgZm9yIHRoZSBmaWxlLiBNb3N0bHkg
dGhpcworICAgICAgICBpcyB1c2VkIGZvciBsb29raW5nIHVwIHRoZSB0aW1lb3V0IHZhbHVlIChp
biBtcykgdG8gdXNlIGZvciB0aGUgZ2l2ZW4KKyAgICAgICAgdGVzdC4iIiIKKyAgICAgICAgaWYg
c2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSk6CisgICAgICAgICAgICByZXR1cm4gVGVzdElu
cHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKQorICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcykKKwor
ICAgIGRlZiBfdGVzdF9yZXF1aXJlc19sb2NrKHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgICIi
IlJldHVybiBUcnVlIGlmIHRoZSB0ZXN0IG5lZWRzIHRvIGJlIGxvY2tlZCB3aGVuCisgICAgICAg
IHJ1bm5pbmcgbXVsdGlwbGUgY29waWVzIG9mIE5SV1RzLiIiIgorICAgICAgICBzcGxpdF9wYXRo
ID0gdGVzdF9maWxlLnNwbGl0KHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uc2VwKQorICAgICAgICBy
ZXR1cm4gJ2h0dHAnIGluIHNwbGl0X3BhdGggb3IgJ3dlYnNvY2tldCcgaW4gc3BsaXRfcGF0aAor
CisgICAgZGVmIF90ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9maWxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9X
KQorCisgICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2ZpbGVzLCB1c2VfcmVhbF9zaGFy
ZHMpOgorICAgICAgICAiIiJHcm91cHMgdGVzdHMgaW50byBiYXRjaGVzLgorICAgICAgICBUaGlz
IGhlbHBzIGVuc3VyZSB0aGF0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIGVhY2ggb3RoZXIgKGFrYSBi
YWQgdGVzdHMhKQorICAgICAgICBjb250aW51ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdCBjcm9z
cy10ZXN0cyBkZXBlbmRlbmNpZXMgdGVuZCB0bworICAgICAgICBvY2N1ciB3aXRoaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LiBJZiB1c2VfcmVhbF9zaGFyZHMgaXMgRmFsc2UsIHdlCisgICAgICAgIHB1
dCBlYWNoIChub24tSFRUUC93ZWJzb2NrZXQpIHRlc3QgaW50byBpdHMgb3duIHNoYXJkIGZvciBt
YXhpbXVtCisgICAgICAgIGNvbmN1cnJlbmN5IGluc3RlYWQgb2YgdHJ5aW5nIHRvIGRvIGFueSBz
b3J0IG9mIHJlYWwgc2hhcmRpbmcuCisKKyAgICAgICAgUmV0dXJuOgorICAgICAgICAgICAgQSBs
aXN0IG9mIGxpc3RzIG9mIFRlc3RJbnB1dCBvYmplY3RzLgorICAgICAgICAiIiIKKyAgICAgICAg
IyBGSVhNRTogd2hlbiB3ZSBhZGRlZCBodHRwIGxvY2tpbmcsIHdlIGNoYW5nZWQgaG93IHRoaXMg
d29ya3Mgc3VjaAorICAgICAgICAjIHRoYXQgd2UgYWx3YXlzIGx1bXAgYWxsIG9mIHRoZSBIVFRQ
IHRocmVhZHMgaW50byBhIHNpbmdsZSBzaGFyZC4KKyAgICAgICAgIyBUaGF0IHdpbGwgc2xvdyBk
b3duIGV4cGVyaW1lbnRhbC1mdWxseS1wYXJhbGxlbCwgYnV0IGl0J3MgdW5jbGVhcgorICAgICAg
ICAjIHdoYXQgdGhlIGJlc3QgYWx0ZXJuYXRpdmUgaXMgY29tcGxldGVseSByZXZhbXBpbmcgaG93
IHdlIHRyYWNrCisgICAgICAgICMgd2hlbiB0byBncmFiIHRoZSBsb2NrLgorCisgICAgICAgIHRl
c3RfbGlzdHMgPSBbXQorICAgICAgICB0ZXN0c190b19odHRwX2xvY2sgPSBbXQorICAgICAgICBp
ZiBub3QgdXNlX3JlYWxfc2hhcmRzOgorICAgICAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0ZXN0
X2ZpbGVzOgorICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1
dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1
aXJlc19sb2NrKHRlc3RfZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RzX3RvX2h0dHBf
bG9jay5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2xpc3RzLmFwcGVuZCgoIi4iLCBbdGVzdF9pbnB1dF0pKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdGVzdHNfYnlfZGlyID0ge30KKyAgICAgICAgICAgIGZvciB0
ZXN0X2ZpbGUgaW4gdGVzdF9maWxlczoKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgPSBzZWxm
Ll9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUodGVzdF9maWxlKQorICAgICAgICAgICAgICAgIHRlc3Rf
aW5wdXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCisgICAgICAg
ICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3RfZmlsZSk6CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jay5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0ZXN0c19ieV9kaXIuc2V0ZGVm
YXVsdChkaXJlY3RvcnksIFtdKQorICAgICAgICAgICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGly
ZWN0b3J5XS5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICMgU29ydCBieSB0aGUgbnVt
YmVyIG9mIHRlc3RzIGluIHRoZSBkaXIgc28gdGhhdCB0aGUgb25lcyB3aXRoIHRoZQorICAgICAg
ICAgICAgIyBtb3N0IHRlc3RzIGdldCBydW4gZmlyc3QgaW4gb3JkZXIgdG8gbWF4aW1pemUgcGFy
YWxsZWxpemF0aW9uLgorICAgICAgICAgICAgIyBOdW1iZXIgb2YgdGVzdHMgaXMgYSBnb29kIGVu
b3VnaCwgYnV0IG5vdCBwZXJmZWN0LCBhcHByb3hpbWF0aW9uCisgICAgICAgICAgICAjIG9mIGhv
dyBsb25nIHRoYXQgc2V0IG9mIHRlc3RzIHdpbGwgdGFrZSB0byBydW4uIFdlIGNhbid0IGp1c3Qg
dXNlCisgICAgICAgICAgICAjIGEgUHJpb3JpdHlRdWV1ZSB1bnRpbCB3ZSBtb3ZlIHRvIFB5dGhv
biAyLjYuCisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHRlc3RzX2J5X2RpcjoKKyAgICAg
ICAgICAgICAgICB0ZXN0X2xpc3QgPSB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XQorICAgICAgICAg
ICAgICAgIHRlc3RfbGlzdF90dXBsZSA9IChkaXJlY3RvcnksIHRlc3RfbGlzdCkKKyAgICAgICAg
ICAgICAgICB0ZXN0X2xpc3RzLmFwcGVuZCh0ZXN0X2xpc3RfdHVwbGUpCisgICAgICAgICAgICB0
ZXN0X2xpc3RzLnNvcnQobGFtYmRhIGEsIGI6IGNtcChsZW4oYlsxXSksIGxlbihhWzFdKSkpCisK
KyAgICAgICAgIyBQdXQgdGhlIGh0dHAgdGVzdHMgZmlyc3QuIFRoZXJlIGFyZSBvbmx5IGEgY291
cGxlIGh1bmRyZWQgb2YgdGhlbSwKKyAgICAgICAgIyBidXQgZWFjaCBodHRwIHRlc3QgdGFrZXMg
YSB2ZXJ5IGxvbmcgdGltZSB0byBydW4sIHNvIHNvcnRpbmcgYnkgdGhlCisgICAgICAgICMgbnVt
YmVyIG9mIHRlc3RzIGRvZXNuJ3QgYWNjdXJhdGVseSBjYXB0dXJlIGhvdyBsb25nIHRoZXkgdGFr
ZSB0byBydW4uCisgICAgICAgIGlmIHRlc3RzX3RvX2h0dHBfbG9jazoKKyAgICAgICAgICAgIHRl
c3RfbGlzdHMuaW5zZXJ0KDAsICgidGVzdHNfdG9faHR0cF9sb2NrIiwgdGVzdHNfdG9faHR0cF9s
b2NrKSkKKworICAgICAgICByZXR1cm4gdGVzdF9saXN0cworCisgICAgZGVmIF9jb250YWluc190
ZXN0cyhzZWxmLCBzdWJkaXIpOgorICAgICAgICBmb3IgdGVzdF9maWxlIGluIHNlbGYuX3Rlc3Rf
ZmlsZXM6CisgICAgICAgICAgICBpZiB0ZXN0X2ZpbGUuZmluZChzdWJkaXIpID49IDA6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
X251bV93b3JrZXJzKHNlbGYpOgorICAgICAgICByZXR1cm4gaW50KHNlbGYuX29wdGlvbnMuY2hp
bGRfcHJvY2Vzc2VzKQorCisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgZmlsZV9saXN0LCByZXN1
bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlJ1bnMgdGhlIHRlc3RzIGluIHRoZSBmaWxlX2xpc3Qu
CisKKyAgICAgICAgUmV0dXJuOiBBIHR1cGxlIChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJy
dXB0ZWQsIHRocmVhZF90aW1pbmdzLAorICAgICAgICAgICAgdGVzdF90aW1pbmdzLCBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgICAgIGludGVycnVwdGVkIGlzIHdoZXRoZXIgdGhl
IHJ1biB3YXMgaW50ZXJydXB0ZWQKKyAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkIGlz
IHdoZXRoZXIgdGhlIGludGVycnVwdGlvbiB3YXMgYmVjYXVzZSBzb21lb25lCisgICAgICAgICAg
ICAgIHR5cGVkIEN0cmxeQworICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MgaXMgYSBsaXN0IG9m
IGRpY3RzIHdpdGggdGhlIHRvdGFsIHJ1bnRpbWUKKyAgICAgICAgICAgICAgb2YgZWFjaCB0aHJl
YWQgd2l0aCAnbmFtZScsICdudW1fdGVzdHMnLCAndG90YWxfdGltZScgcHJvcGVydGllcworICAg
ICAgICAgICAgdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiB0aW1pbmdzIGZvciBlYWNoIHNoYXJk
ZWQgc3ViZGlyZWN0b3J5CisgICAgICAgICAgICAgIG9mIHRoZSBmb3JtIFt0aW1lLCBkaXJlY3Rv
cnlfbmFtZSwgbnVtX3Rlc3RzXQorICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mg
aXMgYSBsaXN0IG9mIHJ1biB0aW1lcyBmb3IgZWFjaCB0ZXN0CisgICAgICAgICAgICAgIGluIHRo
ZSBmb3JtIHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1lfQor
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRlIHdp
dGggdGhlIHJlc3VsdHMKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0
X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQorICAgICAgICBzZWxmLl9hbGxfcmVzdWx0cyA9IFtd
CisgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzID0ge30KKyAgICAgICAgc2VsZi5fd29ya2VyX3N0
YXRlcyA9IHt9CisKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCisg
ICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gRmFsc2UKKyAgICAgICAgaW50ZXJydXB0ZWQg
PSBGYWxzZQorICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCisKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCisgICAgICAgIHRlc3RfbGlz
dHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCisgICAgICAgICAgICBudW1fd29ya2Vy
cyA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkK
KyAgICAgICAgX2xvZy5kZWJ1ZygiVXNpbmcgJWQgc2hhcmRzIiAlIGxlbih0ZXN0X2xpc3RzKSkK
KworICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0
KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2VyLldvcmtlcikKKworICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46CisgICAgICAgICAgICByZXR1cm4gKGtleWJvYXJk
X2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKworICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1f
d29ya2VycykpCisgICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1fd29ya2Vy
cyk6CisgICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVjdGlvbi5z
dGFydF93b3JrZXIod29ya2VyX251bWJlcikKKyAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9X
b3JrZXJTdGF0ZSh3b3JrZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKKyAgICAgICAgICAg
IHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24ubmFtZV0gPSB3b3JrZXJfc3Rh
dGUKKworICAgICAgICAgICAgIyBGSVhNRTogSWYgd2Ugc3RhcnQgd29ya2VycyB1cCB0b28gcXVp
Y2tseSwgRHVtcFJlbmRlclRyZWUgYXBwZWFycworICAgICAgICAgICAgIyB0byB0aHJhc2ggb24g
c29tZXRoaW5nIGFuZCB0aW1lIG91dCBpdHMgZmlyc3QgZmV3IHRlc3RzLiBVbnRpbAorICAgICAg
ICAgICAgIyB3ZSBjYW4gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24sIHNsZWVwIGEgYml0IGlu
IGJldHdlZW4KKyAgICAgICAgICAgICMgd29ya2Vycy4KKyAgICAgICAgICAgIHRpbWUuc2xlZXAo
MC4xKQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0
aW5nIC4uLiIpCisgICAgICAgIGZvciB0ZXN0X2xpc3QgaW4gdGVzdF9saXN0czoKKyAgICAgICAg
ICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3Rlc3RfbGlzdCcsIHRlc3RfbGlz
dFswXSwgdGVzdF9saXN0WzFdKQorCisgICAgICAgICMgV2UgcG9zdCBvbmUgJ3N0b3AnIG1lc3Nh
Z2UgZm9yIGVhY2ggd29ya2VyLiBCZWNhdXNlIHRoZSBzdG9wIG1lc3NhZ2UKKyAgICAgICAgIyBh
cmUgc2VudCBhZnRlciBhbGwgb2YgdGhlIHRlc3RzLCBhbmQgYmVjYXVzZSBlYWNoIHdvcmtlciB3
aWxsIHN0b3AKKyAgICAgICAgIyByZWFkaW5nIG1lc3NzYWdlcyBhZnRlciByZWNlaXZpbmcgYSBz
dG9wLCB3ZSBjYW4gYmUgc3VyZSBlYWNoCisgICAgICAgICMgd29ya2VyIHdpbGwgZ2V0IGEgc3Rv
cCBtZXNzYWdlIGFuZCBoZW5jZSB0aGV5IHdpbGwgYWxsIHNodXQgZG93bi4KKyAgICAgICAgZm9y
IGkgaW4geHJhbmdlKG51bV93b3JrZXJzKToKKyAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlv
bi5wb3N0X21lc3NhZ2UoJ3N0b3AnKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxl
IG5vdCBzZWxmLmlzX2RvbmUoKToKKyAgICAgICAgICAgICAgICAjIFdlIGxvb3Agd2l0aCBhIHRp
bWVvdXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2VkZ2VkIHRocmVhZHMuCisgICAg
ICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVsYXlfc2Vj
cz0xLjApCisKKyAgICAgICAgICAgIGlmIGFueSh3b3JrZXJfc3RhdGUud2VkZ2VkIGZvciB3b3Jr
ZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKSk6CisgICAgICAgICAgICAg
ICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdSZW1haW5pbmcg
d29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5nIG91dC4nKQorICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWco
J05vIHdlZGdlZCB0aHJlYWRzJykKKworICAgICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIG9mIHRo
ZSB3b3JrZXJzIGhhdmUgc2h1dCBkb3duIChpZiBwb3NzaWJsZSkuCisgICAgICAgICAgICBmb3Ig
d29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6CisgICAgICAgICAg
ICAgICAgaWYgbm90IHdvcmtlcl9zdGF0ZS53ZWRnZWQgYW5kIHdvcmtlcl9zdGF0ZS53b3JrZXJf
Y29ubmVjdGlvbi5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICB3b3JrZXJfc3RhdGUu
d29ya2VyX2Nvbm5lY3Rpb24uam9pbigwLjUpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBu
b3Qgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmlzX2FsaXZlKCkKKworICAgICAgICBl
eGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBfbG9nLmluZm8oIkludGVycnVw
dGVkLCBleGl0aW5nIikKKyAgICAgICAgICAgIHNlbGYuY2FuY2VsX3dvcmtlcnMoKQorICAgICAg
ICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBUZXN0UnVu
SW50ZXJydXB0ZWRFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBfbG9nLmluZm8oZS5yZWFzb24p
CisgICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKKyAgICAgICAgICAgIGludGVycnVw
dGVkID0gVHJ1ZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIFVuZXhwZWN0ZWQgZXhj
ZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4KKyAgICAgICAgICAgIF9sb2cu
aW5mbygiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCisgICAgICAgICAgICByYWlzZQorCisg
ICAgICAgIHRocmVhZF90aW1pbmdzID0gW3dvcmtlcl9zdGF0ZS5zdGF0cyBmb3Igd29ya2VyX3N0
YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCldCisKKyAgICAgICAgIyBGSVhNRTog
c2hvdWxkIHRoaXMgYmUgYSBjbGFzcyBpbnN0ZWFkIG9mIGEgdHVwbGU/CisgICAgICAgIHJldHVy
biAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKKyAg
ICAgICAgICAgICAgICBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCisKKyAg
ICBkZWYgdXBkYXRlKHNlbGYpOgorICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHNlbGYuX2N1
cnJlbnRfcmVzdWx0X3N1bW1hcnkpCisKKyAgICBkZWYgX2NvbGxlY3RfdGltaW5nX2luZm8oc2Vs
ZiwgdGhyZWFkcyk6CisgICAgICAgIHRlc3RfdGltaW5ncyA9IHt9CisgICAgICAgIGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzID0gW10KKyAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBbXQorCisgICAg
ICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKKyAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLmFw
cGVuZCh7J25hbWUnOiB0aHJlYWQuZ2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnbnVtX3Rlc3RzJzogdGhyZWFkLmdldF9udW1fdGVzdHMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiB0aHJlYWQuZ2V0X3RvdGFs
X3RpbWUoKX0pCisgICAgICAgICAgICB0ZXN0X3RpbWluZ3MudXBkYXRlKHRocmVhZC5nZXRfdGVz
dF9ncm91cF90aW1pbmdfc3RhdHMoKSkKKyAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzLmV4dGVuZCh0aHJlYWQuZ2V0X3Rlc3RfcmVzdWx0cygpKQorCisgICAgICAgIHJldHVybiAo
dGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCisK
KyAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRo
ZSB0ZXN0cyBuZWVkIGFuIEhUVFAgc2VydmVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fY29u
dGFpbnNfdGVzdHMoc2VsZi5IVFRQX1NVQkRJUikKKworICAgIGRlZiBuZWVkc193ZWJzb2NrZXQo
c2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdHMgbmVlZCBhIHdlYnNv
Y2tldHMgc2VydmVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNfdGVzdHMoc2Vs
Zi5XRUJTT0NLRVRfU1VCRElSKQorCisgICAgZGVmIHNldF91cF9ydW4oc2VsZik6CisgICAgICAg
ICIiIkNvbmZpZ3VyZXMgdGhlIHN5c3RlbSB0byBiZSByZWFkeSB0byBydW4gdGVzdHMuCisKKyAg
ICAgICAgUmV0dXJucyBhIFJlc3VsdFN1bW1hcnkgb2JqZWN0IGlmIHdlIHNob3VsZCBjb250aW51
ZSB0byBydW4gdGVzdHMsCisgICAgICAgIG9yIE5vbmUgaWYgd2Ugc2hvdWxkIGFib3J0LgorCisg
ICAgICAgICIiIgorICAgICAgICAjIFRoaXMgbXVzdCBiZSBzdGFydGVkIGJlZm9yZSB3ZSBjaGVj
ayB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcywKKyAgICAgICAgIyBzaW5jZSB0aGUgaGVscGVyIG1h
eSBkbyB0aGluZ3MgdG8gbWFrZSB0aGUgc2V0dXAgY29ycmVjdC4KKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIGhlbHBlciAuLi4iKQorICAgICAgICBzZWxmLl9w
b3J0LnN0YXJ0X2hlbHBlcigpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0gZGVw
ZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgorICAgICAgICBpZiBu
b3Qgc2VsZi5fb3B0aW9ucy5ub2NoZWNrX3N5c19kZXBzOgorICAgICAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoIkNoZWNraW5nIHN5c3RlbSBkZXBlbmRlbmNpZXMgLi4uIikKKyAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYubmVlZHNfaHR0
cCgpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuY2xvYmJlcl9v
bGRfcmVzdWx0czoKKyAgICAgICAgICAgIHNlbGYuX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoKQorCisg
ICAgICAgICMgQ3JlYXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgYWxyZWFk
eSBleGlzdC4KKyAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLl9y
ZXN1bHRzX2RpcmVjdG9yeSkKKworICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVuKCkK
KworICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiUHJlcGFyaW5nIHRlc3RzIC4u
LiIpCisgICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gc2VsZi5wcmVwYXJlX2xpc3RzX2FuZF9wcmlu
dF9vdXRwdXQoKQorICAgICAgICBpZiBub3QgcmVzdWx0X3N1bW1hcnk6CisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiByZXN1bHRfc3VtbWFyeQorCisgICAgZGVmIHJ1
bihzZWxmLCByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlJ1biBhbGwgb3VyIHRlc3RzIG9u
IGFsbCBvdXIgdGVzdCBmaWxlcy4KKworICAgICAgICBGb3IgZWFjaCB0ZXN0IGZpbGUsIHdlIHJ1
biBlYWNoIHRlc3QgdHlwZS4gSWYgdGhlcmUgYXJlIGFueSBmYWlsdXJlcywKKyAgICAgICAgd2Ug
Y29sbGVjdCB0aGVtIGZvciByZXBvcnRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9iamVjdCB0cmFja2luZyB0aGUgdGVzdCByZXN1bHRz
LgorCisgICAgICAgIFJldHVybjoKKyAgICAgICAgICBUaGUgbnVtYmVyIG9mIHVuZXhwZWN0ZWQg
cmVzdWx0cyAoMCA9PSBzdWNjZXNzKQorICAgICAgICAiIiIKKyAgICAgICAgIyBnYXRoZXJfdGVz
dF9maWxlcygpIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBmaXJzdCB0byBpbml0aWFsaXplIHVzLgor
ICAgICAgICAjIElmIHdlIGRpZG4ndCBmaW5kIGFueSBmaWxlcyB0byB0ZXN0LCB3ZSd2ZSBlcnJv
cmVkIG91dCBhbHJlYWR5IGluCisgICAgICAgICMgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0
cHV0KCkuCisgICAgICAgIGFzc2VydChsZW4oc2VsZi5fdGVzdF9maWxlcykpCisKKyAgICAgICAg
c3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisKKyAgICAgICAgaW50ZXJydXB0ZWQsIGtleWJvYXJk
X2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBcCisgICAgICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9ICgKKyAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0
cyhzZWxmLl90ZXN0X2ZpbGVzX2xpc3QsIHJlc3VsdF9zdW1tYXJ5KSkKKworICAgICAgICAjIFdl
IGV4Y2x1ZGUgdGhlIGNyYXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1bHRzIHRvIHJldHJ5LCBi
ZWNhdXNlCisgICAgICAgICMgd2Ugd2FudCB0byB0cmVhdCBldmVuIGEgcG90ZW50aWFsbHkgZmxh
a3kgY3Jhc2ggYXMgYW4gZXJyb3IuCisgICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1
cmVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9RmFsc2UpCisgICAgICAgIHJldHJ5
X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQorICAgICAgICB3aGlsZSAobGVuKGZhaWx1cmVzKSBh
bmQgc2VsZi5fb3B0aW9ucy5yZXRyeV9mYWlsdXJlcyBhbmQKKyAgICAgICAgICAgIG5vdCBzZWxm
Ll9yZXRyeWluZyBhbmQgbm90IGludGVycnVwdGVkKToKKyAgICAgICAgICAgIF9sb2cuaW5mbygn
JykKKyAgICAgICAgICAgIF9sb2cuaW5mbygiUmV0cnlpbmcgJWQgdW5leHBlY3RlZCBmYWlsdXJl
KHMpIC4uLiIgJSBsZW4oZmFpbHVyZXMpKQorICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQorICAg
ICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBUcnVlCisgICAgICAgICAgICByZXRyeV9zdW1tYXJ5
ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1cmVzLmtleXMoKSkKKyAg
ICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgaWdub3JlIHRoZSByZXR1cm4g
dmFsdWUgaGVyZS4KKyAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJlcy5rZXlzKCks
IHJldHJ5X3N1bW1hcnkpCisgICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJl
cyhyZXRyeV9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKKworICAgICAgICBlbmRfdGlt
ZSA9IHRpbWUudGltZSgpCisKKyAgICAgICAgc2VsZi5fcHJpbnRfdGltaW5nX3N0YXRpc3RpY3Mo
ZW5kX3RpbWUgLSBzdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCisKKyAgICAgICAgc2VsZi5f
cHJpbnRfcmVzdWx0X3N1bW1hcnkocmVzdWx0X3N1bW1hcnkpCisKKyAgICAgICAgc3lzLnN0ZG91
dC5mbHVzaCgpCisgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorCisgICAgICAgIHNlbGYuX3By
aW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeShyZXN1bHRfc3VtbWFyeS50b3RhbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmV4
cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0X3N1bW1hcnkudW5leHBlY3RlZCkKKworICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBz
dW1tYXJpemVfcmVzdWx0cyhzZWxmLl9wb3J0LAorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MsIG9ubHlfdW5leHBlY3RlZD1UcnVlKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Vu
ZXhwZWN0ZWRfcmVzdWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCisKKyAgICAgICAgIyBGSVhNRTog
cmVtb3ZlIHJlY29yZF9yZXN1bHRzLiBJdCdzIGp1c3QgdXNlZCBmb3IgdGVzdGluZy4gVGhlcmUn
cyBubyBuZWVkCisgICAgICAgICMgZm9yIGl0IHRvIGJlIGEgY29tbWFuZGxpbmUgYXJndW1lbnQu
CisgICAgICAgIGlmIChzZWxmLl9vcHRpb25zLnJlY29yZF9yZXN1bHRzIGFuZCBub3Qgc2VsZi5f
b3B0aW9ucy5kcnlfcnVuIGFuZAorICAgICAgICAgICAgbm90IGtleWJvYXJkX2ludGVycnVwdGVk
KToKKyAgICAgICAgICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBsb2cgZmlsZXMgYW5kIHVw
bG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcworICAgICAgICAgICAgIyB0byBhcHBlbmdpbmUgc2Vy
dmVyLgorICAgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzID0gc3VtbWFyaXplX3Jlc3VsdHMo
c2VsZi5fcG9ydCwKKyAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9z
dW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4
cGVjdGVkPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5fdXBsb2FkX2pzb25fZmlsZXModW5leHBl
Y3RlZF9yZXN1bHRzLCBzdW1tYXJpemVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCisK
KyAgICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBk
aXNwbGF5IGl0IGlmIHJlcXVlc3RlZC4KKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5
X3J1bjoKKyAgICAgICAgICAgIHdyb3RlX3Jlc3VsdHMgPSBzZWxmLl93cml0ZV9yZXN1bHRzX2h0
bWxfZmlsZShyZXN1bHRfc3VtbWFyeSkKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2hv
d19yZXN1bHRzIGFuZCB3cm90ZV9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHNlbGYuX3Nob3df
cmVzdWx0c19odG1sX2ZpbGUoKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfdW5leHBlY3RlZF9y
ZXN1bHRzX2h0bWxfZmlsZSh1bmV4cGVjdGVkX3Jlc3VsdHMpCisKKyAgICAgICAgIyBOb3cgdGhh
dCB3ZSd2ZSBjb21wbGV0ZWQgYWxsIHRoZSBwcm9jZXNzaW5nIHdlIGNhbiwgd2UgcmUtcmFpc2UK
KyAgICAgICAgIyBhIEtleWJvYXJkSW50ZXJydXB0IGlmIG5lY2Vzc2FyeSBzbyB0aGUgY2FsbGVy
IGNhbiBoYW5kbGUgaXQuCisgICAgICAgIGlmIGtleWJvYXJkX2ludGVycnVwdGVkOgorICAgICAg
ICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKworICAgICAgICAjIElnbm9yZSBmbGFreSBm
YWlsdXJlcyBhbmQgdW5leHBlY3RlZCBwYXNzZXMgc28gd2UgZG9uJ3QgdHVybiB0aGUKKyAgICAg
ICAgIyBib3QgcmVkIGZvciB0aG9zZS4KKyAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0
c1snbnVtX3JlZ3Jlc3Npb25zJ10KKworICAgIGRlZiBjbGVhbl91cF9ydW4oc2VsZik6CisgICAg
ICAgICIiIlJlc3RvcmVzIHRoZSBzeXN0ZW0gYWZ0ZXIgd2UncmUgZG9uZSBydW5uaW5nIHRlc3Rz
LiIiIgorCisgICAgICAgIF9sb2cuZGVidWcoImZsdXNoaW5nIHN0ZG91dCIpCisgICAgICAgIHN5
cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRlcnIiKQor
ICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgX2xvZy5kZWJ1Zygic3RvcHBpbmcg
aGVscGVyIikKKyAgICAgICAgc2VsZi5fcG9ydC5zdG9wX2hlbHBlcigpCisKKyAgICBkZWYgdXBk
YXRlX3N1bW1hcnkoc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJVcGRhdGUgdGhl
IHN1bW1hcnkgYW5kIHByaW50IHJlc3VsdHMgd2l0aCBhbnkgY29tcGxldGVkIHRlc3RzLiIiIgor
ICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0LmxvYWRzKHNlbGYuX3Jlc3VsdF9xdWV1ZS5n
ZXRfbm93YWl0KCkpCisgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVz
dWx0KHJlc3VsdF9zdW1tYXJ5LCByZXN1bHQpCisKKyAgICBkZWYgX3VwZGF0ZV9zdW1tYXJ5X3dp
dGhfcmVzdWx0KHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCByZXN1bHQpOgorICAgICAgICBleHBlY3Rl
ZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKKyAgICAg
ICAgICAgIHJlc3VsdC5maWxlbmFtZSwgcmVzdWx0LnR5cGUsIHNlbGYuX29wdGlvbnMucGl4ZWxf
dGVzdHMpCisgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQorICAg
ICAgICBleHBfc3RyID0gc2VsZi5fZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5n
KAorICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lKQorICAgICAgICBnb3Rfc3RyID0gc2VsZi5f
ZXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX3RvX3N0cmluZyhyZXN1bHQudHlwZSkKKyAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3Ry
LCBnb3Rfc3RyKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Byb2dyZXNzKHJlc3VsdF9z
dW1tYXJ5LCBzZWxmLl9yZXRyeWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisKKyAgICAgICAgZGVmIGludGVycnVwdF9p
Zl9hdF9mYWlsdXJlX2xpbWl0KGxpbWl0LCBjb3VudCwgbWVzc2FnZSk6CisgICAgICAgICAgICBp
ZiBsaW1pdCBhbmQgY291bnQgPj0gbGltaXQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVGVzdFJ1
bkludGVycnVwdGVkRXhjZXB0aW9uKG1lc3NhZ2UgJSBjb3VudCkKKworICAgICAgICBpbnRlcnJ1
cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9h
ZnRlcl9uX2ZhaWx1cmVzLAorICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9m
YWlsdXJlcywKKyAgICAgICAgICAgICJBYm9ydGluZyBydW4gc2luY2UgJWQgZmFpbHVyZXMgd2Vy
ZSByZWFjaGVkIikKKyAgICAgICAgaW50ZXJydXB0X2lmX2F0X2ZhaWx1cmVfbGltaXQoCisgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLmV4aXRfYWZ0ZXJfbl9jcmFzaGVzX29yX3RpbWVvdXRzLAor
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9jcmFzaGVzX29yX3RpbWVvdXRz
LAorICAgICAgICAgICAgIkFib3J0aW5nIHJ1biBzaW5jZSAlZCBjcmFzaGVzIG9yIHRpbWVvdXRz
IHdlcmUgcmVhY2hlZCIpCisKKyAgICBkZWYgX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoc2VsZik6Cisg
ICAgICAgICMgSnVzdCBjbG9iYmVyIHRoZSBhY3R1YWwgdGVzdCByZXN1bHRzIGRpcmVjdG9yaWVz
IHNpbmNlIHRoZSBvdGhlcgorICAgICAgICAjIGZpbGVzIGluIHRoZSByZXN1bHRzIGRpcmVjdG9y
eSBhcmUgZXhwbGljaXRseSB1c2VkIGZvciBjcm9zcy1ydW4KKyAgICAgICAgIyB0cmFja2luZy4K
KyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIkNsb2JiZXJpbmcgb2xkIHJlc3Vs
dHMgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVz
dWx0c19kaXJlY3RvcnkpCisgICAgICAgIGxheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0Lmxh
eW91dF90ZXN0c19kaXIoKQorICAgICAgICBwb3NzaWJsZV9kaXJzID0gc2VsZi5fcG9ydC50ZXN0
X2RpcnMoKQorICAgICAgICBmb3IgZGlybmFtZSBpbiBwb3NzaWJsZV9kaXJzOgorICAgICAgICAg
ICAgaWYgc2VsZi5fZnMuaXNkaXIoc2VsZi5fZnMuam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJu
YW1lKSk6CisgICAgICAgICAgICAgICAgc2VsZi5fZnMucm10cmVlKHNlbGYuX2ZzLmpvaW4oc2Vs
Zi5fcmVzdWx0c19kaXJlY3RvcnksIGRpcm5hbWUpKQorCisgICAgZGVmIF9nZXRfZmFpbHVyZXMo
c2VsZiwgcmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcyk6CisgICAgICAgICIiIkZpbHRl
cnMgYSBkaWN0IG9mIHJlc3VsdHMgYW5kIHJldHVybnMgb25seSB0aGUgZmFpbHVyZXMuCisKKyAg
ICAgICAgQXJnczoKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogdGhlIHJlc3VsdHMgb2YgdGhl
IHRlc3QgcnVuCisgICAgICAgICAgaW5jbHVkZV9jcmFzaGVzOiB3aGV0aGVyIGNyYXNoZXMgYXJl
IGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuCisgICAgICAgICAgICBXZSB1c2UgRmFsc2Ugd2hlbiBm
aW5kaW5nIHRoZSBsaXN0IG9mIGZhaWx1cmVzIHRvIHJldHJ5CisgICAgICAgICAgICB0byBzZWUg
aWYgdGhlIHJlc3VsdHMgd2VyZSBmbGFreS4gQWx0aG91Z2ggdGhlIGNyYXNoZXMgbWF5IGFsc28g
YmUKKyAgICAgICAgICAgIGZsYWt5LCB3ZSB0cmVhdCB0aGVtIGFzIGlmIHRoZXkgYXJlbid0IHNv
IHRoYXQgdGhleSdyZSBub3QgaWdub3JlZC4KKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBh
IGRpY3Qgb2YgZmlsZXMgLT4gcmVzdWx0cworICAgICAgICAiIiIKKyAgICAgICAgZmFpbGVkX3Jl
c3VsdHMgPSB7fQorICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVu
ZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChyZXN1bHQudHlw
ZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTIG9yCisgICAgICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0ggYW5kIG5vdCBpbmNsdWRlX2NyYXNoZXMpOgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0
XSA9IHJlc3VsdC50eXBlCisKKyAgICAgICAgcmV0dXJuIGZhaWxlZF9yZXN1bHRzCisKKyAgICBk
ZWYgX2NoYXJfZm9yX3Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAgICByZXN1bHQgPSByZXN1
bHQubG93ZXIoKQorICAgICAgICBpZiByZXN1bHQgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQ
RUNUQVRJT05TOgorICAgICAgICAgICAgcmVzdWx0X2VudW1fdmFsdWUgPSBUZXN0RXhwZWN0YXRp
b25zRmlsZS5FWFBFQ1RBVElPTlNbcmVzdWx0XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmVzdWx0X2VudW1fdmFsdWUgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlNbcmVzdWx0
XQorICAgICAgICByZXR1cm4ganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IuRkFJTFVSRV9UT19DSEFSW3Jlc3VsdF9lbnVtX3ZhbHVlXQorCisg
ICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHN1bW1h
cml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CisgICAgICAgICIiIldyaXRlcyB0aGUgcmVzdWx0
cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCisgICAgICAg
IGRpciBhbmQgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGUgYXBwZW5naW5lIHNlcnZlci4KKworICAg
ICAgICBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGZpbGVzIHdyaXR0ZW4gaW50byB0aGUgcmVz
dWx0cyBkaXI6CisgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzLmpzb246IEEgc2hvcnQgbGlz
dCBvZiBhbnkgdW5leHBlY3RlZCByZXN1bHRzLgorICAgICAgICAgICAgVGhpcyBpcyB1c2VkIGJ5
IHRoZSBidWlsZGJvdHMgdG8gZGlzcGxheSByZXN1bHRzLgorICAgICAgICAgIGV4cGVjdGF0aW9u
cy5qc29uOiBUaGlzIGlzIHVzZWQgYnkgdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQuCisgICAgICAg
ICAgcmVzdWx0cy5qc29uOiBBIGZ1bGwgbGlzdCBvZiB0aGUgcmVzdWx0cyAtIHVzZWQgYnkgdGhl
IGZsYWtpbmVzcworICAgICAgICAgICAgZGFzaGJvYXJkIGFuZCB0aGUgYWdncmVnYXRlIHJlc3Vs
dHMgZGFzaGJvYXJkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdW5leHBlY3RlZF9yZXN1
bHRzOiBkaWN0IG9mIHVuZXhwZWN0ZWQgcmVzdWx0cworICAgICAgICAgIHN1bW1hcml6ZWRfcmVz
dWx0czogZGljdCBvZiByZXN1bHRzCisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGZ1bGwgc3Vt
bWFyeSBvYmplY3QKKyAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczogbGlzdCBvZiB0
ZXN0IHRpbWVzICh1c2VkIGJ5IHRoZSBmbGFraW5lc3MKKyAgICAgICAgICAgIGRhc2hib2FyZCku
CisgICAgICAgICIiIgorICAgICAgICBfbG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4g
JXMuIiAlIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQorCisgICAgICAgIHVuZXhwZWN0ZWRfanNv
bl9wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0
ZWRfcmVzdWx0cy5qc29uIikKKyAgICAgICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci53cml0ZV9q
c29uKHNlbGYuX2ZzLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHVuZXhwZWN0ZWRfanNvbl9wYXRoKQor
CisgICAgICAgIGZ1bGxfcmVzdWx0c19wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSwgImZ1bGxfcmVzdWx0cy5qc29uIikKKyAgICAgICAganNvbl9yZXN1bHRzX2dl
bmVyYXRvci53cml0ZV9qc29uKHNlbGYuX2ZzLCBzdW1tYXJpemVkX3Jlc3VsdHMsIGZ1bGxfcmVz
dWx0c19wYXRoKQorCisgICAgICAgICMgV3JpdGUgYSBqc29uIGZpbGUgb2YgdGhlIHRlc3RfZXhw
ZWN0YXRpb25zLnR4dCBmaWxlIGZvciB0aGUgbGF5b3V0CisgICAgICAgICMgdGVzdHMgZGFzaGJv
YXJkLgorICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVz
dWx0c19kaXJlY3RvcnksICJleHBlY3RhdGlvbnMuanNvbiIpCisgICAgICAgIGV4cGVjdGF0aW9u
c19qc29uID0gXAorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlv
bnNfanNvbl9mb3JfYWxsX3BsYXRmb3JtcygpCisgICAgICAgIHNlbGYuX2ZzLndyaXRlX3RleHRf
ZmlsZShleHBlY3RhdGlvbnNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUiQUREX0VYUEVDVEFUSU9OUyglcyk7IiAlIGV4cGVjdGF0aW9uc19qc29uKQorCisgICAgICAg
IGdlbmVyYXRvciA9IGpzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05MYXlvdXRSZXN1
bHRzR2VuZXJhdG9yKAorICAgICAgICAgICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5idWls
ZGVyX25hbWUsIHNlbGYuX29wdGlvbnMuYnVpbGRfbmFtZSwKKyAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMuYnVpbGRfbnVtYmVyLCBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAg
IEJVSUxERVJfQkFTRV9VUkwsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAorICAgICAgICAgICAg
c2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgc2VsZi5fdGVzdF9maWxlc19saXN0
LAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLAorICAgICAg
ICAgICAgImxheW91dC10ZXN0cyIsCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc3Rlcl9u
YW1lKQorCisgICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNPTiBmaWxlcy4i
KQorCisgICAgICAgIGpzb25fZmlsZXMgPSBbImV4cGVjdGF0aW9ucy5qc29uIiwgImluY3JlbWVu
dGFsX3Jlc3VsdHMuanNvbiIsICJmdWxsX3Jlc3VsdHMuanNvbiJdCisKKyAgICAgICAgZ2VuZXJh
dG9yLnVwbG9hZF9qc29uX2ZpbGVzKGpzb25fZmlsZXMpCisKKyAgICBkZWYgX3ByaW50X2NvbmZp
ZyhzZWxmKToKKyAgICAgICAgIiIiUHJpbnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGVz
dCBydW4uIiIiCisgICAgICAgIHAgPSBzZWxmLl9wcmludGVyCisgICAgICAgIHAucHJpbnRfY29u
ZmlnKCJVc2luZyBwb3J0ICclcyciICUgc2VsZi5fcG9ydC5uYW1lKCkpCisgICAgICAgIHAucHJp
bnRfY29uZmlnKCJUZXN0IGNvbmZpZ3VyYXRpb246ICVzIiAlIHNlbGYuX3BvcnQudGVzdF9jb25m
aWd1cmF0aW9uKCkpCisgICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFjaW5nIHRlc3QgcmVzdWx0
cyBpbiAlcyIgJSBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5uZXdfYmFzZWxpbmU6CisgICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUGxhY2luZyBu
ZXcgYmFzZWxpbmVzIGluICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
b3J0LmJhc2VsaW5lX3BhdGgoKSkKKyAgICAgICAgcC5wcmludF9jb25maWcoIlVzaW5nICVzIGJ1
aWxkIiAlIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbikKKyAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQaXhlbCB0ZXN0
cyBlbmFibGVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQ
aXhlbCB0ZXN0cyBkaXNhYmxlZCIpCisKKyAgICAgICAgcC5wcmludF9jb25maWcoIlJlZ3VsYXIg
dGltZW91dDogJXMsIHNsb3cgdGVzdCB0aW1lb3V0OiAlcyIgJQorICAgICAgICAgICAgICAgICAg
ICAgICAoc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykpCisKKyAgICAgICAgaWYgc2VsZi5fbnVt
X3dvcmtlcnMoKSA9PSAxOgorICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlJ1bm5pbmcgb25l
ICVzIiAlIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHAucHJpbnRfY29uZmlnKCJSdW5uaW5nICVzICVzcyBpbiBwYXJhbGxlbCIgJQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSkpCisgICAg
ICAgIHAucHJpbnRfY29uZmlnKCdDb21tYW5kIGxpbmU6ICcgKworICAgICAgICAgICAgICAgICAg
ICAgICAnICcuam9pbihzZWxmLl9wb3J0LmRyaXZlcl9jbWRfbGluZSgpKSkKKyAgICAgICAgcC5w
cmludF9jb25maWcoIldvcmtlciBtb2RlbDogJXMiICUgc2VsZi5fb3B0aW9ucy53b3JrZXJfbW9k
ZWwpCisgICAgICAgIHAucHJpbnRfY29uZmlnKCIiKQorCisgICAgZGVmIF9wcmludF9leHBlY3Rl
ZF9yZXN1bHRzX29mX3R5cGUoc2VsZiwgcmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUsIHJlc3VsdF90eXBlX3N0cik6Cisg
ICAgICAgICIiIlByaW50IHRoZSBudW1iZXIgb2YgdGhlIHRlc3RzIGluIGEgZ2l2ZW4gcmVzdWx0
IGNsYXNzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcmVzdWx0X3N1bW1hcnkgLSB0aGUg
b2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSByZXN1bHRzIHRvIHJlcG9ydCBvbgorICAgICAgICAg
IHJlc3VsdF90eXBlIC0gdGhlIHBhcnRpY3VsYXIgcmVzdWx0IHR5cGUgdG8gcmVwb3J0IGluIHRo
ZSBzdW1tYXJ5LgorICAgICAgICAgIHJlc3VsdF90eXBlX3N0ciAtIGEgc3RyaW5nIGRlc2NyaXB0
aW9uIG9mIHRoZSByZXN1bHRfdHlwZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3RzID0gc2Vs
Zi5fZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKHJlc3VsdF90eXBlKQor
ICAgICAgICBub3cgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0ZXN0X2V4cGVj
dGF0aW9ucy5OT1ddCisgICAgICAgIHdvbnRmaXggPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90
aW1lbGluZVt0ZXN0X2V4cGVjdGF0aW9ucy5XT05URklYXQorCisgICAgICAgICMgV2UgdXNlIGEg
ZmFuY3kgZm9ybWF0IHN0cmluZyBpbiBvcmRlciB0byBwcmludCB0aGUgZGF0YSBvdXQgaW4gYQor
ICAgICAgICAjIG5pY2VseS1hbGlnbmVkIHRhYmxlLgorICAgICAgICBmbXRzdHIgPSAoIkV4cGVj
dDogJSU1ZCAlJS04cyAoJSUlZGQgbm93LCAlJSVkZCB3b250Zml4KSIKKyAgICAgICAgICAgICAg
ICAgICUgKHNlbGYuX251bV9kaWdpdHMobm93KSwgc2VsZi5fbnVtX2RpZ2l0cyh3b250Zml4KSkp
CisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoZm10c3RyICUKKyAgICAgICAg
ICAgIChsZW4odGVzdHMpLCByZXN1bHRfdHlwZV9zdHIsIGxlbih0ZXN0cyAmIG5vdyksIGxlbih0
ZXN0cyAmIHdvbnRmaXgpKSkKKworICAgIGRlZiBfbnVtX2RpZ2l0cyhzZWxmLCBudW0pOgorICAg
ICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIG5lZWRlZCB0byByZXByZXNlbnQg
dGhlIGxlbmd0aCBvZiBhCisgICAgICAgIHNlcXVlbmNlLiIiIgorICAgICAgICBuZGlnaXRzID0g
MQorICAgICAgICBpZiBsZW4obnVtKToKKyAgICAgICAgICAgIG5kaWdpdHMgPSBpbnQobWF0aC5s
b2cxMChsZW4obnVtKSkpICsgMQorICAgICAgICByZXR1cm4gbmRpZ2l0cworCisgICAgZGVmIF9w
cmludF90aW1pbmdfc3RhdGlzdGljcyhzZWxmLCB0b3RhbF90aW1lLCB0aHJlYWRfdGltaW5ncywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmdzLCBp
bmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlJlY29yZCB0aW1pbmctc3BlY2lmaWMgaW5mb3Jt
YXRpb24gZm9yIHRoZSB0ZXN0IHJ1bi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHRvdGFs
X3RpbWU6IHRvdGFsIGVsYXBzZWQgdGltZSAoaW4gc2Vjb25kcykgZm9yIHRoZSB0ZXN0IHJ1bgor
ICAgICAgICAgIHRocmVhZF90aW1pbmdzOiB3YWxsIGNsb2NrIHRpbWUgZWFjaCB0aHJlYWQgcmFu
IGZvcgorICAgICAgICAgIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3M6IHRpbWluZyBieSBkaXJlY3Rv
cnkKKyAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczogdGltaW5nIGJ5IGZpbGUKKyAg
ICAgICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgZm9yIHRoZSB0ZXN0IHJ1bgor
ICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIlRlc3QgdGlt
aW5nOiIpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgICU2LjJmIHRvdGFs
IHRlc3RpbmcgdGltZSIgJSB0b3RhbF90aW1lKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZygiIikKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIlRocmVhZCB0
aW1pbmc6IikKKyAgICAgICAgY3VtbF90aW1lID0gMAorICAgICAgICBmb3IgdCBpbiB0aHJlYWRf
dGltaW5nczoKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgICAgJTEw
czogJTVkIHRlc3RzLCAlNi4yZiBzZWNzIiAlCisgICAgICAgICAgICAgICAgICAodFsnbmFtZSdd
LCB0WydudW1fdGVzdHMnXSwgdFsndG90YWxfdGltZSddKSkKKyAgICAgICAgICAgIGN1bWxfdGlt
ZSArPSB0Wyd0b3RhbF90aW1lJ10KKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmco
IiAgICU2LjJmIGN1bXVsYXRpdmUsICU2LjJmIG9wdGltYWwiICUKKyAgICAgICAgICAgICAgKGN1
bWxfdGltZSwgY3VtbF90aW1lIC8gaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSkp
CisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQorCisgICAgICAgIHNlbGYu
X3ByaW50X2FnZ3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3MoaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mp
CisgICAgICAgIHNlbGYuX3ByaW50X2luZGl2aWR1YWxfdGVzdF90aW1lcyhpbmRpdmlkdWFsX3Rl
c3RfdGltaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5KQorICAgICAgICBzZWxmLl9wcmludF9kaXJlY3RvcnlfdGltaW5ncyhkaXJl
Y3RvcnlfdGVzdF90aW1pbmdzKQorCisgICAgZGVmIF9wcmludF9hZ2dyZWdhdGVfdGVzdF9zdGF0
aXN0aWNzKHNlbGYsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKKyAgICAgICAgIiIiUHJpbnRz
IGFnZ3JlZ2F0ZSBzdGF0aXN0aWNzIChlLmcuIG1lZGlhbiwgbWVhbiwgZXRjLikgZm9yIGFsbCB0
ZXN0cy4KKyAgICAgICAgQXJnczoKKyAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczog
TGlzdCBvZiBUZXN0UmVzdWx0cyBmb3IgYWxsIHRlc3RzLgorICAgICAgICAiIiIKKyAgICAgICAg
dGltZXNfZm9yX2R1bXBfcmVuZGVyX3RyZWUgPSBbdGVzdF9zdGF0cy50ZXN0X3J1bl90aW1lIGZv
ciB0ZXN0X3N0YXRzIGluIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzXQorICAgICAgICBzZWxmLl9w
cmludF9zdGF0aXN0aWNzX2Zvcl90ZXN0X3RpbWluZ3MoIlBFUiBURVNUIFRJTUUgSU4gVEVTVFNI
RUxMIChzZWNvbmRzKToiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZXNfZm9yX2R1bXBfcmVuZGVyX3RyZWUpCisKKyAgICBkZWYgX3ByaW50X2lu
ZGl2aWR1YWxfdGVzdF90aW1lcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIi
IlByaW50cyB0aGUgcnVuIHRpbWVzIGZvciBzbG93LCB0aW1lb3V0IGFuZCBjcmFzaCB0ZXN0cy4K
KyAgICAgICAgQXJnczoKKyAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczogTGlzdCBv
ZiBUZXN0U3RhdHMgZm9yIGFsbCB0ZXN0cy4KKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogc3Vt
bWFyeSBvYmplY3QgZm9yIHRlc3QgcnVuCisgICAgICAgICIiIgorICAgICAgICAjIFJldmVyc2Ut
c29ydCBieSB0aGUgdGltZSBzcGVudCBpbiBEdW1wUmVuZGVyVHJlZS4KKyAgICAgICAgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3Muc29ydChsYW1iZGEgYSwgYjoKKyAgICAgICAgICAgIGNtcChiLnRl
c3RfcnVuX3RpbWUsIGEudGVzdF9ydW5fdGltZSkpCisKKyAgICAgICAgbnVtX3ByaW50ZWQgPSAw
CisgICAgICAgIHNsb3dfdGVzdHMgPSBbXQorICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3Rz
ID0gW10KKyAgICAgICAgdW5leHBlY3RlZF9zbG93X3Rlc3RzID0gW10KKyAgICAgICAgZm9yIHRl
c3RfdHVwbGUgaW4gaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6CisgICAgICAgICAgICBmaWxlbmFt
ZSA9IHRlc3RfdHVwbGUuZmlsZW5hbWUKKyAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jf
c2xvdyA9IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Nsb3coZmlsZW5hbWUp
OgorICAgICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRydWUKKyAgICAg
ICAgICAgICAgICBzbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisgICAgICAgICAgICBp
ZiBmaWxlbmFtZSBpbiByZXN1bHRfc3VtbWFyeS5mYWlsdXJlczoKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHRfc3VtbWFyeS5yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCisgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUIG9yCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCk6CisgICAgICAg
ICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRydWUKKyAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9vcl9jcmFzaF90ZXN0cy5hcHBlbmQodGVzdF90dXBsZSkKKworICAg
ICAgICAgICAgaWYgKG5vdCBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgYW5kCisgICAgICAgICAg
ICAgICAgbnVtX3ByaW50ZWQgPCBwcmludGluZy5OVU1fU0xPV19URVNUU19UT19MT0cpOgorICAg
ICAgICAgICAgICAgIG51bV9wcmludGVkID0gbnVtX3ByaW50ZWQgKyAxCisgICAgICAgICAgICAg
ICAgdW5leHBlY3RlZF9zbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQorICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xp
c3RfdGltaW5nKCIlcyBzbG93ZXN0IHRlc3RzIHRoYXQgYXJlIG5vdCAiCisgICAgICAgICAgICAi
bWFya2VkIGFzIFNMT1cgYW5kIGRpZCBub3QgdGltZW91dC9jcmFzaDoiICUKKyAgICAgICAgICAg
IHByaW50aW5nLk5VTV9TTE9XX1RFU1RTX1RPX0xPRywgdW5leHBlY3RlZF9zbG93X3Rlc3RzKQor
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKKyAgICAgICAgc2VsZi5fcHJp
bnRfdGVzdF9saXN0X3RpbWluZygiVGVzdHMgbWFya2VkIGFzIFNMT1c6Iiwgc2xvd190ZXN0cykK
KyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCisgICAgICAgIHNlbGYuX3By
aW50X3Rlc3RfbGlzdF90aW1pbmcoIlRlc3RzIHRoYXQgdGltZWQgb3V0IG9yIGNyYXNoZWQ6IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rl
c3RzKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKKworICAgIGRlZiBf
cHJpbnRfdGVzdF9saXN0X3RpbWluZyhzZWxmLCB0aXRsZSwgdGVzdF9saXN0KToKKyAgICAgICAg
IiIiUHJpbnQgdGltaW5nIGluZm8gZm9yIGVhY2ggdGVzdC4KKworICAgICAgICBBcmdzOgorICAg
ICAgICAgIHRpdGxlOiBzZWN0aW9uIGhlYWRpbmcKKyAgICAgICAgICB0ZXN0X2xpc3Q6IHRlc3Rz
IHRoYXQgZmFsbCBpbiB0aGlzIHNlY3Rpb24KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYu
X3ByaW50ZXIuZGlzYWJsZWQoJ3Nsb3dlc3QnKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKHRpdGxlKQorICAgICAgICBmb3IgdGVzdF90
dXBsZSBpbiB0ZXN0X2xpc3Q6CisgICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3RfdHVwbGUuZmls
ZW5hbWVbbGVuKAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2Rpcigp
KSArIDE6XQorICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKCdcXCcsICcv
JykKKyAgICAgICAgICAgIHRlc3RfcnVuX3RpbWUgPSByb3VuZCh0ZXN0X3R1cGxlLnRlc3RfcnVu
X3RpbWUsIDEpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAlcyB0
b29rICVzIHNlY29uZHMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChmaWxlbmFtZSwgdGVzdF9ydW5fdGltZSkpCisKKyAgICBkZWYgX3ByaW50X2RpcmVjdG9yeV90
aW1pbmdzKHNlbGYsIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpOgorICAgICAgICAiIiJQcmludCB0
aW1pbmcgaW5mbyBieSBkaXJlY3RvcnkgZm9yIGFueSBkaXJlY3RvcmllcyB0aGF0CisgICAgICAg
IHRha2UgPiAxMCBzZWNvbmRzIHRvIHJ1bi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGRp
cmVjdG9yeV90ZXN0X3RpbWluZzogdGltZSBpbmZvIGZvciBlYWNoIGRpcmVjdG9yeQorICAgICAg
ICAiIiIKKyAgICAgICAgdGltaW5ncyA9IFtdCisgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gZGly
ZWN0b3J5X3Rlc3RfdGltaW5nczoKKyAgICAgICAgICAgIG51bV90ZXN0cywgdGltZV9mb3JfZGly
ZWN0b3J5ID0gZGlyZWN0b3J5X3Rlc3RfdGltaW5nc1tkaXJlY3RvcnldCisgICAgICAgICAgICB0
aW1pbmdzLmFwcGVuZCgocm91bmQodGltZV9mb3JfZGlyZWN0b3J5LCAxKSwgZGlyZWN0b3J5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV90ZXN0cykpCisgICAgICAgIHRpbWluZ3Mu
c29ydCgpCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIlRpbWUgdG8gcHJv
Y2VzcyBzbG93ZXN0IHN1YmRpcmVjdG9yaWVzOiIpCisgICAgICAgIG1pbl9zZWNvbmRzX3RvX3By
aW50ID0gMTAKKyAgICAgICAgZm9yIHRpbWluZyBpbiB0aW1pbmdzOgorICAgICAgICAgICAgaWYg
dGltaW5nWzBdID4gbWluX3NlY29uZHNfdG9fcHJpbnQ6CisgICAgICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF90aW1pbmcoCisgICAgICAgICAgICAgICAgICAgICIgICVzIHRvb2sgJXMg
c2Vjb25kcyB0byBydW4gJXMgdGVzdHMuIiAlICh0aW1pbmdbMV0sCisgICAgICAgICAgICAgICAg
ICAgIHRpbWluZ1swXSwgdGltaW5nWzJdKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90
aW1pbmcoIiIpCisKKyAgICBkZWYgX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncyhz
ZWxmLCB0aXRsZSwgdGltaW5ncyk6CisgICAgICAgICIiIlByaW50cyB0aGUgbWVkaWFuLCBtZWFu
IGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIHZhbHVlcyBpbgorICAgICAgICB0aW1pbmdz
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdGl0bGU6IFRpdGxlIGZvciB0aGVzZSB0aW1p
bmdzLgorICAgICAgICAgIHRpbWluZ3M6IEEgbGlzdCBvZiBmbG9hdHMgcmVwcmVzZW50aW5nIHRp
bWVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcodGl0
bGUpCisgICAgICAgIHRpbWluZ3Muc29ydCgpCisKKyAgICAgICAgbnVtX3Rlc3RzID0gbGVuKHRp
bWluZ3MpCisgICAgICAgIGlmIG5vdCBudW1fdGVzdHM6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgcGVyY2VudGlsZTkwID0gdGltaW5nc1tpbnQoLjkgKiBudW1fdGVzdHMpXQorICAgICAg
ICBwZXJjZW50aWxlOTkgPSB0aW1pbmdzW2ludCguOTkgKiBudW1fdGVzdHMpXQorCisgICAgICAg
IGlmIG51bV90ZXN0cyAlIDIgPT0gMToKKyAgICAgICAgICAgIG1lZGlhbiA9IHRpbWluZ3NbKChu
dW1fdGVzdHMgLSAxKSAvIDIpIC0gMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvd2Vy
ID0gdGltaW5nc1tudW1fdGVzdHMgLyAyIC0gMV0KKyAgICAgICAgICAgIHVwcGVyID0gdGltaW5n
c1tudW1fdGVzdHMgLyAyXQorICAgICAgICAgICAgbWVkaWFuID0gKGZsb2F0KGxvd2VyICsgdXBw
ZXIpKSAvIDIKKworICAgICAgICBtZWFuID0gc3VtKHRpbWluZ3MpIC8gbnVtX3Rlc3RzCisKKyAg
ICAgICAgZm9yIHRpbWUgaW4gdGltaW5nczoKKyAgICAgICAgICAgIHN1bV9vZl9kZXZpYXRpb25z
ID0gbWF0aC5wb3codGltZSAtIG1lYW4sIDIpCisKKyAgICAgICAgc3RkX2RldmlhdGlvbiA9IG1h
dGguc3FydChzdW1fb2ZfZGV2aWF0aW9ucyAvIG51bV90ZXN0cykKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF90aW1pbmcoIiAgTWVkaWFuOiAgICAgICAgICAlNi4zZiIgJSBtZWRpYW4pCisg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIE1lYW46ICAgICAgICAgICAgJTYu
M2YiICUgbWVhbikKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgOTB0aCBw
ZXJjZW50aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxlOTApCisgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGltaW5nKCIgIDk5dGggcGVyY2VudGlsZTogJTYuM2YiICUgcGVyY2VudGlsZTk5KQor
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBTdGFuZGFyZCBkZXY6ICAgICU2
LjNmIiAlIHN0ZF9kZXZpYXRpb24pCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5n
KCIiKQorCisgICAgZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFy
eSk6CisgICAgICAgICIiIlByaW50IGEgc2hvcnQgc3VtbWFyeSBhYm91dCBob3cgbWFueSB0ZXN0
cyBwYXNzZWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogaW5m
b3JtYXRpb24gdG8gbG9nCisgICAgICAgICIiIgorICAgICAgICBmYWlsZWQgPSBsZW4ocmVzdWx0
X3N1bW1hcnkuZmFpbHVyZXMpCisgICAgICAgIHNraXBwZWQgPSBsZW4oCisgICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQ
XSkKKyAgICAgICAgdG90YWwgPSByZXN1bHRfc3VtbWFyeS50b3RhbAorICAgICAgICBwYXNzZWQg
PSB0b3RhbCAtIGZhaWxlZCAtIHNraXBwZWQKKyAgICAgICAgcGN0X3Bhc3NlZCA9IDAuMAorICAg
ICAgICBpZiB0b3RhbCA+IDA6CisgICAgICAgICAgICBwY3RfcGFzc2VkID0gZmxvYXQocGFzc2Vk
KSAqIDEwMCAvIHRvdGFsCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiIp
CisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCI9PiBSZXN1bHRzOiAlZC8lZCB0
ZXN0cyBwYXNzZWQgKCUuMWYlJSkiICUKKyAgICAgICAgICAgICAgICAgICAgIChwYXNzZWQsIHRv
dGFsLCBwY3RfcGFzc2VkKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiIp
CisgICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJlc3VsdF9zdW1tYXJ5
LAorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuTk9XLCAiVGVzdHMgdG8gYmUgZml4ZWQi
KQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQorICAgICAgICBzZWxm
Ll9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAg
IHRlc3RfZXhwZWN0YXRpb25zLldPTlRGSVgsCisgICAgICAgICAgICAiVGVzdHMgdGhhdCB3aWxs
IG9ubHkgYmUgZml4ZWQgaWYgdGhleSBjcmFzaCAoV09OVEZJWCkiKQorICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X2FjdHVhbCgiIikKKworICAgIGRlZiBfcHJpbnRfcmVzdWx0X3N1bW1hcnlf
ZW50cnkoc2VsZiwgcmVzdWx0X3N1bW1hcnksIHRpbWVsaW5lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhZGluZyk6CisgICAgICAgICIiIlByaW50IGEgc3VtbWFyeSBi
bG9jayBvZiByZXN1bHRzIGZvciBhIHBhcnRpY3VsYXIgdGltZWxpbmUgb2YgdGVzdC4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IHRvIHByaW50IHJl
c3VsdHMgZm9yCisgICAgICAgICAgdGltZWxpbmU6IHRoZSB0aW1lbGluZSB0byBwcmludCByZXN1
bHRzIGZvciAoTk9ULCBXT05URklYLCBldGMuKQorICAgICAgICAgIGhlYWRpbmc6IGEgdGV4dHVh
bCBkZXNjcmlwdGlvbiBvZiB0aGUgdGltZWxpbmUKKyAgICAgICAgIiIiCisgICAgICAgIHRvdGFs
ID0gbGVuKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKKyAgICAg
ICAgbm90X3Bhc3NpbmcgPSAodG90YWwgLQorICAgICAgICAgICBsZW4ocmVzdWx0X3N1bW1hcnku
dGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuUEFTU10gJgorICAgICAgICAg
ICAgICAgcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKSkKKyAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIj0+ICVzICglZCk6IiAlIChoZWFkaW5nLCBu
b3RfcGFzc2luZykpCisKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBUZXN0RXhwZWN0YXRpb25zRmls
ZS5FWFBFQ1RBVElPTl9PUkRFUjoKKyAgICAgICAgICAgIGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVj
dGF0aW9ucy5QQVNTOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXN1
bHRzID0gKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Jlc3VsdF0gJgorICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0aW1l
bGluZV0pCisgICAgICAgICAgICBkZXNjID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJ
T05fREVTQ1JJUFRJT05TW3Jlc3VsdF0KKyAgICAgICAgICAgIGlmIG5vdF9wYXNzaW5nIGFuZCBs
ZW4ocmVzdWx0cyk6CisgICAgICAgICAgICAgICAgcGN0ID0gbGVuKHJlc3VsdHMpICogMTAwLjAg
LyBub3RfcGFzc2luZworICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFs
KCIgICU1ZCAlLTI0cyAoJTQuMWYlJSkiICUKKyAgICAgICAgICAgICAgICAgICAgKGxlbihyZXN1
bHRzKSwgZGVzY1tsZW4ocmVzdWx0cykgIT0gMV0sIHBjdCkpCisKKyAgICBkZWYgX3Jlc3VsdHNf
aHRtbChzZWxmLCB0ZXN0X2ZpbGVzLCBmYWlsdXJlcywgdGl0bGU9IlRlc3QgRmFpbHVyZXMiLCBv
dmVycmlkZV90aW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdF9maWxlcyA9IGEg
bGlzdCBvZiBmaWxlIHBhdGhzCisgICAgICAgIGZhaWx1cmVzID0gZGljdGlvbmFyeSBtYXBwaW5n
IHRlc3QgcGF0aHMgdG8gZmFpbHVyZSBvYmplY3RzCisgICAgICAgIHRpdGxlID0gdGl0bGUgcHJp
bnRlZCBhdCB0b3Agb2YgdGVzdAorICAgICAgICBvdmVycmlkZV90aW1lID0gY3VycmVudCB0aW1l
ICh1c2VkIGJ5IHVuaXQgdGVzdHMpCisgICAgICAgICIiIgorICAgICAgICBwYWdlID0gIiIiPGh0
bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5MYXlvdXQgVGVzdCBSZXN1bHRzICglKHRpbWUpcyk8
L3RpdGxlPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxoMj4lKHRpdGxlKXMgKCUodGltZSlz
KTwvaDI+CisgICAgICAgICIiIiAlIHsndGl0bGUnOiB0aXRsZSwgJ3RpbWUnOiBvdmVycmlkZV90
aW1lIG9yIHRpbWUuYXNjdGltZSgpfQorCisgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gc29ydGVk
KHRlc3RfZmlsZXMpOgorICAgICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2
ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfZmlsZSkKKyAgICAgICAgICAgIHRlc3RfdXJsID0gc2VsZi5f
cG9ydC5maWxlbmFtZV90b191cmkodGVzdF9maWxlKQorICAgICAgICAgICAgcGFnZSArPSB1Ijxw
PjxhIGhyZWY9JyVzJz4lczwvYT48YnIgLz5cbiIgJSAodGVzdF91cmwsIHRlc3RfbmFtZSkKKyAg
ICAgICAgICAgIHRlc3RfZmFpbHVyZXMgPSBmYWlsdXJlcy5nZXQodGVzdF9maWxlLCBbXSkKKyAg
ICAgICAgICAgIGZvciBmYWlsdXJlIGluIHRlc3RfZmFpbHVyZXM6CisgICAgICAgICAgICAgICAg
cGFnZSArPSAodSImbmJzcDsmbmJzcDslczxici8+IiAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFpbHVyZS5yZXN1bHRfaHRtbF9vdXRwdXQodGVzdF9uYW1lKSkKKyAgICAgICAgICAgIHBh
Z2UgKz0gIjwvcD5cbiIKKyAgICAgICAgcGFnZSArPSAiPC9ib2R5PjwvaHRtbD5cbiIKKyAgICAg
ICAgcmV0dXJuIHBhZ2UKKworICAgIGRlZiBfd3JpdGVfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwg
cmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJXcml0ZSByZXN1bHRzLmh0bWwgd2hpY2ggaXMg
YSBzdW1tYXJ5IG9mIHRlc3RzIHRoYXQgZmFpbGVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgcmVzdWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0cyA6KQorCisgICAgICAg
IFJldHVybnM6CisgICAgICAgICAgVHJ1ZSBpZiBhbnkgcmVzdWx0cyB3ZXJlIHdyaXR0ZW4gKHNp
bmNlIGV4cGVjdGVkIGZhaWx1cmVzIG1heSBiZQorICAgICAgICAgIG9taXR0ZWQpCisgICAgICAg
ICIiIgorICAgICAgICAjIHRlc3QgZmFpbHVyZXMKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5m
dWxsX3Jlc3VsdHNfaHRtbDoKKyAgICAgICAgICAgIHJlc3VsdHNfdGl0bGUgPSAiVGVzdCBGYWls
dXJlcyIKKyAgICAgICAgICAgIHRlc3RfZmlsZXMgPSByZXN1bHRfc3VtbWFyeS5mYWlsdXJlcy5r
ZXlzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHNfdGl0bGUgPSAiVW5leHBl
Y3RlZCBUZXN0IEZhaWx1cmVzIgorICAgICAgICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IHNl
bGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICBpbmNsdWRl
X2NyYXNoZXM9VHJ1ZSkKKyAgICAgICAgICAgIHRlc3RfZmlsZXMgPSB1bmV4cGVjdGVkX2ZhaWx1
cmVzLmtleXMoKQorICAgICAgICBpZiBub3QgbGVuKHRlc3RfZmlsZXMpOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgb3V0X2ZpbGVuYW1lID0gc2VsZi5fZnMuam9pbihzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSwgInJlc3VsdHMuaHRtbCIpCisgICAgICAgIHdpdGggc2VsZi5f
ZnMub3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcob3V0X2ZpbGVuYW1lKSBhcyByZXN1bHRzX2Zp
bGU6CisgICAgICAgICAgICBodG1sID0gc2VsZi5fcmVzdWx0c19odG1sKHRlc3RfZmlsZXMsIHJl
c3VsdF9zdW1tYXJ5LmZhaWx1cmVzLCByZXN1bHRzX3RpdGxlKQorICAgICAgICAgICAgcmVzdWx0
c19maWxlLndyaXRlKGh0bWwpCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgICMgRklYTUU6
IEhhdmUgdGhpcyByZXBsYWNlIHJlc3VsdHMuaHRtbCBhbmQgaGF2ZSBhIGNoZWNrYm94IGZvciB3
aGV0aGVyIHRvIHNob3cgZXhwZWN0ZWQgZmFpbHVyZXMgb3Igbm90LgorICAgIGRlZiBfd3JpdGVf
dW5leHBlY3RlZF9yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMpOgor
ICAgICAgICBiYXNlX2RpciA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdUb29s
cycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JywgJ2xheW91dF90ZXN0cycsICdsYXlvdXRfcGFja2Fn
ZScpCisgICAgICAgIHJlc3VsdHNfZmlsZSA9IHNlbGYuX2ZzLmpvaW4oYmFzZV9kaXIsICdqc29u
X3Jlc3VsdHMuaHRtbCcpCisgICAgICAgICMgRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGlmIHRo
aXMgZG9lc24ndCBleGlzdCAoZS5nLiwgaW4gdW5pdCB0ZXN0cyk/CisgICAgICAgIGlmIHNlbGYu
X2ZzLmV4aXN0cyhyZXN1bHRzX2ZpbGUpOgorICAgICAgICAgICAgc2VsZi5fZnMuY29weWZpbGUo
cmVzdWx0c19maWxlLCBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAianNv
bl9yZXN1bHRzLmh0bWwiKSkKKworICAgIGRlZiBfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxm
KToKKyAgICAgICAgIiIiU2hvd3MgdGhlIHJlc3VsdHMuaHRtbCBwYWdlLiIiIgorICAgICAgICBy
ZXN1bHRzX2ZpbGVuYW1lID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwg
InJlc3VsdHMuaHRtbCIpCisgICAgICAgIHNlbGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmls
ZShyZXN1bHRzX2ZpbGVuYW1lKQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVy
biAnTWFuYWdlcicKKworICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICB3b3JrZXJfc3Rh
dGVzID0gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKQorICAgICAgICByZXR1cm4gd29ya2Vy
X3N0YXRlcyBhbmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcl9zdGF0ZSkgZm9yIHdv
cmtlcl9zdGF0ZSBpbiB3b3JrZXJfc3RhdGVzKQorCisgICAgZGVmIF93b3JrZXJfaXNfZG9uZShz
ZWxmLCB3b3JrZXJfc3RhdGUpOgorICAgICAgICB0ID0gdGltZS50aW1lKCkKKyAgICAgICAgaWYg
d29ya2VyX3N0YXRlLmRvbmUgb3Igd29ya2VyX3N0YXRlLndlZGdlZDoKKyAgICAgICAgICAgIHJl
dHVybiBUcnVlCisKKyAgICAgICAgbmV4dF90aW1lb3V0ID0gd29ya2VyX3N0YXRlLm5leHRfdGlt
ZW91dAorICAgICAgICBXRURHRV9QQURESU5HID0gNDAuMAorICAgICAgICBpZiBuZXh0X3RpbWVv
dXQgYW5kIHQgPiBuZXh0X3RpbWVvdXQgKyBXRURHRV9QQURESU5HOgorICAgICAgICAgICAgX2xv
Zy5lcnJvcignJykKKyAgICAgICAgICAgIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5s
b2dfd2VkZ2VkX3dvcmtlcih3b3JrZXJfc3RhdGUuY3VycmVudF90ZXN0X25hbWUpCisgICAgICAg
ICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgd29ya2VyX3N0YXRlLndlZGdlZCA9IFRy
dWUKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ZGVmIGNhbmNlbF93b3JrZXJzKHNlbGYpOgorICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNl
bGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6CisgICAgICAgICAgICB3b3JrZXJfc3RhdGUud29y
a2VyX2Nvbm5lY3Rpb24uY2FuY2VsKCkKKworICAgIGRlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHNl
bGYsIHNvdXJjZSwgdGVzdF9pbmZvLCBoYW5nX3RpbWVvdXQpOgorICAgICAgICB3b3JrZXJfc3Rh
dGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KKyAgICAgICAgd29ya2VyX3N0YXRlLmN1
cnJlbnRfdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3Rf
aW5mby5maWxlbmFtZSkKKyAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGltZW91dCA9IHRpbWUu
dGltZSgpICsgaGFuZ190aW1lb3V0CisKKyAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc291cmNl
KToKKyAgICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCisg
ICAgICAgIHdvcmtlcl9zdGF0ZS5kb25lID0gVHJ1ZQorCisgICAgZGVmIGhhbmRsZV9leGNlcHRp
b24oc2VsZiwgc291cmNlLCBleGNlcHRpb25faW5mbyk6CisgICAgICAgIGV4Y2VwdGlvbl90eXBl
LCBleGNlcHRpb25fdmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBleGNlcHRpb25faW5mbwor
ICAgICAgICByYWlzZSBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25f
dHJhY2ViYWNrCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX2xpc3Qoc2VsZiwgc291cmNlLCBs
aXN0X25hbWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKToKKyAgICAgICAgc2VsZi5fZ3JvdXBf
c3RhdHNbbGlzdF9uYW1lXSA9IChudW1fdGVzdHMsIGVsYXBzZWRfdGltZSkKKworICAgIGRlZiBo
YW5kbGVfZmluaXNoZWRfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToK
KyAgICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCisgICAg
ICAgIHdvcmtlcl9zdGF0ZS5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAgIHdvcmtlcl9zdGF0
ZS5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKKyAgICAgICAgd29ya2VyX3N0YXRlLnN0YXRzWyd0
b3RhbF90aW1lJ10gKz0gZWxhcHNlZF90aW1lCisgICAgICAgIHdvcmtlcl9zdGF0ZS5zdGF0c1sn
bnVtX3Rlc3RzJ10gKz0gMQorCisgICAgICAgIGlmIHdvcmtlcl9zdGF0ZS53ZWRnZWQ6CisgICAg
ICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBoYXZlIG91ciB0aW1lb3V0cyB0
dW5lZCBwcm9wZXJseS4KKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIHVud2VkZ2VkIiwgc291
cmNlKQorCisgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzLmFwcGVuZChyZXN1bHQpCisgICAgICAg
IHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1
bW1hcnksIHJlc3VsdCkKKworCitkZWYgcmVhZF90ZXN0X2ZpbGVzKGZzLCBmaWxlcyk6CisgICAg
dGVzdHMgPSBbXQorICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBmaWxlX2NvbnRlbnRzID0gZnMucmVhZF90ZXh0X2ZpbGUoZmlsZSkuc3BsaXQoJ1xuJykK
KyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbGVfY29udGVudHM6CisgICAgICAgICAgICAgICAg
bGluZSA9IHRlc3RfZXhwZWN0YXRpb25zLnN0cmlwX2NvbW1lbnRzKGxpbmUpCisgICAgICAgICAg
ICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKGxpbmUpCisg
ICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJu
by5FTk9FTlQ6CisgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKKyAgICAgICAgICAg
ICAgICBfbG9nLmNyaXRpY2FsKCctLXRlc3QtbGlzdCBmaWxlICIlcyIgbm90IGZvdW5kJyAlIGZp
bGUpCisgICAgICAgICAgICByYWlzZQorICAgIHJldHVybiB0ZXN0cworCisKK2NsYXNzIF9Xb3Jr
ZXJTdGF0ZShvYmplY3QpOgorICAgICIiIkEgY2xhc3MgZm9yIHRoZSBtYW5hZ2VyIHRvIHVzZSB0
byB0cmFjayB0aGUgY3VycmVudCBzdGF0ZQorICAgIG9mIHRoZSB3b3JrZXJzLiIiIgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKToKKyAgICAgICAgc2Vs
Zi53b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCisgICAgICAgIHNlbGYubnVt
YmVyID0gbnVtYmVyCisgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYuY3Vy
cmVudF90ZXN0X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF90aW1lb3V0ID0gTm9uZQor
ICAgICAgICBzZWxmLndlZGdlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuc3RhdHMgPSB7fQorICAg
ICAgICBzZWxmLnN0YXRzWyduYW1lJ10gPSB3b3JrZXJfY29ubmVjdGlvbi5uYW1lCisgICAgICAg
IHNlbGYuc3RhdHNbJ251bV90ZXN0cyddID0gMAorICAgICAgICBzZWxmLnN0YXRzWyd0b3RhbF90
aW1lJ10gPSAwCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX1dv
cmtlclN0YXRlKCIgKyBzdHIoc2VsZi5fX2RpY3RfXykgKyAiKSIKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkzYzhlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
MTA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJhcGNz
YW55aSAocmdhYm9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3RzIGZvciBNYW5hZ2VyKCkuIiIiCisKK2ltcG9y
dCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0
ZW1fbW9jaworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IGxheW91dF9wYWNrYWdl
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWFuYWdl
cgorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKKworCitjbGFzcyBN
YW5hZ2VyV3JhcHBlcihtYW5hZ2VyLk1hbmFnZXIpOgorICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRf
Zm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgcmV0dXJuIHRlc3RfZmlsZQorCisK
K2NsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9yZXN1
bHRzX2h0bWwoc2VsZik6CisgICAgICAgIG1vY2tfcG9ydCA9IE1vY2soKQorICAgICAgICBtb2Nr
X3BvcnQuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorICAg
ICAgICBtb2NrX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSA9IGxhbWJkYSBuYW1lOiBuYW1l
CisgICAgICAgIG1vY2tfcG9ydC5maWxlbmFtZV90b191cmkgPSBsYW1iZGEgbmFtZTogbmFtZQor
CisgICAgICAgIG1hbmFnZXIgPSBsYXlvdXRfcGFja2FnZS5tYW5hZ2VyLk1hbmFnZXIocG9ydD1t
b2NrX3BvcnQsIG9wdGlvbnM9TW9jaygpLCBwcmludGVyPU1vY2soKSkKKyAgICAgICAgZXhwZWN0
ZWRfaHRtbCA9IHUiIiI8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHRpdGxlPkxheW91dCBUZXN0IFJl
c3VsdHMgKHRpbWUpPC90aXRsZT4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8aDI+VGl0bGUg
KHRpbWUpPC9oMj4KKyAgICAgICAgPHA+PGEgaHJlZj0ndGVzdF9wYXRoJz50ZXN0X3BhdGg8L2E+
PGJyIC8+Cis8L3A+Cis8L2JvZHk+PC9odG1sPgorIiIiCisgICAgICAgIGh0bWwgPSBtYW5hZ2Vy
Ll9yZXN1bHRzX2h0bWwoWyJ0ZXN0X3BhdGgiXSwge30sICJUaXRsZSIsIG92ZXJyaWRlX3RpbWU9
InRpbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGh0bWwsIGV4cGVjdGVkX2h0bWwpCisK
KyAgICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX3No
YXJkX3Rlc3RzIGluIG1hbmFnZXIuTWFuYWdlciByZWFsbHkKKyAgICAgICAgIyBwdXQgdGhlIGh0
dHAgdGVzdHMgZmlyc3QgaW4gdGhlIHF1ZXVlLgorICAgICAgICBwb3J0ID0gTW9jaygpCisgICAg
ICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQor
ICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcldyYXBwZXIocG9ydD1wb3J0LCBvcHRpb25zPU1vY2so
KSwgcHJpbnRlcj1Nb2NrKCkpCisKKyAgICAgICAgdGVzdF9saXN0ID0gWworICAgICAgICAgICJM
YXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0iLAorICAgICAgICAgICJMYXlv
dXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy5odG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwiLAorICAg
ICAgICAgICJMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWln
bm9yZWQuaHRtbCIsCisgICAgICAgICAgIkxheW91dFRlc3RzL2Zhc3QvY3NzL2Rpc3BsYXktbm9u
ZS1pbmxpbmUtc3R5bGUtY2hhbmdlLWNyYXNoLmh0bWwiLAorICAgICAgICAgICJMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5o
dG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQwMy5odG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVzdHMvaWV0ZXN0Y2VudGVy
L0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCIsCisgICAgICAgICAgIkxheW91dFRlc3Rz
L2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCIsCisgICAgICAg
IF0KKworICAgICAgICBleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2sgPSBzZXQoWworICAgICAg
ICAgICdMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nLAorICAgICAgICAg
ICdMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2gu
aHRtbCcsCisgICAgICAgICAgJ0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQt
cHJvdG9jb2wtaWdub3JlZC5odG1sJywKKyAgICAgICAgICAnTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcsCisgICAg
ICAgIF0pCisKKyAgICAgICAgIyBGSVhNRTogSWRlYWxseSB0aGUgSFRUUCB0ZXN0cyBkb24ndCBo
YXZlIHRvIGFsbCBiZSBpbiBvbmUgc2hhcmQuCisgICAgICAgIHNpbmdsZV90aHJlYWRfcmVzdWx0
cyA9IG1hbmFnZXIuX3NoYXJkX3Rlc3RzKHRlc3RfbGlzdCwgRmFsc2UpCisgICAgICAgIG11bHRp
X3RocmVhZF9yZXN1bHRzID0gbWFuYWdlci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBUcnVlKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIHNpbmdsZV90
aHJlYWRfcmVzdWx0c1swXVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90
ZXN0c190b19odHRwX2xvY2ssIHNldChzaW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xvY2siLCBtdWx0aV90aHJlYWRf
cmVzdWx0c1swXVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190
b19odHRwX2xvY2ssIHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5n
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKaW5kZXggOGY2M2VkZC4uMGVhODc5MSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKQEAgLTM3LDEyICsz
NywxMiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiAKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBtYW5hZ2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZSBpbXBvcnQgcHJpbnRpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxh
eW91dF9wYWNrYWdlIGltcG9ydCByZXN1bHRfc3VtbWFyeQogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0
cwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rf
cnVubmVyCiAKIAogZGVmIGdldF9vcHRpb25zKGFyZ3MpOgpAQCAtNTEzLDcgKzUxMyw3IEBAIGNs
YXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV0
cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcpLCBUcnVlKQogICAgICAg
ICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCcpLCBUcnVlKQogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9y
ZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwgVHJ1ZSkKLSAgICAgICAgICAg
IHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHRlc3RfcnVubmVyLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYu
X3BvcnQsIGV4cCwgcnMsIHJldHJ5LCB0ZXN0X3RpbWluZ3M9e30sIG9ubHlfdW5leHBlY3RlZD1U
cnVlKQorICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gbWFuYWdlci5zdW1tYXJpemVf
cmVzdWx0cyhzZWxmLl9wb3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90aW1pbmdzPXt9LCBvbmx5
X3VuZXhwZWN0ZWQ9VHJ1ZSkKICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHMK
IAogICAgICAgICB0ZXN0cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3Rl
ZC90aW1lb3V0Lmh0bWwnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzMWRiNi4uMDAwMDAwMAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQor
KysgL2Rldi9udWxsCkBAIC0xLDEzNDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1
KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIgotVGhlIFRl
c3RSdW5uZXIgY2xhc3MgcnVucyBhIHNlcmllcyBvZiB0ZXN0cyAoVGVzdFR5cGUgaW50ZXJmYWNl
KSBhZ2FpbnN0IGEgc2V0Ci1vZiB0ZXN0IGZpbGVzLiAgSWYgYSB0ZXN0IGZpbGUgZmFpbHMgYSBU
ZXN0VHlwZSwgaXQgcmV0dXJucyBhIGxpc3QgVGVzdEZhaWx1cmUKLW9iamVjdHMgdG8gdGhlIFRl
c3RSdW5uZXIuICBUaGUgVGVzdFJ1bm5lciB0aGVuIGFnZ3JlZ2F0ZXMgdGhlIFRlc3RGYWlsdXJl
cyB0bwotY3JlYXRlIGEgZmluYWwgcmVwb3J0LgotIiIiCi0KLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvcHkKLWltcG9ydCBlcnJubwotaW1wb3J0IGxv
Z2dpbmcKLWltcG9ydCBtYXRoCi1pbXBvcnQgUXVldWUKLWltcG9ydCByYW5kb20KLWltcG9ydCBz
eXMKLWltcG9ydCB0aW1lCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNr
YWdlIGltcG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtYW5hZ2Vy
X3dvcmtlcl9icm9rZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCBwcmludGluZwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5s
YXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxvYWRlcgot
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHdvcmtlcgot
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS5yZXN1bHRfc3VtbWFy
eSBpbXBvcnQgUmVzdWx0U3VtbWFyeQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0Ci0KLWZyb20gd2Via2l0cHkudGhp
cmRwYXJ0eSBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBncmFt
bWFyCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotIyBCdWlsZGVyIGJh
c2UgVVJMIHdoZXJlIHdlIGhhdmUgdGhlIGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4KLUJVSUxERVJf
QkFTRV9VUkwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJvdC9sYXlvdXRfdGVz
dF9yZXN1bHRzLyIKLQotVGVzdEV4cGVjdGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5U
ZXN0RXhwZWN0YXRpb25zRmlsZQotCi0KLWRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwg
ZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzdF90aW1pbmdz
LCBvbmx5X3VuZXhwZWN0ZWQpOgotICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBlY3RlZCByZXN1
bHRzIGFzIGEgZGljdC4KLQotICAgIEZJWE1FOiBzcGxpdCB0aGlzIGRhdGEgc3RydWN0dXJlIGlu
dG8gYSBzZXBhcmF0ZSBjbGFzcz8KLQotICAgIEFyZ3M6Ci0gICAgICAgIHBvcnRfb2JqOiBpbnRl
cmZhY2UgdG8gcG9ydC1zcGVjaWZpYyBob29rcwotICAgICAgICBleHBlY3RhdGlvbnM6IHRlc3Rf
ZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMgb2JqZWN0Ci0gICAgICAgIHJlc3VsdF9zdW1t
YXJ5OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCi0gICAgICAgIHJldHJ5
X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gZmluYWwgdGVzdCBydW4gb2YgcmV0cmllZCB0
ZXN0cwotICAgICAgICB0ZXN0X3RpbWluZ3M6IGEgbGlzdCBvZiBUZXN0UmVzdWx0IG9iamVjdHMg
d2hpY2ggY29udGFpbiB0ZXN0IHJ1bnRpbWVzIGluIHNlY29uZHMKLSAgICAgICAgb25seV91bmV4
cGVjdGVkOiB3aGV0aGVyIHRvIHJldHVybiBhIHN1bW1hcnkgb25seSBmb3IgdGhlIHVuZXhwZWN0
ZWQgcmVzdWx0cwotICAgIFJldHVybnM6Ci0gICAgICAgIEEgZGljdGlvbmFyeSBjb250YWluaW5n
IGEgc3VtbWFyeSBvZiB0aGUgdW5leHBlY3RlZCByZXN1bHRzIGZyb20gdGhlCi0gICAgICAgIHJ1
biwgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKLSAgICAgICAgJ3ZlcnNpb24nOiBhIHZlcnNp
b24gaW5kaWNhdG9yICgxIGluIHRoaXMgdmVyc2lvbikKLSAgICAgICAgJ2ZpeGFibGUnOiAjIG9m
IGZpeGFibGUgdGVzdHMgKE5PVyAtIFBBU1MpCi0gICAgICAgICdza2lwcGVkJzogIyBvZiBza2lw
cGVkIHRlc3RzIChOT1cgJiBTS0lQUEVEKQotICAgICAgICAnbnVtX3JlZ3Jlc3Npb25zJzogIyBv
ZiBub24tZmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9mbGFreSc6ICMgb2YgZmxha3kgZmFp
bHVyZXMKLSAgICAgICAgJ251bV9wYXNzZXMnOiAjIG9mIHVuZXhwZWN0ZWQgcGFzc2VzCi0gICAg
ICAgICd0ZXN0cyc6IGEgZGljdCBvZiB0ZXN0cyAtPiB7J2V4cGVjdGVkJzogJy4uLicsICdhY3R1
YWwnOiAnLi4uJywgJ3RpbWVfbXMnOiAuLi59Ci0gICAgIiIiCi0gICAgcmVzdWx0cyA9IHt9Ci0g
ICAgcmVzdWx0c1sndmVyc2lvbiddID0gMQotCi0gICAgdGVzdF90aW1pbmdzX21hcCA9IGRpY3Qo
KHRlc3RfcmVzdWx0LmZpbGVuYW1lLCB0ZXN0X3Jlc3VsdC50ZXN0X3J1bl90aW1lKSBmb3IgdGVz
dF9yZXN1bHQgaW4gdGVzdF90aW1pbmdzKQotCi0gICAgdGJlID0gcmVzdWx0X3N1bW1hcnkudGVz
dHNfYnlfZXhwZWN0YXRpb24KLSAgICB0YnQgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1l
bGluZQotICAgIHJlc3VsdHNbJ2ZpeGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMu
Tk9XXSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiZVt0ZXN0X2V4cGVjdGF0
aW9ucy5QQVNTXSkKLSAgICByZXN1bHRzWydza2lwcGVkJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0
YXRpb25zLk5PV10gJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmVbdGVzdF9l
eHBlY3RhdGlvbnMuU0tJUF0pCi0KLSAgICBudW1fcGFzc2VzID0gMAotICAgIG51bV9mbGFreSA9
IDAKLSAgICBudW1fcmVncmVzc2lvbnMgPSAwCi0gICAga2V5d29yZHMgPSB7fQotICAgIGZvciBl
eHBlY2F0aW9uX3N0cmluZywgZXhwZWN0YXRpb25fZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zRmls
ZS5FWFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW2V4cGVjdGF0aW9u
X2VudW1dID0gZXhwZWNhdGlvbl9zdHJpbmcudXBwZXIoKQotCi0gICAgZm9yIG1vZGlmaWVyX3N0
cmluZywgbW9kaWZpZXJfZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlMuaXRl
cml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW21vZGlmaWVyX2VudW1dID0gbW9kaWZpZXJfc3Ry
aW5nLnVwcGVyKCkKLQotICAgIHRlc3RzID0ge30KLSAgICBvcmlnaW5hbF9yZXN1bHRzID0gcmVz
dWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzIGlmIG9ubHlfdW5leHBlY3RlZCBlbHNlIHJl
c3VsdF9zdW1tYXJ5LnJlc3VsdHMKLQotICAgIGZvciBmaWxlbmFtZSwgcmVzdWx0IGluIG9yaWdp
bmFsX3Jlc3VsdHMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICMgTm90ZSB0aGF0IGlmIGEgdGVzdCBj
cmFzaGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdlIGlnbm9yZQotICAgICAgICAjIHdoZXRoZXIg
b3Igbm90IGl0IGNyYXNoZWQgd2hlbiB3ZSByZXRyaWVkIGl0IChpZiB3ZSByZXRyaWVkIGl0KSwK
LSAgICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVyIHRoZSByZXN1bHQgbm90IGZsYWt5LgotICAg
ICAgICB0ZXN0ID0gcG9ydF9vYmoucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkKLSAg
ICAgICAgZXhwZWN0ZWQgPSBleHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoZmls
ZW5hbWUpCi0gICAgICAgIHJlc3VsdF90eXBlID0gcmVzdWx0LnR5cGUKLSAgICAgICAgYWN0dWFs
ID0gW2tleXdvcmRzW3Jlc3VsdF90eXBlXV0KLQotICAgICAgICBpZiByZXN1bHRfdHlwZSA9PSB0
ZXN0X2V4cGVjdGF0aW9ucy5QQVNTOgotICAgICAgICAgICAgbnVtX3Bhc3NlcyArPSAxCi0gICAg
ICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6Ci0gICAgICAg
ICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQotICAgICAgICBlbGlmIGZpbGVuYW1lIGluIHJlc3Vs
dF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIG5v
dCBpbiByZXRyeV9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAgICAgICAgICBh
Y3R1YWwuZXh0ZW5kKGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZyhmaWxlbmFt
ZSkuc3BsaXQoIiAiKSkKLSAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRfdHlwZSA9IHJldHJ5X3N1bW1h
cnkudW5leHBlY3RlZF9yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCi0gICAgICAgICAgICAgICAgaWYg
cmVzdWx0X3R5cGUgIT0gcmV0cnlfcmVzdWx0X3R5cGU6Ci0gICAgICAgICAgICAgICAgICAgIGFj
dHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0X3R5cGVdKQotICAgICAgICAgICAgICAg
ICAgICBudW1fZmxha3kgKz0gMQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIG51bV9yZWdyZXNzaW9ucyArPSAxCi0KLSAgICAgICAgdGVzdHNbdGVzdF0gPSB7fQot
ICAgICAgICB0ZXN0c1t0ZXN0XVsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCi0gICAgICAgIHRlc3Rz
W3Rlc3RdWydhY3R1YWwnXSA9ICIgIi5qb2luKGFjdHVhbCkKLQotICAgICAgICBpZiBmaWxlbmFt
ZSBpbiB0ZXN0X3RpbWluZ3NfbWFwOgotICAgICAgICAgICAgdGltZV9zZWNvbmRzID0gdGVzdF90
aW1pbmdzX21hcFtmaWxlbmFtZV0KLSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWyd0aW1lX21zJ10g
PSBpbnQoMTAwMCAqIHRpbWVfc2Vjb25kcykKLQotICAgIHJlc3VsdHNbJ3Rlc3RzJ10gPSB0ZXN0
cwotICAgIHJlc3VsdHNbJ251bV9wYXNzZXMnXSA9IG51bV9wYXNzZXMKLSAgICByZXN1bHRzWydu
dW1fZmxha3knXSA9IG51bV9mbGFreQotICAgIHJlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddID0g
bnVtX3JlZ3Jlc3Npb25zCi0KLSAgICByZXR1cm4gcmVzdWx0cwotCi0KLWNsYXNzIFRlc3RSdW5J
bnRlcnJ1cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlJhaXNlZCB3aGVuIGEgdGVz
dCBydW4gc2hvdWxkIGJlIHN0b3BwZWQgaW1tZWRpYXRlbHkuIiIiCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlYXNvbik6Ci0gICAgICAgIHNlbGYucmVhc29uID0gcmVhc29uCi0KLSAgICBkZWYg
X19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5y
ZWFzb24sKQotCi0KLWNsYXNzIFRlc3RSdW5uZXI6Ci0gICAgIiIiQSBjbGFzcyBmb3IgbWFuYWdp
bmcgcnVubmluZyBhIHNlcmllcyBvZiB0ZXN0cyBvbiBhIHNlcmllcyBvZiBsYXlvdXQKLSAgICB0
ZXN0IGZpbGVzLiIiIgotCi0KLSAgICAjIFRoZSBwZXItdGVzdCB0aW1lb3V0IGluIG1pbGxpc2Vj
b25kcywgaWYgbm8gLS10aW1lLW91dC1tcyBvcHRpb24gd2FzCi0gICAgIyBnaXZlbiB0byBydW5f
d2Via2l0X3Rlc3RzLiBUaGlzIHNob3VsZCBjb3JyZXNwb25kIHRvIHRoZSBkZWZhdWx0IHRpbWVv
dXQKLSAgICAjIGluIER1bXBSZW5kZXJUcmVlLgotICAgIERFRkFVTFRfVEVTVF9USU1FT1VUX01T
ID0gNiAqIDEwMDAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zLCBwcmlu
dGVyKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB0ZXN0IHJ1bm5lciBkYXRhIHN0cnVjdHVyZXMu
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBwb3J0OiBhbiBvYmplY3QgaW1wbGVtZW50aW5n
IHBvcnQtc3BlY2lmaWMKLSAgICAgICAgICBvcHRpb25zOiBhIGRpY3Rpb25hcnkgb2YgY29tbWFu
ZCBsaW5lIG9wdGlvbnMKLSAgICAgICAgICBwcmludGVyOiBhIFByaW50ZXIgb2JqZWN0IHRvIHJl
Y29yZCB1cGRhdGVzIHRvLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQK
LSAgICAgICAgc2VsZi5fZnMgPSBwb3J0Ll9maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX29wdGlv
bnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGVyCi0gICAgICAgIHNl
bGYuX21lc3NhZ2VfYnJva2VyID0gTm9uZQotCi0gICAgICAgIHNlbGYuSFRUUF9TVUJESVIgPSBz
ZWxmLl9mcy5qb2luKCcnLCAnaHR0cCcsICcnKQotICAgICAgICBzZWxmLldFQlNPQ0tFVF9TVUJE
SVIgPSBzZWxmLl9mcy5qb2luKCcnLCAnd2Vic29ja2V0JywgJycpCi0gICAgICAgIHNlbGYuTEFZ
T1VUX1RFU1RTX0RJUkVDVE9SWSA9ICJMYXlvdXRUZXN0cyIgKyBzZWxmLl9mcy5zZXAKLQotCi0g
ICAgICAgICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRvIGluc3RhbGwgcHlPcGVuU1NMIG9u
IGJ1aWxkYm90cy4KLSAgICAgICAgIyBzZWxmLl93ZWJzb2NrZXRfc2VjdXJlX3NlcnZlciA9IHdl
YnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCi0gICAgICAgICMgICAgICAgIG9wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnksIHVzZV90bHM9VHJ1ZSwgcG9ydD05MzIzKQotCi0gICAgICAgICMgYSBz
ZXQgb2YgdGVzdCBmaWxlcywgYW5kIHRoZSBzYW1lIHRlc3RzIGFzIGEgbGlzdAotICAgICAgICBz
ZWxmLl90ZXN0X2ZpbGVzID0gc2V0KCkKLSAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0g
Tm9uZQotICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAg
IHNlbGYuX3JldHJ5aW5nID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3Rvcnkg
PSBzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCkKLQotICAgICAgICBzZWxmLl9hbGxfcmVz
dWx0cyA9IFtdCi0gICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzID0ge30KLSAgICAgICAgc2VsZi5f
Y3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IE5vbmUKLQotICAgICAgICAjIFRoaXMgbWFwcyB3b3Jr
ZXIgbmFtZXMgdG8gdGhlIHN0YXRlIHdlIGFyZSB0cmFja2luZyBmb3IgZWFjaCBvZiB0aGVtLgot
ICAgICAgICBzZWxmLl93b3JrZXJfc3RhdGVzID0ge30KLQotCi0gICAgZGVmIGNvbGxlY3RfdGVz
dHMoc2VsZiwgYXJncywgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpOgotICAgICAgICAiIiJGaW5k
IGFsbCB0aGUgZmlsZXMgdG8gdGVzdC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGFyZ3M6
IGxpc3Qgb2YgdGVzdCBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lCi0gICAgICAgICAg
bGFzdF91bmV4cGVjdGVkX3Jlc3VsdHM6IGxpc3Qgb2YgdW5leHBlY3RlZCByZXN1bHRzIHRvIHJl
dGVzdCwgaWYgYW55Ci0KLSAgICAgICAgIiIiCi0gICAgICAgIHBhdGhzID0gc2VsZi5fc3RyaXBf
dGVzdF9kaXJfcHJlZml4ZXMoYXJncykKLSAgICAgICAgcGF0aHMgKz0gbGFzdF91bmV4cGVjdGVk
X3Jlc3VsdHMKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3Q6Ci0gICAgICAgICAg
ICBwYXRocyArPSBzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXhlcyhyZWFkX3Rlc3RfZmlsZXMo
c2VsZi5fZnMsIHNlbGYuX29wdGlvbnMudGVzdF9saXN0KSkKLSAgICAgICAgc2VsZi5fdGVzdF9m
aWxlcyA9IHNlbGYuX3BvcnQudGVzdHMocGF0aHMpCi0KLSAgICBkZWYgX3N0cmlwX3Rlc3RfZGly
X3ByZWZpeGVzKHNlbGYsIHBhdGhzKToKLSAgICAgICAgcmV0dXJuIFtzZWxmLl9zdHJpcF90ZXN0
X2Rpcl9wcmVmaXgocGF0aCkgZm9yIHBhdGggaW4gcGF0aHMgaWYgcGF0aF0KLQotICAgIGRlZiBf
c3RyaXBfdGVzdF9kaXJfcHJlZml4KHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBwYXRoLnN0YXJ0
c3dpdGgoc2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZKToKLSAgICAgICAgICAgIHJldHVybiBw
YXRoW2xlbihzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KLSAgICAgICAgcmV0dXJuIHBh
dGgKLQotICAgIGRlZiBsaW50KHNlbGYpOgotICAgICAgICBsaW50X2ZhaWxlZCA9IEZhbHNlCi0g
ICAgICAgIGZvciB0ZXN0X2NvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcG9ydC5hbGxfdGVzdF9jb25m
aWd1cmF0aW9ucygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYubGlu
dF9leHBlY3RhdGlvbnModGVzdF9jb25maWd1cmF0aW9uKQotICAgICAgICAgICAgZXhjZXB0IHRl
c3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbGludF9mYWlsZWQg
PSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikKLQotICAgICAg
ICBpZiBsaW50X2ZhaWxlZDoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZmFpbGVkLiIp
Ci0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgICAgICBfbG9nLmluZm8oIkxpbnQgc3VjY2Vl
ZGVkLiIpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgbGludF9leHBlY3RhdGlvbnMoc2Vs
ZiwgY29uZmlnKToKLSAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKLSAgICAgICAgdGVzdF9leHBl
Y3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHBvcnQsCi0gICAgICAgICAg
ICBOb25lLAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAotICAgICAgICAg
ICAgY29uZmlnLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCi0g
ICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpKQotCi0gICAgZGVm
IHBhcnNlX2V4cGVjdGF0aW9ucyhzZWxmKToKLSAgICAgICAgIiIiUGFyc2UgdGhlIGV4cGVjdGF0
aW9ucyBmcm9tIHRoZSB0ZXN0X2xpc3QgZmlsZXMgYW5kIHJldHVybiBhIGRhdGEKLSAgICAgICAg
c3RydWN0dXJlIGhvbGRpbmcgdGhlbS4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0ZXN0X2xpc3Qg
ZmlsZXMgaGF2ZQotICAgICAgICBpbnZhbGlkIHN5bnRheC4iIiIKLSAgICAgICAgcG9ydCA9IHNl
bGYuX3BvcnQKLSAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMu
VGVzdEV4cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHBvcnQsCi0gICAgICAgICAgICBzZWxmLl90
ZXN0X2ZpbGVzLAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAotICAgICAg
ICAgICAgcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMubGludF90ZXN0X2ZpbGVzLAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19v
dmVycmlkZXMoKSkKLQotICAgICMgRklYTUU6IFRoaXMgbWV0aG9kIGlzIHdheSB0b28gbG9uZyBh
bmQgbmVlZHMgdG8gYmUgYnJva2VuIGludG8gcGllY2VzLgotICAgIGRlZiBwcmVwYXJlX2xpc3Rz
X2FuZF9wcmludF9vdXRwdXQoc2VsZik6Ci0gICAgICAgICIiIkNyZWF0ZSBhcHByb3ByaWF0ZSBz
dWJzZXRzIG9mIHRlc3QgbGlzdHMgYW5kIHJldHVybnMgYQotICAgICAgICBSZXN1bHRTdW1tYXJ5
IG9iamVjdC4gQWxzbyBwcmludHMgZXhwZWN0ZWQgdGVzdCBjb3VudHMuCi0gICAgICAgICIiIgot
Ci0gICAgICAgICMgUmVtb3ZlIHNraXBwZWQgLSBib3RoIGZpeGFibGUgYW5kIGlnbm9yZWQgLSBm
aWxlcyBmcm9tIHRoZQotICAgICAgICAjIHRvcC1sZXZlbCBsaXN0IG9mIGZpbGVzIHRvIHRlc3Qu
Ci0gICAgICAgIG51bV9hbGxfdGVzdF9maWxlcyA9IGxlbihzZWxmLl90ZXN0X2ZpbGVzKQotICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKCJGb3VuZDogICVkIHRlc3RzIiAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl90ZXN0X2ZpbGVz
KSkpCi0gICAgICAgIGlmIG5vdCBudW1fYWxsX3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICBfbG9n
LmNyaXRpY2FsKCdObyB0ZXN0cyB0byBydW4uJykKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0K
LSAgICAgICAgc2tpcHBlZCA9IHNldCgpCi0gICAgICAgIGlmIG51bV9hbGxfdGVzdF9maWxlcyA+
IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmZvcmNlOgotICAgICAgICAgICAgc2tpcHBlZCA9IHNl
bGYuX2V4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVApCi0gICAgICAgICAgICBzZWxm
Ll90ZXN0X2ZpbGVzIC09IHNraXBwZWQKLQotICAgICAgICAjIENyZWF0ZSBhIHNvcnRlZCBsaXN0
IG9mIHRlc3QgZmlsZXMgc28gdGhlIHN1YnNldCBjaHVuaywKLSAgICAgICAgIyBpZiB1c2VkLCBj
b250YWlucyBhbHBoYWJldGljYWxseSBjb25zZWN1dGl2ZSB0ZXN0cy4KLSAgICAgICAgc2VsZi5f
dGVzdF9maWxlc19saXN0ID0gbGlzdChzZWxmLl90ZXN0X2ZpbGVzKQotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKLSAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXNfbGlzdC5zb3J0KCkKLQotICAgICAgICAjIElmIHRoZSB1c2VyIHNwZWNpZmllcyB0
aGV5IGp1c3Qgd2FudCB0byBydW4gYSBzdWJzZXQgb2YgdGhlIHRlc3RzLAotICAgICAgICAjIGp1
c3QgZ3JhYiBhIHN1YnNldCBvZiB0aGUgbm9uLXNraXBwZWQgdGVzdHMuCi0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQ6Ci0gICAgICAg
ICAgICBjaHVua192YWx1ZSA9IHNlbGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNlbGYuX29wdGlv
bnMucnVuX3BhcnQKLSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0X2ZpbGVzX2xp
c3QKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAoY2h1bmtfbnVtLCBjaHVua19s
ZW4pID0gY2h1bmtfdmFsdWUuc3BsaXQoIjoiKQotICAgICAgICAgICAgICAgIGNodW5rX251bSA9
IGludChjaHVua19udW0pCi0gICAgICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA+PSAwKQot
ICAgICAgICAgICAgICAgIHRlc3Rfc2l6ZSA9IGludChjaHVua19sZW4pCi0gICAgICAgICAgICAg
ICAgYXNzZXJ0KHRlc3Rfc2l6ZSA+IDApCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAg
ICAgICAgX2xvZy5jcml0aWNhbCgiaW52YWxpZCBjaHVuayAnJXMnIiAlIGNodW5rX3ZhbHVlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICMgR2V0IHRoZSBudW1i
ZXIgb2YgdGVzdHMKLSAgICAgICAgICAgIG51bV90ZXN0cyA9IGxlbih0ZXN0X2ZpbGVzKQotCi0g
ICAgICAgICAgICAjIEdldCB0aGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KLSAgICAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX2NodW5rOgotICAgICAgICAgICAgICAgIGNodW5rX2xl
biA9IHRlc3Rfc2l6ZQotICAgICAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlIGNodW5rX251bSBj
YW4gYmUgcmVhbGx5IGxhcmdlLiBXZSBuZWVkCi0gICAgICAgICAgICAgICAgIyB0byBtYWtlIHRo
ZSBzbGF2ZSBmaXQgaW4gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRlc3RzLgotICAgICAgICAgICAg
ICAgIHNsaWNlX3N0YXJ0ID0gKGNodW5rX251bSAqIGNodW5rX2xlbikgJSBudW1fdGVzdHMKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAg
ICAgICAgICAgICAgICBhc3NlcnQodGVzdF9zaXplIDw9IG51bV90ZXN0cykKLSAgICAgICAgICAg
ICAgICBhc3NlcnQoY2h1bmtfbnVtIDw9IHRlc3Rfc2l6ZSkKLQotICAgICAgICAgICAgICAgICMg
VG8gY291bnQgdGhlIGNodW5rX2xlbiwgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBza2lwCi0gICAg
ICAgICAgICAgICAgIyBzb21lIHRlc3RzLCB3ZSByb3VuZCB0byB0aGUgbmV4dCB2YWx1ZSB0aGF0
IGZpdHMgZXhhY3RseQotICAgICAgICAgICAgICAgICMgYWxsIHRoZSBwYXJ0cy4KLSAgICAgICAg
ICAgICAgICByb3VuZGVkX3Rlc3RzID0gbnVtX3Rlc3RzCi0gICAgICAgICAgICAgICAgaWYgcm91
bmRlZF90ZXN0cyAlIHRlc3Rfc2l6ZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICByb3VuZGVk
X3Rlc3RzID0gKG51bV90ZXN0cyArIHRlc3Rfc2l6ZSAtCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKG51bV90ZXN0cyAlIHRlc3Rfc2l6ZSkpCi0KLSAgICAgICAgICAgICAg
ICBjaHVua19sZW4gPSByb3VuZGVkX3Rlc3RzIC8gdGVzdF9zaXplCi0gICAgICAgICAgICAgICAg
c2xpY2Vfc3RhcnQgPSBjaHVua19sZW4gKiAoY2h1bmtfbnVtIC0gMSkKLSAgICAgICAgICAgICAg
ICAjIEl0IGRvZXMgbm90IG1pbmQgaWYgd2UgZ28gb3ZlciB0ZXN0X3NpemUuCi0KLSAgICAgICAg
ICAgICMgR2V0IHRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KLSAgICAgICAgICAgIHNsaWNl
X2VuZCA9IG1pbihudW1fdGVzdHMsIHNsaWNlX3N0YXJ0ICsgY2h1bmtfbGVuKQotCi0gICAgICAg
ICAgICBmaWxlcyA9IHRlc3RfZmlsZXNbc2xpY2Vfc3RhcnQ6c2xpY2VfZW5kXQotCi0gICAgICAg
ICAgICB0ZXN0c19ydW5fbXNnID0gJ1J1bm5pbmc6ICVkIHRlc3RzIChjaHVuayBzbGljZSBbJWQ6
JWRdIG9mICVkKScgJSAoCi0gICAgICAgICAgICAgICAgKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0
KSwgc2xpY2Vfc3RhcnQsIHNsaWNlX2VuZCwgbnVtX3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF9leHBlY3RlZCh0ZXN0c19ydW5fbXNnKQotCi0gICAgICAgICAgICAjIElm
IHdlIHJlYWNoZWQgdGhlIGVuZCBhbmQgd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggdGVzdHMsIHdlIHJ1
biBzb21lCi0gICAgICAgICAgICAjIGZyb20gdGhlIGJlZ2lubmluZy4KLSAgICAgICAgICAgIGlm
IHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0IDwgY2h1bmtfbGVuOgotICAgICAgICAgICAgICAgIGV4
dHJhID0gY2h1bmtfbGVuIC0gKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0KQotICAgICAgICAgICAg
ICAgIGV4dHJhX21zZyA9ICgnICAgbGFzdCBjaHVuayBpcyBwYXJ0aWFsLCBhcHBlbmRpbmcgWzA6
JWRdJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChleHRyYV9tc2cpCi0gICAgICAgICAgICAg
ICAgdGVzdHNfcnVuX21zZyArPSAiXG4iICsgZXh0cmFfbXNnCi0gICAgICAgICAgICAgICAgZmls
ZXMuZXh0ZW5kKHRlc3RfZmlsZXNbMDpleHRyYV0pCi0gICAgICAgICAgICB0ZXN0c19ydW5fZmls
ZW5hbWUgPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidGVzdHNfcnVu
LnR4dCIpCi0gICAgICAgICAgICBzZWxmLl9mcy53cml0ZV90ZXh0X2ZpbGUodGVzdHNfcnVuX2Zp
bGVuYW1lLCB0ZXN0c19ydW5fbXNnKQotCi0gICAgICAgICAgICBsZW5fc2tpcF9jaHVuayA9IGlu
dChsZW4oZmlsZXMpICogbGVuKHNraXBwZWQpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkpCi0gICAgICAgICAgICBza2lwX2No
dW5rX2xpc3QgPSBsaXN0KHNraXBwZWQpWzA6bGVuX3NraXBfY2h1bmtdCi0gICAgICAgICAgICBz
a2lwX2NodW5rID0gc2V0KHNraXBfY2h1bmtfbGlzdCkKLQotICAgICAgICAgICAgIyBVcGRhdGUg
ZXhwZWN0YXRpb25zIHNvIHRoYXQgdGhlIHN0YXRzIGFyZSBjYWxjdWxhdGVkIGNvcnJlY3RseS4K
LSAgICAgICAgICAgICMgV2UgbmVlZCB0byBwYXNzIGEgbGlzdCB0aGF0IGluY2x1ZGVzIHRoZSBy
aWdodCAjIG9mIHNraXBwZWQgZmlsZXMKLSAgICAgICAgICAgICMgdG8gUGFyc2VFeHBlY3RhdGlv
bnMgc28gdGhhdCBSZXN1bHRTdW1tYXJ5KCkgd2lsbCBnZXQgdGhlIGNvcnJlY3QKLSAgICAgICAg
ICAgICMgc3RhdHMuIFNvLCB3ZSBhZGQgaW4gdGhlIHN1YnNldCBvZiBza2lwcGVkIGZpbGVzLCBh
bmQgdGhlbgotICAgICAgICAgICAgIyBzdWJ0cmFjdCB0aGVtIGJhY2sgb3V0LgotICAgICAgICAg
ICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMgKyBza2lwX2NodW5rX2xpc3QKLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoc2VsZi5fdGVzdF9maWxlc19saXN0KQotCi0g
ICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygpCi0KLSAgICAgICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXMgPSBzZXQoZmlsZXMpCi0gICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xp
c3QgPSBmaWxlcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2tpcF9jaHVuayA9IHNraXBw
ZWQKLQotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0
YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmspCi0gICAg
ICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwK
LSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMiKQotICAgICAgICBz
ZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0gICAg
ICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQotICAgICAgICBzZWxm
Ll9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0gICAgICAg
ICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAgICAgc2VsZi5fcHJp
bnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAg
dGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQotCi0gICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuZm9yY2U6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKCdS
dW5uaW5nIGFsbCB0ZXN0cywgaW5jbHVkaW5nICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3NraXBzICgtLWZvcmNlKScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAjIE5vdGUgdGhhdCB3ZSBkb24ndCBhY3R1YWxseSBydW4gdGhlIHNraXBwZWQgdGVzdHMg
KHRoZXkgd2VyZQotICAgICAgICAgICAgIyBzdWJ0cmFjdGVkIG91dCBvZiBzZWxmLl90ZXN0X2Zp
bGVzLCBhYm92ZSksIGJ1dCB3ZSBzdHViIG91dCB0aGUKLSAgICAgICAgICAgICMgcmVzdWx0cyBo
ZXJlIHNvIHRoZSBzdGF0aXN0aWNzIGNhbiByZW1haW4gYWNjdXJhdGUuCi0gICAgICAgICAgICBm
b3IgdGVzdCBpbiBza2lwX2NodW5rOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVz
dWx0cy5UZXN0UmVzdWx0KHRlc3QpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSB0ZXN0
X2V4cGVjdGF0aW9ucy5TS0lQCi0gICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJl
c3VsdCwgZXhwZWN0ZWQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3Rl
ZCgnJykKLQotICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBkaWRuJ3QgZmlsdGVyIG91
dCBhbGwgb2YgdGhlIHRlc3RzLgotICAgICAgICBpZiBub3QgbGVuKHNlbGYuX3Rlc3RfZmlsZXMp
OgotICAgICAgICAgICAgX2xvZy5pbmZvKCJBbGwgdGVzdHMgYXJlIGJlaW5nIHNraXBwZWQiKQot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0X3N1bW1hcnkK
LQotICAgIGRlZiBfZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAg
ICAgICIiIlJldHVybnMgdGhlIGhpZ2hlc3QtbGV2ZWwgZGlyZWN0b3J5IGJ5IHdoaWNoIHRvIHNo
YXJkIHRoZSBnaXZlbgotICAgICAgICB0ZXN0IGZpbGUuIiIiCi0gICAgICAgIGluZGV4ID0gdGVz
dF9maWxlLnJmaW5kKHNlbGYuX2ZzLnNlcCArIHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSkK
LQotICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVbaW5kZXggKyBsZW4oc2VsZi5MQVlPVVRf
VEVTVFNfRElSRUNUT1JZKTpdCi0gICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3RfZmlsZS5z
cGxpdChzZWxmLl9mcy5zZXAsIDEpCi0gICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmlsZV9wYXJ0
c1swXQotICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVfcGFydHNbMV0KLQotICAgICAgICAj
IFRoZSBodHRwIHRlc3RzIGFyZSB2ZXJ5IHN0YWJsZSBvbiBtYWMvbGludXguCi0gICAgICAgICMg
VE9ETyhvamFuKTogTWFrZSB0aGUgaHR0cCBzZXJ2ZXIgb24gV2luZG93cyBiZSBhcGFjaGUgc28g
d2UgY2FuCi0gICAgICAgICMgdHVybiBzaGFyZCB0aGUgaHR0cCB0ZXN0cyB0aGVyZSBhcyB3ZWxs
LiBTd2l0Y2hpbmcgdG8gYXBhY2hlIGlzCi0gICAgICAgICMgd2hhdCBtYWRlIHRoZW0gc3RhYmxl
IG9uIGxpbnV4L21hYy4KLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gZGlyZWN0b3J5Ci0gICAgICAg
IHdoaWxlICgoZGlyZWN0b3J5ICE9ICdodHRwJyBvciBzeXMucGxhdGZvcm0gaW4gKCdkYXJ3aW4n
LCAnbGludXgyJykpCi0gICAgICAgICAgICAgICAgYW5kIHRlc3RfZmlsZS5maW5kKHNlbGYuX2Zz
LnNlcCkgPj0gMCk6Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0X2ZpbGUuc3Bs
aXQoc2VsZi5fZnMuc2VwLCAxKQotICAgICAgICAgICAgZGlyZWN0b3J5ID0gdGVzdF9maWxlX3Bh
cnRzWzBdCi0gICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBzZWxmLl9mcy5qb2luKHJldHVybl92
YWx1ZSwgZGlyZWN0b3J5KQotICAgICAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlX3BhcnRz
WzFdCi0KLSAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZQotCi0gICAgZGVmIF9nZXRfdGVzdF9p
bnB1dF9mb3JfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBh
cHByb3ByaWF0ZSBUZXN0SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4gTW9zdGx5IHRoaXMKLSAg
ICAgICAgaXMgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2YWx1ZSAoaW4gbXMpIHRv
IHVzZSBmb3IgdGhlIGdpdmVuCi0gICAgICAgIHRlc3QuIiIiCi0gICAgICAgIGlmIHNlbGYuX3Rl
c3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0
X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykKLSAgICAgICAgcmV0dXJuIFRl
c3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMpCi0KLSAgICBkZWYg
X3Rlc3RfcmVxdWlyZXNfbG9jayhzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICAiIiJSZXR1cm4g
VHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgotICAgICAgICBydW5uaW5n
IG11bHRpcGxlIGNvcGllcyBvZiBOUldUcy4iIiIKLSAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3Rf
ZmlsZS5zcGxpdChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnNlcCkKLSAgICAgICAgcmV0dXJuICdo
dHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGgKLQotICAgIGRl
ZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKLQotICAg
IGRlZiBfc2hhcmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywgdXNlX3JlYWxfc2hhcmRzKToKLSAg
ICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KLSAgICAgICAgVGhpcyBoZWxwcyBl
bnN1cmUgdGhhdCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3Rz
ISkKLSAgICAgICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMg
ZGVwZW5kZW5jaWVzIHRlbmQgdG8KLSAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4gSWYgdXNlX3JlYWxfc2hhcmRzIGlzIEZhbHNlLCB3ZQotICAgICAgICBwdXQgZWFjaCAo
bm9uLUhUVFAvd2Vic29ja2V0KSB0ZXN0IGludG8gaXRzIG93biBzaGFyZCBmb3IgbWF4aW11bQot
ICAgICAgICBjb25jdXJyZW5jeSBpbnN0ZWFkIG9mIHRyeWluZyB0byBkbyBhbnkgc29ydCBvZiBy
ZWFsIHNoYXJkaW5nLgotCi0gICAgICAgIFJldHVybjoKLSAgICAgICAgICAgIEEgbGlzdCBvZiBs
aXN0cyBvZiBUZXN0SW5wdXQgb2JqZWN0cy4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRklYTUU6
IHdoZW4gd2UgYWRkZWQgaHR0cCBsb2NraW5nLCB3ZSBjaGFuZ2VkIGhvdyB0aGlzIHdvcmtzIHN1
Y2gKLSAgICAgICAgIyB0aGF0IHdlIGFsd2F5cyBsdW1wIGFsbCBvZiB0aGUgSFRUUCB0aHJlYWRz
IGludG8gYSBzaW5nbGUgc2hhcmQuCi0gICAgICAgICMgVGhhdCB3aWxsIHNsb3cgZG93biBleHBl
cmltZW50YWwtZnVsbHktcGFyYWxsZWwsIGJ1dCBpdCdzIHVuY2xlYXIKLSAgICAgICAgIyB3aGF0
IHRoZSBiZXN0IGFsdGVybmF0aXZlIGlzIGNvbXBsZXRlbHkgcmV2YW1waW5nIGhvdyB3ZSB0cmFj
awotICAgICAgICAjIHdoZW4gdG8gZ3JhYiB0aGUgbG9jay4KLQotICAgICAgICB0ZXN0X2xpc3Rz
ID0gW10KLSAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrID0gW10KLSAgICAgICAgaWYgbm90IHVz
ZV9yZWFsX3NoYXJkczoKLSAgICAgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gdGVzdF9maWxlczoK
LSAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2Zp
bGUodGVzdF9maWxlKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9j
ayh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19odHRwX2xvY2suYXBw
ZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdF9saXN0cy5hcHBlbmQoKCIuIiwgW3Rlc3RfaW5wdXRdKSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHRlc3RzX2J5X2RpciA9IHt9Ci0gICAgICAgICAgICBmb3IgdGVzdF9maWxl
IGluIHRlc3RfZmlsZXM6Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5ID0gc2VsZi5fZ2V0X2Rp
cl9mb3JfdGVzdF9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0g
c2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQotICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAg
ICAgICB0ZXN0c190b19odHRwX2xvY2suYXBwZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyLnNldGRlZmF1bHQoZGly
ZWN0b3J5LCBbXSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0u
YXBwZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAjIFNvcnQgYnkgdGhlIG51bWJlciBvZiB0
ZXN0cyBpbiB0aGUgZGlyIHNvIHRoYXQgdGhlIG9uZXMgd2l0aCB0aGUKLSAgICAgICAgICAgICMg
bW9zdCB0ZXN0cyBnZXQgcnVuIGZpcnN0IGluIG9yZGVyIHRvIG1heGltaXplIHBhcmFsbGVsaXph
dGlvbi4KLSAgICAgICAgICAgICMgTnVtYmVyIG9mIHRlc3RzIGlzIGEgZ29vZCBlbm91Z2gsIGJ1
dCBub3QgcGVyZmVjdCwgYXBwcm94aW1hdGlvbgotICAgICAgICAgICAgIyBvZiBob3cgbG9uZyB0
aGF0IHNldCBvZiB0ZXN0cyB3aWxsIHRha2UgdG8gcnVuLiBXZSBjYW4ndCBqdXN0IHVzZQotICAg
ICAgICAgICAgIyBhIFByaW9yaXR5UXVldWUgdW50aWwgd2UgbW92ZSB0byBQeXRob24gMi42Lgot
ICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiB0ZXN0c19ieV9kaXI6Ci0gICAgICAgICAgICAg
ICAgdGVzdF9saXN0ID0gdGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0KLSAgICAgICAgICAgICAgICB0
ZXN0X2xpc3RfdHVwbGUgPSAoZGlyZWN0b3J5LCB0ZXN0X2xpc3QpCi0gICAgICAgICAgICAgICAg
dGVzdF9saXN0cy5hcHBlbmQodGVzdF9saXN0X3R1cGxlKQotICAgICAgICAgICAgdGVzdF9saXN0
cy5zb3J0KGxhbWJkYSBhLCBiOiBjbXAobGVuKGJbMV0pLCBsZW4oYVsxXSkpKQotCi0gICAgICAg
ICMgUHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0LiBUaGVyZSBhcmUgb25seSBhIGNvdXBsZSBodW5k
cmVkIG9mIHRoZW0sCi0gICAgICAgICMgYnV0IGVhY2ggaHR0cCB0ZXN0IHRha2VzIGEgdmVyeSBs
b25nIHRpbWUgdG8gcnVuLCBzbyBzb3J0aW5nIGJ5IHRoZQotICAgICAgICAjIG51bWJlciBvZiB0
ZXN0cyBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBob3cgbG9uZyB0aGV5IHRha2UgdG8gcnVu
LgotICAgICAgICBpZiB0ZXN0c190b19odHRwX2xvY2s6Ci0gICAgICAgICAgICB0ZXN0X2xpc3Rz
Lmluc2VydCgwLCAoInRlc3RzX3RvX2h0dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBfbG9jaykpCi0K
LSAgICAgICAgcmV0dXJuIHRlc3RfbGlzdHMKLQotICAgIGRlZiBfY29udGFpbnNfdGVzdHMoc2Vs
Ziwgc3ViZGlyKToKLSAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBzZWxmLl90ZXN0X2ZpbGVzOgot
ICAgICAgICAgICAgaWYgdGVzdF9maWxlLmZpbmQoc3ViZGlyKSA+PSAwOgotICAgICAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9udW1fd29y
a2VycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nl
c3NlcykKLQotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1h
cnkpOgotICAgICAgICAiIiJSdW5zIHRoZSB0ZXN0cyBpbiB0aGUgZmlsZV9saXN0LgotCi0gICAg
ICAgIFJldHVybjogQSB0dXBsZSAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0
aHJlYWRfdGltaW5ncywKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3MpCi0gICAgICAgICAgICBpbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBydW4gd2Fz
IGludGVycnVwdGVkCi0gICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCBpcyB3aGV0aGVy
IHRoZSBpbnRlcnJ1cHRpb24gd2FzIGJlY2F1c2Ugc29tZW9uZQotICAgICAgICAgICAgICB0eXBl
ZCBDdHJsXkMKLSAgICAgICAgICAgIHRocmVhZF90aW1pbmdzIGlzIGEgbGlzdCBvZiBkaWN0cyB3
aXRoIHRoZSB0b3RhbCBydW50aW1lCi0gICAgICAgICAgICAgIG9mIGVhY2ggdGhyZWFkIHdpdGgg
J25hbWUnLCAnbnVtX3Rlc3RzJywgJ3RvdGFsX3RpbWUnIHByb3BlcnRpZXMKLSAgICAgICAgICAg
IHRlc3RfdGltaW5ncyBpcyBhIGxpc3Qgb2YgdGltaW5ncyBmb3IgZWFjaCBzaGFyZGVkIHN1YmRp
cmVjdG9yeQotICAgICAgICAgICAgICBvZiB0aGUgZm9ybSBbdGltZSwgZGlyZWN0b3J5X25hbWUs
IG51bV90ZXN0c10KLSAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzIGlzIGEgbGlz
dCBvZiBydW4gdGltZXMgZm9yIGVhY2ggdGVzdAotICAgICAgICAgICAgICBpbiB0aGUgZm9ybSB7
ZmlsZW5hbWU6ZmlsZW5hbWUsIHRlc3RfcnVuX3RpbWU6dGVzdF9ydW5fdGltZX0KLSAgICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCB0byBwb3B1bGF0ZSB3aXRoIHRoZSBy
ZXN1bHRzCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5
ID0gcmVzdWx0X3N1bW1hcnkKLSAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMgPSBbXQotICAgICAg
ICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXMgPSB7
fQotCi0gICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMoKQotICAgICAgICBr
ZXlib2FyZF9pbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIGludGVycnVwdGVkID0gRmFsc2UK
LSAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBbXQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4nKQotICAgICAgICB0ZXN0X2xpc3RzID0gc2Vs
Zi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LAotICAgICAgICAgICAgbnVtX3dvcmtlcnMgPiAxIGFu
ZCBub3Qgc2VsZi5fb3B0aW9ucy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwpCi0gICAgICAg
IF9sb2cuZGVidWcoIlVzaW5nICVkIHNoYXJkcyIgJSBsZW4odGVzdF9saXN0cykpCi0KLSAgICAg
ICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChzZWxmLl9w
b3J0LCBzZWxmLl9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYsIHdvcmtlci5Xb3JrZXIpCi0KLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1
cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCi0KLSAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMp
KQotICAgICAgICBmb3Igd29ya2VyX251bWJlciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgotICAg
ICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29y
a2VyKHdvcmtlcl9udW1iZXIpCi0gICAgICAgICAgICB3b3JrZXJfc3RhdGUgPSBfV29ya2VyU3Rh
dGUod29ya2VyX251bWJlciwgd29ya2VyX2Nvbm5lY3Rpb24pCi0gICAgICAgICAgICBzZWxmLl93
b3JrZXJfc3RhdGVzW3dvcmtlcl9jb25uZWN0aW9uLm5hbWVdID0gd29ya2VyX3N0YXRlCi0KLSAg
ICAgICAgICAgICMgRklYTUU6IElmIHdlIHN0YXJ0IHdvcmtlcnMgdXAgdG9vIHF1aWNrbHksIER1
bXBSZW5kZXJUcmVlIGFwcGVhcnMKLSAgICAgICAgICAgICMgdG8gdGhyYXNoIG9uIHNvbWV0aGlu
ZyBhbmQgdGltZSBvdXQgaXRzIGZpcnN0IGZldyB0ZXN0cy4gVW50aWwKLSAgICAgICAgICAgICMg
d2UgY2FuIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLCBzbGVlcCBhIGJpdCBpbiBiZXR3ZWVu
Ci0gICAgICAgICAgICAjIHdvcmtlcnMuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKLQot
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgdGVzdGluZyAuLi4i
KQotICAgICAgICBmb3IgdGVzdF9saXN0IGluIHRlc3RfbGlzdHM6Ci0gICAgICAgICAgICBtYW5h
Z2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCd0ZXN0X2xpc3QnLCB0ZXN0X2xpc3RbMF0sIHRl
c3RfbGlzdFsxXSkKLQotICAgICAgICAjIFdlIHBvc3Qgb25lICdzdG9wJyBtZXNzYWdlIGZvciBl
YWNoIHdvcmtlci4gQmVjYXVzZSB0aGUgc3RvcCBtZXNzYWdlCi0gICAgICAgICMgYXJlIHNlbnQg
YWZ0ZXIgYWxsIG9mIHRoZSB0ZXN0cywgYW5kIGJlY2F1c2UgZWFjaCB3b3JrZXIgd2lsbCBzdG9w
Ci0gICAgICAgICMgcmVhZGluZyBtZXNzc2FnZXMgYWZ0ZXIgcmVjZWl2aW5nIGEgc3RvcCwgd2Ug
Y2FuIGJlIHN1cmUgZWFjaAotICAgICAgICAjIHdvcmtlciB3aWxsIGdldCBhIHN0b3AgbWVzc2Fn
ZSBhbmQgaGVuY2UgdGhleSB3aWxsIGFsbCBzaHV0IGRvd24uCi0gICAgICAgIGZvciBpIGluIHhy
YW5nZShudW1fd29ya2Vycyk6Ci0gICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucG9zdF9t
ZXNzYWdlKCdzdG9wJykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBub3Qgc2Vs
Zi5pc19kb25lKCk6Ci0gICAgICAgICAgICAgICAgIyBXZSBsb29wIHdpdGggYSB0aW1lb3V0IGlu
IG9yZGVyIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdlZGdlZCB0aHJlYWRzLgotICAgICAgICAgICAg
ICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQot
Ci0gICAgICAgICAgICBpZiBhbnkod29ya2VyX3N0YXRlLndlZGdlZCBmb3Igd29ya2VyX3N0YXRl
IGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCkpOgotICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignUmVtYWluaW5nIHdvcmtlcnMg
YXJlIHdlZGdlZCwgYmFpbGluZyBvdXQuJykKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcn
KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCdObyB3ZWRn
ZWQgdGhyZWFkcycpCi0KLSAgICAgICAgICAgICMgTWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2Vy
cyBoYXZlIHNodXQgZG93biAoaWYgcG9zc2libGUpLgotICAgICAgICAgICAgZm9yIHdvcmtlcl9z
dGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGlm
IG5vdCB3b3JrZXJfc3RhdGUud2VkZ2VkIGFuZCB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rp
b24uaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRlLndvcmtlcl9j
b25uZWN0aW9uLmpvaW4oMC41KQotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHdvcmtl
cl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5pc19hbGl2ZSgpCi0KLSAgICAgICAgZXhjZXB0IEtl
eWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgX2xvZy5pbmZvKCJJbnRlcnJ1cHRlZCwgZXhp
dGluZyIpCi0gICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKLSAgICAgICAgICAgIGtl
eWJvYXJkX2ludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICBleGNlcHQgVGVzdFJ1bkludGVycnVw
dGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgX2xvZy5pbmZvKGUucmVhc29uKQotICAgICAg
ICAgICAgc2VsZi5jYW5jZWxfd29ya2VycygpCi0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRy
dWUKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIyBVbmV4cGVjdGVkIGV4Y2VwdGlvbjsg
ZG9uJ3QgdHJ5IHRvIGNsZWFuIHVwIHdvcmtlcnMuCi0gICAgICAgICAgICBfbG9nLmluZm8oIkV4
Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQotICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICB0
aHJlYWRfdGltaW5ncyA9IFt3b3JrZXJfc3RhdGUuc3RhdHMgZm9yIHdvcmtlcl9zdGF0ZSBpbiBz
ZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpXQotCi0gICAgICAgICMgRklYTUU6IHNob3VsZCB0
aGlzIGJlIGEgY2xhc3MgaW5zdGVhZCBvZiBhIHR1cGxlPwotICAgICAgICByZXR1cm4gKGludGVy
cnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsCi0gICAgICAgICAg
ICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQotCi0gICAgZGVmIHVw
ZGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jl
c3VsdF9zdW1tYXJ5KQotCi0gICAgZGVmIF9jb2xsZWN0X3RpbWluZ19pbmZvKHNlbGYsIHRocmVh
ZHMpOgotICAgICAgICB0ZXN0X3RpbWluZ3MgPSB7fQotICAgICAgICBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncyA9IFtdCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW10KLQotICAgICAgICBmb3Ig
dGhyZWFkIGluIHRocmVhZHM6Ci0gICAgICAgICAgICB0aHJlYWRfdGltaW5ncy5hcHBlbmQoeydu
YW1lJzogdGhyZWFkLmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ251bV90ZXN0cyc6IHRocmVhZC5nZXRfbnVtX3Rlc3RzKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogdGhyZWFkLmdldF90b3RhbF90aW1lKCl9
KQotICAgICAgICAgICAgdGVzdF90aW1pbmdzLnVwZGF0ZSh0aHJlYWQuZ2V0X3Rlc3RfZ3JvdXBf
dGltaW5nX3N0YXRzKCkpCi0gICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5leHRl
bmQodGhyZWFkLmdldF90ZXN0X3Jlc3VsdHMoKSkKLQotICAgICAgICByZXR1cm4gKHRocmVhZF90
aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQotCi0gICAgZGVm
IG5lZWRzX2h0dHAoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBy
dW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9jb250
YWluc190ZXN0cyhzZWxmLkhUVFBfU1VCRElSKQotCi0gICAgZGVmIG5lZWRzX3dlYnNvY2tldChz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBh
IFdFQlNPQ0tFVCBzZXJ2ZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9jb250YWluc190ZXN0
cyhzZWxmLldFQlNPQ0tFVF9TVUJESVIpCi0KLSAgICBkZWYgc2V0X3VwX3J1bihzZWxmKToKLSAg
ICAgICAgIiIiQ29uZmlndXJlcyB0aGUgc3lzdGVtIHRvIGJlIHJlYWR5IHRvIHJ1biB0ZXN0cy4K
LQotICAgICAgICBSZXR1cm5zIGEgUmVzdWx0U3VtbWFyeSBvYmplY3QgaWYgd2Ugc2hvdWxkIGNv
bnRpbnVlIHRvIHJ1biB0ZXN0cywKLSAgICAgICAgb3IgTm9uZSBpZiB3ZSBzaG91bGQgYWJvcnQu
Ci0KLSAgICAgICAgIiIiCi0gICAgICAgICMgVGhpcyBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIHdl
IGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLAotICAgICAgICAjIHNpbmNlIHRoZSBoZWxw
ZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBzZXR1cCBjb3JyZWN0LgotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgaGVscGVyIC4uLiIpCi0gICAgICAgIHNl
bGYuX3BvcnQuc3RhcnRfaGVscGVyKCkKLQotICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHN5c3Rl
bSBkZXBlbmRlbmNpZXMgKHRoZW1lcywgZm9udHMsIC4uLikgYXJlIGNvcnJlY3QuCi0gICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLm5vY2hlY2tfc3lzX2RlcHM6Ci0gICAgICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2hlY2tpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyAuLi4i
KQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfc3lzX2RlcHMoc2VsZi5uZWVk
c19odHRwKCkpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxwZXIoKQotICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jbG9i
YmVyX29sZF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5fY2xvYmJlcl9vbGRfcmVzdWx0cygp
Ci0KLSAgICAgICAgIyBDcmVhdGUgdGhlIG91dHB1dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBh
bHJlYWR5IGV4aXN0LgotICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNl
bGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQotCi0gICAgICAgIHNlbGYuX3BvcnQuc2V0dXBfdGVzdF9y
dW4oKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJQcmVwYXJpbmcgdGVz
dHMgLi4uIikKLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBzZWxmLnByZXBhcmVfbGlzdHNfYW5k
X3ByaW50X291dHB1dCgpCi0gICAgICAgIGlmIG5vdCByZXN1bHRfc3VtbWFyeToKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdF9zdW1tYXJ5Ci0KLSAgICBk
ZWYgcnVuKHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUnVuIGFsbCBvdXIgdGVz
dHMgb24gYWxsIG91ciB0ZXN0IGZpbGVzLgotCi0gICAgICAgIEZvciBlYWNoIHRlc3QgZmlsZSwg
d2UgcnVuIGVhY2ggdGVzdCB0eXBlLiBJZiB0aGVyZSBhcmUgYW55IGZhaWx1cmVzLAotICAgICAg
ICB3ZSBjb2xsZWN0IHRoZW0gZm9yIHJlcG9ydGluZy4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5OiBhIHN1bW1hcnkgb2JqZWN0IHRyYWNraW5nIHRoZSB0ZXN0IHJl
c3VsdHMuCi0KLSAgICAgICAgUmV0dXJuOgotICAgICAgICAgIFRoZSBudW1iZXIgb2YgdW5leHBl
Y3RlZCByZXN1bHRzICgwID09IHN1Y2Nlc3MpCi0gICAgICAgICIiIgotICAgICAgICAjIGdhdGhl
cl90ZXN0X2ZpbGVzKCkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGZpcnN0IHRvIGluaXRpYWxpemUg
dXMuCi0gICAgICAgICMgSWYgd2UgZGlkbid0IGZpbmQgYW55IGZpbGVzIHRvIHRlc3QsIHdlJ3Zl
IGVycm9yZWQgb3V0IGFscmVhZHkgaW4KLSAgICAgICAgIyBwcmVwYXJlX2xpc3RzX2FuZF9wcmlu
dF9vdXRwdXQoKS4KLSAgICAgICAgYXNzZXJ0KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkKLQotICAg
ICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLQotICAgICAgICBpbnRlcnJ1cHRlZCwga2V5
Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIFwKLSAgICAg
ICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gKAotICAgICAgICAgICAgc2VsZi5fcnVu
X3Rlc3RzKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCwgcmVzdWx0X3N1bW1hcnkpKQotCi0gICAgICAg
ICMgV2UgZXhjbHVkZSB0aGUgY3Jhc2hlcyBmcm9tIHRoZSBsaXN0IG9mIHJlc3VsdHMgdG8gcmV0
cnksIGJlY2F1c2UKLSAgICAgICAgIyB3ZSB3YW50IHRvIHRyZWF0IGV2ZW4gYSBwb3RlbnRpYWxs
eSBmbGFreSBjcmFzaCBhcyBhbiBlcnJvci4KLSAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRf
ZmFpbHVyZXMocmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1GYWxzZSkKLSAgICAgICAg
cmV0cnlfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5Ci0gICAgICAgIHdoaWxlIChsZW4oZmFpbHVy
ZXMpIGFuZCBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZAotICAgICAgICAgICAgbm90
IHNlbGYuX3JldHJ5aW5nIGFuZCBub3QgaW50ZXJydXB0ZWQpOgotICAgICAgICAgICAgX2xvZy5p
bmZvKCcnKQotICAgICAgICAgICAgX2xvZy5pbmZvKCJSZXRyeWluZyAlZCB1bmV4cGVjdGVkIGZh
aWx1cmUocykgLi4uIiAlIGxlbihmYWlsdXJlcykpCi0gICAgICAgICAgICBfbG9nLmluZm8oJycp
Ci0gICAgICAgICAgICBzZWxmLl9yZXRyeWluZyA9IFRydWUKLSAgICAgICAgICAgIHJldHJ5X3N1
bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4cGVjdGF0aW9ucywgZmFpbHVyZXMua2V5cygp
KQotICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgaW50ZW50aW9uYWxseSBpZ25vcmUgdGhlIHJl
dHVybiB2YWx1ZSBoZXJlLgotICAgICAgICAgICAgc2VsZi5fcnVuX3Rlc3RzKGZhaWx1cmVzLmtl
eXMoKSwgcmV0cnlfc3VtbWFyeSkKLSAgICAgICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2Zh
aWx1cmVzKHJldHJ5X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQotCi0gICAgICAgIGVu
ZF90aW1lID0gdGltZS50aW1lKCkKLQotICAgICAgICBzZWxmLl9wcmludF90aW1pbmdfc3RhdGlz
dGljcyhlbmRfdGltZSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSkKLQotICAgICAgICBz
ZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeShyZXN1bHRfc3VtbWFyeSkKLQotICAgICAgICBzeXMu
c3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0KLSAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5LnRvdGFsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1h
cnkuZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKQotCi0gICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0
cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9leHBl
Y3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncywgb25seV91bmV4cGVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfdW5leHBlY3RlZF9yZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKLQotICAgICAgICAjIEZJ
WE1FOiByZW1vdmUgcmVjb3JkX3Jlc3VsdHMuIEl0J3MganVzdCB1c2VkIGZvciB0ZXN0aW5nLiBU
aGVyZSdzIG5vIG5lZWQKLSAgICAgICAgIyBmb3IgaXQgdG8gYmUgYSBjb21tYW5kbGluZSBhcmd1
bWVudC4KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBz
ZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5kCi0gICAgICAgICAgICBub3Qga2V5Ym9hcmRfaW50ZXJy
dXB0ZWQpOgotICAgICAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxvZyBmaWxlcyBh
bmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzCi0gICAgICAgICAgICAjIHRvIGFwcGVuZ2lu
ZSBzZXJ2ZXIuCi0gICAgICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVz
dWx0cyhzZWxmLl9wb3J0LAotICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVz
dWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5
X3VuZXhwZWN0ZWQ9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLl91cGxvYWRfanNvbl9maWxlcyh1
bmV4cGVjdGVkX3Jlc3VsdHMsIHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cykKLQotICAgICAgICAjIFdyaXRlIHRoZSBzdW1tYXJ5IHRvIGRpc2sgKHJlc3VsdHMuaHRtbCkg
YW5kIGRpc3BsYXkgaXQgaWYgcmVxdWVzdGVkLgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9u
cy5kcnlfcnVuOgotICAgICAgICAgICAgd3JvdGVfcmVzdWx0cyA9IHNlbGYuX3dyaXRlX3Jlc3Vs
dHNfaHRtbF9maWxlKHJlc3VsdF9zdW1tYXJ5KQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5zaG93X3Jlc3VsdHMgYW5kIHdyb3RlX3Jlc3VsdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
c2hvd19yZXN1bHRzX2h0bWxfZmlsZSgpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV91bmV4cGVj
dGVkX3Jlc3VsdHNfaHRtbF9maWxlKHVuZXhwZWN0ZWRfcmVzdWx0cykKLQotICAgICAgICAjIE5v
dyB0aGF0IHdlJ3ZlIGNvbXBsZXRlZCBhbGwgdGhlIHByb2Nlc3Npbmcgd2UgY2FuLCB3ZSByZS1y
YWlzZQotICAgICAgICAjIGEgS2V5Ym9hcmRJbnRlcnJ1cHQgaWYgbmVjZXNzYXJ5IHNvIHRoZSBj
YWxsZXIgY2FuIGhhbmRsZSBpdC4KLSAgICAgICAgaWYga2V5Ym9hcmRfaW50ZXJydXB0ZWQ6Ci0g
ICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAotCi0gICAgICAgICMgSWdub3JlIGZs
YWt5IGZhaWx1cmVzIGFuZCB1bmV4cGVjdGVkIHBhc3NlcyBzbyB3ZSBkb24ndCB0dXJuIHRoZQot
ICAgICAgICAjIGJvdCByZWQgZm9yIHRob3NlLgotICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9y
ZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXQotCi0gICAgZGVmIGNsZWFuX3VwX3J1bihzZWxmKToK
LSAgICAgICAgIiIiUmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25lIHJ1bm5pbmcg
dGVzdHMuIiIiCi0KLSAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3Rkb3V0IikKLSAgICAg
ICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIF9sb2cuZGVidWcoImZsdXNoaW5nIHN0ZGVy
ciIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICBfbG9nLmRlYnVnKCJzdG9w
cGluZyBoZWxwZXIiKQotICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKLQotICAgIGRl
ZiB1cGRhdGVfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlVwZGF0
ZSB0aGUgc3VtbWFyeSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0ZWQgdGVzdHMu
IiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQubG9hZHMoc2VsZi5fcmVzdWx0X3F1
ZXVlLmdldF9ub3dhaXQoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAg
ICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0
aF9yZXN1bHQocmVzdWx0X3N1bW1hcnksIHJlc3VsdCkKLQotICAgIGRlZiBfdXBkYXRlX3N1bW1h
cnlfd2l0aF9yZXN1bHQoc2VsZiwgcmVzdWx0X3N1bW1hcnksIHJlc3VsdCk6Ci0gICAgICAgIGV4
cGVjdGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAot
ICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5fb3B0aW9ucy5w
aXhlbF90ZXN0cykKLSAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQp
Ci0gICAgICAgIGV4cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19z
dHJpbmcoCi0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUpCi0gICAgICAgIGdvdF9zdHIgPSBz
ZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQotICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4
cF9zdHIsIGdvdF9zdHIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocmVz
dWx0X3N1bW1hcnksIHNlbGYuX3JldHJ5aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKLQotICAgICAgICBkZWYgaW50ZXJy
dXB0X2lmX2F0X2ZhaWx1cmVfbGltaXQobGltaXQsIGNvdW50LCBtZXNzYWdlKToKLSAgICAgICAg
ICAgIGlmIGxpbWl0IGFuZCBjb3VudCA+PSBsaW1pdDoKLSAgICAgICAgICAgICAgICByYWlzZSBU
ZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24obWVzc2FnZSAlIGNvdW50KQotCi0gICAgICAgIGlu
dGVycnVwdF9pZl9hdF9mYWlsdXJlX2xpbWl0KAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5l
eGl0X2FmdGVyX25fZmFpbHVyZXMsCi0gICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVj
dGVkX2ZhaWx1cmVzLAotICAgICAgICAgICAgIkFib3J0aW5nIHJ1biBzaW5jZSAlZCBmYWlsdXJl
cyB3ZXJlIHJlYWNoZWQiKQotICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgK
LSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2NyYXNoZXNfb3JfdGltZW91
dHMsCi0gICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX2NyYXNoZXNfb3JfdGlt
ZW91dHMsCi0gICAgICAgICAgICAiQWJvcnRpbmcgcnVuIHNpbmNlICVkIGNyYXNoZXMgb3IgdGlt
ZW91dHMgd2VyZSByZWFjaGVkIikKLQotICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0cyhzZWxm
KToKLSAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMgZGlyZWN0
b3JpZXMgc2luY2UgdGhlIG90aGVyCi0gICAgICAgICMgZmlsZXMgaW4gdGhlIHJlc3VsdHMgZGly
ZWN0b3J5IGFyZSBleHBsaWNpdGx5IHVzZWQgZm9yIGNyb3NzLXJ1bgotICAgICAgICAjIHRyYWNr
aW5nLgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2xvYmJlcmluZyBvbGQg
cmVzdWx0cyBpbiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSkKLSAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3Bv
cnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIHBvc3NpYmxlX2RpcnMgPSBzZWxmLl9wb3J0
LnRlc3RfZGlycygpCi0gICAgICAgIGZvciBkaXJuYW1lIGluIHBvc3NpYmxlX2RpcnM6Ci0gICAg
ICAgICAgICBpZiBzZWxmLl9mcy5pc2RpcihzZWxmLl9mcy5qb2luKGxheW91dF90ZXN0c19kaXIs
IGRpcm5hbWUpKToKLSAgICAgICAgICAgICAgICBzZWxmLl9mcy5ybXRyZWUoc2VsZi5fZnMuam9p
bihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgZGlybmFtZSkpCi0KLSAgICBkZWYgX2dldF9mYWls
dXJlcyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzKToKLSAgICAgICAgIiIi
RmlsdGVycyBhIGRpY3Qgb2YgcmVzdWx0cyBhbmQgcmV0dXJucyBvbmx5IHRoZSBmYWlsdXJlcy4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiB0aGUgcmVzdWx0cyBv
ZiB0aGUgdGVzdCBydW4KLSAgICAgICAgICBpbmNsdWRlX2NyYXNoZXM6IHdoZXRoZXIgY3Jhc2hl
cyBhcmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4KLSAgICAgICAgICAgIFdlIHVzZSBGYWxzZSB3
aGVuIGZpbmRpbmcgdGhlIGxpc3Qgb2YgZmFpbHVyZXMgdG8gcmV0cnkKLSAgICAgICAgICAgIHRv
IHNlZSBpZiB0aGUgcmVzdWx0cyB3ZXJlIGZsYWt5LiBBbHRob3VnaCB0aGUgY3Jhc2hlcyBtYXkg
YWxzbyBiZQotICAgICAgICAgICAgZmxha3ksIHdlIHRyZWF0IHRoZW0gYXMgaWYgdGhleSBhcmVu
J3Qgc28gdGhhdCB0aGV5J3JlIG5vdCBpZ25vcmVkLgotICAgICAgICBSZXR1cm5zOgotICAgICAg
ICAgIGEgZGljdCBvZiBmaWxlcyAtPiByZXN1bHRzCi0gICAgICAgICIiIgotICAgICAgICBmYWls
ZWRfcmVzdWx0cyA9IHt9Ci0gICAgICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcmVzdWx0X3N1bW1h
cnkudW5leHBlY3RlZF9yZXN1bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgaWYgKHJlc3Vs
dC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1Mgb3IKLSAgICAgICAgICAgICAgICByZXN1
bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hl
cyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZhaWxlZF9yZXN1bHRz
W3Rlc3RdID0gcmVzdWx0LnR5cGUKLQotICAgICAgICByZXR1cm4gZmFpbGVkX3Jlc3VsdHMKLQot
ICAgIGRlZiBfY2hhcl9mb3JfcmVzdWx0KHNlbGYsIHJlc3VsdCk6Ci0gICAgICAgIHJlc3VsdCA9
IHJlc3VsdC5sb3dlcigpCi0gICAgICAgIGlmIHJlc3VsdCBpbiBUZXN0RXhwZWN0YXRpb25zRmls
ZS5FWFBFQ1RBVElPTlM6Ci0gICAgICAgICAgICByZXN1bHRfZW51bV92YWx1ZSA9IFRlc3RFeHBl
Y3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OU1tyZXN1bHRdCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICByZXN1bHRfZW51bV92YWx1ZSA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVSU1ty
ZXN1bHRdCi0gICAgICAgIHJldHVybiBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5KU09O
TGF5b3V0UmVzdWx0c0dlbmVyYXRvci5GQUlMVVJFX1RPX0NIQVJbcmVzdWx0X2VudW1fdmFsdWVd
Ci0KLSAgICBkZWYgX3VwbG9hZF9qc29uX2ZpbGVzKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cywg
c3VtbWFyaXplZF9yZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKLSAgICAgICAgIiIiV3JpdGVzIHRoZSBy
ZXN1bHRzIG9mIHRoZSB0ZXN0IHJ1biBhcyBKU09OIGZpbGVzIGludG8gdGhlIHJlc3VsdHMKLSAg
ICAgICAgZGlyIGFuZCB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoZSBhcHBlbmdpbmUgc2VydmVyLgot
Ci0gICAgICAgIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZmlsZXMgd3JpdHRlbiBpbnRvIHRo
ZSByZXN1bHRzIGRpcjoKLSAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbjogQSBzaG9y
dCBsaXN0IG9mIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMuCi0gICAgICAgICAgICBUaGlzIGlzIHVz
ZWQgYnkgdGhlIGJ1aWxkYm90cyB0byBkaXNwbGF5IHJlc3VsdHMuCi0gICAgICAgICAgZXhwZWN0
YXRpb25zLmpzb246IFRoaXMgaXMgdXNlZCBieSB0aGUgZmxha2luZXNzIGRhc2hib2FyZC4KLSAg
ICAgICAgICByZXN1bHRzLmpzb246IEEgZnVsbCBsaXN0IG9mIHRoZSByZXN1bHRzIC0gdXNlZCBi
eSB0aGUgZmxha2luZXNzCi0gICAgICAgICAgICBkYXNoYm9hcmQgYW5kIHRoZSBhZ2dyZWdhdGUg
cmVzdWx0cyBkYXNoYm9hcmQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB1bmV4cGVjdGVk
X3Jlc3VsdHM6IGRpY3Qgb2YgdW5leHBlY3RlZCByZXN1bHRzCi0gICAgICAgICAgc3VtbWFyaXpl
ZF9yZXN1bHRzOiBkaWN0IG9mIHJlc3VsdHMKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogZnVs
bCBzdW1tYXJ5IG9iamVjdAotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBsaXN0
IG9mIHRlc3QgdGltZXMgKHVzZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAgICAgZGFzaGJv
YXJkKS4KLSAgICAgICAgIiIiCi0gICAgICAgIF9sb2cuZGVidWcoIldyaXRpbmcgSlNPTiBmaWxl
cyBpbiAlcy4iICUgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0KLSAgICAgICAgdW5leHBlY3Rl
ZF9qc29uX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidW5l
eHBlY3RlZF9yZXN1bHRzLmpzb24iKQotICAgICAgICBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLndy
aXRlX2pzb24oc2VsZi5fZnMsIHVuZXhwZWN0ZWRfcmVzdWx0cywgdW5leHBlY3RlZF9qc29uX3Bh
dGgpCi0KLSAgICAgICAgZnVsbF9yZXN1bHRzX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jl
c3VsdHNfZGlyZWN0b3J5LCAiZnVsbF9yZXN1bHRzLmpzb24iKQotICAgICAgICBqc29uX3Jlc3Vs
dHNfZ2VuZXJhdG9yLndyaXRlX2pzb24oc2VsZi5fZnMsIHN1bW1hcml6ZWRfcmVzdWx0cywgZnVs
bF9yZXN1bHRzX3BhdGgpCi0KLSAgICAgICAgIyBXcml0ZSBhIGpzb24gZmlsZSBvZiB0aGUgdGVz
dF9leHBlY3RhdGlvbnMudHh0IGZpbGUgZm9yIHRoZSBsYXlvdXQKLSAgICAgICAgIyB0ZXN0cyBk
YXNoYm9hcmQuCi0gICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5fZnMuam9pbihzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSwgImV4cGVjdGF0aW9ucy5qc29uIikKLSAgICAgICAgZXhwZWN0
YXRpb25zX2pzb24gPSBcCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVj
dGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1zKCkKLSAgICAgICAgc2VsZi5fZnMud3JpdGVf
dGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdSJBRERfRVhQRUNUQVRJT05TKCVzKTsiICUgZXhwZWN0YXRpb25zX2pzb24pCi0KLSAg
ICAgICAgZ2VuZXJhdG9yID0ganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IoCi0gICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25z
LmJ1aWxkZXJfbmFtZSwgc2VsZi5fb3B0aW9ucy5idWlsZF9uYW1lLAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5idWlsZF9udW1iZXIsIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LAotICAgICAg
ICAgICAgQlVJTERFUl9CQVNFX1VSTCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAg
ICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl90ZXN0X2ZpbGVz
X2xpc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXIsCi0g
ICAgICAgICAgICAibGF5b3V0LXRlc3RzIiwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubWFz
dGVyX25hbWUpCi0KLSAgICAgICAgX2xvZy5kZWJ1ZygiRmluaXNoZWQgd3JpdGluZyBKU09OIGZp
bGVzLiIpCi0KLSAgICAgICAganNvbl9maWxlcyA9IFsiZXhwZWN0YXRpb25zLmpzb24iLCAiaW5j
cmVtZW50YWxfcmVzdWx0cy5qc29uIiwgImZ1bGxfcmVzdWx0cy5qc29uIl0KLQotICAgICAgICBn
ZW5lcmF0b3IudXBsb2FkX2pzb25fZmlsZXMoanNvbl9maWxlcykKLQotICAgIGRlZiBfcHJpbnRf
Y29uZmlnKHNlbGYpOgotICAgICAgICAiIiJQcmludHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRo
ZSB0ZXN0IHJ1bi4iIiIKLSAgICAgICAgcCA9IHNlbGYuX3ByaW50ZXIKLSAgICAgICAgcC5wcmlu
dF9jb25maWcoIlVzaW5nIHBvcnQgJyVzJyIgJSBzZWxmLl9wb3J0Lm5hbWUoKSkKLSAgICAgICAg
cC5wcmludF9jb25maWcoIlRlc3QgY29uZmlndXJhdGlvbjogJXMiICUgc2VsZi5fcG9ydC50ZXN0
X2NvbmZpZ3VyYXRpb24oKSkKLSAgICAgICAgcC5wcmludF9jb25maWcoIlBsYWNpbmcgdGVzdCBy
ZXN1bHRzIGluICVzIiAlIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLm5ld19iYXNlbGluZToKLSAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFj
aW5nIG5ldyBiYXNlbGluZXMgaW4gJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BvcnQuYmFzZWxpbmVfcGF0aCgpKQotICAgICAgICBwLnByaW50X2NvbmZpZygiVXNpbmcg
JXMgYnVpbGQiICUgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKQotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnBpeGVsX3Rlc3RzOgotICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBpeGVs
IHRlc3RzIGVuYWJsZWQiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcC5wcmludF9jb25m
aWcoIlBpeGVsIHRlc3RzIGRpc2FibGVkIikKLQotICAgICAgICBwLnByaW50X2NvbmZpZygiUmVn
dWxhciB0aW1lb3V0OiAlcywgc2xvdyB0ZXN0IHRpbWVvdXQ6ICVzIiAlCi0gICAgICAgICAgICAg
ICAgICAgICAgIChzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKSkKLQotICAgICAgICBpZiBzZWxm
Ll9udW1fd29ya2VycygpID09IDE6Ci0gICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUnVubmlu
ZyBvbmUgJXMiICUgc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcC5wcmludF9jb25maWcoIlJ1bm5pbmcgJXMgJXNzIGluIHBhcmFsbGVsIiAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKSkK
LSAgICAgICAgcC5wcmludF9jb25maWcoJ0NvbW1hbmQgbGluZTogJyArCi0gICAgICAgICAgICAg
ICAgICAgICAgICcgJy5qb2luKHNlbGYuX3BvcnQuZHJpdmVyX2NtZF9saW5lKCkpKQotICAgICAg
ICBwLnByaW50X2NvbmZpZygiV29ya2VyIG1vZGVsOiAlcyIgJSBzZWxmLl9vcHRpb25zLndvcmtl
cl9tb2RlbCkKLSAgICAgICAgcC5wcmludF9jb25maWcoIiIpCi0KLSAgICBkZWYgX3ByaW50X2V4
cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3Ry
KToKLSAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiBy
ZXN1bHQgY2xhc3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeSAt
IHRoZSBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdHMgdG8gcmVwb3J0IG9uCi0gICAg
ICAgICAgcmVzdWx0X3R5cGUgLSB0aGUgcGFydGljdWxhciByZXN1bHQgdHlwZSB0byByZXBvcnQg
aW4gdGhlIHN1bW1hcnkuCi0gICAgICAgICAgcmVzdWx0X3R5cGVfc3RyIC0gYSBzdHJpbmcgZGVz
Y3JpcHRpb24gb2YgdGhlIHJlc3VsdF90eXBlLgotICAgICAgICAiIiIKLSAgICAgICAgdGVzdHMg
PSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUocmVzdWx0X3R5
cGUpCi0gICAgICAgIG5vdyA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3Rf
ZXhwZWN0YXRpb25zLk5PV10KLSAgICAgICAgd29udGZpeCA9IHJlc3VsdF9zdW1tYXJ5LnRlc3Rz
X2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLldPTlRGSVhdCi0KLSAgICAgICAgIyBXZSB1
c2UgYSBmYW5jeSBmb3JtYXQgc3RyaW5nIGluIG9yZGVyIHRvIHByaW50IHRoZSBkYXRhIG91dCBp
biBhCi0gICAgICAgICMgbmljZWx5LWFsaWduZWQgdGFibGUuCi0gICAgICAgIGZtdHN0ciA9ICgi
RXhwZWN0OiAlJTVkICUlLThzICglJSVkZCBub3csICUlJWRkIHdvbnRmaXgpIgotICAgICAgICAg
ICAgICAgICAgJSAoc2VsZi5fbnVtX2RpZ2l0cyhub3cpLCBzZWxmLl9udW1fZGlnaXRzKHdvbnRm
aXgpKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChmbXRzdHIgJQotICAg
ICAgICAgICAgKGxlbih0ZXN0cyksIHJlc3VsdF90eXBlX3N0ciwgbGVuKHRlc3RzICYgbm93KSwg
bGVuKHRlc3RzICYgd29udGZpeCkpKQotCi0gICAgZGVmIF9udW1fZGlnaXRzKHNlbGYsIG51bSk6
Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBvZiBkaWdpdHMgbmVlZGVkIHRvIHJlcHJl
c2VudCB0aGUgbGVuZ3RoIG9mIGEKLSAgICAgICAgc2VxdWVuY2UuIiIiCi0gICAgICAgIG5kaWdp
dHMgPSAxCi0gICAgICAgIGlmIGxlbihudW0pOgotICAgICAgICAgICAgbmRpZ2l0cyA9IGludCht
YXRoLmxvZzEwKGxlbihudW0pKSkgKyAxCi0gICAgICAgIHJldHVybiBuZGlnaXRzCi0KLSAgICBk
ZWYgX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKHNlbGYsIHRvdGFsX3RpbWUsIHRocmVhZF90aW1p
bmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV90ZXN0X3RpbWlu
Z3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUmVjb3JkIHRpbWluZy1zcGVjaWZpYyBp
bmZvcm1hdGlvbiBmb3IgdGhlIHRlc3QgcnVuLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
dG90YWxfdGltZTogdG90YWwgZWxhcHNlZCB0aW1lIChpbiBzZWNvbmRzKSBmb3IgdGhlIHRlc3Qg
cnVuCi0gICAgICAgICAgdGhyZWFkX3RpbWluZ3M6IHdhbGwgY2xvY2sgdGltZSBlYWNoIHRocmVh
ZCByYW4gZm9yCi0gICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nczogdGltaW5nIGJ5IGRp
cmVjdG9yeQotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiB0aW1pbmcgYnkgZmls
ZQotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGhlIHRlc3Qg
cnVuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiVGVz
dCB0aW1pbmc6IikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgJTYuMmYg
dG90YWwgdGVzdGluZyB0aW1lIiAlIHRvdGFsX3RpbWUpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGltaW5nKCIiKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiVGhy
ZWFkIHRpbWluZzoiKQotICAgICAgICBjdW1sX3RpbWUgPSAwCi0gICAgICAgIGZvciB0IGluIHRo
cmVhZF90aW1pbmdzOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAg
ICAlMTBzOiAlNWQgdGVzdHMsICU2LjJmIHNlY3MiICUKLSAgICAgICAgICAgICAgICAgICh0Wydu
YW1lJ10sIHRbJ251bV90ZXN0cyddLCB0Wyd0b3RhbF90aW1lJ10pKQotICAgICAgICAgICAgY3Vt
bF90aW1lICs9IHRbJ3RvdGFsX3RpbWUnXQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Rp
bWluZygiICAgJTYuMmYgY3VtdWxhdGl2ZSwgJTYuMmYgb3B0aW1hbCIgJQotICAgICAgICAgICAg
ICAoY3VtbF90aW1lLCBjdW1sX3RpbWUgLyBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNz
ZXMpKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0KLSAgICAgICAg
c2VsZi5fcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhpbmRpdmlkdWFsX3Rlc3RfdGlt
aW5ncykKLSAgICAgICAgc2VsZi5fcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0X3N1bW1hcnkpCi0gICAgICAgIHNlbGYuX3ByaW50X2RpcmVjdG9yeV90aW1pbmdz
KGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgX3ByaW50X2FnZ3JlZ2F0ZV90ZXN0
X3N0YXRpc3RpY3Moc2VsZiwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpOgotICAgICAgICAiIiJQ
cmludHMgYWdncmVnYXRlIHN0YXRpc3RpY3MgKGUuZy4gbWVkaWFuLCBtZWFuLCBldGMuKSBmb3Ig
YWxsIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzOiBMaXN0IG9mIFRlc3RSZXN1bHRzIGZvciBhbGwgdGVzdHMuCi0gICAgICAgICIiIgotICAg
ICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSA9IFt0ZXN0X3N0YXRzLnRlc3RfcnVuX3Rp
bWUgZm9yIHRlc3Rfc3RhdHMgaW4gaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3NdCi0gICAgICAgIHNl
bGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygiUEVSIFRFU1QgVElNRSBJTiBU
RVNUU0hFTEwgKHNlY29uZHMpOiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSkKLQotICAgIGRlZiBfcHJp
bnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKHNlbGYsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAg
ICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMgZm9yIHNsb3csIHRpbWVvdXQgYW5kIGNyYXNoIHRl
c3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBM
aXN0IG9mIFRlc3RTdGF0cyBmb3IgYWxsIHRlc3RzLgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5
OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGVzdCBydW4KLSAgICAgICAgIiIiCi0gICAgICAgICMgUmV2
ZXJzZS1zb3J0IGJ5IHRoZSB0aW1lIHNwZW50IGluIER1bXBSZW5kZXJUcmVlLgotICAgICAgICBp
bmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5zb3J0KGxhbWJkYSBhLCBiOgotICAgICAgICAgICAgY21w
KGIudGVzdF9ydW5fdGltZSwgYS50ZXN0X3J1bl90aW1lKSkKLQotICAgICAgICBudW1fcHJpbnRl
ZCA9IDAKLSAgICAgICAgc2xvd190ZXN0cyA9IFtdCi0gICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hf
dGVzdHMgPSBbXQotICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMgPSBbXQotICAgICAgICBm
b3IgdGVzdF90dXBsZSBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoKLSAgICAgICAgICAgIGZp
bGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFtZQotICAgICAgICAgICAgaXNfdGltZW91dF9jcmFz
aF9vcl9zbG93ID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyhmaWxl
bmFtZSk6Ci0gICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQot
ICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCi0KLSAgICAgICAg
ICAgIGlmIGZpbGVuYW1lIGluIHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzOgotICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHNbZmlsZW5hbWVdLnR5cGUKLSAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQgb3IKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIKToKLSAg
ICAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQotICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQot
Ci0gICAgICAgICAgICBpZiAobm90IGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyBhbmQKLSAgICAg
ICAgICAgICAgICBudW1fcHJpbnRlZCA8IHByaW50aW5nLk5VTV9TTE9XX1RFU1RTX1RPX0xPRyk6
Ci0gICAgICAgICAgICAgICAgbnVtX3ByaW50ZWQgPSBudW1fcHJpbnRlZCArIDEKLSAgICAgICAg
ICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCi0KLSAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Rl
c3RfbGlzdF90aW1pbmcoIiVzIHNsb3dlc3QgdGVzdHMgdGhhdCBhcmUgbm90ICIKLSAgICAgICAg
ICAgICJtYXJrZWQgYXMgU0xPVyBhbmQgZGlkIG5vdCB0aW1lb3V0L2NyYXNoOiIgJQotICAgICAg
ICAgICAgcHJpbnRpbmcuTlVNX1NMT1dfVEVTVFNfVE9fTE9HLCB1bmV4cGVjdGVkX3Nsb3dfdGVz
dHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQotICAgICAgICBzZWxm
Ll9wcmludF90ZXN0X2xpc3RfdGltaW5nKCJUZXN0cyBtYXJrZWQgYXMgU0xPVzoiLCBzbG93X3Rl
c3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLSAgICAgICAgc2Vs
Zi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygiVGVzdHMgdGhhdCB0aW1lZCBvdXQgb3IgY3Jhc2hl
ZDoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb3JfY3Jh
c2hfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQotCi0gICAg
ZGVmIF9wcmludF90ZXN0X2xpc3RfdGltaW5nKHNlbGYsIHRpdGxlLCB0ZXN0X2xpc3QpOgotICAg
ICAgICAiIiJQcmludCB0aW1pbmcgaW5mbyBmb3IgZWFjaCB0ZXN0LgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgdGl0bGU6IHNlY3Rpb24gaGVhZGluZwotICAgICAgICAgIHRlc3RfbGlzdDog
dGVzdHMgdGhhdCBmYWxsIGluIHRoaXMgc2VjdGlvbgotICAgICAgICAiIiIKLSAgICAgICAgaWYg
c2VsZi5fcHJpbnRlci5kaXNhYmxlZCgnc2xvd2VzdCcpOgotICAgICAgICAgICAgcmV0dXJuCi0K
LSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcodGl0bGUpCi0gICAgICAgIGZvciB0
ZXN0X3R1cGxlIGluIHRlc3RfbGlzdDoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBs
ZS5maWxlbmFtZVtsZW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCkpICsgMTpdCi0gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoJ1xc
JywgJy8nKQotICAgICAgICAgICAgdGVzdF9ydW5fdGltZSA9IHJvdW5kKHRlc3RfdHVwbGUudGVz
dF9ydW5fdGltZSwgMSkKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIg
ICVzIHRvb2sgJXMgc2Vjb25kcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lKSkKLQotICAgIGRlZiBfcHJpbnRfZGlyZWN0
b3J5X3RpbWluZ3Moc2VsZiwgZGlyZWN0b3J5X3Rlc3RfdGltaW5ncyk6Ci0gICAgICAgICIiIlBy
aW50IHRpbWluZyBpbmZvIGJ5IGRpcmVjdG9yeSBmb3IgYW55IGRpcmVjdG9yaWVzIHRoYXQKLSAg
ICAgICAgdGFrZSA+IDEwIHNlY29uZHMgdG8gcnVuLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nOiB0aW1lIGluZm8gZm9yIGVhY2ggZGlyZWN0b3J5Ci0g
ICAgICAgICIiIgotICAgICAgICB0aW1pbmdzID0gW10KLSAgICAgICAgZm9yIGRpcmVjdG9yeSBp
biBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOgotICAgICAgICAgICAgbnVtX3Rlc3RzLCB0aW1lX2Zv
cl9kaXJlY3RvcnkgPSBkaXJlY3RvcnlfdGVzdF90aW1pbmdzW2RpcmVjdG9yeV0KLSAgICAgICAg
ICAgIHRpbWluZ3MuYXBwZW5kKChyb3VuZCh0aW1lX2Zvcl9kaXJlY3RvcnksIDEpLCBkaXJlY3Rv
cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Rlc3RzKSkKLSAgICAgICAgdGlt
aW5ncy5zb3J0KCkKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiVGltZSB0
byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3JpZXM6IikKLSAgICAgICAgbWluX3NlY29uZHNf
dG9fcHJpbnQgPSAxMAotICAgICAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6Ci0gICAgICAgICAg
ICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190b19wcmludDoKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3RpbWluZygKLSAgICAgICAgICAgICAgICAgICAgIiAgJXMgdG9v
ayAlcyBzZWNvbmRzIHRvIHJ1biAlcyB0ZXN0cy4iICUgKHRpbWluZ1sxXSwKLSAgICAgICAgICAg
ICAgICAgICAgdGltaW5nWzBdLCB0aW1pbmdbMl0pKQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3RpbWluZygiIikKLQotICAgIGRlZiBfcHJpbnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1p
bmdzKHNlbGYsIHRpdGxlLCB0aW1pbmdzKToKLSAgICAgICAgIiIiUHJpbnRzIHRoZSBtZWRpYW4s
IG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgdmFsdWVzIGluCi0gICAgICAgIHRp
bWluZ3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB0aXRsZTogVGl0bGUgZm9yIHRoZXNl
IHRpbWluZ3MuCi0gICAgICAgICAgdGltaW5nczogQSBsaXN0IG9mIGZsb2F0cyByZXByZXNlbnRp
bmcgdGltZXMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWlu
Zyh0aXRsZSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAgICBudW1fdGVzdHMgPSBs
ZW4odGltaW5ncykKLSAgICAgICAgaWYgbm90IG51bV90ZXN0czoKLSAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBwZXJjZW50aWxlOTAgPSB0aW1pbmdzW2ludCguOSAqIG51bV90ZXN0cyldCi0g
ICAgICAgIHBlcmNlbnRpbGU5OSA9IHRpbWluZ3NbaW50KC45OSAqIG51bV90ZXN0cyldCi0KLSAg
ICAgICAgaWYgbnVtX3Rlc3RzICUgMiA9PSAxOgotICAgICAgICAgICAgbWVkaWFuID0gdGltaW5n
c1soKG51bV90ZXN0cyAtIDEpIC8gMikgLSAxXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
bG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDIgLSAxXQotICAgICAgICAgICAgdXBwZXIgPSB0
aW1pbmdzW251bV90ZXN0cyAvIDJdCi0gICAgICAgICAgICBtZWRpYW4gPSAoZmxvYXQobG93ZXIg
KyB1cHBlcikpIC8gMgotCi0gICAgICAgIG1lYW4gPSBzdW0odGltaW5ncykgLyBudW1fdGVzdHMK
LQotICAgICAgICBmb3IgdGltZSBpbiB0aW1pbmdzOgotICAgICAgICAgICAgc3VtX29mX2Rldmlh
dGlvbnMgPSBtYXRoLnBvdyh0aW1lIC0gbWVhbiwgMikKLQotICAgICAgICBzdGRfZGV2aWF0aW9u
ID0gbWF0aC5zcXJ0KHN1bV9vZl9kZXZpYXRpb25zIC8gbnVtX3Rlc3RzKQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZygiICBNZWRpYW46ICAgICAgICAgICU2LjNmIiAlIG1lZGlh
bikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgTWVhbjogICAgICAgICAg
ICAlNi4zZiIgJSBtZWFuKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICA5
MHRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5MCkKLSAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF90aW1pbmcoIiAgOTl0aCBwZXJjZW50aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxl
OTkpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIFN0YW5kYXJkIGRldjog
ICAgJTYuM2YiICUgc3RkX2RldmlhdGlvbikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90
aW1pbmcoIiIpCi0KLSAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1tYXJ5KHNlbGYsIHJlc3VsdF9z
dW1tYXJ5KToKLSAgICAgICAgIiIiUHJpbnQgYSBzaG9ydCBzdW1tYXJ5IGFib3V0IGhvdyBtYW55
IHRlc3RzIHBhc3NlZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5
OiBpbmZvcm1hdGlvbiB0byBsb2cKLSAgICAgICAgIiIiCi0gICAgICAgIGZhaWxlZCA9IGxlbihy
ZXN1bHRfc3VtbWFyeS5mYWlsdXJlcykKLSAgICAgICAgc2tpcHBlZCA9IGxlbigKLSAgICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Rlc3RfZXhwZWN0YXRpb25z
LlNLSVBdKQotICAgICAgICB0b3RhbCA9IHJlc3VsdF9zdW1tYXJ5LnRvdGFsCi0gICAgICAgIHBh
c3NlZCA9IHRvdGFsIC0gZmFpbGVkIC0gc2tpcHBlZAotICAgICAgICBwY3RfcGFzc2VkID0gMC4w
Ci0gICAgICAgIGlmIHRvdGFsID4gMDoKLSAgICAgICAgICAgIHBjdF9wYXNzZWQgPSBmbG9hdChw
YXNzZWQpICogMTAwIC8gdG90YWwKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVh
bCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIj0+IFJlc3VsdHM6ICVk
LyVkIHRlc3RzIHBhc3NlZCAoJS4xZiUlKSIgJQotICAgICAgICAgICAgICAgICAgICAgKHBhc3Nl
ZCwgdG90YWwsIHBjdF9wYXNzZWQpKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVh
bCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnlfZW50cnkocmVzdWx0X3N1
bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5OT1csICJUZXN0cyB0byBiZSBm
aXhlZCIpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiIpCi0gICAgICAg
IHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJlc3VsdF9zdW1tYXJ5LAotICAgICAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWCwKLSAgICAgICAgICAgICJUZXN0cyB0aGF0
IHdpbGwgb25seSBiZSBmaXhlZCBpZiB0aGV5IGNyYXNoIChXT05URklYKSIpCi0gICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQotCi0gICAgZGVmIF9wcmludF9yZXN1bHRfc3Vt
bWFyeV9lbnRyeShzZWxmLCByZXN1bHRfc3VtbWFyeSwgdGltZWxpbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKToKLSAgICAgICAgIiIiUHJpbnQgYSBzdW1t
YXJ5IGJsb2NrIG9mIHJlc3VsdHMgZm9yIGEgcGFydGljdWxhciB0aW1lbGluZSBvZiB0ZXN0Lgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgdG8gcHJp
bnQgcmVzdWx0cyBmb3IKLSAgICAgICAgICB0aW1lbGluZTogdGhlIHRpbWVsaW5lIHRvIHByaW50
IHJlc3VsdHMgZm9yIChOT1QsIFdPTlRGSVgsIGV0Yy4pCi0gICAgICAgICAgaGVhZGluZzogYSB0
ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB0aW1lbGluZQotICAgICAgICAiIiIKLSAgICAgICAg
dG90YWwgPSBsZW4ocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKQot
ICAgICAgICBub3RfcGFzc2luZyA9ICh0b3RhbCAtCi0gICAgICAgICAgIGxlbihyZXN1bHRfc3Vt
bWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTXSAmCi0gICAg
ICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0pKQot
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiPT4gJXMgKCVkKToiICUgKGhlYWRp
bmcsIG5vdF9wYXNzaW5nKSkKLQotICAgICAgICBmb3IgcmVzdWx0IGluIFRlc3RFeHBlY3RhdGlv
bnNGaWxlLkVYUEVDVEFUSU9OX09SREVSOgotICAgICAgICAgICAgaWYgcmVzdWx0ID09IHRlc3Rf
ZXhwZWN0YXRpb25zLlBBU1M6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IHJlc3VsdHMgPSAocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRpb25bcmVzdWx0XSAm
Ci0gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5l
W3RpbWVsaW5lXSkKLSAgICAgICAgICAgIGRlc2MgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBF
Q1RBVElPTl9ERVNDUklQVElPTlNbcmVzdWx0XQotICAgICAgICAgICAgaWYgbm90X3Bhc3Npbmcg
YW5kIGxlbihyZXN1bHRzKToKLSAgICAgICAgICAgICAgICBwY3QgPSBsZW4ocmVzdWx0cykgKiAx
MDAuMCAvIG5vdF9wYXNzaW5nCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9h
Y3R1YWwoIiAgJTVkICUtMjRzICglNC4xZiUlKSIgJQotICAgICAgICAgICAgICAgICAgICAobGVu
KHJlc3VsdHMpLCBkZXNjW2xlbihyZXN1bHRzKSAhPSAxXSwgcGN0KSkKLQotICAgIGRlZiBfcmVz
dWx0c19odG1sKHNlbGYsIHRlc3RfZmlsZXMsIGZhaWx1cmVzLCB0aXRsZT0iVGVzdCBGYWlsdXJl
cyIsIG92ZXJyaWRlX3RpbWU9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICB0ZXN0X2ZpbGVz
ID0gYSBsaXN0IG9mIGZpbGUgcGF0aHMKLSAgICAgICAgZmFpbHVyZXMgPSBkaWN0aW9uYXJ5IG1h
cHBpbmcgdGVzdCBwYXRocyB0byBmYWlsdXJlIG9iamVjdHMKLSAgICAgICAgdGl0bGUgPSB0aXRs
ZSBwcmludGVkIGF0IHRvcCBvZiB0ZXN0Ci0gICAgICAgIG92ZXJyaWRlX3RpbWUgPSBjdXJyZW50
IHRpbWUgKHVzZWQgYnkgdW5pdCB0ZXN0cykKLSAgICAgICAgIiIiCi0gICAgICAgIHBhZ2UgPSAi
IiI8aHRtbD4KLSAgPGhlYWQ+Ci0gICAgPHRpdGxlPkxheW91dCBUZXN0IFJlc3VsdHMgKCUodGlt
ZSlzKTwvdGl0bGU+Ci0gIDwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPGgyPiUodGl0bGUpcyAoJSh0
aW1lKXMpPC9oMj4KLSAgICAgICAgIiIiICUgeyd0aXRsZSc6IHRpdGxlLCAndGltZSc6IG92ZXJy
aWRlX3RpbWUgb3IgdGltZS5hc2N0aW1lKCl9Ci0KLSAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBz
b3J0ZWQodGVzdF9maWxlcyk6Ci0gICAgICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJl
bGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9maWxlKQotICAgICAgICAgICAgdGVzdF91cmwgPSBz
ZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2ZpbGUpCi0gICAgICAgICAgICBwYWdlICs9
IHUiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxiciAvPlxuIiAlICh0ZXN0X3VybCwgdGVzdF9uYW1l
KQotICAgICAgICAgICAgdGVzdF9mYWlsdXJlcyA9IGZhaWx1cmVzLmdldCh0ZXN0X2ZpbGUsIFtd
KQotICAgICAgICAgICAgZm9yIGZhaWx1cmUgaW4gdGVzdF9mYWlsdXJlczoKLSAgICAgICAgICAg
ICAgICBwYWdlICs9ICh1IiZuYnNwOyZuYnNwOyVzPGJyLz4iICUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWlsdXJlLnJlc3VsdF9odG1sX291dHB1dCh0ZXN0X25hbWUpKQotICAgICAgICAg
ICAgcGFnZSArPSAiPC9wPlxuIgotICAgICAgICBwYWdlICs9ICI8L2JvZHk+PC9odG1sPlxuIgot
ICAgICAgICByZXR1cm4gcGFnZQotCi0gICAgZGVmIF93cml0ZV9yZXN1bHRzX2h0bWxfZmlsZShz
ZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIldyaXRlIHJlc3VsdHMuaHRtbCB3aGlj
aCBpcyBhIHN1bW1hcnkgb2YgdGVzdHMgdGhhdCBmYWlsZWQuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzIDopCi0KLSAg
ICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUcnVlIGlmIGFueSByZXN1bHRzIHdlcmUgd3JpdHRl
biAoc2luY2UgZXhwZWN0ZWQgZmFpbHVyZXMgbWF5IGJlCi0gICAgICAgICAgb21pdHRlZCkKLSAg
ICAgICAgIiIiCi0gICAgICAgICMgdGVzdCBmYWlsdXJlcwotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmZ1bGxfcmVzdWx0c19odG1sOgotICAgICAgICAgICAgcmVzdWx0c190aXRsZSA9ICJUZXN0
IEZhaWx1cmVzIgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHJlc3VsdF9zdW1tYXJ5LmZhaWx1
cmVzLmtleXMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0c190aXRsZSA9ICJV
bmV4cGVjdGVkIFRlc3QgRmFpbHVyZXMiCi0gICAgICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVz
ID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgIGlu
Y2x1ZGVfY3Jhc2hlcz1UcnVlKQotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHVuZXhwZWN0ZWRf
ZmFpbHVyZXMua2V5cygpCi0gICAgICAgIGlmIG5vdCBsZW4odGVzdF9maWxlcyk6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBvdXRfZmlsZW5hbWUgPSBzZWxmLl9mcy5qb2lu
KHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIikKLSAgICAgICAgd2l0aCBz
ZWxmLl9mcy5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyhvdXRfZmlsZW5hbWUpIGFzIHJlc3Vs
dHNfZmlsZToKLSAgICAgICAgICAgIGh0bWwgPSBzZWxmLl9yZXN1bHRzX2h0bWwodGVzdF9maWxl
cywgcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMsIHJlc3VsdHNfdGl0bGUpCi0gICAgICAgICAgICBy
ZXN1bHRzX2ZpbGUud3JpdGUoaHRtbCkKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBG
SVhNRTogSGF2ZSB0aGlzIHJlcGxhY2UgcmVzdWx0cy5odG1sIGFuZCBoYXZlIGEgY2hlY2tib3gg
Zm9yIHdoZXRoZXIgdG8gc2hvdyBleHBlY3RlZCBmYWlsdXJlcyBvciBub3QuCi0gICAgZGVmIF93
cml0ZV91bmV4cGVjdGVkX3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0
cyk6Ci0gICAgICAgIGJhc2VfZGlyID0gc2VsZi5fcG9ydC5wYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
J1Rvb2xzJywgJ1NjcmlwdHMnLCAnd2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywgJ2xheW91dF9w
YWNrYWdlJykKLSAgICAgICAgcmVzdWx0c19maWxlID0gc2VsZi5fZnMuam9pbihiYXNlX2Rpciwg
J2pzb25fcmVzdWx0cy5odG1sJykKLSAgICAgICAgIyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8g
aWYgdGhpcyBkb2Vzbid0IGV4aXN0IChlLmcuLCBpbiB1bml0IHRlc3RzKT8KLSAgICAgICAgaWYg
c2VsZi5fZnMuZXhpc3RzKHJlc3VsdHNfZmlsZSk6Ci0gICAgICAgICAgICBzZWxmLl9mcy5jb3B5
ZmlsZShyZXN1bHRzX2ZpbGUsIHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3Rvcnks
ICJqc29uX3Jlc3VsdHMuaHRtbCIpKQotCi0gICAgZGVmIF9zaG93X3Jlc3VsdHNfaHRtbF9maWxl
KHNlbGYpOgotICAgICAgICAiIiJTaG93cyB0aGUgcmVzdWx0cy5odG1sIHBhZ2UuIiIiCi0gICAg
ICAgIHJlc3VsdHNfZmlsZW5hbWUgPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0
b3J5LCAicmVzdWx0cy5odG1sIikKLSAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRt
bF9maWxlKHJlc3VsdHNfZmlsZW5hbWUpCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAg
cmV0dXJuICdUZXN0UnVubmVyJwotCi0gICAgZGVmIGlzX2RvbmUoc2VsZik6Ci0gICAgICAgIHdv
cmtlcl9zdGF0ZXMgPSBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpCi0gICAgICAgIHJldHVy
biB3b3JrZXJfc3RhdGVzIGFuZCBhbGwoc2VsZi5fd29ya2VyX2lzX2RvbmUod29ya2VyX3N0YXRl
KSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9zdGF0ZXMpCi0KLSAgICBkZWYgX3dvcmtlcl9p
c19kb25lKHNlbGYsIHdvcmtlcl9zdGF0ZSk6Ci0gICAgICAgIHQgPSB0aW1lLnRpbWUoKQotICAg
ICAgICBpZiB3b3JrZXJfc3RhdGUuZG9uZSBvciB3b3JrZXJfc3RhdGUud2VkZ2VkOgotICAgICAg
ICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBuZXh0X3RpbWVvdXQgPSB3b3JrZXJfc3RhdGUu
bmV4dF90aW1lb3V0Ci0gICAgICAgIFdFREdFX1BBRERJTkcgPSA0MC4wCi0gICAgICAgIGlmIG5l
eHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdFREdFX1BBRERJTkc6Ci0gICAgICAg
ICAgICBfbG9nLmVycm9yKCcnKQotICAgICAgICAgICAgd29ya2VyX3N0YXRlLndvcmtlcl9jb25u
ZWN0aW9uLmxvZ193ZWRnZWRfd29ya2VyKHdvcmtlcl9zdGF0ZS5jdXJyZW50X3Rlc3RfbmFtZSkK
LSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAgICB3b3JrZXJfc3RhdGUud2Vk
Z2VkID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICBkZWYgY2FuY2VsX3dvcmtlcnMoc2VsZik6Ci0gICAgICAgIGZvciB3b3JrZXJfc3Rh
dGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKLSAgICAgICAgICAgIHdvcmtlcl9z
dGF0ZS53b3JrZXJfY29ubmVjdGlvbi5jYW5jZWwoKQotCi0gICAgZGVmIGhhbmRsZV9zdGFydGVk
X3Rlc3Qoc2VsZiwgc291cmNlLCB0ZXN0X2luZm8sIGhhbmdfdGltZW91dCk6Ci0gICAgICAgIHdv
cmtlcl9zdGF0ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNlXQotICAgICAgICB3b3JrZXJf
c3RhdGUuY3VycmVudF90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5h
bWUodGVzdF9pbmZvLmZpbGVuYW1lKQotICAgICAgICB3b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0
ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQKLQotICAgIGRlZiBoYW5kbGVfZG9uZShzZWxm
LCBzb3VyY2UpOgotICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3Nv
dXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLmRvbmUgPSBUcnVlCi0KLSAgICBkZWYgaGFuZGxl
X2V4Y2VwdGlvbihzZWxmLCBzb3VyY2UsIGV4Y2VwdGlvbl9pbmZvKToKLSAgICAgICAgZXhjZXB0
aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgZXhjZXB0aW9uX3RyYWNlYmFjayA9IGV4Y2VwdGlv
bl9pbmZvCi0gICAgICAgIHJhaXNlIGV4Y2VwdGlvbl90eXBlLCBleGNlcHRpb25fdmFsdWUsIGV4
Y2VwdGlvbl90cmFjZWJhY2sKLQotICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfbGlzdChzZWxmLCBz
b3VyY2UsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgotICAgICAgICBzZWxm
Ll9ncm91cF9zdGF0c1tsaXN0X25hbWVdID0gKG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQotCi0g
ICAgZGVmIGhhbmRsZV9maW5pc2hlZF90ZXN0KHNlbGYsIHNvdXJjZSwgcmVzdWx0LCBlbGFwc2Vk
X3RpbWUpOgotICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJj
ZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGltZW91dCA9IE5vbmUKLSAgICAgICAgd29y
a2VyX3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lID0gTm9uZQotICAgICAgICB3b3JrZXJfc3RhdGUu
c3RhdHNbJ3RvdGFsX3RpbWUnXSArPSBlbGFwc2VkX3RpbWUKLSAgICAgICAgd29ya2VyX3N0YXRl
LnN0YXRzWydudW1fdGVzdHMnXSArPSAxCi0KLSAgICAgICAgaWYgd29ya2VyX3N0YXRlLndlZGdl
ZDoKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGlmIHdlIGhhdmUgb3VyIHRp
bWVvdXRzIHR1bmVkIHByb3Blcmx5LgotICAgICAgICAgICAgX2xvZy5lcnJvcigiJXMgdW53ZWRn
ZWQiLCBzb3VyY2UpCi0KLSAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkK
LSAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQoc2VsZi5fY3VycmVudF9y
ZXN1bHRfc3VtbWFyeSwgcmVzdWx0KQotCi0KLWRlZiByZWFkX3Rlc3RfZmlsZXMoZnMsIGZpbGVz
KToKLSAgICB0ZXN0cyA9IFtdCi0gICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmcy5yZWFkX3RleHRfZmlsZShmaWxlKS5zcGxp
dCgnXG4nKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmlsZV9jb250ZW50czoKLSAgICAgICAg
ICAgICAgICBsaW5lID0gdGVzdF9leHBlY3RhdGlvbnMuc3RyaXBfY29tbWVudHMobGluZSkKLSAg
ICAgICAgICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQo
bGluZSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5v
ID09IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCcnKQotICAg
ICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJy0tdGVzdC1saXN0IGZpbGUgIiVzIiBub3QgZm91
bmQnICUgZmlsZSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgcmV0dXJuIHRlc3RzCi0KLQotY2xh
c3MgX1dvcmtlclN0YXRlKG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgdGhlIFRlc3RSdW5u
ZXIvbWFuYWdlciB0byB1c2UgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdGUKLSAgICBvZiB0aGUg
d29ya2Vycy4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtYmVyLCB3b3JrZXJfY29ubmVj
dGlvbik6Ci0gICAgICAgIHNlbGYud29ya2VyX2Nvbm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlv
bgotICAgICAgICBzZWxmLm51bWJlciA9IG51bWJlcgotICAgICAgICBzZWxmLmRvbmUgPSBGYWxz
ZQotICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdF9uYW1lID0gTm9uZQotICAgICAgICBzZWxmLm5l
eHRfdGltZW91dCA9IE5vbmUKLSAgICAgICAgc2VsZi53ZWRnZWQgPSBGYWxzZQotICAgICAgICBz
ZWxmLnN0YXRzID0ge30KLSAgICAgICAgc2VsZi5zdGF0c1snbmFtZSddID0gd29ya2VyX2Nvbm5l
Y3Rpb24ubmFtZQotICAgICAgICBzZWxmLnN0YXRzWydudW1fdGVzdHMnXSA9IDAKLSAgICAgICAg
c2VsZi5zdGF0c1sndG90YWxfdGltZSddID0gMAotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgot
ICAgICAgICByZXR1cm4gIl9Xb3JrZXJTdGF0ZSgiICsgc3RyKHNlbGYuX19kaWN0X18pICsgIiki
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Y4NjMwLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3Vu
aXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0
aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3pl
Z2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVu
aXQgdGVzdHMgZm9yIFRlc3RSdW5uZXIoKS4iIiIKLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCi1mcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawotCi1pbXBvcnQgdGVzdF9ydW5uZXIKLQot
Ci1jbGFzcyBUZXN0UnVubmVyV3JhcHBlcih0ZXN0X3J1bm5lci5UZXN0UnVubmVyKToKLSAgICBk
ZWYgX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJl
dHVybiB0ZXN0X2ZpbGUKLQotCi1jbGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIHRlc3RfcmVzdWx0c19odG1sKHNlbGYpOgotICAgICAgICBtb2NrX3BvcnQg
PSBNb2NrKCkKLSAgICAgICAgbW9ja19wb3J0Ll9maWxlc3lzdGVtID0gZmlsZXN5c3RlbV9tb2Nr
Lk1vY2tGaWxlU3lzdGVtKCkKLSAgICAgICAgbW9ja19wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5h
bWUgPSBsYW1iZGEgbmFtZTogbmFtZQotICAgICAgICBtb2NrX3BvcnQuZmlsZW5hbWVfdG9fdXJp
ID0gbGFtYmRhIG5hbWU6IG5hbWUKLQotICAgICAgICBydW5uZXIgPSB0ZXN0X3J1bm5lci5UZXN0
UnVubmVyKHBvcnQ9bW9ja19wb3J0LCBvcHRpb25zPU1vY2soKSwKLSAgICAgICAgICAgIHByaW50
ZXI9TW9jaygpKQotICAgICAgICBleHBlY3RlZF9odG1sID0gdSIiIjxodG1sPgotICA8aGVhZD4K
LSAgICA8dGl0bGU+TGF5b3V0IFRlc3QgUmVzdWx0cyAodGltZSk8L3RpdGxlPgotICA8L2hlYWQ+
Ci0gIDxib2R5PgotICAgIDxoMj5UaXRsZSAodGltZSk8L2gyPgotICAgICAgICA8cD48YSBocmVm
PSd0ZXN0X3BhdGgnPnRlc3RfcGF0aDwvYT48YnIgLz4KLTwvcD4KLTwvYm9keT48L2h0bWw+Ci0i
IiIKLSAgICAgICAgaHRtbCA9IHJ1bm5lci5fcmVzdWx0c19odG1sKFsidGVzdF9wYXRoIl0sIHt9
LCAiVGl0bGUiLCBvdmVycmlkZV90aW1lPSJ0aW1lIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChodG1sLCBleHBlY3RlZF9odG1sKQotCi0gICAgZGVmIHRlc3Rfc2hhcmRfdGVzdHMoc2VsZik6
Ci0gICAgICAgICMgVGVzdCB0aGF0IF9zaGFyZF90ZXN0cyBpbiB0ZXN0X3J1bm5lci5UZXN0UnVu
bmVyIHJlYWxseQotICAgICAgICAjIHB1dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVl
dWUuCi0gICAgICAgIHBvcnQgPSBNb2NrKCkKLSAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IGZp
bGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgpCi0gICAgICAgIHJ1bm5lciA9IFRlc3RSdW5u
ZXJXcmFwcGVyKHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2NrKCksCi0gICAgICAgICAgICBwcmludGVy
PU1vY2soKSkKLQotICAgICAgICB0ZXN0X2xpc3QgPSBbCi0gICAgICAgICAgIkxheW91dFRlc3Rz
L3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2Fu
aW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCIsCi0gICAgICAgICAgIkxh
eW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1s
IiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1z
dHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwiLAotICAg
ICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dDAzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlw
dC8xMS4xLjVfNC00LWMtMS5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5odG1sIiwKLSAgICAgICAgXQotCi0gICAg
ICAgIGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jayA9IHNldChbCi0gICAgICAgICAgJ0xheW91
dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAgICAgJ0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sJywKLSAg
ICAgICAgICAnTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1p
Z25vcmVkLmh0bWwnLAotICAgICAgICAgICdMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJywKLSAgICAgICAgXSkKLQot
ICAgICAgICAjIEZJWE1FOiBJZGVhbGx5IHRoZSBIVFRQIHRlc3RzIGRvbid0IGhhdmUgdG8gYWxs
IGJlIGluIG9uZSBzaGFyZC4KLSAgICAgICAgc2luZ2xlX3RocmVhZF9yZXN1bHRzID0gcnVubmVy
Ll9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIEZhbHNlKQotICAgICAgICBtdWx0aV90aHJlYWRfcmVz
dWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBUcnVlKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIHNpbmdsZV90aHJlYWRfcmVzdWx0
c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190b19odHRw
X2xvY2ssIHNldChzaW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xvY2siLCBtdWx0aV90aHJlYWRfcmVzdWx0c1swXVsw
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ss
IHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDcxZmY0ZDgu
LjEwZjc3OTUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMzcsMTUgKzM3LDE0IEBAIGltcG9ydCBvcwog
aW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBq
c29uX3Jlc3VsdHNfZ2VuZXJhdG9yCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBwcmludGlu
ZwotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9ydW5uZXIKLQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCB1c2VyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgbGF5b3V0X3BhY2thZ2UKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBw
b3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQganNv
bl9yZXN1bHRzX2dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IG1hbmFnZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9w
YWNrYWdlIGltcG9ydCBwcmludGluZwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBz
aW1wbGVqc29uCiAKLWltcG9ydCBwb3J0Ci0KIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogCkBAIC04OCwzMiArODcsMzIgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdz
LCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLAogICAgICMgaW4gYSB0cnkvZmluYWxseSB0byBl
bnN1cmUgdGhhdCB3ZSBjbGVhbiB1cCB0aGUgbG9nZ2luZyBjb25maWd1cmF0aW9uLgogICAgIG51
bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSAtMQogICAgIHRyeToKLSAgICAgICAgcnVubmVyID0gdGVz
dF9ydW5uZXIuVGVzdFJ1bm5lcihwb3J0LCBvcHRpb25zLCBwcmludGVyKQotICAgICAgICBydW5u
ZXIuX3ByaW50X2NvbmZpZygpCisgICAgICAgIG1hbmFnZXIgPSBsYXlvdXRfcGFja2FnZS5tYW5h
Z2VyLk1hbmFnZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKKyAgICAgICAgbWFuYWdlci5fcHJp
bnRfY29uZmlnKCkKIAogICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiQ29sbGVjdGluZyB0
ZXN0cyAuLi4iKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBydW5uZXIuY29sbGVjdF90ZXN0
cyhhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cykKKyAgICAgICAgICAgIG1hbmFnZXIuY29s
bGVjdF90ZXN0cyhhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cykKICAgICAgICAgZXhjZXB0
IElPRXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAg
ICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgaWYg
b3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICByZXR1cm4gcnVubmVyLmxpbnQo
KQorICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIubGludCgpCiAKICAgICAgICAgcHJpbnRlci5w
cmludF91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4uLiIpCi0gICAgICAgIHJ1bm5lci5w
YXJzZV9leHBlY3RhdGlvbnMoKQorICAgICAgICBtYW5hZ2VyLnBhcnNlX2V4cGVjdGF0aW9ucygp
CiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNoZWNraW5nIGJ1aWxkIC4uLiIpCi0g
ICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2J1aWxkKHJ1bm5lci5uZWVkc19odHRwKCkpOgorICAg
ICAgICBpZiBub3QgcG9ydC5jaGVja19idWlsZChtYW5hZ2VyLm5lZWRzX2h0dHAoKSk6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCJCdWlsZCBjaGVjayBmYWlsZWQiKQogICAgICAgICAgICAgcmV0
dXJuIC0xCiAKLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBydW5uZXIuc2V0X3VwX3J1bigpCisg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gbWFuYWdlci5zZXRfdXBfcnVuKCkKICAgICAgICAgaWYg
cmVzdWx0X3N1bW1hcnk6Ci0gICAgICAgICAgICBudW1fdW5leHBlY3RlZF9yZXN1bHRzID0gcnVu
bmVyLnJ1bihyZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgICAgIHJ1bm5lci5jbGVhbl91cF9ydW4o
KQorICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9IG1hbmFnZXIucnVuKHJlc3Vs
dF9zdW1tYXJ5KQorICAgICAgICAgICAgbWFuYWdlci5jbGVhbl91cF9ydW4oKQogICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygiVGVzdGluZyBjb21wbGV0ZWQsIEV4aXQgc3RhdHVzOiAlZCIgJQogICAg
ICAgICAgICAgICAgICAgICAgICBudW1fdW5leHBlY3RlZF9yZXN1bHRzKQogICAgIGZpbmFsbHk6
CkBAIC0xNDksOSArMTQ4LDkgQEAgZGVmIF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBvcnRfb2Jq
LCBvcHRpb25zKToKIAogICAgIGlmIG5vdCBvcHRpb25zLnRpbWVfb3V0X21zOgogICAgICAgICBp
ZiBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPT0gIkRlYnVnIjoKLSAgICAgICAgICAgIG9wdGlvbnMu
dGltZV9vdXRfbXMgPSBzdHIoMiAqIHRlc3RfcnVubmVyLlRlc3RSdW5uZXIuREVGQVVMVF9URVNU
X1RJTUVPVVRfTVMpCisgICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKDIgKiBt
YW5hZ2VyLk1hbmFnZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKHRlc3RfcnVubmVyLlRlc3RSdW5u
ZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCisgICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0
X21zID0gc3RyKG1hbmFnZXIuTWFuYWdlci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykKIAogICAg
IG9wdGlvbnMuc2xvd190aW1lX291dF9tcyA9IHN0cig1ICogaW50KG9wdGlvbnMudGltZV9vdXRf
bXMpKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90656</attachid>
            <date>2011-04-21 20:13:37 -0700</date>
            <delta_ts>2011-04-21 20:19:53 -0700</delta_ts>
            <desc>rebase to HEAD</desc>
            <filename>bug-58754-20110421201336.patch</filename>
            <type>text/plain</type>
            <size>69089</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ1OTIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3N2I0YTBhZWM3MWMyNGU0MGNlMDk0NDhhMDRhYzQ0NjA2
NzY4YzhjLi5iMjAxZGZlNTQ3ZDlkMDg5NjM4ZjBjNGM4NjE0YTdhYjk2NzY2OWQ5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTEtMDQtMTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IG9ic29sZXRlIG9sZCBjb2RlLCBwYXJ0IDMgLSByZW5hbWUgdGVzdF9ydW5uZXIg
dG8gbWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTg3NTQKKworICAgICAgICB0ZXN0X3J1bm5lciBoYXNuJ3QgYmVlbiBhIGdyZWF0IG5hbWUg
Zm9yIHNvbWUgdGltZSwgc2luY2UgYWxsIG9mCisgICAgICAgIHRoZSB0ZXN0IHJ1bm5pbmcgaXMg
YWN0dWFsbHkgZG9uZSBpbiB3b3JrZXIgYW5kCisgICAgICAgIHNpbmdsZV90ZXN0X3J1bm5lci4g
UmVuYW1lIHRvIG1hbmFnZXIgdG8gbWF0Y2ggdGhlIHRlcm1pbm9sb2d5CisgICAgICAgIGVsc2V3
aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL21hbmFnZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50
aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0
ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTEtMDQtMjEgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKaW5kZXggOGY2M2VkZDg5NDE4
MjU2NmI3OTcxMmQxNmIzODYzYjY1ZWE1ZmY5MC4uMDQwZjgyMjIwOTk4NzgwY2FiNDkxNGM3NTgy
MDBmNTk0ODRhZjViNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRl
c3QucHkKQEAgLTQyLDcgKzQyLDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHJlc3VsdF9zdW1tYXJ5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCi1m
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9ydW5u
ZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtYW5h
Z2VyCiAKIAogZGVmIGdldF9vcHRpb25zKGFyZ3MpOgpAQCAtNTEzLDcgKzUxMyw3IEBAIGNsYXNz
ICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV0cnku
YWRkKHNlbGYuZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcpLCBUcnVlKQogICAgICAgICAg
ICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVv
dXQuaHRtbCcpLCBUcnVlKQogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1
bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwgVHJ1ZSkKLSAgICAgICAgICAgIHVu
ZXhwZWN0ZWRfcmVzdWx0cyA9IHRlc3RfcnVubmVyLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3Bv
cnQsIGV4cCwgcnMsIHJldHJ5LCB0ZXN0X3RpbWluZ3M9e30sIG9ubHlfdW5leHBlY3RlZD1UcnVl
KQorICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gbWFuYWdlci5zdW1tYXJpemVfcmVz
dWx0cyhzZWxmLl9wb3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90aW1pbmdzPXt9LCBvbmx5X3Vu
ZXhwZWN0ZWQ9VHJ1ZSkKICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHMKIAog
ICAgICAgICB0ZXN0cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90
aW1lb3V0Lmh0bWwnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTI2ZGI2MDU1MTU2MmUwMjljNzVlMjljYTg4YWQ1YzdiMWE1
NmE2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5l
ci5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzMjEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3pl
Z2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIgot
VGhlIFRlc3RSdW5uZXIgY2xhc3MgcnVucyBhIHNlcmllcyBvZiB0ZXN0cyAoVGVzdFR5cGUgaW50
ZXJmYWNlKSBhZ2FpbnN0IGEgc2V0Ci1vZiB0ZXN0IGZpbGVzLiAgSWYgYSB0ZXN0IGZpbGUgZmFp
bHMgYSBUZXN0VHlwZSwgaXQgcmV0dXJucyBhIGxpc3QgVGVzdEZhaWx1cmUKLW9iamVjdHMgdG8g
dGhlIFRlc3RSdW5uZXIuICBUaGUgVGVzdFJ1bm5lciB0aGVuIGFnZ3JlZ2F0ZXMgdGhlIFRlc3RG
YWlsdXJlcyB0bwotY3JlYXRlIGEgZmluYWwgcmVwb3J0LgotIiIiCi0KLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvcHkKLWltcG9ydCBlcnJubwotaW1w
b3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCi1pbXBvcnQgUXVldWUKLWltcG9ydCByYW5kb20KLWlt
cG9ydCBzeXMKLWltcG9ydCB0aW1lCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5l
cmF0b3IKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBt
YW5hZ2VyX3dvcmtlcl9icm9rZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9w
YWNrYWdlIGltcG9ydCBwcmludGluZwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwotZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxv
YWRlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHdv
cmtlcgotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS5yZXN1bHRf
c3VtbWFyeSBpbXBvcnQgUmVzdWx0U3VtbWFyeQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0Ci0KLWZyb20gd2Via2l0
cHkudGhpcmRwYXJ0eSBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSB3ZWJraXRweS50b29sIGltcG9y
dCBncmFtbWFyCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotIyBCdWls
ZGVyIGJhc2UgVVJMIHdoZXJlIHdlIGhhdmUgdGhlIGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4KLUJV
SUxERVJfQkFTRV9VUkwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJvdC9sYXlv
dXRfdGVzdF9yZXN1bHRzLyIKLQotVGVzdEV4cGVjdGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVjdGF0
aW9ucy5UZXN0RXhwZWN0YXRpb25zRmlsZQotCi0KLWRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0
X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzdF90
aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQpOgotICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBlY3Rl
ZCByZXN1bHRzIGFzIGEgZGljdC4KLQotICAgIEZJWE1FOiBzcGxpdCB0aGlzIGRhdGEgc3RydWN0
dXJlIGludG8gYSBzZXBhcmF0ZSBjbGFzcz8KLQotICAgIEFyZ3M6Ci0gICAgICAgIHBvcnRfb2Jq
OiBpbnRlcmZhY2UgdG8gcG9ydC1zcGVjaWZpYyBob29rcwotICAgICAgICBleHBlY3RhdGlvbnM6
IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMgb2JqZWN0Ci0gICAgICAgIHJlc3Vs
dF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCi0gICAgICAg
IHJldHJ5X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gZmluYWwgdGVzdCBydW4gb2YgcmV0
cmllZCB0ZXN0cwotICAgICAgICB0ZXN0X3RpbWluZ3M6IGEgbGlzdCBvZiBUZXN0UmVzdWx0IG9i
amVjdHMgd2hpY2ggY29udGFpbiB0ZXN0IHJ1bnRpbWVzIGluIHNlY29uZHMKLSAgICAgICAgb25s
eV91bmV4cGVjdGVkOiB3aGV0aGVyIHRvIHJldHVybiBhIHN1bW1hcnkgb25seSBmb3IgdGhlIHVu
ZXhwZWN0ZWQgcmVzdWx0cwotICAgIFJldHVybnM6Ci0gICAgICAgIEEgZGljdGlvbmFyeSBjb250
YWluaW5nIGEgc3VtbWFyeSBvZiB0aGUgdW5leHBlY3RlZCByZXN1bHRzIGZyb20gdGhlCi0gICAg
ICAgIHJ1biwgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKLSAgICAgICAgJ3ZlcnNpb24nOiBh
IHZlcnNpb24gaW5kaWNhdG9yICgxIGluIHRoaXMgdmVyc2lvbikKLSAgICAgICAgJ2ZpeGFibGUn
OiAjIG9mIGZpeGFibGUgdGVzdHMgKE5PVyAtIFBBU1MpCi0gICAgICAgICdza2lwcGVkJzogIyBv
ZiBza2lwcGVkIHRlc3RzIChOT1cgJiBTS0lQUEVEKQotICAgICAgICAnbnVtX3JlZ3Jlc3Npb25z
JzogIyBvZiBub24tZmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9mbGFreSc6ICMgb2YgZmxh
a3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9wYXNzZXMnOiAjIG9mIHVuZXhwZWN0ZWQgcGFzc2Vz
Ci0gICAgICAgICd0ZXN0cyc6IGEgZGljdCBvZiB0ZXN0cyAtPiB7J2V4cGVjdGVkJzogJy4uLics
ICdhY3R1YWwnOiAnLi4uJywgJ3RpbWVfbXMnOiAuLi59Ci0gICAgIiIiCi0gICAgcmVzdWx0cyA9
IHt9Ci0gICAgcmVzdWx0c1sndmVyc2lvbiddID0gMQotCi0gICAgdGVzdF90aW1pbmdzX21hcCA9
IGRpY3QoKHRlc3RfcmVzdWx0LmZpbGVuYW1lLCB0ZXN0X3Jlc3VsdC50ZXN0X3J1bl90aW1lKSBm
b3IgdGVzdF9yZXN1bHQgaW4gdGVzdF90aW1pbmdzKQotCi0gICAgdGJlID0gcmVzdWx0X3N1bW1h
cnkudGVzdHNfYnlfZXhwZWN0YXRpb24KLSAgICB0YnQgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19i
eV90aW1lbGluZQotICAgIHJlc3VsdHNbJ2ZpeGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3Rh
dGlvbnMuTk9XXSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiZVt0ZXN0X2V4
cGVjdGF0aW9ucy5QQVNTXSkKLSAgICByZXN1bHRzWydza2lwcGVkJ10gPSBsZW4odGJ0W3Rlc3Rf
ZXhwZWN0YXRpb25zLk5PV10gJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmVb
dGVzdF9leHBlY3RhdGlvbnMuU0tJUF0pCi0KLSAgICBudW1fcGFzc2VzID0gMAotICAgIG51bV9m
bGFreSA9IDAKLSAgICBudW1fcmVncmVzc2lvbnMgPSAwCi0gICAga2V5d29yZHMgPSB7fQotICAg
IGZvciBleHBlY2F0aW9uX3N0cmluZywgZXhwZWN0YXRpb25fZW51bSBpbiBUZXN0RXhwZWN0YXRp
b25zRmlsZS5FWFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW2V4cGVj
dGF0aW9uX2VudW1dID0gZXhwZWNhdGlvbl9zdHJpbmcudXBwZXIoKQotCi0gICAgZm9yIG1vZGlm
aWVyX3N0cmluZywgbW9kaWZpZXJfZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklF
UlMuaXRlcml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW21vZGlmaWVyX2VudW1dID0gbW9kaWZp
ZXJfc3RyaW5nLnVwcGVyKCkKLQotICAgIHRlc3RzID0ge30KLSAgICBvcmlnaW5hbF9yZXN1bHRz
ID0gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzIGlmIG9ubHlfdW5leHBlY3RlZCBl
bHNlIHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHMKLQotICAgIGZvciBmaWxlbmFtZSwgcmVzdWx0IGlu
IG9yaWdpbmFsX3Jlc3VsdHMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICMgTm90ZSB0aGF0IGlmIGEg
dGVzdCBjcmFzaGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdlIGlnbm9yZQotICAgICAgICAjIHdo
ZXRoZXIgb3Igbm90IGl0IGNyYXNoZWQgd2hlbiB3ZSByZXRyaWVkIGl0IChpZiB3ZSByZXRyaWVk
IGl0KSwKLSAgICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVyIHRoZSByZXN1bHQgbm90IGZsYWt5
LgotICAgICAgICB0ZXN0ID0gcG9ydF9vYmoucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFt
ZSkKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJp
bmcoZmlsZW5hbWUpCi0gICAgICAgIHJlc3VsdF90eXBlID0gcmVzdWx0LnR5cGUKLSAgICAgICAg
YWN0dWFsID0gW2tleXdvcmRzW3Jlc3VsdF90eXBlXV0KLQotICAgICAgICBpZiByZXN1bHRfdHlw
ZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTOgotICAgICAgICAgICAgbnVtX3Bhc3NlcyArPSAx
Ci0gICAgICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6Ci0g
ICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQotICAgICAgICBlbGlmIGZpbGVuYW1lIGlu
IHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAgICAgIGlmIGZpbGVu
YW1lIG5vdCBpbiByZXRyeV9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAgICAg
ICAgICBhY3R1YWwuZXh0ZW5kKGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZyhm
aWxlbmFtZSkuc3BsaXQoIiAiKSkKLSAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRfdHlwZSA9IHJldHJ5
X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCi0gICAgICAgICAgICAg
ICAgaWYgcmVzdWx0X3R5cGUgIT0gcmV0cnlfcmVzdWx0X3R5cGU6Ci0gICAgICAgICAgICAgICAg
ICAgIGFjdHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0X3R5cGVdKQotICAgICAgICAg
ICAgICAgICAgICBudW1fZmxha3kgKz0gMQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgIG51bV9yZWdyZXNzaW9ucyArPSAxCi0KLSAgICAgICAgdGVzdHNbdGVzdF0g
PSB7fQotICAgICAgICB0ZXN0c1t0ZXN0XVsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCi0gICAgICAg
IHRlc3RzW3Rlc3RdWydhY3R1YWwnXSA9ICIgIi5qb2luKGFjdHVhbCkKLSAgICAgICAgIyBGSVhN
RTogU2V0IHRoaXMgY29ycmVjdGx5IG9uY2UgaHR0cHM6Ly93ZWJraXQub3JnL2IvMzc3MzkgaXMg
Zml4ZWQKLSAgICAgICAgIyBhbmQgb25seSBzZXQgaXQgaWYgdGhlcmUgYWN0dWFsbHkgaXMgc3Rk
ZXJyIGRhdGEuCi0gICAgICAgIHRlc3RzW3Rlc3RdWydoYXNfc3RkZXJyJ10gPSBGYWxzZQotCi0g
ICAgICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlwZShmKSBmb3IgZiBpbiByZXN1bHQuZmFpbHVyZXNd
Ci0gICAgICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdBdWRpbyBpbiBmYWlsdXJl
X3R5cGVzOgotICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2lzX21pc3NpbmdfYXVkaW8nXSA9IFRy
dWUKLQotICAgICAgICBpZiB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2ggaW4g
ZmFpbHVyZV90eXBlczoKLSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19yZWZ0ZXN0J10gPSBU
cnVlCi0KLSAgICAgICAgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzOgotICAgICAgICAgICAgaWYg
J2lzX3JlZnRlc3QnIGluIHJlc3VsdC5mYWlsdXJlczoKLSAgICAgICAgICAgICAgICB0ZXN0c1t0
ZXN0XVsnaXNfcmVmdGVzdCddID0gVHJ1ZQotCi0gICAgICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFp
bHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXM6Ci0gICAgICAg
ICAgICB0ZXN0c1t0ZXN0XVsnaXNfbWlzbWF0Y2hfcmVmdGVzdCddID0gVHJ1ZQotCi0gICAgICAg
IGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQgaW4gZmFpbHVyZV90eXBlczoK
LSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19taXNzaW5nX3RleHQnXSA9IFRydWUKLQotICAg
ICAgICBpZiB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2UgaW4gZmFpbHVyZV90eXBl
cyBvciB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlw
ZXM6Ci0gICAgICAgICAgICB0ZXN0c1t0ZXN0XVsnaXNfbWlzc2luZ19pbWFnZSddID0gVHJ1ZQot
Ci0gICAgICAgIGlmIGZpbGVuYW1lIGluIHRlc3RfdGltaW5nc19tYXA6Ci0gICAgICAgICAgICB0
aW1lX3NlY29uZHMgPSB0ZXN0X3RpbWluZ3NfbWFwW2ZpbGVuYW1lXQotICAgICAgICAgICAgdGVz
dHNbdGVzdF1bJ3RpbWVfbXMnXSA9IGludCgxMDAwICogdGltZV9zZWNvbmRzKQotCi0gICAgcmVz
dWx0c1sndGVzdHMnXSA9IHRlc3RzCi0gICAgcmVzdWx0c1snbnVtX3Bhc3NlcyddID0gbnVtX3Bh
c3NlcwotICAgIHJlc3VsdHNbJ251bV9mbGFreSddID0gbnVtX2ZsYWt5Ci0gICAgcmVzdWx0c1sn
bnVtX3JlZ3Jlc3Npb25zJ10gPSBudW1fcmVncmVzc2lvbnMKLSAgICAjIEZJWE1FOiBJZiBub24t
Y2hyb21pdW0gcG9ydHMgc3RhcnQgdXNpbmcgYW4gZXhwZWN0YXRpb25zIGZpbGUsCi0gICAgIyB3
ZSBzaG91bGQgbWFrZSB0aGlzIGNoZWNrIG1vcmUgcm9idXN0LgotICAgIHJlc3VsdHNbJ3VzZXNf
ZXhwZWN0YXRpb25zX2ZpbGUnXSA9IHBvcnRfb2JqLm5hbWUoKS5maW5kKCdjaHJvbWl1bScpICE9
IC0xCi0gICAgcmVzdWx0c1snbGF5b3V0X3Rlc3RzX2RpciddID0gcG9ydF9vYmoubGF5b3V0X3Rl
c3RzX2RpcigpCi0gICAgcmVzdWx0c1snaGFzX3dkaWZmJ10gPSBwb3J0X29iai53ZGlmZl9hdmFp
bGFibGUoKQotICAgIHJlc3VsdHNbJ2hhc19wcmV0dHlfcGF0Y2gnXSA9IHBvcnRfb2JqLnByZXR0
eV9wYXRjaF9hdmFpbGFibGUoKQotCi0gICAgcmV0dXJuIHJlc3VsdHMKLQotCi1jbGFzcyBUZXN0
UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hlbiBh
IHRlc3QgcnVuIHNob3VsZCBiZSBzdG9wcGVkIGltbWVkaWF0ZWx5LiIiIgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZWFzb24pOgotICAgICAgICBzZWxmLnJlYXNvbiA9IHJlYXNvbgotCi0gICAg
ZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHNl
bGYucmVhc29uLCkKLQotCi1jbGFzcyBUZXN0UnVubmVyOgotICAgICIiIkEgY2xhc3MgZm9yIG1h
bmFnaW5nIHJ1bm5pbmcgYSBzZXJpZXMgb2YgdGVzdHMgb24gYSBzZXJpZXMgb2YgbGF5b3V0Ci0g
ICAgdGVzdCBmaWxlcy4iIiIKLQotCi0gICAgIyBUaGUgcGVyLXRlc3QgdGltZW91dCBpbiBtaWxs
aXNlY29uZHMsIGlmIG5vIC0tdGltZS1vdXQtbXMgb3B0aW9uIHdhcwotICAgICMgZ2l2ZW4gdG8g
cnVuX3dlYmtpdF90ZXN0cy4gVGhpcyBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgZGVmYXVsdCB0
aW1lb3V0Ci0gICAgIyBpbiBEdW1wUmVuZGVyVHJlZS4KLSAgICBERUZBVUxUX1RFU1RfVElNRU9V
VF9NUyA9IDYgKiAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywg
cHJpbnRlcik6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1Y3R1
cmVzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcG9ydDogYW4gb2JqZWN0IGltcGxlbWVu
dGluZyBwb3J0LXNwZWNpZmljCi0gICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNv
bW1hbmQgbGluZSBvcHRpb25zCi0gICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVjdCB0
byByZWNvcmQgdXBkYXRlcyB0by4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3BvcnQgPSBw
b3J0Ci0gICAgICAgIHNlbGYuX2ZzID0gcG9ydC5fZmlsZXN5c3RlbQotICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgotICAgICAg
ICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKLQotICAgICAgICBzZWxmLkhUVFBfU1VCRElS
ID0gc2VsZi5fZnMuam9pbignJywgJ2h0dHAnLCAnJykKLSAgICAgICAgc2VsZi5XRUJTT0NLRVRf
U1VCRElSID0gc2VsZi5fZnMuam9pbignJywgJ3dlYnNvY2tldCcsICcnKQotICAgICAgICBzZWxm
LkxBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAiTGF5b3V0VGVzdHMiICsgc2VsZi5fZnMuc2VwCi0K
LQotICAgICAgICAjIGRpc2FibGUgd3NzIHNlcnZlci4gbmVlZCB0byBpbnN0YWxsIHB5T3BlblNT
TCBvbiBidWlsZGJvdHMuCi0gICAgICAgICMgc2VsZi5fd2Vic29ja2V0X3NlY3VyZV9zZXJ2ZXIg
PSB3ZWJzb2NrZXRfc2VydmVyLlB5V2ViU29ja2V0KAotICAgICAgICAjICAgICAgICBvcHRpb25z
LnJlc3VsdHNfZGlyZWN0b3J5LCB1c2VfdGxzPVRydWUsIHBvcnQ9OTMyMykKLQotICAgICAgICAj
IGEgc2V0IG9mIHRlc3QgZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBhcyBhIGxpc3QKLSAgICAg
ICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldCgpCi0gICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlz
dCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAg
ICAgICBzZWxmLl9yZXRyeWluZyA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0
b3J5ID0gc2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpCi0KLSAgICAgICAgc2VsZi5fYWxs
X3Jlc3VsdHMgPSBbXQotICAgICAgICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9Ci0gICAgICAgIHNl
bGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSBOb25lCi0KLSAgICAgICAgIyBUaGlzIG1hcHMg
d29ya2VyIG5hbWVzIHRvIHRoZSBzdGF0ZSB3ZSBhcmUgdHJhY2tpbmcgZm9yIGVhY2ggb2YgdGhl
bS4KLSAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlcyA9IHt9Ci0KLQotICAgIGRlZiBjb2xsZWN0
X3Rlc3RzKHNlbGYsIGFyZ3MsIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKToKLSAgICAgICAgIiIi
RmluZCBhbGwgdGhlIGZpbGVzIHRvIHRlc3QuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBh
cmdzOiBsaXN0IG9mIHRlc3QgYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZQotICAgICAg
ICAgIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzOiBsaXN0IG9mIHVuZXhwZWN0ZWQgcmVzdWx0cyB0
byByZXRlc3QsIGlmIGFueQotCi0gICAgICAgICIiIgotICAgICAgICBwYXRocyA9IHNlbGYuX3N0
cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKGFyZ3MpCi0gICAgICAgIHBhdGhzICs9IGxhc3RfdW5leHBl
Y3RlZF9yZXN1bHRzCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVzdF9saXN0OgotICAgICAg
ICAgICAgcGF0aHMgKz0gc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMocmVhZF90ZXN0X2Zp
bGVzKHNlbGYuX2ZzLCBzZWxmLl9vcHRpb25zLnRlc3RfbGlzdCkpCi0gICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXMgPSBzZWxmLl9wb3J0LnRlc3RzKHBhdGhzKQotCi0gICAgZGVmIF9zdHJpcF90ZXN0
X2Rpcl9wcmVmaXhlcyhzZWxmLCBwYXRocyk6Ci0gICAgICAgIHJldHVybiBbc2VsZi5fc3RyaXBf
dGVzdF9kaXJfcHJlZml4KHBhdGgpIGZvciBwYXRoIGluIHBhdGhzIGlmIHBhdGhdCi0KLSAgICBk
ZWYgX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgcGF0aC5z
dGFydHN3aXRoKHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6Ci0gICAgICAgICAgICByZXR1
cm4gcGF0aFtsZW4oc2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZKTpdCi0gICAgICAgIHJldHVy
biBwYXRoCi0KLSAgICBkZWYgbGludChzZWxmKToKLSAgICAgICAgbGludF9mYWlsZWQgPSBGYWxz
ZQotICAgICAgICBmb3IgdGVzdF9jb25maWd1cmF0aW9uIGluIHNlbGYuX3BvcnQuYWxsX3Rlc3Rf
Y29uZmlndXJhdGlvbnMoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxm
LmxpbnRfZXhwZWN0YXRpb25zKHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGV4Y2Vw
dCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgotICAgICAgICAgICAgICAgIGxpbnRfZmFp
bGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCi0KLSAg
ICAgICAgaWYgbGludF9mYWlsZWQ6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGZhaWxl
ZC4iKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgX2xvZy5pbmZvKCJMaW50IHN1
Y2NlZWRlZC4iKQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIGxpbnRfZXhwZWN0YXRpb25z
KHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgIHBvcnQgPSBzZWxmLl9wb3J0Ci0gICAgICAgIHRlc3Rf
ZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAgICBwb3J0LAotICAgICAg
ICAgICAgTm9uZSwKLSAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwKLSAgICAg
ICAgICAgIGNvbmZpZywKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVz
LAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKLQotICAg
IGRlZiBwYXJzZV9leHBlY3RhdGlvbnMoc2VsZik6Ci0gICAgICAgICIiIlBhcnNlIHRoZSBleHBl
Y3RhdGlvbnMgZnJvbSB0aGUgdGVzdF9saXN0IGZpbGVzIGFuZCByZXR1cm4gYSBkYXRhCi0gICAg
ICAgIHN0cnVjdHVyZSBob2xkaW5nIHRoZW0uIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGVzdF9s
aXN0IGZpbGVzIGhhdmUKLSAgICAgICAgaW52YWxpZCBzeW50YXguIiIiCi0gICAgICAgIHBvcnQg
PSBzZWxmLl9wb3J0Ci0gICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRp
b25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAgICBwb3J0LAotICAgICAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlcywKLSAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwKLSAg
ICAgICAgICAgIHBvcnQudGVzdF9jb25maWd1cmF0aW9uKCksCi0gICAgICAgICAgICBzZWxmLl9v
cHRpb25zLmxpbnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlv
bnNfb3ZlcnJpZGVzKCkpCi0KLSAgICAjIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyB3YXkgdG9vIGxv
bmcgYW5kIG5lZWRzIHRvIGJlIGJyb2tlbiBpbnRvIHBpZWNlcy4KLSAgICBkZWYgcHJlcGFyZV9s
aXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYpOgotICAgICAgICAiIiJDcmVhdGUgYXBwcm9wcmlh
dGUgc3Vic2V0cyBvZiB0ZXN0IGxpc3RzIGFuZCByZXR1cm5zIGEKLSAgICAgICAgUmVzdWx0U3Vt
bWFyeSBvYmplY3QuIEFsc28gcHJpbnRzIGV4cGVjdGVkIHRlc3QgY291bnRzLgotICAgICAgICAi
IiIKLQotICAgICAgICAjIFJlbW92ZSBza2lwcGVkIC0gYm90aCBmaXhhYmxlIGFuZCBpZ25vcmVk
IC0gZmlsZXMgZnJvbSB0aGUKLSAgICAgICAgIyB0b3AtbGV2ZWwgbGlzdCBvZiBmaWxlcyB0byB0
ZXN0LgotICAgICAgICBudW1fYWxsX3Rlc3RfZmlsZXMgPSBsZW4oc2VsZi5fdGVzdF9maWxlcykK
LSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgiRm91bmQ6ICAlZCB0ZXN0cyIg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fdGVzdF9m
aWxlcykpKQotICAgICAgICBpZiBub3QgbnVtX2FsbF90ZXN0X2ZpbGVzOgotICAgICAgICAgICAg
X2xvZy5jcml0aWNhbCgnTm8gdGVzdHMgdG8gcnVuLicpCi0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCi0gICAgICAgIHNraXBwZWQgPSBzZXQoKQotICAgICAgICBpZiBudW1fYWxsX3Rlc3RfZmls
ZXMgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5mb3JjZToKLSAgICAgICAgICAgIHNraXBwZWQg
PSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQKQotICAgICAgICAgICAg
c2VsZi5fdGVzdF9maWxlcyAtPSBza2lwcGVkCi0KLSAgICAgICAgIyBDcmVhdGUgYSBzb3J0ZWQg
bGlzdCBvZiB0ZXN0IGZpbGVzIHNvIHRoZSBzdWJzZXQgY2h1bmssCi0gICAgICAgICMgaWYgdXNl
ZCwgY29udGFpbnMgYWxwaGFiZXRpY2FsbHkgY29uc2VjdXRpdmUgdGVzdHMuCi0gICAgICAgIHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGxpc3Qoc2VsZi5fdGVzdF9maWxlcykKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5yYW5kb21pemVfb3JkZXI6Ci0gICAgICAgICAgICByYW5kb20uc2h1ZmZs
ZShzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxm
Ll90ZXN0X2ZpbGVzX2xpc3Quc29ydCgpCi0KLSAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZp
ZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0ZXN0cywKLSAgICAgICAg
IyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRlc3RzLgotICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxmLl9vcHRpb25zLnJ1bl9wYXJ0OgotICAg
ICAgICAgICAgY2h1bmtfdmFsdWUgPSBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxmLl9v
cHRpb25zLnJ1bl9wYXJ0Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxl
c19saXN0Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgKGNodW5rX251bSwgY2h1
bmtfbGVuKSA9IGNodW5rX3ZhbHVlLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICBjaHVua19u
dW0gPSBpbnQoY2h1bmtfbnVtKQotICAgICAgICAgICAgICAgIGFzc2VydChjaHVua19udW0gPj0g
MCkKLSAgICAgICAgICAgICAgICB0ZXN0X3NpemUgPSBpbnQoY2h1bmtfbGVuKQotICAgICAgICAg
ICAgICAgIGFzc2VydCh0ZXN0X3NpemUgPiAwKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAg
ICAgICAgICAgIF9sb2cuY3JpdGljYWwoImludmFsaWQgY2h1bmsgJyVzJyIgJSBjaHVua192YWx1
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAjIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzCi0gICAgICAgICAgICBudW1fdGVzdHMgPSBsZW4odGVzdF9maWxlcykK
LQotICAgICAgICAgICAgIyBHZXQgdGhlIHN0YXJ0IG9mZnNldCBvZiB0aGUgc2xpY2UuCi0gICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuazoKLSAgICAgICAgICAgICAgICBjaHVu
a19sZW4gPSB0ZXN0X3NpemUKLSAgICAgICAgICAgICAgICAjIEluIHRoaXMgY2FzZSBjaHVua19u
dW0gY2FuIGJlIHJlYWxseSBsYXJnZS4gV2UgbmVlZAotICAgICAgICAgICAgICAgICMgdG8gbWFr
ZSB0aGUgc2xhdmUgZml0IGluIHRoZSBjdXJyZW50IG51bWJlciBvZiB0ZXN0cy4KLSAgICAgICAg
ICAgICAgICBzbGljZV9zdGFydCA9IChjaHVua19udW0gKiBjaHVua19sZW4pICUgbnVtX3Rlc3Rz
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgVmFsaWRhdGUgdGhlIGRhdGEu
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rfc2l6ZSA8PSBudW1fdGVzdHMpCi0gICAgICAg
ICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA8PSB0ZXN0X3NpemUpCi0KLSAgICAgICAgICAgICAg
ICAjIFRvIGNvdW50IHRoZSBjaHVua19sZW4sIGFuZCBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2tpcAot
ICAgICAgICAgICAgICAgICMgc29tZSB0ZXN0cywgd2Ugcm91bmQgdG8gdGhlIG5leHQgdmFsdWUg
dGhhdCBmaXRzIGV4YWN0bHkKLSAgICAgICAgICAgICAgICAjIGFsbCB0aGUgcGFydHMuCi0gICAg
ICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IG51bV90ZXN0cwotICAgICAgICAgICAgICAgIGlm
IHJvdW5kZWRfdGVzdHMgJSB0ZXN0X3NpemUgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcm91
bmRlZF90ZXN0cyA9IChudW1fdGVzdHMgKyB0ZXN0X3NpemUgLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChudW1fdGVzdHMgJSB0ZXN0X3NpemUpKQotCi0gICAgICAgICAg
ICAgICAgY2h1bmtfbGVuID0gcm91bmRlZF90ZXN0cyAvIHRlc3Rfc2l6ZQotICAgICAgICAgICAg
ICAgIHNsaWNlX3N0YXJ0ID0gY2h1bmtfbGVuICogKGNodW5rX251bSAtIDEpCi0gICAgICAgICAg
ICAgICAgIyBJdCBkb2VzIG5vdCBtaW5kIGlmIHdlIGdvIG92ZXIgdGVzdF9zaXplLgotCi0gICAg
ICAgICAgICAjIEdldCB0aGUgZW5kIG9mZnNldCBvZiB0aGUgc2xpY2UuCi0gICAgICAgICAgICBz
bGljZV9lbmQgPSBtaW4obnVtX3Rlc3RzLCBzbGljZV9zdGFydCArIGNodW5rX2xlbikKLQotICAg
ICAgICAgICAgZmlsZXMgPSB0ZXN0X2ZpbGVzW3NsaWNlX3N0YXJ0OnNsaWNlX2VuZF0KLQotICAg
ICAgICAgICAgdGVzdHNfcnVuX21zZyA9ICdSdW5uaW5nOiAlZCB0ZXN0cyAoY2h1bmsgc2xpY2Ug
WyVkOiVkXSBvZiAlZCknICUgKAotICAgICAgICAgICAgICAgIChzbGljZV9lbmQgLSBzbGljZV9z
dGFydCksIHNsaWNlX3N0YXJ0LCBzbGljZV9lbmQsIG51bV90ZXN0cykKLSAgICAgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQodGVzdHNfcnVuX21zZykKLQotICAgICAgICAgICAg
IyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgYW5kIHdlIGRvbid0IGhhdmUgZW5vdWdoIHRlc3RzLCB3
ZSBydW4gc29tZQotICAgICAgICAgICAgIyBmcm9tIHRoZSBiZWdpbm5pbmcuCi0gICAgICAgICAg
ICBpZiBzbGljZV9lbmQgLSBzbGljZV9zdGFydCA8IGNodW5rX2xlbjoKLSAgICAgICAgICAgICAg
ICBleHRyYSA9IGNodW5rX2xlbiAtIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCkKLSAgICAgICAg
ICAgICAgICBleHRyYV9tc2cgPSAoJyAgIGxhc3QgY2h1bmsgaXMgcGFydGlhbCwgYXBwZW5kaW5n
IFswOiVkXScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhKQotICAgICAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoZXh0cmFfbXNnKQotICAgICAgICAg
ICAgICAgIHRlc3RzX3J1bl9tc2cgKz0gIlxuIiArIGV4dHJhX21zZwotICAgICAgICAgICAgICAg
IGZpbGVzLmV4dGVuZCh0ZXN0X2ZpbGVzWzA6ZXh0cmFdKQotICAgICAgICAgICAgdGVzdHNfcnVu
X2ZpbGVuYW1lID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInRlc3Rz
X3J1bi50eHQiKQotICAgICAgICAgICAgc2VsZi5fZnMud3JpdGVfdGV4dF9maWxlKHRlc3RzX3J1
bl9maWxlbmFtZSwgdGVzdHNfcnVuX21zZykKLQotICAgICAgICAgICAgbGVuX3NraXBfY2h1bmsg
PSBpbnQobGVuKGZpbGVzKSAqIGxlbihza2lwcGVkKSAvCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdChsZW4oc2VsZi5fdGVzdF9maWxlcykpKQotICAgICAgICAgICAgc2tp
cF9jaHVua19saXN0ID0gbGlzdChza2lwcGVkKVswOmxlbl9za2lwX2NodW5rXQotICAgICAgICAg
ICAgc2tpcF9jaHVuayA9IHNldChza2lwX2NodW5rX2xpc3QpCi0KLSAgICAgICAgICAgICMgVXBk
YXRlIGV4cGVjdGF0aW9ucyBzbyB0aGF0IHRoZSBzdGF0cyBhcmUgY2FsY3VsYXRlZCBjb3JyZWN0
bHkuCi0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcGFzcyBhIGxpc3QgdGhhdCBpbmNsdWRlcyB0
aGUgcmlnaHQgIyBvZiBza2lwcGVkIGZpbGVzCi0gICAgICAgICAgICAjIHRvIFBhcnNlRXhwZWN0
YXRpb25zIHNvIHRoYXQgUmVzdWx0U3VtbWFyeSgpIHdpbGwgZ2V0IHRoZSBjb3JyZWN0Ci0gICAg
ICAgICAgICAjIHN0YXRzLiBTbywgd2UgYWRkIGluIHRoZSBzdWJzZXQgb2Ygc2tpcHBlZCBmaWxl
cywgYW5kIHRoZW4KLSAgICAgICAgICAgICMgc3VidHJhY3QgdGhlbSBiYWNrIG91dC4KLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzICsgc2tpcF9jaHVua19saXN0Ci0g
ICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkK
LQotICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMoKQotCi0gICAgICAgICAgICBz
ZWxmLl90ZXN0X2ZpbGVzID0gc2V0KGZpbGVzKQotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxl
c19saXN0ID0gZmlsZXMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNraXBfY2h1bmsgPSBz
a2lwcGVkCi0KLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4
cGVjdGF0aW9ucywKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgfCBza2lwX2NodW5rKQot
ICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1h
cnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikKLSAgICAg
ICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkFJTCwgImZhaWx1cmVzIikKLSAgICAgICAg
c2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAg
ICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkxBS1ksICJmbGFreSIpCi0gICAgICAgIHNlbGYu
X3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKLSAgICAgICAg
ICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lwcGVkIikKLQotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmZvcmNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3Rl
ZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdza2lwcyAoLS1mb3JjZSknKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgcnVuIHRoZSBza2lwcGVkIHRl
c3RzICh0aGV5IHdlcmUKLSAgICAgICAgICAgICMgc3VidHJhY3RlZCBvdXQgb2Ygc2VsZi5fdGVz
dF9maWxlcywgYWJvdmUpLCBidXQgd2Ugc3R1YiBvdXQgdGhlCi0gICAgICAgICAgICAjIHJlc3Vs
dHMgaGVyZSBzbyB0aGUgc3RhdGlzdGljcyBjYW4gcmVtYWluIGFjY3VyYXRlLgotICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gc2tpcF9jaHVuazoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0KQotICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
dGVzdF9leHBlY3RhdGlvbnMuU0tJUAotICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFk
ZChyZXN1bHQsIGV4cGVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhw
ZWN0ZWQoJycpCi0KLSAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgd2UgZGlkbid0IGZpbHRl
ciBvdXQgYWxsIG9mIHRoZSB0ZXN0cy4KLSAgICAgICAgaWYgbm90IGxlbihzZWxmLl90ZXN0X2Zp
bGVzKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygiQWxsIHRlc3RzIGFyZSBiZWluZyBza2lwcGVk
IikKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdF9zdW1t
YXJ5Ci0KLSAgICBkZWYgX2dldF9kaXJfZm9yX3Rlc3RfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgot
ICAgICAgICAiIiJSZXR1cm5zIHRoZSBoaWdoZXN0LWxldmVsIGRpcmVjdG9yeSBieSB3aGljaCB0
byBzaGFyZCB0aGUgZ2l2ZW4KLSAgICAgICAgdGVzdCBmaWxlLiIiIgotICAgICAgICBpbmRleCA9
IHRlc3RfZmlsZS5yZmluZChzZWxmLl9mcy5zZXAgKyBzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RP
UlkpCi0KLSAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlW2luZGV4ICsgbGVuKHNlbGYuTEFZ
T1VUX1RFU1RTX0RJUkVDVE9SWSk6XQotICAgICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0X2Zp
bGUuc3BsaXQoc2VsZi5fZnMuc2VwLCAxKQotICAgICAgICBkaXJlY3RvcnkgPSB0ZXN0X2ZpbGVf
cGFydHNbMF0KLSAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlX3BhcnRzWzFdCi0KLSAgICAg
ICAgIyBUaGUgaHR0cCB0ZXN0cyBhcmUgdmVyeSBzdGFibGUgb24gbWFjL2xpbnV4LgotICAgICAg
ICAjIFRPRE8ob2phbik6IE1ha2UgdGhlIGh0dHAgc2VydmVyIG9uIFdpbmRvd3MgYmUgYXBhY2hl
IHNvIHdlIGNhbgotICAgICAgICAjIHR1cm4gc2hhcmQgdGhlIGh0dHAgdGVzdHMgdGhlcmUgYXMg
d2VsbC4gU3dpdGNoaW5nIHRvIGFwYWNoZSBpcwotICAgICAgICAjIHdoYXQgbWFkZSB0aGVtIHN0
YWJsZSBvbiBsaW51eC9tYWMuCi0gICAgICAgIHJldHVybl92YWx1ZSA9IGRpcmVjdG9yeQotICAg
ICAgICB3aGlsZSAoKGRpcmVjdG9yeSAhPSAnaHR0cCcgb3Igc3lzLnBsYXRmb3JtIGluICgnZGFy
d2luJywgJ2xpbnV4MicpKQotICAgICAgICAgICAgICAgIGFuZCB0ZXN0X2ZpbGUuZmluZChzZWxm
Ll9mcy5zZXApID49IDApOgotICAgICAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVzdF9maWxl
LnNwbGl0KHNlbGYuX2ZzLnNlcCwgMSkKLSAgICAgICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmls
ZV9wYXJ0c1swXQotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gc2VsZi5fZnMuam9pbihyZXR1
cm5fdmFsdWUsIGRpcmVjdG9yeSkKLSAgICAgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZV9w
YXJ0c1sxXQotCi0gICAgICAgIHJldHVybiByZXR1cm5fdmFsdWUKLQotICAgIGRlZiBfZ2V0X3Rl
c3RfaW5wdXRfZm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlKToKLSAgICAgICAgIiIiUmV0dXJucyB0
aGUgYXBwcm9wcmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlz
Ci0gICAgICAgIGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1z
KSB0byB1c2UgZm9yIHRoZSBnaXZlbgotICAgICAgICB0ZXN0LiIiIgotICAgICAgICBpZiBzZWxm
Ll90ZXN0X2lzX3Nsb3codGVzdF9maWxlKToKLSAgICAgICAgICAgIHJldHVybiBUZXN0SW5wdXQo
dGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpCi0gICAgICAgIHJldHVy
biBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKQotCi0gICAg
ZGVmIF90ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVzdF9maWxlKToKLSAgICAgICAgIiIiUmV0
dXJuIFRydWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KLSAgICAgICAgcnVu
bmluZyBtdWx0aXBsZSBjb3BpZXMgb2YgTlJXVHMuIiIiCi0gICAgICAgIHNwbGl0X3BhdGggPSB0
ZXN0X2ZpbGUuc3BsaXQoc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5zZXApCi0gICAgICAgIHJldHVy
biAnaHR0cCcgaW4gc3BsaXRfcGF0aCBvciAnd2Vic29ja2V0JyBpbiBzcGxpdF9wYXRoCi0KLSAg
ICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcih0ZXN0X2ZpbGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpCi0K
LSAgICBkZWYgX3NoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfZmlsZXMsIHVzZV9yZWFsX3NoYXJkcyk6
Ci0gICAgICAgICIiIkdyb3VwcyB0ZXN0cyBpbnRvIGJhdGNoZXMuCi0gICAgICAgIFRoaXMgaGVs
cHMgZW5zdXJlIHRoYXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0
ZXN0cyEpCi0gICAgICAgIGNvbnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0IGNyb3NzLXRl
c3RzIGRlcGVuZGVuY2llcyB0ZW5kIHRvCi0gICAgICAgIG9jY3VyIHdpdGhpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuIElmIHVzZV9yZWFsX3NoYXJkcyBpcyBGYWxzZSwgd2UKLSAgICAgICAgcHV0IGVh
Y2ggKG5vbi1IVFRQL3dlYnNvY2tldCkgdGVzdCBpbnRvIGl0cyBvd24gc2hhcmQgZm9yIG1heGlt
dW0KLSAgICAgICAgY29uY3VycmVuY3kgaW5zdGVhZCBvZiB0cnlpbmcgdG8gZG8gYW55IHNvcnQg
b2YgcmVhbCBzaGFyZGluZy4KLQotICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgICBBIGxpc3Qg
b2YgbGlzdHMgb2YgVGVzdElucHV0IG9iamVjdHMuCi0gICAgICAgICIiIgotICAgICAgICAjIEZJ
WE1FOiB3aGVuIHdlIGFkZGVkIGh0dHAgbG9ja2luZywgd2UgY2hhbmdlZCBob3cgdGhpcyB3b3Jr
cyBzdWNoCi0gICAgICAgICMgdGhhdCB3ZSBhbHdheXMgbHVtcCBhbGwgb2YgdGhlIEhUVFAgdGhy
ZWFkcyBpbnRvIGEgc2luZ2xlIHNoYXJkLgotICAgICAgICAjIFRoYXQgd2lsbCBzbG93IGRvd24g
ZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsLCBidXQgaXQncyB1bmNsZWFyCi0gICAgICAgICMg
d2hhdCB0aGUgYmVzdCBhbHRlcm5hdGl2ZSBpcyBjb21wbGV0ZWx5IHJldmFtcGluZyBob3cgd2Ug
dHJhY2sKLSAgICAgICAgIyB3aGVuIHRvIGdyYWIgdGhlIGxvY2suCi0KLSAgICAgICAgdGVzdF9s
aXN0cyA9IFtdCi0gICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jayA9IFtdCi0gICAgICAgIGlmIG5v
dCB1c2VfcmVhbF9zaGFyZHM6Ci0gICAgICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmls
ZXM6Ci0gICAgICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zv
cl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVpcmVz
X2xvY2sodGVzdF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2Nr
LmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3RfbGlzdHMuYXBwZW5kKCgiLiIsIFt0ZXN0X2lucHV0XSkpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQotICAgICAgICAgICAgZm9yIHRlc3Rf
ZmlsZSBpbiB0ZXN0X2ZpbGVzOgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA9IHNlbGYuX2dl
dF9kaXJfZm9yX3Rlc3RfZmlsZSh0ZXN0X2ZpbGUpCi0gICAgICAgICAgICAgICAgdGVzdF9pbnB1
dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAg
ICAgICBpZiBzZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2sodGVzdF9maWxlKToKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZhdWx0
KGRpcmVjdG9yeSwgW10pCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzX2J5X2RpcltkaXJlY3Rv
cnldLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgIyBTb3J0IGJ5IHRoZSBudW1iZXIg
b2YgdGVzdHMgaW4gdGhlIGRpciBzbyB0aGF0IHRoZSBvbmVzIHdpdGggdGhlCi0gICAgICAgICAg
ICAjIG1vc3QgdGVzdHMgZ2V0IHJ1biBmaXJzdCBpbiBvcmRlciB0byBtYXhpbWl6ZSBwYXJhbGxl
bGl6YXRpb24uCi0gICAgICAgICAgICAjIE51bWJlciBvZiB0ZXN0cyBpcyBhIGdvb2QgZW5vdWdo
LCBidXQgbm90IHBlcmZlY3QsIGFwcHJveGltYXRpb24KLSAgICAgICAgICAgICMgb2YgaG93IGxv
bmcgdGhhdCBzZXQgb2YgdGVzdHMgd2lsbCB0YWtlIHRvIHJ1bi4gV2UgY2FuJ3QganVzdCB1c2UK
LSAgICAgICAgICAgICMgYSBQcmlvcml0eVF1ZXVlIHVudGlsIHdlIG1vdmUgdG8gUHl0aG9uIDIu
Ni4KLSAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gdGVzdHNfYnlfZGlyOgotICAgICAgICAg
ICAgICAgIHRlc3RfbGlzdCA9IHRlc3RzX2J5X2RpcltkaXJlY3RvcnldCi0gICAgICAgICAgICAg
ICAgdGVzdF9saXN0X3R1cGxlID0gKGRpcmVjdG9yeSwgdGVzdF9saXN0KQotICAgICAgICAgICAg
ICAgIHRlc3RfbGlzdHMuYXBwZW5kKHRlc3RfbGlzdF90dXBsZSkKLSAgICAgICAgICAgIHRlc3Rf
bGlzdHMuc29ydChsYW1iZGEgYSwgYjogY21wKGxlbihiWzFdKSwgbGVuKGFbMV0pKSkKLQotICAg
ICAgICAjIFB1dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdC4gVGhlcmUgYXJlIG9ubHkgYSBjb3VwbGUg
aHVuZHJlZCBvZiB0aGVtLAotICAgICAgICAjIGJ1dCBlYWNoIGh0dHAgdGVzdCB0YWtlcyBhIHZl
cnkgbG9uZyB0aW1lIHRvIHJ1biwgc28gc29ydGluZyBieSB0aGUKLSAgICAgICAgIyBudW1iZXIg
b2YgdGVzdHMgZG9lc24ndCBhY2N1cmF0ZWx5IGNhcHR1cmUgaG93IGxvbmcgdGhleSB0YWtlIHRv
IHJ1bi4KLSAgICAgICAgaWYgdGVzdHNfdG9faHR0cF9sb2NrOgotICAgICAgICAgICAgdGVzdF9s
aXN0cy5pbnNlcnQoMCwgKCJ0ZXN0c190b19odHRwX2xvY2siLCB0ZXN0c190b19odHRwX2xvY2sp
KQotCi0gICAgICAgIHJldHVybiB0ZXN0X2xpc3RzCi0KLSAgICBkZWYgX2NvbnRhaW5zX3Rlc3Rz
KHNlbGYsIHN1YmRpcik6Ci0gICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gc2VsZi5fdGVzdF9maWxl
czoKLSAgICAgICAgICAgIGlmIHRlc3RfZmlsZS5maW5kKHN1YmRpcikgPj0gMDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBfbnVt
X3dvcmtlcnMoc2VsZiwgbnVtX3NoYXJkcyk6Ci0gICAgICAgIG51bV93b3JrZXJzID0gbWluKGlu
dChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIG51bV9zaGFyZHMpCi0gICAgICAgIGRy
aXZlcl9uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCi0gICAgICAgIGlmIG51bV93b3Jr
ZXJzID09IDE6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2NvbmZpZygiUnVubmlu
ZyAxICVzIG92ZXIgJXMiICUKLSAgICAgICAgICAgICAgICAoZHJpdmVyX25hbWUsIGdyYW1tYXIu
cGx1cmFsaXplKCdzaGFyZCcsIG51bV9zaGFyZHMpKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfY29uZmlnKCJSdW5uaW5nICVkICVzcyBpbiBwYXJhbGxl
bCBvdmVyICVkIHNoYXJkcyIgJQotICAgICAgICAgICAgICAgIChudW1fd29ya2VycywgZHJpdmVy
X25hbWUsIG51bV9zaGFyZHMpKQotICAgICAgICByZXR1cm4gbnVtX3dvcmtlcnMKLQotICAgIGRl
ZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAi
IiJSdW5zIHRoZSB0ZXN0cyBpbiB0aGUgZmlsZV9saXN0LgotCi0gICAgICAgIFJldHVybjogQSB0
dXBsZSAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywK
LSAgICAgICAgICAgIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCi0gICAg
ICAgICAgICBpbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBydW4gd2FzIGludGVycnVwdGVkCi0g
ICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBpbnRlcnJ1cHRp
b24gd2FzIGJlY2F1c2Ugc29tZW9uZQotICAgICAgICAgICAgICB0eXBlZCBDdHJsXkMKLSAgICAg
ICAgICAgIHRocmVhZF90aW1pbmdzIGlzIGEgbGlzdCBvZiBkaWN0cyB3aXRoIHRoZSB0b3RhbCBy
dW50aW1lCi0gICAgICAgICAgICAgIG9mIGVhY2ggdGhyZWFkIHdpdGggJ25hbWUnLCAnbnVtX3Rl
c3RzJywgJ3RvdGFsX3RpbWUnIHByb3BlcnRpZXMKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncyBp
cyBhIGxpc3Qgb2YgdGltaW5ncyBmb3IgZWFjaCBzaGFyZGVkIHN1YmRpcmVjdG9yeQotICAgICAg
ICAgICAgICBvZiB0aGUgZm9ybSBbdGltZSwgZGlyZWN0b3J5X25hbWUsIG51bV90ZXN0c10KLSAg
ICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiBydW4gdGltZXMg
Zm9yIGVhY2ggdGVzdAotICAgICAgICAgICAgICBpbiB0aGUgZm9ybSB7ZmlsZW5hbWU6ZmlsZW5h
bWUsIHRlc3RfcnVuX3RpbWU6dGVzdF9ydW5fdGltZX0KLSAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5OiBzdW1tYXJ5IG9iamVjdCB0byBwb3B1bGF0ZSB3aXRoIHRoZSByZXN1bHRzCi0gICAgICAg
ICIiIgotICAgICAgICBzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1h
cnkKLSAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMgPSBbXQotICAgICAgICBzZWxmLl9ncm91cF9z
dGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXMgPSB7fQotCi0gICAgICAgIGtl
eWJvYXJkX2ludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgaW50ZXJydXB0ZWQgPSBGYWxzZQot
ICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIHRlc3RfbGlzdHMgPSBzZWxm
Ll9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCi0gICAgICAgICAgICBpbnQoc2VsZi5fb3B0aW9ucy5j
aGlsZF9wcm9jZXNzZXMpID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1
bGx5X3BhcmFsbGVsKQotCi0gICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMo
bGVuKHRlc3RfbGlzdHMpKQotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2VyLldv
cmtlcikKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICBy
ZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3Ms
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0
cykKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4u
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXIucGx1cmFsaXpl
KCd3b3JrZXInLCBudW1fd29ya2VycykpCi0gICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhy
YW5nZShudW1fd29ya2Vycyk6Ci0gICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFn
ZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29ya2VyX251bWJlcikKLSAgICAgICAgICAgIHdv
cmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3JrZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlv
bikKLSAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24ubmFt
ZV0gPSB3b3JrZXJfc3RhdGUKLQotICAgICAgICAgICAgIyBGSVhNRTogSWYgd2Ugc3RhcnQgd29y
a2VycyB1cCB0b28gcXVpY2tseSwgRHVtcFJlbmRlclRyZWUgYXBwZWFycwotICAgICAgICAgICAg
IyB0byB0aHJhc2ggb24gc29tZXRoaW5nIGFuZCB0aW1lIG91dCBpdHMgZmlyc3QgZmV3IHRlc3Rz
LiBVbnRpbAotICAgICAgICAgICAgIyB3ZSBjYW4gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24s
IHNsZWVwIGEgYml0IGluIGJldHdlZW4KLSAgICAgICAgICAgICMgd29ya2Vycy4KLSAgICAgICAg
ICAgIHRpbWUuc2xlZXAoMC4xKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRl
KCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCi0gICAgICAgIGZvciB0ZXN0X2xpc3QgaW4gdGVzdF9s
aXN0czoKLSAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3Rlc3Rf
bGlzdCcsIHRlc3RfbGlzdFswXSwgdGVzdF9saXN0WzFdKQotCi0gICAgICAgICMgV2UgcG9zdCBv
bmUgJ3N0b3AnIG1lc3NhZ2UgZm9yIGVhY2ggd29ya2VyLiBCZWNhdXNlIHRoZSBzdG9wIG1lc3Nh
Z2UKLSAgICAgICAgIyBhcmUgc2VudCBhZnRlciBhbGwgb2YgdGhlIHRlc3RzLCBhbmQgYmVjYXVz
ZSBlYWNoIHdvcmtlciB3aWxsIHN0b3AKLSAgICAgICAgIyByZWFkaW5nIG1lc3NzYWdlcyBhZnRl
ciByZWNlaXZpbmcgYSBzdG9wLCB3ZSBjYW4gYmUgc3VyZSBlYWNoCi0gICAgICAgICMgd29ya2Vy
IHdpbGwgZ2V0IGEgc3RvcCBtZXNzYWdlIGFuZCBoZW5jZSB0aGV5IHdpbGwgYWxsIHNodXQgZG93
bi4KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKG51bV93b3JrZXJzKToKLSAgICAgICAgICAgIG1h
bmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3N0b3AnKQotCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAjIFdl
IGxvb3Agd2l0aCBhIHRpbWVvdXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2VkZ2Vk
IHRocmVhZHMuCi0gICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdl
X2xvb3AoZGVsYXlfc2Vjcz0xLjApCi0KLSAgICAgICAgICAgIGlmIGFueSh3b3JrZXJfc3RhdGUu
d2VkZ2VkIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKSk6
Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKLSAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdSZW1haW5pbmcgd29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5nIG91dC4nKQotICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIF9sb2cuZGVidWcoJ05vIHdlZGdlZCB0aHJlYWRzJykKLQotICAgICAgICAgICAgIyBNYWtl
IHN1cmUgYWxsIG9mIHRoZSB3b3JrZXJzIGhhdmUgc2h1dCBkb3duIChpZiBwb3NzaWJsZSkuCi0g
ICAgICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVz
KCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHdvcmtlcl9zdGF0ZS53ZWRnZWQgYW5kIHdvcmtl
cl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5pc19hbGl2ZSgpOgotICAgICAgICAgICAgICAgICAg
ICB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uam9pbigwLjUpCi0gICAgICAgICAgICAg
ICAgICAgIGFzc2VydCBub3Qgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmlzX2FsaXZl
KCkKLQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBfbG9n
LmluZm8oIkludGVycnVwdGVkLCBleGl0aW5nIikKLSAgICAgICAgICAgIHNlbGYuY2FuY2VsX3dv
cmtlcnMoKQotICAgICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAg
IGV4Y2VwdCBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBfbG9n
LmluZm8oZS5yZWFzb24pCi0gICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKLSAgICAg
ICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAj
IFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4KLSAg
ICAgICAgICAgIF9sb2cuaW5mbygiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCi0gICAgICAg
ICAgICByYWlzZQotCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW3dvcmtlcl9zdGF0ZS5zdGF0
cyBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCldCi0KLSAg
ICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjbGFzcyBpbnN0ZWFkIG9mIGEgdHVwbGU/
Ci0gICAgICAgIHJldHVybiAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJl
YWRfdGltaW5ncywKLSAgICAgICAgICAgICAgICBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxs
X3Jlc3VsdHMpCi0KLSAgICBkZWYgdXBkYXRlKHNlbGYpOgotICAgICAgICBzZWxmLnVwZGF0ZV9z
dW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkpCi0KLSAgICBkZWYgX2NvbGxlY3Rf
dGltaW5nX2luZm8oc2VsZiwgdGhyZWFkcyk6Ci0gICAgICAgIHRlc3RfdGltaW5ncyA9IHt9Ci0g
ICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KLSAgICAgICAgdGhyZWFkX3RpbWlu
Z3MgPSBbXQotCi0gICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKLSAgICAgICAgICAgIHRo
cmVhZF90aW1pbmdzLmFwcGVuZCh7J25hbWUnOiB0aHJlYWQuZ2V0TmFtZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtX3Rlc3RzJzogdGhyZWFkLmdldF9udW1fdGVz
dHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiB0
aHJlYWQuZ2V0X3RvdGFsX3RpbWUoKX0pCi0gICAgICAgICAgICB0ZXN0X3RpbWluZ3MudXBkYXRl
KHRocmVhZC5nZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMoKSkKLSAgICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzLmV4dGVuZCh0aHJlYWQuZ2V0X3Rlc3RfcmVzdWx0cygpKQotCi0g
ICAgICAgIHJldHVybiAodGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKLSAgICAgICAgIiIiUmV0
dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4iIiIKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIpCi0KLSAg
ICBkZWYgbmVlZHNfd2Vic29ja2V0KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIg
dGhlIHRlc3QgcnVubmVyIG5lZWRzIGEgV0VCU09DS0VUIHNlcnZlci4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuV0VCU09DS0VUX1NVQkRJUikKLQotICAgIGRl
ZiBzZXRfdXBfcnVuKHNlbGYpOgotICAgICAgICAiIiJDb25maWd1cmVzIHRoZSBzeXN0ZW0gdG8g
YmUgcmVhZHkgdG8gcnVuIHRlc3RzLgotCi0gICAgICAgIFJldHVybnMgYSBSZXN1bHRTdW1tYXJ5
IG9iamVjdCBpZiB3ZSBzaG91bGQgY29udGludWUgdG8gcnVuIHRlc3RzLAotICAgICAgICBvciBO
b25lIGlmIHdlIHNob3VsZCBhYm9ydC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBUaGlzIG11
c3QgYmUgc3RhcnRlZCBiZWZvcmUgd2UgY2hlY2sgdGhlIHN5c3RlbSBkZXBlbmRlbmNpZXMsCi0g
ICAgICAgICMgc2luY2UgdGhlIGhlbHBlciBtYXkgZG8gdGhpbmdzIHRvIG1ha2UgdGhlIHNldHVw
IGNvcnJlY3QuCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGluZyBo
ZWxwZXIgLi4uIikKLSAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9oZWxwZXIoKQotCi0gICAgICAg
ICMgQ2hlY2sgdGhhdCB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyAodGhlbWVzLCBmb250cywgLi4u
KSBhcmUgY29ycmVjdC4KLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMubm9jaGVja19zeXNf
ZGVwczoKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJDaGVja2luZyBz
eXN0ZW0gZGVwZW5kZW5jaWVzIC4uLiIpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5j
aGVja19zeXNfZGVwcyhzZWxmLm5lZWRzX2h0dHAoKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
cG9ydC5zdG9wX2hlbHBlcigpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmNsb2JiZXJfb2xkX3Jlc3VsdHM6Ci0gICAgICAgICAgICBzZWxm
Ll9jbG9iYmVyX29sZF9yZXN1bHRzKCkKLQotICAgICAgICAjIENyZWF0ZSB0aGUgb3V0cHV0IGRp
cmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCi0gICAgICAgIHNlbGYuX3BvcnQu
bWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0KLSAgICAgICAg
c2VsZi5fcG9ydC5zZXR1cF90ZXN0X3J1bigpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF91cGRhdGUoIlByZXBhcmluZyB0ZXN0cyAuLi4iKQotICAgICAgICByZXN1bHRfc3VtbWFyeSA9
IHNlbGYucHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KCkKLSAgICAgICAgaWYgbm90IHJl
c3VsdF9zdW1tYXJ5OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXR1cm4g
cmVzdWx0X3N1bW1hcnkKLQotICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgotICAg
ICAgICAiIiJSdW4gYWxsIG91ciB0ZXN0cyBvbiBhbGwgb3VyIHRlc3QgZmlsZXMuCi0KLSAgICAg
ICAgRm9yIGVhY2ggdGVzdCBmaWxlLCB3ZSBydW4gZWFjaCB0ZXN0IHR5cGUuIElmIHRoZXJlIGFy
ZSBhbnkgZmFpbHVyZXMsCi0gICAgICAgIHdlIGNvbGxlY3QgdGhlbSBmb3IgcmVwb3J0aW5nLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBvYmpl
Y3QgdHJhY2tpbmcgdGhlIHRlc3QgcmVzdWx0cy4KLQotICAgICAgICBSZXR1cm46Ci0gICAgICAg
ICAgVGhlIG51bWJlciBvZiB1bmV4cGVjdGVkIHJlc3VsdHMgKDAgPT0gc3VjY2VzcykKLSAgICAg
ICAgIiIiCi0gICAgICAgICMgZ2F0aGVyX3Rlc3RfZmlsZXMoKSBtdXN0IGhhdmUgYmVlbiBjYWxs
ZWQgZmlyc3QgdG8gaW5pdGlhbGl6ZSB1cy4KLSAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgZmluZCBh
bnkgZmlsZXMgdG8gdGVzdCwgd2UndmUgZXJyb3JlZCBvdXQgYWxyZWFkeSBpbgotICAgICAgICAj
IHByZXBhcmVfbGlzdHNfYW5kX3ByaW50X291dHB1dCgpLgotICAgICAgICBhc3NlcnQobGVuKHNl
bGYuX3Rlc3RfZmlsZXMpKQotCi0gICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotCi0g
ICAgICAgIGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3Ms
IHRlc3RfdGltaW5ncywgXAotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSAo
Ci0gICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1
bHRfc3VtbWFyeSkpCi0KLSAgICAgICAgIyBXZSBleGNsdWRlIHRoZSBjcmFzaGVzIGZyb20gdGhl
IGxpc3Qgb2YgcmVzdWx0cyB0byByZXRyeSwgYmVjYXVzZQotICAgICAgICAjIHdlIHdhbnQgdG8g
dHJlYXQgZXZlbiBhIHBvdGVudGlhbGx5IGZsYWt5IGNyYXNoIGFzIGFuIGVycm9yLgotICAgICAg
ICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9j
cmFzaGVzPUZhbHNlKQotICAgICAgICByZXRyeV9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKLSAg
ICAgICAgd2hpbGUgKGxlbihmYWlsdXJlcykgYW5kIHNlbGYuX29wdGlvbnMucmV0cnlfZmFpbHVy
ZXMgYW5kCi0gICAgICAgICAgICBub3Qgc2VsZi5fcmV0cnlpbmcgYW5kIG5vdCBpbnRlcnJ1cHRl
ZCk6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJycpCi0gICAgICAgICAgICBfbG9nLmluZm8oIlJl
dHJ5aW5nICVkIHVuZXhwZWN0ZWQgZmFpbHVyZShzKSAuLi4iICUgbGVuKGZhaWx1cmVzKSkKLSAg
ICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgIHNlbGYuX3JldHJ5aW5nID0gVHJ1
ZQotICAgICAgICAgICAgcmV0cnlfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0
YXRpb25zLCBmYWlsdXJlcy5rZXlzKCkpCi0gICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBpbnRl
bnRpb25hbGx5IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGhlcmUuCi0gICAgICAgICAgICBzZWxm
Ll9ydW5fdGVzdHMoZmFpbHVyZXMua2V5cygpLCByZXRyeV9zdW1tYXJ5KQotICAgICAgICAgICAg
ZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmV0cnlfc3VtbWFyeSwgaW5jbHVkZV9jcmFz
aGVzPVRydWUpCi0KLSAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQotCi0gICAgICAgIHNl
bGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGlt
aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dF9zdW1tYXJ5KQotCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5KHJlc3VsdF9z
dW1tYXJ5KQotCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBzeXMuc3RkZXJy
LmZsdXNoKCkKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnko
cmVzdWx0X3N1bW1hcnkudG90YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWQpCi0KLSAg
ICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwK
LSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1
bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSkKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModW5leHBlY3RlZF9y
ZXN1bHRzKQotCi0gICAgICAgICMgRklYTUU6IHJlbW92ZSByZWNvcmRfcmVzdWx0cy4gSXQncyBq
dXN0IHVzZWQgZm9yIHRlc3RpbmcuIFRoZXJlJ3Mgbm8gbmVlZAotICAgICAgICAjIGZvciBpdCB0
byBiZSBhIGNvbW1hbmRsaW5lIGFyZ3VtZW50LgotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5y
ZWNvcmRfcmVzdWx0cyBhbmQgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1biBhbmQKLSAgICAgICAg
ICAgIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6Ci0gICAgICAgICAgICAjIFdyaXRlIHRoZSBz
YW1lIGRhdGEgdG8gbG9nIGZpbGVzIGFuZCB1cGxvYWQgZ2VuZXJhdGVkIEpTT04gZmlsZXMKLSAg
ICAgICAgICAgICMgdG8gYXBwZW5naW5lIHNlcnZlci4KLSAgICAgICAgICAgIHN1bW1hcml6ZWRf
cmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAg
c2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3MsIG9ubHlfdW5leHBlY3RlZD1GYWxzZSkKLSAgICAgICAgICAgIHNl
bGYuX3VwbG9hZF9qc29uX2ZpbGVzKHVuZXhwZWN0ZWRfcmVzdWx0cywgc3VtbWFyaXplZF9yZXN1
bHRzLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQotCi0gICAgICAgICMgV3JpdGUgdGhlIHN1bW1hcnkg
dG8gZGlzayAocmVzdWx0cy5odG1sKSBhbmQgZGlzcGxheSBpdCBpZiByZXF1ZXN0ZWQuCi0gICAg
ICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICBzZWxmLl9jb3B5
X3Jlc3VsdHNfaHRtbF9maWxlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2hvd19y
ZXN1bHRzOgotICAgICAgICAgICAgICAgIHNlbGYuX3Nob3dfcmVzdWx0c19odG1sX2ZpbGUocmVz
dWx0X3N1bW1hcnkpCi0KLSAgICAgICAgIyBOb3cgdGhhdCB3ZSd2ZSBjb21wbGV0ZWQgYWxsIHRo
ZSBwcm9jZXNzaW5nIHdlIGNhbiwgd2UgcmUtcmFpc2UKLSAgICAgICAgIyBhIEtleWJvYXJkSW50
ZXJydXB0IGlmIG5lY2Vzc2FyeSBzbyB0aGUgY2FsbGVyIGNhbiBoYW5kbGUgaXQuCi0gICAgICAg
IGlmIGtleWJvYXJkX2ludGVycnVwdGVkOgotICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRl
cnJ1cHQKLQotICAgICAgICAjIElnbm9yZSBmbGFreSBmYWlsdXJlcyBhbmQgdW5leHBlY3RlZCBw
YXNzZXMgc28gd2UgZG9uJ3QgdHVybiB0aGUKLSAgICAgICAgIyBib3QgcmVkIGZvciB0aG9zZS4K
LSAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX3JlZ3Jlc3Npb25zJ10KLQot
ICAgIGRlZiBjbGVhbl91cF9ydW4oc2VsZik6Ci0gICAgICAgICIiIlJlc3RvcmVzIHRoZSBzeXN0
ZW0gYWZ0ZXIgd2UncmUgZG9uZSBydW5uaW5nIHRlc3RzLiIiIgotCi0gICAgICAgIF9sb2cuZGVi
dWcoImZsdXNoaW5nIHN0ZG91dCIpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAg
ICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRlcnIiKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNo
KCkKLSAgICAgICAgX2xvZy5kZWJ1Zygic3RvcHBpbmcgaGVscGVyIikKLSAgICAgICAgc2VsZi5f
cG9ydC5zdG9wX2hlbHBlcigpCi0KLSAgICBkZWYgdXBkYXRlX3N1bW1hcnkoc2VsZiwgcmVzdWx0
X3N1bW1hcnkpOgotICAgICAgICAiIiJVcGRhdGUgdGhlIHN1bW1hcnkgYW5kIHByaW50IHJlc3Vs
dHMgd2l0aCBhbnkgY29tcGxldGVkIHRlc3RzLiIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0cy5UZXN0
UmVzdWx0LmxvYWRzKHNlbGYuX3Jlc3VsdF9xdWV1ZS5nZXRfbm93YWl0KCkpCi0gICAgICAgICAg
ICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAg
ICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHJlc3VsdF9zdW1tYXJ5LCByZXN1
bHQpCi0KLSAgICBkZWYgX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYsIHJlc3VsdF9z
dW1tYXJ5LCByZXN1bHQpOgotICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5t
YXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSwg
cmVzdWx0LnR5cGUsIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMpCi0gICAgICAgIHJlc3VsdF9z
dW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQotICAgICAgICBleHBfc3RyID0gc2VsZi5fZXhw
ZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgcmVzdWx0LmZp
bGVuYW1lKQotICAgICAgICBnb3Rfc3RyID0gc2VsZi5fZXhwZWN0YXRpb25zLmV4cGVjdGF0aW9u
X3RvX3N0cmluZyhyZXN1bHQudHlwZSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90ZXN0
X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3RyKQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3Byb2dyZXNzKHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl9yZXRyeWluZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVz
X2xpc3QpCi0KLSAgICAgICAgZGVmIGludGVycnVwdF9pZl9hdF9mYWlsdXJlX2xpbWl0KGxpbWl0
LCBjb3VudCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICBpZiBsaW1pdCBhbmQgY291bnQgPj0gbGlt
aXQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKG1l
c3NhZ2UgJSBjb3VudCkKLQotICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgK
LSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2ZhaWx1cmVzLAotICAgICAg
ICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9mYWlsdXJlcywKLSAgICAgICAgICAgICJB
Ym9ydGluZyBydW4gc2luY2UgJWQgZmFpbHVyZXMgd2VyZSByZWFjaGVkIikKLSAgICAgICAgaW50
ZXJydXB0X2lmX2F0X2ZhaWx1cmVfbGltaXQoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4
aXRfYWZ0ZXJfbl9jcmFzaGVzX29yX3RpbWVvdXRzLAotICAgICAgICAgICAgcmVzdWx0X3N1bW1h
cnkudW5leHBlY3RlZF9jcmFzaGVzX29yX3RpbWVvdXRzLAotICAgICAgICAgICAgIkFib3J0aW5n
IHJ1biBzaW5jZSAlZCBjcmFzaGVzIG9yIHRpbWVvdXRzIHdlcmUgcmVhY2hlZCIpCi0KLSAgICBk
ZWYgX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICMgSnVzdCBjbG9iYmVyIHRo
ZSBhY3R1YWwgdGVzdCByZXN1bHRzIGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBvdGhlcgotICAgICAg
ICAjIGZpbGVzIGluIHRoZSByZXN1bHRzIGRpcmVjdG9yeSBhcmUgZXhwbGljaXRseSB1c2VkIGZv
ciBjcm9zcy1ydW4KLSAgICAgICAgIyB0cmFja2luZy4KLSAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF91cGRhdGUoIkNsb2JiZXJpbmcgb2xkIHJlc3VsdHMgaW4gJXMiICUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0gICAgICAg
IGxheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAg
ICBwb3NzaWJsZV9kaXJzID0gc2VsZi5fcG9ydC50ZXN0X2RpcnMoKQotICAgICAgICBmb3IgZGly
bmFtZSBpbiBwb3NzaWJsZV9kaXJzOgotICAgICAgICAgICAgaWYgc2VsZi5fZnMuaXNkaXIoc2Vs
Zi5fZnMuam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fZnMucm10cmVlKHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksIGRp
cm5hbWUpKQotCi0gICAgZGVmIF9nZXRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0X3N1bW1hcnksIGlu
Y2x1ZGVfY3Jhc2hlcyk6Ci0gICAgICAgICIiIkZpbHRlcnMgYSBkaWN0IG9mIHJlc3VsdHMgYW5k
IHJldHVybnMgb25seSB0aGUgZmFpbHVyZXMuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeTogdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3QgcnVuCi0gICAgICAgICAgaW5j
bHVkZV9jcmFzaGVzOiB3aGV0aGVyIGNyYXNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQu
Ci0gICAgICAgICAgICBXZSB1c2UgRmFsc2Ugd2hlbiBmaW5kaW5nIHRoZSBsaXN0IG9mIGZhaWx1
cmVzIHRvIHJldHJ5Ci0gICAgICAgICAgICB0byBzZWUgaWYgdGhlIHJlc3VsdHMgd2VyZSBmbGFr
eS4gQWx0aG91Z2ggdGhlIGNyYXNoZXMgbWF5IGFsc28gYmUKLSAgICAgICAgICAgIGZsYWt5LCB3
ZSB0cmVhdCB0aGVtIGFzIGlmIHRoZXkgYXJlbid0IHNvIHRoYXQgdGhleSdyZSBub3QgaWdub3Jl
ZC4KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBhIGRpY3Qgb2YgZmlsZXMgLT4gcmVzdWx0
cwotICAgICAgICAiIiIKLSAgICAgICAgZmFpbGVkX3Jlc3VsdHMgPSB7fQotICAgICAgICBmb3Ig
dGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRl
bXMoKToKLSAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5Q
QVNTIG9yCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMu
Q1JBU0ggYW5kIG5vdCBpbmNsdWRlX2NyYXNoZXMpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0XSA9IHJlc3VsdC50eXBlCi0KLSAgICAg
ICAgcmV0dXJuIGZhaWxlZF9yZXN1bHRzCi0KLSAgICBkZWYgX2NoYXJfZm9yX3Jlc3VsdChzZWxm
LCByZXN1bHQpOgotICAgICAgICByZXN1bHQgPSByZXN1bHQubG93ZXIoKQotICAgICAgICBpZiBy
ZXN1bHQgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05TOgotICAgICAgICAgICAg
cmVzdWx0X2VudW1fdmFsdWUgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlNbcmVz
dWx0XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0X2VudW1fdmFsdWUgPSBUZXN0
RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlNbcmVzdWx0XQotICAgICAgICByZXR1cm4ganNvbl9s
YXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0b3IuRkFJTFVS
RV9UT19DSEFSW3Jlc3VsdF9lbnVtX3ZhbHVlXQotCi0gICAgZGVmIF91cGxvYWRfanNvbl9maWxl
cyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1
bW1hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cyk6Ci0gICAgICAgICIiIldyaXRlcyB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNP
TiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCi0gICAgICAgIGRpciBhbmQgdXBsb2FkIHRoZSBmaWxl
cyB0byB0aGUgYXBwZW5naW5lIHNlcnZlci4KLQotICAgICAgICBUaGVyZSBhcmUgdGhyZWUgZGlm
ZmVyZW50IGZpbGVzIHdyaXR0ZW4gaW50byB0aGUgcmVzdWx0cyBkaXI6Ci0gICAgICAgICAgdW5l
eHBlY3RlZF9yZXN1bHRzLmpzb246IEEgc2hvcnQgbGlzdCBvZiBhbnkgdW5leHBlY3RlZCByZXN1
bHRzLgotICAgICAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IHRoZSBidWlsZGJvdHMgdG8gZGlzcGxh
eSByZXN1bHRzLgotICAgICAgICAgIGV4cGVjdGF0aW9ucy5qc29uOiBUaGlzIGlzIHVzZWQgYnkg
dGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQuCi0gICAgICAgICAgcmVzdWx0cy5qc29uOiBBIGZ1bGwg
bGlzdCBvZiB0aGUgcmVzdWx0cyAtIHVzZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAgICAg
ZGFzaGJvYXJkIGFuZCB0aGUgYWdncmVnYXRlIHJlc3VsdHMgZGFzaGJvYXJkLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzOiBkaWN0IG9mIHVuZXhwZWN0ZWQg
cmVzdWx0cwotICAgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0czogZGljdCBvZiByZXN1bHRzCi0g
ICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGZ1bGwgc3VtbWFyeSBvYmplY3QKLSAgICAgICAgICBp
bmRpdmlkdWFsX3Rlc3RfdGltaW5nczogbGlzdCBvZiB0ZXN0IHRpbWVzICh1c2VkIGJ5IHRoZSBm
bGFraW5lc3MKLSAgICAgICAgICAgIGRhc2hib2FyZCkuCi0gICAgICAgICIiIgotICAgICAgICBf
bG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHNlbGYuX3Jlc3VsdHNfZGly
ZWN0b3J5KQotCi0gICAgICAgIHVuZXhwZWN0ZWRfanNvbl9wYXRoID0gc2VsZi5fZnMuam9pbihz
ZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIikKLSAgICAg
ICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci53cml0ZV9qc29uKHNlbGYuX2ZzLCB1bmV4cGVjdGVk
X3Jlc3VsdHMsIHVuZXhwZWN0ZWRfanNvbl9wYXRoKQotCi0gICAgICAgIGZ1bGxfcmVzdWx0c19w
YXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgImZ1bGxfcmVzdWx0
cy5qc29uIikKLSAgICAgICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci53cml0ZV9qc29uKHNlbGYu
X2ZzLCBzdW1tYXJpemVkX3Jlc3VsdHMsIGZ1bGxfcmVzdWx0c19wYXRoKQotCi0gICAgICAgICMg
V3JpdGUgYSBqc29uIGZpbGUgb2YgdGhlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlIGZvciB0
aGUgbGF5b3V0Ci0gICAgICAgICMgdGVzdHMgZGFzaGJvYXJkLgotICAgICAgICBleHBlY3RhdGlv
bnNfcGF0aCA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJleHBlY3Rh
dGlvbnMuanNvbiIpCi0gICAgICAgIGV4cGVjdGF0aW9uc19qc29uID0gXAotICAgICAgICAgICAg
c2VsZi5fZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfanNvbl9mb3JfYWxsX3BsYXRmb3Jt
cygpCi0gICAgICAgIHNlbGYuX2ZzLndyaXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUiQUREX0VYUEVDVEFUSU9OUyglcyk7
IiAlIGV4cGVjdGF0aW9uc19qc29uKQotCi0gICAgICAgIGdlbmVyYXRvciA9IGpzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yKAotICAgICAgICAg
ICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5idWlsZGVyX25hbWUsIHNlbGYuX29wdGlvbnMu
YnVpbGRfbmFtZSwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuYnVpbGRfbnVtYmVyLCBzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgIEJVSUxERVJfQkFTRV9VUkwsIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1
bHRfc3VtbWFyeSwgc2VsZi5fdGVzdF9maWxlc19saXN0LAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLAotICAgICAgICAgICAgImxheW91dC10ZXN0cyIsCi0g
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc3Rlcl9uYW1lKQotCi0gICAgICAgIF9sb2cuZGVi
dWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNPTiBmaWxlcy4iKQotCi0gICAgICAgIGpzb25fZmlsZXMg
PSBbImV4cGVjdGF0aW9ucy5qc29uIiwgImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiIsICJmdWxs
X3Jlc3VsdHMuanNvbiJdCi0KLSAgICAgICAgZ2VuZXJhdG9yLnVwbG9hZF9qc29uX2ZpbGVzKGpz
b25fZmlsZXMpCi0KLSAgICBkZWYgX3ByaW50X2NvbmZpZyhzZWxmKToKLSAgICAgICAgIiIiUHJp
bnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdCBydW4uIiIiCi0gICAgICAgIHAgPSBz
ZWxmLl9wcmludGVyCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJVc2luZyBwb3J0ICclcyciICUg
c2VsZi5fcG9ydC5uYW1lKCkpCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJUZXN0IGNvbmZpZ3Vy
YXRpb246ICVzIiAlIHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCkpCi0gICAgICAgIHAu
cHJpbnRfY29uZmlnKCJQbGFjaW5nIHRlc3QgcmVzdWx0cyBpbiAlcyIgJSBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSkKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmU6Ci0gICAg
ICAgICAgICBwLnByaW50X2NvbmZpZygiUGxhY2luZyBuZXcgYmFzZWxpbmVzIGluICVzIiAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmJhc2VsaW5lX3BhdGgoKSkKLSAg
ICAgICAgcC5wcmludF9jb25maWcoIlVzaW5nICVzIGJ1aWxkIiAlIHNlbGYuX29wdGlvbnMuY29u
ZmlndXJhdGlvbikKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKLSAgICAg
ICAgICAgIHAucHJpbnRfY29uZmlnKCJQaXhlbCB0ZXN0cyBlbmFibGVkIikKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQaXhlbCB0ZXN0cyBkaXNhYmxlZCIpCi0K
LSAgICAgICAgcC5wcmludF9jb25maWcoIlJlZ3VsYXIgdGltZW91dDogJXMsIHNsb3cgdGVzdCB0
aW1lb3V0OiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy50aW1l
X291dF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2xvd190aW1l
X291dF9tcykpCi0KLSAgICAgICAgcC5wcmludF9jb25maWcoJ0NvbW1hbmQgbGluZTogJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKHNlbGYuX3BvcnQuZHJpdmVyX2NtZF9saW5l
KCkpKQotICAgICAgICBwLnByaW50X2NvbmZpZygiV29ya2VyIG1vZGVsOiAlcyIgJSBzZWxmLl9v
cHRpb25zLndvcmtlcl9tb2RlbCkKLSAgICAgICAgcC5wcmludF9jb25maWcoIiIpCi0KLSAgICBk
ZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFyeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSwgcmVz
dWx0X3R5cGVfc3RyKToKLSAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVzdHMg
aW4gYSBnaXZlbiByZXN1bHQgY2xhc3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1
bHRfc3VtbWFyeSAtIHRoZSBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdHMgdG8gcmVw
b3J0IG9uCi0gICAgICAgICAgcmVzdWx0X3R5cGUgLSB0aGUgcGFydGljdWxhciByZXN1bHQgdHlw
ZSB0byByZXBvcnQgaW4gdGhlIHN1bW1hcnkuCi0gICAgICAgICAgcmVzdWx0X3R5cGVfc3RyIC0g
YSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHJlc3VsdF90eXBlLgotICAgICAgICAiIiIKLSAg
ICAgICAgdGVzdHMgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5
cGUocmVzdWx0X3R5cGUpCi0gICAgICAgIG5vdyA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3Rp
bWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLk5PV10KLSAgICAgICAgd29udGZpeCA9IHJlc3VsdF9z
dW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLldPTlRGSVhdCi0KLSAg
ICAgICAgIyBXZSB1c2UgYSBmYW5jeSBmb3JtYXQgc3RyaW5nIGluIG9yZGVyIHRvIHByaW50IHRo
ZSBkYXRhIG91dCBpbiBhCi0gICAgICAgICMgbmljZWx5LWFsaWduZWQgdGFibGUuCi0gICAgICAg
IGZtdHN0ciA9ICgiRXhwZWN0OiAlJTVkICUlLThzICglJSVkZCBub3csICUlJWRkIHdvbnRmaXgp
IgotICAgICAgICAgICAgICAgICAgJSAoc2VsZi5fbnVtX2RpZ2l0cyhub3cpLCBzZWxmLl9udW1f
ZGlnaXRzKHdvbnRmaXgpKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChm
bXRzdHIgJQotICAgICAgICAgICAgKGxlbih0ZXN0cyksIHJlc3VsdF90eXBlX3N0ciwgbGVuKHRl
c3RzICYgbm93KSwgbGVuKHRlc3RzICYgd29udGZpeCkpKQotCi0gICAgZGVmIF9udW1fZGlnaXRz
KHNlbGYsIG51bSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBvZiBkaWdpdHMgbmVl
ZGVkIHRvIHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIGEKLSAgICAgICAgc2VxdWVuY2UuIiIiCi0g
ICAgICAgIG5kaWdpdHMgPSAxCi0gICAgICAgIGlmIGxlbihudW0pOgotICAgICAgICAgICAgbmRp
Z2l0cyA9IGludChtYXRoLmxvZzEwKGxlbihudW0pKSkgKyAxCi0gICAgICAgIHJldHVybiBuZGln
aXRzCi0KLSAgICBkZWYgX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKHNlbGYsIHRvdGFsX3RpbWUs
IHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9y
eV90ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUmVjb3JkIHRpbWlu
Zy1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgdGhlIHRlc3QgcnVuLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgdG90YWxfdGltZTogdG90YWwgZWxhcHNlZCB0aW1lIChpbiBzZWNvbmRzKSBm
b3IgdGhlIHRlc3QgcnVuCi0gICAgICAgICAgdGhyZWFkX3RpbWluZ3M6IHdhbGwgY2xvY2sgdGlt
ZSBlYWNoIHRocmVhZCByYW4gZm9yCi0gICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nczog
dGltaW5nIGJ5IGRpcmVjdG9yeQotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiB0
aW1pbmcgYnkgZmlsZQotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBm
b3IgdGhlIHRlc3QgcnVuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZygiVGVzdCB0aW1pbmc6IikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1p
bmcoIiAgJTYuMmYgdG90YWwgdGVzdGluZyB0aW1lIiAlIHRvdGFsX3RpbWUpCi0gICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZygiVGhyZWFkIHRpbWluZzoiKQotICAgICAgICBjdW1sX3RpbWUgPSAwCi0gICAgICAg
IGZvciB0IGluIHRocmVhZF90aW1pbmdzOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF90aW1pbmcoIiAgICAlMTBzOiAlNWQgdGVzdHMsICU2LjJmIHNlY3MiICUKLSAgICAgICAgICAg
ICAgICAgICh0WyduYW1lJ10sIHRbJ251bV90ZXN0cyddLCB0Wyd0b3RhbF90aW1lJ10pKQotICAg
ICAgICAgICAgY3VtbF90aW1lICs9IHRbJ3RvdGFsX3RpbWUnXQotICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X3RpbWluZygiICAgJTYuMmYgY3VtdWxhdGl2ZSwgJTYuMmYgb3B0aW1hbCIgJQot
ICAgICAgICAgICAgICAoY3VtbF90aW1lLCBjdW1sX3RpbWUgLyBpbnQoc2VsZi5fb3B0aW9ucy5j
aGlsZF9wcm9jZXNzZXMpKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIp
Ci0KLSAgICAgICAgc2VsZi5fcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhpbmRpdmlk
dWFsX3Rlc3RfdGltaW5ncykKLSAgICAgICAgc2VsZi5fcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3Rp
bWVzKGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCi0gICAgICAgIHNlbGYuX3ByaW50X2RpcmVj
dG9yeV90aW1pbmdzKGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgX3ByaW50X2Fn
Z3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3Moc2VsZiwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpOgot
ICAgICAgICAiIiJQcmludHMgYWdncmVnYXRlIHN0YXRpc3RpY3MgKGUuZy4gbWVkaWFuLCBtZWFu
LCBldGMuKSBmb3IgYWxsIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RSZXN1bHRzIGZvciBhbGwgdGVzdHMuCi0gICAg
ICAgICIiIgotICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSA9IFt0ZXN0X3N0YXRz
LnRlc3RfcnVuX3RpbWUgZm9yIHRlc3Rfc3RhdHMgaW4gaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Nd
Ci0gICAgICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygiUEVSIFRF
U1QgVElNRSBJTiBURVNUU0hFTEwgKHNlY29uZHMpOiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSkKLQot
ICAgIGRlZiBfcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKHNlbGYsIGluZGl2aWR1YWxfdGVz
dF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5KToKLSAgICAgICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMgZm9yIHNsb3csIHRpbWVvdXQg
YW5kIGNyYXNoIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2aWR1YWxfdGVz
dF90aW1pbmdzOiBMaXN0IG9mIFRlc3RTdGF0cyBmb3IgYWxsIHRlc3RzLgotICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGVzdCBydW4KLSAgICAgICAgIiIiCi0g
ICAgICAgICMgUmV2ZXJzZS1zb3J0IGJ5IHRoZSB0aW1lIHNwZW50IGluIER1bXBSZW5kZXJUcmVl
LgotICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5zb3J0KGxhbWJkYSBhLCBiOgotICAg
ICAgICAgICAgY21wKGIudGVzdF9ydW5fdGltZSwgYS50ZXN0X3J1bl90aW1lKSkKLQotICAgICAg
ICBudW1fcHJpbnRlZCA9IDAKLSAgICAgICAgc2xvd190ZXN0cyA9IFtdCi0gICAgICAgIHRpbWVv
dXRfb3JfY3Jhc2hfdGVzdHMgPSBbXQotICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMgPSBb
XQotICAgICAgICBmb3IgdGVzdF90dXBsZSBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoKLSAg
ICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFtZQotICAgICAgICAgICAgaXNf
dGltZW91dF9jcmFzaF9vcl9zbG93ID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3Rf
aXNfc2xvdyhmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9z
bG93ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUp
Ci0KLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzOgot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHNbZmlsZW5hbWVd
LnR5cGUKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlRJ
TUVPVVQgb3IKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25z
LkNSQVNIKToKLSAgICAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0g
VHJ1ZQotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzLmFwcGVuZCh0
ZXN0X3R1cGxlKQotCi0gICAgICAgICAgICBpZiAobm90IGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xv
dyBhbmQKLSAgICAgICAgICAgICAgICBudW1fcHJpbnRlZCA8IHByaW50aW5nLk5VTV9TTE9XX1RF
U1RTX1RPX0xPRyk6Ci0gICAgICAgICAgICAgICAgbnVtX3ByaW50ZWQgPSBudW1fcHJpbnRlZCAr
IDEKLSAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVw
bGUpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0gICAgICAgIHNl
bGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcoIiVzIHNsb3dlc3QgdGVzdHMgdGhhdCBhcmUgbm90
ICIKLSAgICAgICAgICAgICJtYXJrZWQgYXMgU0xPVyBhbmQgZGlkIG5vdCB0aW1lb3V0L2NyYXNo
OiIgJQotICAgICAgICAgICAgcHJpbnRpbmcuTlVNX1NMT1dfVEVTVFNfVE9fTE9HLCB1bmV4cGVj
dGVkX3Nsb3dfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQot
ICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGltaW5nKCJUZXN0cyBtYXJrZWQgYXMgU0xP
VzoiLCBzbG93X3Rlc3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikK
LSAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygiVGVzdHMgdGhhdCB0aW1lZCBv
dXQgb3IgY3Jhc2hlZDoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXRfb3JfY3Jhc2hfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5n
KCIiKQotCi0gICAgZGVmIF9wcmludF90ZXN0X2xpc3RfdGltaW5nKHNlbGYsIHRpdGxlLCB0ZXN0
X2xpc3QpOgotICAgICAgICAiIiJQcmludCB0aW1pbmcgaW5mbyBmb3IgZWFjaCB0ZXN0LgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGl0bGU6IHNlY3Rpb24gaGVhZGluZwotICAgICAgICAg
IHRlc3RfbGlzdDogdGVzdHMgdGhhdCBmYWxsIGluIHRoaXMgc2VjdGlvbgotICAgICAgICAiIiIK
LSAgICAgICAgaWYgc2VsZi5fcHJpbnRlci5kaXNhYmxlZCgnc2xvd2VzdCcpOgotICAgICAgICAg
ICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcodGl0bGUpCi0g
ICAgICAgIGZvciB0ZXN0X3R1cGxlIGluIHRlc3RfbGlzdDoKLSAgICAgICAgICAgIGZpbGVuYW1l
ID0gdGVzdF90dXBsZS5maWxlbmFtZVtsZW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5s
YXlvdXRfdGVzdHNfZGlyKCkpICsgMTpdCi0gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1l
LnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICAgICAgdGVzdF9ydW5fdGltZSA9IHJvdW5kKHRl
c3RfdHVwbGUudGVzdF9ydW5fdGltZSwgMSkKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfdGltaW5nKCIgICVzIHRvb2sgJXMgc2Vjb25kcyIgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lKSkKLQotICAgIGRlZiBf
cHJpbnRfZGlyZWN0b3J5X3RpbWluZ3Moc2VsZiwgZGlyZWN0b3J5X3Rlc3RfdGltaW5ncyk6Ci0g
ICAgICAgICIiIlByaW50IHRpbWluZyBpbmZvIGJ5IGRpcmVjdG9yeSBmb3IgYW55IGRpcmVjdG9y
aWVzIHRoYXQKLSAgICAgICAgdGFrZSA+IDEwIHNlY29uZHMgdG8gcnVuLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nOiB0aW1lIGluZm8gZm9yIGVhY2gg
ZGlyZWN0b3J5Ci0gICAgICAgICIiIgotICAgICAgICB0aW1pbmdzID0gW10KLSAgICAgICAgZm9y
IGRpcmVjdG9yeSBpbiBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOgotICAgICAgICAgICAgbnVtX3Rl
c3RzLCB0aW1lX2Zvcl9kaXJlY3RvcnkgPSBkaXJlY3RvcnlfdGVzdF90aW1pbmdzW2RpcmVjdG9y
eV0KLSAgICAgICAgICAgIHRpbWluZ3MuYXBwZW5kKChyb3VuZCh0aW1lX2Zvcl9kaXJlY3Rvcnks
IDEpLCBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Rlc3RzKSkK
LSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Rp
bWluZygiVGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3JpZXM6IikKLSAgICAgICAg
bWluX3NlY29uZHNfdG9fcHJpbnQgPSAxMAotICAgICAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6
Ci0gICAgICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190b19wcmludDoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygKLSAgICAgICAgICAgICAgICAg
ICAgIiAgJXMgdG9vayAlcyBzZWNvbmRzIHRvIHJ1biAlcyB0ZXN0cy4iICUgKHRpbWluZ1sxXSwK
LSAgICAgICAgICAgICAgICAgICAgdGltaW5nWzBdLCB0aW1pbmdbMl0pKQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZygiIikKLQotICAgIGRlZiBfcHJpbnRfc3RhdGlzdGljc19m
b3JfdGVzdF90aW1pbmdzKHNlbGYsIHRpdGxlLCB0aW1pbmdzKToKLSAgICAgICAgIiIiUHJpbnRz
IHRoZSBtZWRpYW4sIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgdmFsdWVzIGlu
Ci0gICAgICAgIHRpbWluZ3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB0aXRsZTogVGl0
bGUgZm9yIHRoZXNlIHRpbWluZ3MuCi0gICAgICAgICAgdGltaW5nczogQSBsaXN0IG9mIGZsb2F0
cyByZXByZXNlbnRpbmcgdGltZXMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3RpbWluZyh0aXRsZSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAgICBu
dW1fdGVzdHMgPSBsZW4odGltaW5ncykKLSAgICAgICAgaWYgbm90IG51bV90ZXN0czoKLSAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBwZXJjZW50aWxlOTAgPSB0aW1pbmdzW2ludCguOSAqIG51
bV90ZXN0cyldCi0gICAgICAgIHBlcmNlbnRpbGU5OSA9IHRpbWluZ3NbaW50KC45OSAqIG51bV90
ZXN0cyldCi0KLSAgICAgICAgaWYgbnVtX3Rlc3RzICUgMiA9PSAxOgotICAgICAgICAgICAgbWVk
aWFuID0gdGltaW5nc1soKG51bV90ZXN0cyAtIDEpIC8gMikgLSAxXQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDIgLSAxXQotICAgICAgICAg
ICAgdXBwZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDJdCi0gICAgICAgICAgICBtZWRpYW4gPSAo
ZmxvYXQobG93ZXIgKyB1cHBlcikpIC8gMgotCi0gICAgICAgIG1lYW4gPSBzdW0odGltaW5ncykg
LyBudW1fdGVzdHMKLQotICAgICAgICBmb3IgdGltZSBpbiB0aW1pbmdzOgotICAgICAgICAgICAg
c3VtX29mX2RldmlhdGlvbnMgPSBtYXRoLnBvdyh0aW1lIC0gbWVhbiwgMikKLQotICAgICAgICBz
dGRfZGV2aWF0aW9uID0gbWF0aC5zcXJ0KHN1bV9vZl9kZXZpYXRpb25zIC8gbnVtX3Rlc3RzKQot
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBNZWRpYW46ICAgICAgICAgICU2
LjNmIiAlIG1lZGlhbikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgTWVh
bjogICAgICAgICAgICAlNi4zZiIgJSBtZWFuKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZygiICA5MHRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5MCkKLSAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgOTl0aCBwZXJjZW50aWxlOiAlNi4zZiIg
JSBwZXJjZW50aWxlOTkpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIFN0
YW5kYXJkIGRldjogICAgJTYuM2YiICUgc3RkX2RldmlhdGlvbikKLSAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF90aW1pbmcoIiIpCi0KLSAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1tYXJ5KHNl
bGYsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUHJpbnQgYSBzaG9ydCBzdW1tYXJ5IGFi
b3V0IGhvdyBtYW55IHRlc3RzIHBhc3NlZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5OiBpbmZvcm1hdGlvbiB0byBsb2cKLSAgICAgICAgIiIiCi0gICAgICAgIGZh
aWxlZCA9IGxlbihyZXN1bHRfc3VtbWFyeS5mYWlsdXJlcykKLSAgICAgICAgc2tpcHBlZCA9IGxl
bigKLSAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Rlc3Rf
ZXhwZWN0YXRpb25zLlNLSVBdKQotICAgICAgICB0b3RhbCA9IHJlc3VsdF9zdW1tYXJ5LnRvdGFs
Ci0gICAgICAgIHBhc3NlZCA9IHRvdGFsIC0gZmFpbGVkIC0gc2tpcHBlZAotICAgICAgICBwY3Rf
cGFzc2VkID0gMC4wCi0gICAgICAgIGlmIHRvdGFsID4gMDoKLSAgICAgICAgICAgIHBjdF9wYXNz
ZWQgPSBmbG9hdChwYXNzZWQpICogMTAwIC8gdG90YWwKLQotICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIj0+
IFJlc3VsdHM6ICVkLyVkIHRlc3RzIHBhc3NlZCAoJS4xZiUlKSIgJQotICAgICAgICAgICAgICAg
ICAgICAgKHBhc3NlZCwgdG90YWwsIHBjdF9wYXNzZWQpKQotICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnlfZW50
cnkocmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5OT1csICJU
ZXN0cyB0byBiZSBmaXhlZCIpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwo
IiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJlc3VsdF9zdW1t
YXJ5LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWCwKLSAgICAgICAgICAg
ICJUZXN0cyB0aGF0IHdpbGwgb25seSBiZSBmaXhlZCBpZiB0aGV5IGNyYXNoIChXT05URklYKSIp
Ci0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQotCi0gICAgZGVmIF9wcmlu
dF9yZXN1bHRfc3VtbWFyeV9lbnRyeShzZWxmLCByZXN1bHRfc3VtbWFyeSwgdGltZWxpbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKToKLSAgICAgICAgIiIi
UHJpbnQgYSBzdW1tYXJ5IGJsb2NrIG9mIHJlc3VsdHMgZm9yIGEgcGFydGljdWxhciB0aW1lbGlu
ZSBvZiB0ZXN0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1
bW1hcnkgdG8gcHJpbnQgcmVzdWx0cyBmb3IKLSAgICAgICAgICB0aW1lbGluZTogdGhlIHRpbWVs
aW5lIHRvIHByaW50IHJlc3VsdHMgZm9yIChOT1QsIFdPTlRGSVgsIGV0Yy4pCi0gICAgICAgICAg
aGVhZGluZzogYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB0aW1lbGluZQotICAgICAgICAi
IiIKLSAgICAgICAgdG90YWwgPSBsZW4ocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVb
dGltZWxpbmVdKQotICAgICAgICBub3RfcGFzc2luZyA9ICh0b3RhbCAtCi0gICAgICAgICAgIGxl
bihyZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0aW9ucy5Q
QVNTXSAmCi0gICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0
aW1lbGluZV0pKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiPT4gJXMgKCVk
KToiICUgKGhlYWRpbmcsIG5vdF9wYXNzaW5nKSkKLQotICAgICAgICBmb3IgcmVzdWx0IGluIFRl
c3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX09SREVSOgotICAgICAgICAgICAgaWYgcmVz
dWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6Ci0gICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIHJlc3VsdHMgPSAocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRp
b25bcmVzdWx0XSAmCi0gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3Rz
X2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKLSAgICAgICAgICAgIGRlc2MgPSBUZXN0RXhwZWN0YXRp
b25zRmlsZS5FWFBFQ1RBVElPTl9ERVNDUklQVElPTlNbcmVzdWx0XQotICAgICAgICAgICAgaWYg
bm90X3Bhc3NpbmcgYW5kIGxlbihyZXN1bHRzKToKLSAgICAgICAgICAgICAgICBwY3QgPSBsZW4o
cmVzdWx0cykgKiAxMDAuMCAvIG5vdF9wYXNzaW5nCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF9hY3R1YWwoIiAgJTVkICUtMjRzICglNC4xZiUlKSIgJQotICAgICAgICAgICAg
ICAgICAgICAobGVuKHJlc3VsdHMpLCBkZXNjW2xlbihyZXN1bHRzKSAhPSAxXSwgcGN0KSkKLQot
ICAgIGRlZiBfY29weV9yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKLSAgICAgICAgYmFzZV9kaXIg
PSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnZmFzdCcs
ICdoYXJuZXNzJykKLSAgICAgICAgcmVzdWx0c19maWxlID0gc2VsZi5fZnMuam9pbihiYXNlX2Rp
ciwgJ3Jlc3VsdHMuaHRtbCcpCi0gICAgICAgICMgRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGlm
IHRoaXMgZG9lc24ndCBleGlzdCAoZS5nLiwgaW4gdW5pdCB0ZXN0cyk/Ci0gICAgICAgIGlmIHNl
bGYuX2ZzLmV4aXN0cyhyZXN1bHRzX2ZpbGUpOgotICAgICAgICAgICAgc2VsZi5fZnMuY29weWZp
bGUocmVzdWx0c19maWxlLCBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAi
cmVzdWx0cy5odG1sIikpCi0KLSAgICBkZWYgX3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwg
cmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJTaG93cyB0aGUgcmVzdWx0cy5odG1sIHBhZ2Uu
IiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZnVsbF9yZXN1bHRzX2h0bWw6Ci0gICAgICAg
ICAgICB0ZXN0X2ZpbGVzID0gcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMua2V5cygpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1
cmVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLSAgICAgICAgICAgIHRl
c3RfZmlsZXMgPSB1bmV4cGVjdGVkX2ZhaWx1cmVzLmtleXMoKQotCi0gICAgICAgIGlmIG5vdCBs
ZW4odGVzdF9maWxlcyk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICByZXN1bHRzX2Zp
bGVuYW1lID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInJlc3VsdHMu
aHRtbCIpCi0gICAgICAgIHNlbGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRz
X2ZpbGVuYW1lKQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnVGVzdFJ1
bm5lcicKLQotICAgIGRlZiBpc19kb25lKHNlbGYpOgotICAgICAgICB3b3JrZXJfc3RhdGVzID0g
c2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKQotICAgICAgICByZXR1cm4gd29ya2VyX3N0YXRl
cyBhbmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcl9zdGF0ZSkgZm9yIHdvcmtlcl9z
dGF0ZSBpbiB3b3JrZXJfc3RhdGVzKQotCi0gICAgZGVmIF93b3JrZXJfaXNfZG9uZShzZWxmLCB3
b3JrZXJfc3RhdGUpOgotICAgICAgICB0ID0gdGltZS50aW1lKCkKLSAgICAgICAgaWYgd29ya2Vy
X3N0YXRlLmRvbmUgb3Igd29ya2VyX3N0YXRlLndlZGdlZDoKLSAgICAgICAgICAgIHJldHVybiBU
cnVlCi0KLSAgICAgICAgbmV4dF90aW1lb3V0ID0gd29ya2VyX3N0YXRlLm5leHRfdGltZW91dAot
ICAgICAgICBXRURHRV9QQURESU5HID0gNDAuMAotICAgICAgICBpZiBuZXh0X3RpbWVvdXQgYW5k
IHQgPiBuZXh0X3RpbWVvdXQgKyBXRURHRV9QQURESU5HOgotICAgICAgICAgICAgX2xvZy5lcnJv
cignJykKLSAgICAgICAgICAgIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5sb2dfd2Vk
Z2VkX3dvcmtlcih3b3JrZXJfc3RhdGUuY3VycmVudF90ZXN0X25hbWUpCi0gICAgICAgICAgICBf
bG9nLmVycm9yKCcnKQotICAgICAgICAgICAgd29ya2VyX3N0YXRlLndlZGdlZCA9IFRydWUKLSAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGNh
bmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dv
cmtlcl9zdGF0ZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICB3b3JrZXJfc3RhdGUud29ya2VyX2Nv
bm5lY3Rpb24uY2FuY2VsKCkKLQotICAgIGRlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYsIHNv
dXJjZSwgdGVzdF9pbmZvLCBoYW5nX3RpbWVvdXQpOgotICAgICAgICB3b3JrZXJfc3RhdGUgPSBz
ZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLmN1cnJlbnRf
dGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfaW5mby5m
aWxlbmFtZSkKLSAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGltZW91dCA9IHRpbWUudGltZSgp
ICsgaGFuZ190aW1lb3V0Ci0KLSAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc291cmNlKToKLSAg
ICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCi0gICAgICAg
IHdvcmtlcl9zdGF0ZS5kb25lID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2Vs
Ziwgc291cmNlLCBleGNlcHRpb25faW5mbyk6Ci0gICAgICAgIGV4Y2VwdGlvbl90eXBlLCBleGNl
cHRpb25fdmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBleGNlcHRpb25faW5mbwotICAgICAg
ICByYWlzZSBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25fdHJhY2Vi
YWNrCi0KLSAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX2xpc3Qoc2VsZiwgc291cmNlLCBsaXN0X25h
bWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKToKLSAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHNb
bGlzdF9uYW1lXSA9IChudW1fdGVzdHMsIGVsYXBzZWRfdGltZSkKLQotICAgIGRlZiBoYW5kbGVf
ZmluaXNoZWRfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToKLSAgICAg
ICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCi0gICAgICAgIHdv
cmtlcl9zdGF0ZS5uZXh0X3RpbWVvdXQgPSBOb25lCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5jdXJy
ZW50X3Rlc3RfbmFtZSA9IE5vbmUKLSAgICAgICAgd29ya2VyX3N0YXRlLnN0YXRzWyd0b3RhbF90
aW1lJ10gKz0gZWxhcHNlZF90aW1lCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5zdGF0c1snbnVtX3Rl
c3RzJ10gKz0gMQotCi0gICAgICAgIGlmIHdvcmtlcl9zdGF0ZS53ZWRnZWQ6Ci0gICAgICAgICAg
ICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBoYXZlIG91ciB0aW1lb3V0cyB0dW5lZCBw
cm9wZXJseS4KLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIHVud2VkZ2VkIiwgc291cmNlKQot
Ci0gICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzLmFwcGVuZChyZXN1bHQpCi0gICAgICAgIHNlbGYu
X3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnks
IHJlc3VsdCkKLQotCi1kZWYgcmVhZF90ZXN0X2ZpbGVzKGZzLCBmaWxlcyk6Ci0gICAgdGVzdHMg
PSBbXQotICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBm
aWxlX2NvbnRlbnRzID0gZnMucmVhZF90ZXh0X2ZpbGUoZmlsZSkuc3BsaXQoJ1xuJykKLSAgICAg
ICAgICAgIGZvciBsaW5lIGluIGZpbGVfY29udGVudHM6Ci0gICAgICAgICAgICAgICAgbGluZSA9
IHRlc3RfZXhwZWN0YXRpb25zLnN0cmlwX2NvbW1lbnRzKGxpbmUpCi0gICAgICAgICAgICAgICAg
aWYgbGluZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKGxpbmUpCi0gICAgICAg
IGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9F
TlQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKLSAgICAgICAgICAgICAgICBf
bG9nLmNyaXRpY2FsKCctLXRlc3QtbGlzdCBmaWxlICIlcyIgbm90IGZvdW5kJyAlIGZpbGUpCi0g
ICAgICAgICAgICByYWlzZQotICAgIHJldHVybiB0ZXN0cwotCi0KLWNsYXNzIF9Xb3JrZXJTdGF0
ZShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgZm9yIHRoZSBUZXN0UnVubmVyL21hbmFnZXIgdG8g
dXNlIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlCi0gICAgb2YgdGhlIHdvcmtlcnMuIiIiCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bWJlciwgd29ya2VyX2Nvbm5lY3Rpb24pOgotICAgICAg
ICBzZWxmLndvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAgc2Vs
Zi5udW1iZXIgPSBudW1iZXIKLSAgICAgICAgc2VsZi5kb25lID0gRmFsc2UKLSAgICAgICAgc2Vs
Zi5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKLSAgICAgICAgc2VsZi5uZXh0X3RpbWVvdXQgPSBO
b25lCi0gICAgICAgIHNlbGYud2VkZ2VkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zdGF0cyA9IHt9
Ci0gICAgICAgIHNlbGYuc3RhdHNbJ25hbWUnXSA9IHdvcmtlcl9jb25uZWN0aW9uLm5hbWUKLSAg
ICAgICAgc2VsZi5zdGF0c1snbnVtX3Rlc3RzJ10gPSAwCi0gICAgICAgIHNlbGYuc3RhdHNbJ3Rv
dGFsX3RpbWUnXSA9IDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICJfV29ya2VyU3RhdGUoIiArIHN0cihzZWxmLl9fZGljdF9fKSArICIpIgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
dW5uZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODI1NjRkMjgwMDBlZjRjYzE4ZTQxYjg5ZTA2ZTBjNjdlZWQxZDhmMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVz
dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0j
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1
KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVz
dHMgZm9yIFRlc3RSdW5uZXIoKS4iIiIKLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCi1mcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkubW9jayBpbXBvcnQgTW9jawotCi1pbXBvcnQgdGVzdF9ydW5uZXIKLQotCi1jbGFz
cyBUZXN0UnVubmVyV3JhcHBlcih0ZXN0X3J1bm5lci5UZXN0UnVubmVyKToKLSAgICBkZWYgX2dl
dF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiB0
ZXN0X2ZpbGUKLQotCi1jbGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgZGVmIHRlc3Rfc2hhcmRfdGVzdHMoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IF9zaGFy
ZF90ZXN0cyBpbiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyIHJlYWxseQotICAgICAgICAjIHB1dCB0
aGUgaHR0cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCi0gICAgICAgIHBvcnQgPSBNb2NrKCkK
LSAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3Rl
bSgpCi0gICAgICAgIHJ1bm5lciA9IFRlc3RSdW5uZXJXcmFwcGVyKHBvcnQ9cG9ydCwgb3B0aW9u
cz1Nb2NrKCksCi0gICAgICAgICAgICBwcmludGVyPU1vY2soKSkKLQotICAgICAgICB0ZXN0X2xp
c3QgPSBbCi0gICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0
bSIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwiLAot
ICAgICAgICAgICJMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5v
LXJlZnJlc2guaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93
ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCIsCi0g
ICAgICAgICAgIkxheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVk
LXhtbC1jb250ZW50LXR5cGVzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwiLAotICAgICAgICAgICJMYXlv
dXRUZXN0cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5odG1sIiwKLSAg
ICAgICAgICAiTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQwNi5odG1sIiwKLSAgICAgICAgXQotCi0gICAgICAgIGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBf
bG9jayA9IHNldChbCi0gICAgICAgICAgJ0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmlj
b2RlLmh0bScsCi0gICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmll
dy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAgICAnTGF5b3V0VGVzdHMvd2Vic29j
a2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnLAotICAgICAgICAgICdM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVu
dC10eXBlcy5odG1sJywKLSAgICAgICAgXSkKLQotICAgICAgICAjIEZJWE1FOiBJZGVhbGx5IHRo
ZSBIVFRQIHRlc3RzIGRvbid0IGhhdmUgdG8gYWxsIGJlIGluIG9uZSBzaGFyZC4KLSAgICAgICAg
c2luZ2xlX3RocmVhZF9yZXN1bHRzID0gcnVubmVyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIEZh
bHNlKQotICAgICAgICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHMo
dGVzdF9saXN0LCBUcnVlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0
dHBfbG9jayIsIHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChzaW5nbGVfdGhyZWFkX3Jl
c3VsdHNbMF1bMV0pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xv
Y2siLCBtdWx0aV90aHJlYWRfcmVzdWx0c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1sw
XVsxXSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWlu
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5CmluZGV4IGUzZDVlYmJhNGJhYWE1MTBhY2UxNDQ0ZTU4MGQzZWYyMjg5
ZjQxZDguLjUzZTJlMzA5Y2Q5MWJkZTA2MjI4MDM4NzQ5NDU1YWU3MzBlYjQ1YzYgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weQpAQCAtMzcsOSArMzcsMTAgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCiBpbXBv
cnQgc3lzCiAKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0
b3IKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCi1mcm9tIGxheW91dF9wYWNr
YWdlIGltcG9ydCB0ZXN0X3J1bm5lcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0
IGxheW91dF9wYWNrYWdlCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2Fn
ZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCitmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgbWFuYWdlcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IHVzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgc2lt
cGxlanNvbgpAQCAtODgsMzIgKzg5LDMyIEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywg
cmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwKICAgICAjIGluIGEgdHJ5L2ZpbmFsbHkgdG8gZW5z
dXJlIHRoYXQgd2UgY2xlYW4gdXAgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4KICAgICBudW1f
dW5leHBlY3RlZF9yZXN1bHRzID0gLTEKICAgICB0cnk6Ci0gICAgICAgIHJ1bm5lciA9IHRlc3Rf
cnVubmVyLlRlc3RSdW5uZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKLSAgICAgICAgcnVubmVy
Ll9wcmludF9jb25maWcoKQorICAgICAgICBtYW5hZ2VyID0gbGF5b3V0X3BhY2thZ2UubWFuYWdl
ci5NYW5hZ2VyKHBvcnQsIG9wdGlvbnMsIHByaW50ZXIpCisgICAgICAgIG1hbmFnZXIuX3ByaW50
X2NvbmZpZygpCiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNvbGxlY3RpbmcgdGVz
dHMgLi4uIikKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcnVubmVyLmNvbGxlY3RfdGVzdHMo
YXJncywgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpCisgICAgICAgICAgICBtYW5hZ2VyLmNvbGxl
Y3RfdGVzdHMoYXJncywgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpCiAgICAgICAgIGV4Y2VwdCBJ
T0Vycm9yLCBlOgogICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIGlmIG9w
dGlvbnMubGludF90ZXN0X2ZpbGVzOgotICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5saW50KCkK
KyAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyLmxpbnQoKQogCiAgICAgICAgIHByaW50ZXIucHJp
bnRfdXBkYXRlKCJQYXJzaW5nIGV4cGVjdGF0aW9ucyAuLi4iKQotICAgICAgICBydW5uZXIucGFy
c2VfZXhwZWN0YXRpb25zKCkKKyAgICAgICAgbWFuYWdlci5wYXJzZV9leHBlY3RhdGlvbnMoKQog
CiAgICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJDaGVja2luZyBidWlsZCAuLi4iKQotICAg
ICAgICBpZiBub3QgcG9ydC5jaGVja19idWlsZChydW5uZXIubmVlZHNfaHR0cCgpKToKKyAgICAg
ICAgaWYgbm90IHBvcnQuY2hlY2tfYnVpbGQobWFuYWdlci5uZWVkc19odHRwKCkpOgogICAgICAg
ICAgICAgX2xvZy5lcnJvcigiQnVpbGQgY2hlY2sgZmFpbGVkIikKICAgICAgICAgICAgIHJldHVy
biAtMQogCi0gICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gcnVubmVyLnNldF91cF9ydW4oKQorICAg
ICAgICByZXN1bHRfc3VtbWFyeSA9IG1hbmFnZXIuc2V0X3VwX3J1bigpCiAgICAgICAgIGlmIHJl
c3VsdF9zdW1tYXJ5OgotICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9IHJ1bm5l
ci5ydW4ocmVzdWx0X3N1bW1hcnkpCi0gICAgICAgICAgICBydW5uZXIuY2xlYW5fdXBfcnVuKCkK
KyAgICAgICAgICAgIG51bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSBtYW5hZ2VyLnJ1bihyZXN1bHRf
c3VtbWFyeSkKKyAgICAgICAgICAgIG1hbmFnZXIuY2xlYW5fdXBfcnVuKCkKICAgICAgICAgICAg
IF9sb2cuZGVidWcoIlRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogJWQiICUKICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cykKICAgICBmaW5hbGx5OgpA
QCAtMTQ5LDkgKzE1MCw5IEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0X29iaiwg
b3B0aW9ucyk6CiAKICAgICBpZiBub3Qgb3B0aW9ucy50aW1lX291dF9tczoKICAgICAgICAgaWYg
b3B0aW9ucy5jb25maWd1cmF0aW9uID09ICJEZWJ1ZyI6Ci0gICAgICAgICAgICBvcHRpb25zLnRp
bWVfb3V0X21zID0gc3RyKDIgKiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyLkRFRkFVTFRfVEVTVF9U
SU1FT1VUX01TKQorICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cigyICogbWFu
YWdlci5NYW5hZ2VyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cih0ZXN0X3J1bm5lci5UZXN0UnVubmVy
LkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQorICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9t
cyA9IHN0cihtYW5hZ2VyLk1hbmFnZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCiAKICAgICBv
cHRpb25zLnNsb3dfdGltZV9vdXRfbXMgPSBzdHIoNSAqIGludChvcHRpb25zLnRpbWVfb3V0X21z
KSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90658</attachid>
            <date>2011-04-21 20:19:53 -0700</date>
            <delta_ts>2011-04-21 20:24:38 -0700</delta_ts>
            <desc>raw git diff of patch, to pick up the rename, rebased to HEAD</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>68732</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3N2I0
YTBhLi5iMjAxZGZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDQtMTcgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IG9ic29sZXRlIG9sZCBjb2RlLCBwYXJ0IDMg
LSByZW5hbWUgdGVzdF9ydW5uZXIgdG8gbWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg3NTQKKworICAgICAgICB0ZXN0X3J1bm5lciBoYXNu
J3QgYmVlbiBhIGdyZWF0IG5hbWUgZm9yIHNvbWUgdGltZSwgc2luY2UgYWxsIG9mCisgICAgICAg
IHRoZSB0ZXN0IHJ1bm5pbmcgaXMgYWN0dWFsbHkgZG9uZSBpbiB3b3JrZXIgYW5kCisgICAgICAg
IHNpbmdsZV90ZXN0X3J1bm5lci4gUmVuYW1lIHRvIG1hbmFnZXIgdG8gbWF0Y2ggdGhlIHRlcm1p
bm9sb2d5CisgICAgICAgIGVsc2V3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5p
dHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5OiBSZW1v
dmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTEtMDQtMjEg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3Qu
cHkKaW5kZXggOGY2M2VkZC4uMDQwZjgyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJp
bnRpbmdfdW5pdHRlc3QucHkKQEAgLTQyLDcgKzQyLDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHJlc3VsdF9zdW1tYXJ5CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1
cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQgdGVzdF9ydW5uZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCBtYW5hZ2VyCiAKIAogZGVmIGdldF9vcHRpb25zKGFyZ3MpOgpAQCAtNTEzLDcgKzUx
Myw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcpLCBUcnVl
KQogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RpbWVvdXQuaHRtbCcpLCBUcnVlKQogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChz
ZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwgVHJ1ZSkKLSAg
ICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHRlc3RfcnVubmVyLnN1bW1hcml6ZV9yZXN1
bHRzKHNlbGYuX3BvcnQsIGV4cCwgcnMsIHJldHJ5LCB0ZXN0X3RpbWluZ3M9e30sIG9ubHlfdW5l
eHBlY3RlZD1UcnVlKQorICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gbWFuYWdlci5z
dW1tYXJpemVfcmVzdWx0cyhzZWxmLl9wb3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90aW1pbmdz
PXt9LCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSkKICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVk
X3Jlc3VsdHMKIAogICAgICAgICB0ZXN0cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJl
cy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI2ZGI2MC4uMDAwMDAwMAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1
bm5lci5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzMjEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUt
c3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIi
IgotVGhlIFRlc3RSdW5uZXIgY2xhc3MgcnVucyBhIHNlcmllcyBvZiB0ZXN0cyAoVGVzdFR5cGUg
aW50ZXJmYWNlKSBhZ2FpbnN0IGEgc2V0Ci1vZiB0ZXN0IGZpbGVzLiAgSWYgYSB0ZXN0IGZpbGUg
ZmFpbHMgYSBUZXN0VHlwZSwgaXQgcmV0dXJucyBhIGxpc3QgVGVzdEZhaWx1cmUKLW9iamVjdHMg
dG8gdGhlIFRlc3RSdW5uZXIuICBUaGUgVGVzdFJ1bm5lciB0aGVuIGFnZ3JlZ2F0ZXMgdGhlIFRl
c3RGYWlsdXJlcyB0bwotY3JlYXRlIGEgZmluYWwgcmVwb3J0LgotIiIiCi0KLWZyb20gX19mdXR1
cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvcHkKLWltcG9ydCBlcnJubwot
aW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCi1pbXBvcnQgUXVldWUKLWltcG9ydCByYW5kb20K
LWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxh
eW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19n
ZW5lcmF0b3IKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9y
dCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBwcmludGluZwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5
b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191
cGxvYWRlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0
IHdvcmtlcgotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS5yZXN1
bHRfc3VtbWFyeSBpbXBvcnQgUmVzdWx0U3VtbWFyeQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0Ci0KLWZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSB3ZWJraXRweS50b29sIGlt
cG9ydCBncmFtbWFyCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotIyBC
dWlsZGVyIGJhc2UgVVJMIHdoZXJlIHdlIGhhdmUgdGhlIGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4K
LUJVSUxERVJfQkFTRV9VUkwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJvdC9s
YXlvdXRfdGVzdF9yZXN1bHRzLyIKLQotVGVzdEV4cGVjdGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVj
dGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zRmlsZQotCi0KLWRlZiBzdW1tYXJpemVfcmVzdWx0cyhw
b3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVz
dF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQpOgotICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBl
Y3RlZCByZXN1bHRzIGFzIGEgZGljdC4KLQotICAgIEZJWE1FOiBzcGxpdCB0aGlzIGRhdGEgc3Ry
dWN0dXJlIGludG8gYSBzZXBhcmF0ZSBjbGFzcz8KLQotICAgIEFyZ3M6Ci0gICAgICAgIHBvcnRf
b2JqOiBpbnRlcmZhY2UgdG8gcG9ydC1zcGVjaWZpYyBob29rcwotICAgICAgICBleHBlY3RhdGlv
bnM6IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMgb2JqZWN0Ci0gICAgICAgIHJl
c3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCi0gICAg
ICAgIHJldHJ5X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gZmluYWwgdGVzdCBydW4gb2Yg
cmV0cmllZCB0ZXN0cwotICAgICAgICB0ZXN0X3RpbWluZ3M6IGEgbGlzdCBvZiBUZXN0UmVzdWx0
IG9iamVjdHMgd2hpY2ggY29udGFpbiB0ZXN0IHJ1bnRpbWVzIGluIHNlY29uZHMKLSAgICAgICAg
b25seV91bmV4cGVjdGVkOiB3aGV0aGVyIHRvIHJldHVybiBhIHN1bW1hcnkgb25seSBmb3IgdGhl
IHVuZXhwZWN0ZWQgcmVzdWx0cwotICAgIFJldHVybnM6Ci0gICAgICAgIEEgZGljdGlvbmFyeSBj
b250YWluaW5nIGEgc3VtbWFyeSBvZiB0aGUgdW5leHBlY3RlZCByZXN1bHRzIGZyb20gdGhlCi0g
ICAgICAgIHJ1biwgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKLSAgICAgICAgJ3ZlcnNpb24n
OiBhIHZlcnNpb24gaW5kaWNhdG9yICgxIGluIHRoaXMgdmVyc2lvbikKLSAgICAgICAgJ2ZpeGFi
bGUnOiAjIG9mIGZpeGFibGUgdGVzdHMgKE5PVyAtIFBBU1MpCi0gICAgICAgICdza2lwcGVkJzog
IyBvZiBza2lwcGVkIHRlc3RzIChOT1cgJiBTS0lQUEVEKQotICAgICAgICAnbnVtX3JlZ3Jlc3Np
b25zJzogIyBvZiBub24tZmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9mbGFreSc6ICMgb2Yg
Zmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9wYXNzZXMnOiAjIG9mIHVuZXhwZWN0ZWQgcGFz
c2VzCi0gICAgICAgICd0ZXN0cyc6IGEgZGljdCBvZiB0ZXN0cyAtPiB7J2V4cGVjdGVkJzogJy4u
LicsICdhY3R1YWwnOiAnLi4uJywgJ3RpbWVfbXMnOiAuLi59Ci0gICAgIiIiCi0gICAgcmVzdWx0
cyA9IHt9Ci0gICAgcmVzdWx0c1sndmVyc2lvbiddID0gMQotCi0gICAgdGVzdF90aW1pbmdzX21h
cCA9IGRpY3QoKHRlc3RfcmVzdWx0LmZpbGVuYW1lLCB0ZXN0X3Jlc3VsdC50ZXN0X3J1bl90aW1l
KSBmb3IgdGVzdF9yZXN1bHQgaW4gdGVzdF90aW1pbmdzKQotCi0gICAgdGJlID0gcmVzdWx0X3N1
bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRpb24KLSAgICB0YnQgPSByZXN1bHRfc3VtbWFyeS50ZXN0
c19ieV90aW1lbGluZQotICAgIHJlc3VsdHNbJ2ZpeGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBl
Y3RhdGlvbnMuTk9XXSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiZVt0ZXN0
X2V4cGVjdGF0aW9ucy5QQVNTXSkKLSAgICByZXN1bHRzWydza2lwcGVkJ10gPSBsZW4odGJ0W3Rl
c3RfZXhwZWN0YXRpb25zLk5PV10gJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
YmVbdGVzdF9leHBlY3RhdGlvbnMuU0tJUF0pCi0KLSAgICBudW1fcGFzc2VzID0gMAotICAgIG51
bV9mbGFreSA9IDAKLSAgICBudW1fcmVncmVzc2lvbnMgPSAwCi0gICAga2V5d29yZHMgPSB7fQot
ICAgIGZvciBleHBlY2F0aW9uX3N0cmluZywgZXhwZWN0YXRpb25fZW51bSBpbiBUZXN0RXhwZWN0
YXRpb25zRmlsZS5FWFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW2V4
cGVjdGF0aW9uX2VudW1dID0gZXhwZWNhdGlvbl9zdHJpbmcudXBwZXIoKQotCi0gICAgZm9yIG1v
ZGlmaWVyX3N0cmluZywgbW9kaWZpZXJfZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJ
RklFUlMuaXRlcml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW21vZGlmaWVyX2VudW1dID0gbW9k
aWZpZXJfc3RyaW5nLnVwcGVyKCkKLQotICAgIHRlc3RzID0ge30KLSAgICBvcmlnaW5hbF9yZXN1
bHRzID0gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzIGlmIG9ubHlfdW5leHBlY3Rl
ZCBlbHNlIHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHMKLQotICAgIGZvciBmaWxlbmFtZSwgcmVzdWx0
IGluIG9yaWdpbmFsX3Jlc3VsdHMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICMgTm90ZSB0aGF0IGlm
IGEgdGVzdCBjcmFzaGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdlIGlnbm9yZQotICAgICAgICAj
IHdoZXRoZXIgb3Igbm90IGl0IGNyYXNoZWQgd2hlbiB3ZSByZXRyaWVkIGl0IChpZiB3ZSByZXRy
aWVkIGl0KSwKLSAgICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVyIHRoZSByZXN1bHQgbm90IGZs
YWt5LgotICAgICAgICB0ZXN0ID0gcG9ydF9vYmoucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxl
bmFtZSkKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19z
dHJpbmcoZmlsZW5hbWUpCi0gICAgICAgIHJlc3VsdF90eXBlID0gcmVzdWx0LnR5cGUKLSAgICAg
ICAgYWN0dWFsID0gW2tleXdvcmRzW3Jlc3VsdF90eXBlXV0KLQotICAgICAgICBpZiByZXN1bHRf
dHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTOgotICAgICAgICAgICAgbnVtX3Bhc3NlcyAr
PSAxCi0gICAgICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6
Ci0gICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQotICAgICAgICBlbGlmIGZpbGVuYW1l
IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAgICAgIGlmIGZp
bGVuYW1lIG5vdCBpbiByZXRyeV9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKLSAgICAgICAg
ICAgICAgICBhY3R1YWwuZXh0ZW5kKGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmlu
ZyhmaWxlbmFtZSkuc3BsaXQoIiAiKSkKLSAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRfdHlwZSA9IHJl
dHJ5X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCi0gICAgICAgICAg
ICAgICAgaWYgcmVzdWx0X3R5cGUgIT0gcmV0cnlfcmVzdWx0X3R5cGU6Ci0gICAgICAgICAgICAg
ICAgICAgIGFjdHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0X3R5cGVdKQotICAgICAg
ICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIG51bV9yZWdyZXNzaW9ucyArPSAxCi0KLSAgICAgICAgdGVzdHNbdGVz
dF0gPSB7fQotICAgICAgICB0ZXN0c1t0ZXN0XVsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCi0gICAg
ICAgIHRlc3RzW3Rlc3RdWydhY3R1YWwnXSA9ICIgIi5qb2luKGFjdHVhbCkKLSAgICAgICAgIyBG
SVhNRTogU2V0IHRoaXMgY29ycmVjdGx5IG9uY2UgaHR0cHM6Ly93ZWJraXQub3JnL2IvMzc3Mzkg
aXMgZml4ZWQKLSAgICAgICAgIyBhbmQgb25seSBzZXQgaXQgaWYgdGhlcmUgYWN0dWFsbHkgaXMg
c3RkZXJyIGRhdGEuCi0gICAgICAgIHRlc3RzW3Rlc3RdWydoYXNfc3RkZXJyJ10gPSBGYWxzZQot
Ci0gICAgICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlwZShmKSBmb3IgZiBpbiByZXN1bHQuZmFpbHVy
ZXNdCi0gICAgICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdBdWRpbyBpbiBmYWls
dXJlX3R5cGVzOgotICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2lzX21pc3NpbmdfYXVkaW8nXSA9
IFRydWUKLQotICAgICAgICBpZiB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gg
aW4gZmFpbHVyZV90eXBlczoKLSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19yZWZ0ZXN0J10g
PSBUcnVlCi0KLSAgICAgICAgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzOgotICAgICAgICAgICAg
aWYgJ2lzX3JlZnRlc3QnIGluIHJlc3VsdC5mYWlsdXJlczoKLSAgICAgICAgICAgICAgICB0ZXN0
c1t0ZXN0XVsnaXNfcmVmdGVzdCddID0gVHJ1ZQotCi0gICAgICAgIGlmIHRlc3RfZmFpbHVyZXMu
RmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXM6Ci0gICAg
ICAgICAgICB0ZXN0c1t0ZXN0XVsnaXNfbWlzbWF0Y2hfcmVmdGVzdCddID0gVHJ1ZQotCi0gICAg
ICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQgaW4gZmFpbHVyZV90eXBl
czoKLSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19taXNzaW5nX3RleHQnXSA9IFRydWUKLQot
ICAgICAgICBpZiB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2UgaW4gZmFpbHVyZV90
eXBlcyBvciB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVf
dHlwZXM6Ci0gICAgICAgICAgICB0ZXN0c1t0ZXN0XVsnaXNfbWlzc2luZ19pbWFnZSddID0gVHJ1
ZQotCi0gICAgICAgIGlmIGZpbGVuYW1lIGluIHRlc3RfdGltaW5nc19tYXA6Ci0gICAgICAgICAg
ICB0aW1lX3NlY29uZHMgPSB0ZXN0X3RpbWluZ3NfbWFwW2ZpbGVuYW1lXQotICAgICAgICAgICAg
dGVzdHNbdGVzdF1bJ3RpbWVfbXMnXSA9IGludCgxMDAwICogdGltZV9zZWNvbmRzKQotCi0gICAg
cmVzdWx0c1sndGVzdHMnXSA9IHRlc3RzCi0gICAgcmVzdWx0c1snbnVtX3Bhc3NlcyddID0gbnVt
X3Bhc3NlcwotICAgIHJlc3VsdHNbJ251bV9mbGFreSddID0gbnVtX2ZsYWt5Ci0gICAgcmVzdWx0
c1snbnVtX3JlZ3Jlc3Npb25zJ10gPSBudW1fcmVncmVzc2lvbnMKLSAgICAjIEZJWE1FOiBJZiBu
b24tY2hyb21pdW0gcG9ydHMgc3RhcnQgdXNpbmcgYW4gZXhwZWN0YXRpb25zIGZpbGUsCi0gICAg
IyB3ZSBzaG91bGQgbWFrZSB0aGlzIGNoZWNrIG1vcmUgcm9idXN0LgotICAgIHJlc3VsdHNbJ3Vz
ZXNfZXhwZWN0YXRpb25zX2ZpbGUnXSA9IHBvcnRfb2JqLm5hbWUoKS5maW5kKCdjaHJvbWl1bScp
ICE9IC0xCi0gICAgcmVzdWx0c1snbGF5b3V0X3Rlc3RzX2RpciddID0gcG9ydF9vYmoubGF5b3V0
X3Rlc3RzX2RpcigpCi0gICAgcmVzdWx0c1snaGFzX3dkaWZmJ10gPSBwb3J0X29iai53ZGlmZl9h
dmFpbGFibGUoKQotICAgIHJlc3VsdHNbJ2hhc19wcmV0dHlfcGF0Y2gnXSA9IHBvcnRfb2JqLnBy
ZXR0eV9wYXRjaF9hdmFpbGFibGUoKQotCi0gICAgcmV0dXJuIHJlc3VsdHMKLQotCi1jbGFzcyBU
ZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hl
biBhIHRlc3QgcnVuIHNob3VsZCBiZSBzdG9wcGVkIGltbWVkaWF0ZWx5LiIiIgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZWFzb24pOgotICAgICAgICBzZWxmLnJlYXNvbiA9IHJlYXNvbgotCi0g
ICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywg
KHNlbGYucmVhc29uLCkKLQotCi1jbGFzcyBUZXN0UnVubmVyOgotICAgICIiIkEgY2xhc3MgZm9y
IG1hbmFnaW5nIHJ1bm5pbmcgYSBzZXJpZXMgb2YgdGVzdHMgb24gYSBzZXJpZXMgb2YgbGF5b3V0
Ci0gICAgdGVzdCBmaWxlcy4iIiIKLQotCi0gICAgIyBUaGUgcGVyLXRlc3QgdGltZW91dCBpbiBt
aWxsaXNlY29uZHMsIGlmIG5vIC0tdGltZS1vdXQtbXMgb3B0aW9uIHdhcwotICAgICMgZ2l2ZW4g
dG8gcnVuX3dlYmtpdF90ZXN0cy4gVGhpcyBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgZGVmYXVs
dCB0aW1lb3V0Ci0gICAgIyBpbiBEdW1wUmVuZGVyVHJlZS4KLSAgICBERUZBVUxUX1RFU1RfVElN
RU9VVF9NUyA9IDYgKiAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9u
cywgcHJpbnRlcik6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1
Y3R1cmVzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcG9ydDogYW4gb2JqZWN0IGltcGxl
bWVudGluZyBwb3J0LXNwZWNpZmljCi0gICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9m
IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVj
dCB0byByZWNvcmQgdXBkYXRlcyB0by4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3BvcnQg
PSBwb3J0Ci0gICAgICAgIHNlbGYuX2ZzID0gcG9ydC5fZmlsZXN5c3RlbQotICAgICAgICBzZWxm
Ll9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgotICAg
ICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKLQotICAgICAgICBzZWxmLkhUVFBfU1VC
RElSID0gc2VsZi5fZnMuam9pbignJywgJ2h0dHAnLCAnJykKLSAgICAgICAgc2VsZi5XRUJTT0NL
RVRfU1VCRElSID0gc2VsZi5fZnMuam9pbignJywgJ3dlYnNvY2tldCcsICcnKQotICAgICAgICBz
ZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAiTGF5b3V0VGVzdHMiICsgc2VsZi5fZnMuc2Vw
Ci0KLQotICAgICAgICAjIGRpc2FibGUgd3NzIHNlcnZlci4gbmVlZCB0byBpbnN0YWxsIHB5T3Bl
blNTTCBvbiBidWlsZGJvdHMuCi0gICAgICAgICMgc2VsZi5fd2Vic29ja2V0X3NlY3VyZV9zZXJ2
ZXIgPSB3ZWJzb2NrZXRfc2VydmVyLlB5V2ViU29ja2V0KAotICAgICAgICAjICAgICAgICBvcHRp
b25zLnJlc3VsdHNfZGlyZWN0b3J5LCB1c2VfdGxzPVRydWUsIHBvcnQ9OTMyMykKLQotICAgICAg
ICAjIGEgc2V0IG9mIHRlc3QgZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBhcyBhIGxpc3QKLSAg
ICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldCgpCi0gICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNf
bGlzdCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVldWUuUXVldWUoKQot
ICAgICAgICBzZWxmLl9yZXRyeWluZyA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3Jlc3VsdHNfZGly
ZWN0b3J5ID0gc2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpCi0KLSAgICAgICAgc2VsZi5f
YWxsX3Jlc3VsdHMgPSBbXQotICAgICAgICBzZWxmLl9ncm91cF9zdGF0cyA9IHt9Ci0gICAgICAg
IHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSBOb25lCi0KLSAgICAgICAgIyBUaGlzIG1h
cHMgd29ya2VyIG5hbWVzIHRvIHRoZSBzdGF0ZSB3ZSBhcmUgdHJhY2tpbmcgZm9yIGVhY2ggb2Yg
dGhlbS4KLSAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlcyA9IHt9Ci0KLQotICAgIGRlZiBjb2xs
ZWN0X3Rlc3RzKHNlbGYsIGFyZ3MsIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKToKLSAgICAgICAg
IiIiRmluZCBhbGwgdGhlIGZpbGVzIHRvIHRlc3QuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICBhcmdzOiBsaXN0IG9mIHRlc3QgYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZQotICAg
ICAgICAgIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzOiBsaXN0IG9mIHVuZXhwZWN0ZWQgcmVzdWx0
cyB0byByZXRlc3QsIGlmIGFueQotCi0gICAgICAgICIiIgotICAgICAgICBwYXRocyA9IHNlbGYu
X3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKGFyZ3MpCi0gICAgICAgIHBhdGhzICs9IGxhc3RfdW5l
eHBlY3RlZF9yZXN1bHRzCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVzdF9saXN0OgotICAg
ICAgICAgICAgcGF0aHMgKz0gc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMocmVhZF90ZXN0
X2ZpbGVzKHNlbGYuX2ZzLCBzZWxmLl9vcHRpb25zLnRlc3RfbGlzdCkpCi0gICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXMgPSBzZWxmLl9wb3J0LnRlc3RzKHBhdGhzKQotCi0gICAgZGVmIF9zdHJpcF90
ZXN0X2Rpcl9wcmVmaXhlcyhzZWxmLCBwYXRocyk6Ci0gICAgICAgIHJldHVybiBbc2VsZi5fc3Ry
aXBfdGVzdF9kaXJfcHJlZml4KHBhdGgpIGZvciBwYXRoIGluIHBhdGhzIGlmIHBhdGhdCi0KLSAg
ICBkZWYgX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgcGF0
aC5zdGFydHN3aXRoKHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6Ci0gICAgICAgICAgICBy
ZXR1cm4gcGF0aFtsZW4oc2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZKTpdCi0gICAgICAgIHJl
dHVybiBwYXRoCi0KLSAgICBkZWYgbGludChzZWxmKToKLSAgICAgICAgbGludF9mYWlsZWQgPSBG
YWxzZQotICAgICAgICBmb3IgdGVzdF9jb25maWd1cmF0aW9uIGluIHNlbGYuX3BvcnQuYWxsX3Rl
c3RfY29uZmlndXJhdGlvbnMoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBz
ZWxmLmxpbnRfZXhwZWN0YXRpb25zKHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGV4
Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgotICAgICAgICAgICAgICAgIGxpbnRf
ZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCi0K
LSAgICAgICAgaWYgbGludF9mYWlsZWQ6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGZh
aWxlZC4iKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgX2xvZy5pbmZvKCJMaW50
IHN1Y2NlZWRlZC4iKQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIGxpbnRfZXhwZWN0YXRp
b25zKHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgIHBvcnQgPSBzZWxmLl9wb3J0Ci0gICAgICAgIHRl
c3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAgICBwb3J0LAotICAg
ICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwKLSAg
ICAgICAgICAgIGNvbmZpZywKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2Zp
bGVzLAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKLQot
ICAgIGRlZiBwYXJzZV9leHBlY3RhdGlvbnMoc2VsZik6Ci0gICAgICAgICIiIlBhcnNlIHRoZSBl
eHBlY3RhdGlvbnMgZnJvbSB0aGUgdGVzdF9saXN0IGZpbGVzIGFuZCByZXR1cm4gYSBkYXRhCi0g
ICAgICAgIHN0cnVjdHVyZSBob2xkaW5nIHRoZW0uIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGVz
dF9saXN0IGZpbGVzIGhhdmUKLSAgICAgICAgaW52YWxpZCBzeW50YXguIiIiCi0gICAgICAgIHBv
cnQgPSBzZWxmLl9wb3J0Ci0gICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0
YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAgICBwb3J0LAotICAgICAgICAgICAg
c2VsZi5fdGVzdF9maWxlcywKLSAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwK
LSAgICAgICAgICAgIHBvcnQudGVzdF9jb25maWd1cmF0aW9uKCksCi0gICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3Rh
dGlvbnNfb3ZlcnJpZGVzKCkpCi0KLSAgICAjIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyB3YXkgdG9v
IGxvbmcgYW5kIG5lZWRzIHRvIGJlIGJyb2tlbiBpbnRvIHBpZWNlcy4KLSAgICBkZWYgcHJlcGFy
ZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYpOgotICAgICAgICAiIiJDcmVhdGUgYXBwcm9w
cmlhdGUgc3Vic2V0cyBvZiB0ZXN0IGxpc3RzIGFuZCByZXR1cm5zIGEKLSAgICAgICAgUmVzdWx0
U3VtbWFyeSBvYmplY3QuIEFsc28gcHJpbnRzIGV4cGVjdGVkIHRlc3QgY291bnRzLgotICAgICAg
ICAiIiIKLQotICAgICAgICAjIFJlbW92ZSBza2lwcGVkIC0gYm90aCBmaXhhYmxlIGFuZCBpZ25v
cmVkIC0gZmlsZXMgZnJvbSB0aGUKLSAgICAgICAgIyB0b3AtbGV2ZWwgbGlzdCBvZiBmaWxlcyB0
byB0ZXN0LgotICAgICAgICBudW1fYWxsX3Rlc3RfZmlsZXMgPSBsZW4oc2VsZi5fdGVzdF9maWxl
cykKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgiRm91bmQ6ICAlZCB0ZXN0
cyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fdGVz
dF9maWxlcykpKQotICAgICAgICBpZiBub3QgbnVtX2FsbF90ZXN0X2ZpbGVzOgotICAgICAgICAg
ICAgX2xvZy5jcml0aWNhbCgnTm8gdGVzdHMgdG8gcnVuLicpCi0gICAgICAgICAgICByZXR1cm4g
Tm9uZQotCi0gICAgICAgIHNraXBwZWQgPSBzZXQoKQotICAgICAgICBpZiBudW1fYWxsX3Rlc3Rf
ZmlsZXMgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5mb3JjZToKLSAgICAgICAgICAgIHNraXBw
ZWQgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQKQotICAgICAgICAg
ICAgc2VsZi5fdGVzdF9maWxlcyAtPSBza2lwcGVkCi0KLSAgICAgICAgIyBDcmVhdGUgYSBzb3J0
ZWQgbGlzdCBvZiB0ZXN0IGZpbGVzIHNvIHRoZSBzdWJzZXQgY2h1bmssCi0gICAgICAgICMgaWYg
dXNlZCwgY29udGFpbnMgYWxwaGFiZXRpY2FsbHkgY29uc2VjdXRpdmUgdGVzdHMuCi0gICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGxpc3Qoc2VsZi5fdGVzdF9maWxlcykKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5yYW5kb21pemVfb3JkZXI6Ci0gICAgICAgICAgICByYW5kb20uc2h1
ZmZsZShzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
ZWxmLl90ZXN0X2ZpbGVzX2xpc3Quc29ydCgpCi0KLSAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVj
aWZpZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0ZXN0cywKLSAgICAg
ICAgIyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRlc3RzLgotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxmLl9vcHRpb25zLnJ1bl9wYXJ0Ogot
ICAgICAgICAgICAgY2h1bmtfdmFsdWUgPSBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxm
Ll9vcHRpb25zLnJ1bl9wYXJ0Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9m
aWxlc19saXN0Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgKGNodW5rX251bSwg
Y2h1bmtfbGVuKSA9IGNodW5rX3ZhbHVlLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICBjaHVu
a19udW0gPSBpbnQoY2h1bmtfbnVtKQotICAgICAgICAgICAgICAgIGFzc2VydChjaHVua19udW0g
Pj0gMCkKLSAgICAgICAgICAgICAgICB0ZXN0X3NpemUgPSBpbnQoY2h1bmtfbGVuKQotICAgICAg
ICAgICAgICAgIGFzc2VydCh0ZXN0X3NpemUgPiAwKQotICAgICAgICAgICAgZXhjZXB0OgotICAg
ICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoImludmFsaWQgY2h1bmsgJyVzJyIgJSBjaHVua192
YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAjIEdldCB0
aGUgbnVtYmVyIG9mIHRlc3RzCi0gICAgICAgICAgICBudW1fdGVzdHMgPSBsZW4odGVzdF9maWxl
cykKLQotICAgICAgICAgICAgIyBHZXQgdGhlIHN0YXJ0IG9mZnNldCBvZiB0aGUgc2xpY2UuCi0g
ICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuazoKLSAgICAgICAgICAgICAgICBj
aHVua19sZW4gPSB0ZXN0X3NpemUKLSAgICAgICAgICAgICAgICAjIEluIHRoaXMgY2FzZSBjaHVu
a19udW0gY2FuIGJlIHJlYWxseSBsYXJnZS4gV2UgbmVlZAotICAgICAgICAgICAgICAgICMgdG8g
bWFrZSB0aGUgc2xhdmUgZml0IGluIHRoZSBjdXJyZW50IG51bWJlciBvZiB0ZXN0cy4KLSAgICAg
ICAgICAgICAgICBzbGljZV9zdGFydCA9IChjaHVua19udW0gKiBjaHVua19sZW4pICUgbnVtX3Rl
c3RzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgVmFsaWRhdGUgdGhlIGRh
dGEuCi0gICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rfc2l6ZSA8PSBudW1fdGVzdHMpCi0gICAg
ICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA8PSB0ZXN0X3NpemUpCi0KLSAgICAgICAgICAg
ICAgICAjIFRvIGNvdW50IHRoZSBjaHVua19sZW4sIGFuZCBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2tp
cAotICAgICAgICAgICAgICAgICMgc29tZSB0ZXN0cywgd2Ugcm91bmQgdG8gdGhlIG5leHQgdmFs
dWUgdGhhdCBmaXRzIGV4YWN0bHkKLSAgICAgICAgICAgICAgICAjIGFsbCB0aGUgcGFydHMuCi0g
ICAgICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IG51bV90ZXN0cwotICAgICAgICAgICAgICAg
IGlmIHJvdW5kZWRfdGVzdHMgJSB0ZXN0X3NpemUgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAg
cm91bmRlZF90ZXN0cyA9IChudW1fdGVzdHMgKyB0ZXN0X3NpemUgLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChudW1fdGVzdHMgJSB0ZXN0X3NpemUpKQotCi0gICAgICAg
ICAgICAgICAgY2h1bmtfbGVuID0gcm91bmRlZF90ZXN0cyAvIHRlc3Rfc2l6ZQotICAgICAgICAg
ICAgICAgIHNsaWNlX3N0YXJ0ID0gY2h1bmtfbGVuICogKGNodW5rX251bSAtIDEpCi0gICAgICAg
ICAgICAgICAgIyBJdCBkb2VzIG5vdCBtaW5kIGlmIHdlIGdvIG92ZXIgdGVzdF9zaXplLgotCi0g
ICAgICAgICAgICAjIEdldCB0aGUgZW5kIG9mZnNldCBvZiB0aGUgc2xpY2UuCi0gICAgICAgICAg
ICBzbGljZV9lbmQgPSBtaW4obnVtX3Rlc3RzLCBzbGljZV9zdGFydCArIGNodW5rX2xlbikKLQot
ICAgICAgICAgICAgZmlsZXMgPSB0ZXN0X2ZpbGVzW3NsaWNlX3N0YXJ0OnNsaWNlX2VuZF0KLQot
ICAgICAgICAgICAgdGVzdHNfcnVuX21zZyA9ICdSdW5uaW5nOiAlZCB0ZXN0cyAoY2h1bmsgc2xp
Y2UgWyVkOiVkXSBvZiAlZCknICUgKAotICAgICAgICAgICAgICAgIChzbGljZV9lbmQgLSBzbGlj
ZV9zdGFydCksIHNsaWNlX3N0YXJ0LCBzbGljZV9lbmQsIG51bV90ZXN0cykKLSAgICAgICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQodGVzdHNfcnVuX21zZykKLQotICAgICAgICAg
ICAgIyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgYW5kIHdlIGRvbid0IGhhdmUgZW5vdWdoIHRlc3Rz
LCB3ZSBydW4gc29tZQotICAgICAgICAgICAgIyBmcm9tIHRoZSBiZWdpbm5pbmcuCi0gICAgICAg
ICAgICBpZiBzbGljZV9lbmQgLSBzbGljZV9zdGFydCA8IGNodW5rX2xlbjoKLSAgICAgICAgICAg
ICAgICBleHRyYSA9IGNodW5rX2xlbiAtIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCkKLSAgICAg
ICAgICAgICAgICBleHRyYV9tc2cgPSAoJyAgIGxhc3QgY2h1bmsgaXMgcGFydGlhbCwgYXBwZW5k
aW5nIFswOiVkXScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhKQotICAgICAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoZXh0cmFfbXNnKQotICAgICAg
ICAgICAgICAgIHRlc3RzX3J1bl9tc2cgKz0gIlxuIiArIGV4dHJhX21zZwotICAgICAgICAgICAg
ICAgIGZpbGVzLmV4dGVuZCh0ZXN0X2ZpbGVzWzA6ZXh0cmFdKQotICAgICAgICAgICAgdGVzdHNf
cnVuX2ZpbGVuYW1lID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInRl
c3RzX3J1bi50eHQiKQotICAgICAgICAgICAgc2VsZi5fZnMud3JpdGVfdGV4dF9maWxlKHRlc3Rz
X3J1bl9maWxlbmFtZSwgdGVzdHNfcnVuX21zZykKLQotICAgICAgICAgICAgbGVuX3NraXBfY2h1
bmsgPSBpbnQobGVuKGZpbGVzKSAqIGxlbihza2lwcGVkKSAvCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdChsZW4oc2VsZi5fdGVzdF9maWxlcykpKQotICAgICAgICAgICAg
c2tpcF9jaHVua19saXN0ID0gbGlzdChza2lwcGVkKVswOmxlbl9za2lwX2NodW5rXQotICAgICAg
ICAgICAgc2tpcF9jaHVuayA9IHNldChza2lwX2NodW5rX2xpc3QpCi0KLSAgICAgICAgICAgICMg
VXBkYXRlIGV4cGVjdGF0aW9ucyBzbyB0aGF0IHRoZSBzdGF0cyBhcmUgY2FsY3VsYXRlZCBjb3Jy
ZWN0bHkuCi0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcGFzcyBhIGxpc3QgdGhhdCBpbmNsdWRl
cyB0aGUgcmlnaHQgIyBvZiBza2lwcGVkIGZpbGVzCi0gICAgICAgICAgICAjIHRvIFBhcnNlRXhw
ZWN0YXRpb25zIHNvIHRoYXQgUmVzdWx0U3VtbWFyeSgpIHdpbGwgZ2V0IHRoZSBjb3JyZWN0Ci0g
ICAgICAgICAgICAjIHN0YXRzLiBTbywgd2UgYWRkIGluIHRoZSBzdWJzZXQgb2Ygc2tpcHBlZCBm
aWxlcywgYW5kIHRoZW4KLSAgICAgICAgICAgICMgc3VidHJhY3QgdGhlbSBiYWNrIG91dC4KLSAg
ICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzICsgc2tpcF9jaHVua19saXN0
Ci0gICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KHNlbGYuX3Rlc3RfZmlsZXNfbGlz
dCkKLQotICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMoKQotCi0gICAgICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KGZpbGVzKQotICAgICAgICAgICAgc2VsZi5fdGVzdF9m
aWxlc19saXN0ID0gZmlsZXMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNraXBfY2h1bmsg
PSBza2lwcGVkCi0KLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYu
X2V4cGVjdGF0aW9ucywKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgfCBza2lwX2NodW5r
KQotICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1
bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikKLSAg
ICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5
LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkFJTCwgImZhaWx1cmVzIikKLSAgICAg
ICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkxBS1ksICJmbGFreSIpCi0gICAgICAgIHNl
bGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKLSAgICAg
ICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lwcGVkIikKLQotICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLmZvcmNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBl
Y3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdza2lwcyAoLS1mb3JjZSknKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgcnVuIHRoZSBza2lwcGVk
IHRlc3RzICh0aGV5IHdlcmUKLSAgICAgICAgICAgICMgc3VidHJhY3RlZCBvdXQgb2Ygc2VsZi5f
dGVzdF9maWxlcywgYWJvdmUpLCBidXQgd2Ugc3R1YiBvdXQgdGhlCi0gICAgICAgICAgICAjIHJl
c3VsdHMgaGVyZSBzbyB0aGUgc3RhdGlzdGljcyBjYW4gcmVtYWluIGFjY3VyYXRlLgotICAgICAg
ICAgICAgZm9yIHRlc3QgaW4gc2tpcF9jaHVuazoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0
ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0KQotICAgICAgICAgICAgICAgIHJlc3VsdC50eXBl
ID0gdGVzdF9leHBlY3RhdGlvbnMuU0tJUAotICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5
LmFkZChyZXN1bHQsIGV4cGVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
ZXhwZWN0ZWQoJycpCi0KLSAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgd2UgZGlkbid0IGZp
bHRlciBvdXQgYWxsIG9mIHRoZSB0ZXN0cy4KLSAgICAgICAgaWYgbm90IGxlbihzZWxmLl90ZXN0
X2ZpbGVzKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygiQWxsIHRlc3RzIGFyZSBiZWluZyBza2lw
cGVkIikKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdF9z
dW1tYXJ5Ci0KLSAgICBkZWYgX2dldF9kaXJfZm9yX3Rlc3RfZmlsZShzZWxmLCB0ZXN0X2ZpbGUp
OgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBoaWdoZXN0LWxldmVsIGRpcmVjdG9yeSBieSB3aGlj
aCB0byBzaGFyZCB0aGUgZ2l2ZW4KLSAgICAgICAgdGVzdCBmaWxlLiIiIgotICAgICAgICBpbmRl
eCA9IHRlc3RfZmlsZS5yZmluZChzZWxmLl9mcy5zZXAgKyBzZWxmLkxBWU9VVF9URVNUU19ESVJF
Q1RPUlkpCi0KLSAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlW2luZGV4ICsgbGVuKHNlbGYu
TEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6XQotICAgICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0
X2ZpbGUuc3BsaXQoc2VsZi5fZnMuc2VwLCAxKQotICAgICAgICBkaXJlY3RvcnkgPSB0ZXN0X2Zp
bGVfcGFydHNbMF0KLSAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlX3BhcnRzWzFdCi0KLSAg
ICAgICAgIyBUaGUgaHR0cCB0ZXN0cyBhcmUgdmVyeSBzdGFibGUgb24gbWFjL2xpbnV4LgotICAg
ICAgICAjIFRPRE8ob2phbik6IE1ha2UgdGhlIGh0dHAgc2VydmVyIG9uIFdpbmRvd3MgYmUgYXBh
Y2hlIHNvIHdlIGNhbgotICAgICAgICAjIHR1cm4gc2hhcmQgdGhlIGh0dHAgdGVzdHMgdGhlcmUg
YXMgd2VsbC4gU3dpdGNoaW5nIHRvIGFwYWNoZSBpcwotICAgICAgICAjIHdoYXQgbWFkZSB0aGVt
IHN0YWJsZSBvbiBsaW51eC9tYWMuCi0gICAgICAgIHJldHVybl92YWx1ZSA9IGRpcmVjdG9yeQot
ICAgICAgICB3aGlsZSAoKGRpcmVjdG9yeSAhPSAnaHR0cCcgb3Igc3lzLnBsYXRmb3JtIGluICgn
ZGFyd2luJywgJ2xpbnV4MicpKQotICAgICAgICAgICAgICAgIGFuZCB0ZXN0X2ZpbGUuZmluZChz
ZWxmLl9mcy5zZXApID49IDApOgotICAgICAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVzdF9m
aWxlLnNwbGl0KHNlbGYuX2ZzLnNlcCwgMSkKLSAgICAgICAgICAgIGRpcmVjdG9yeSA9IHRlc3Rf
ZmlsZV9wYXJ0c1swXQotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gc2VsZi5fZnMuam9pbihy
ZXR1cm5fdmFsdWUsIGRpcmVjdG9yeSkKLSAgICAgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmls
ZV9wYXJ0c1sxXQotCi0gICAgICAgIHJldHVybiByZXR1cm5fdmFsdWUKLQotICAgIGRlZiBfZ2V0
X3Rlc3RfaW5wdXRfZm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlKToKLSAgICAgICAgIiIiUmV0dXJu
cyB0aGUgYXBwcm9wcmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0
aGlzCi0gICAgICAgIGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGlu
IG1zKSB0byB1c2UgZm9yIHRoZSBnaXZlbgotICAgICAgICB0ZXN0LiIiIgotICAgICAgICBpZiBz
ZWxmLl90ZXN0X2lzX3Nsb3codGVzdF9maWxlKToKLSAgICAgICAgICAgIHJldHVybiBUZXN0SW5w
dXQodGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpCi0gICAgICAgIHJl
dHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKQotCi0g
ICAgZGVmIF90ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVzdF9maWxlKToKLSAgICAgICAgIiIi
UmV0dXJuIFRydWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KLSAgICAgICAg
cnVubmluZyBtdWx0aXBsZSBjb3BpZXMgb2YgTlJXVHMuIiIiCi0gICAgICAgIHNwbGl0X3BhdGgg
PSB0ZXN0X2ZpbGUuc3BsaXQoc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5zZXApCi0gICAgICAgIHJl
dHVybiAnaHR0cCcgaW4gc3BsaXRfcGF0aCBvciAnd2Vic29ja2V0JyBpbiBzcGxpdF9wYXRoCi0K
LSAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXR1cm4g
c2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcih0ZXN0X2ZpbGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cp
Ci0KLSAgICBkZWYgX3NoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfZmlsZXMsIHVzZV9yZWFsX3NoYXJk
cyk6Ci0gICAgICAgICIiIkdyb3VwcyB0ZXN0cyBpbnRvIGJhdGNoZXMuCi0gICAgICAgIFRoaXMg
aGVscHMgZW5zdXJlIHRoYXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciAoYWthIGJh
ZCB0ZXN0cyEpCi0gICAgICAgIGNvbnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0IGNyb3Nz
LXRlc3RzIGRlcGVuZGVuY2llcyB0ZW5kIHRvCi0gICAgICAgIG9jY3VyIHdpdGhpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuIElmIHVzZV9yZWFsX3NoYXJkcyBpcyBGYWxzZSwgd2UKLSAgICAgICAgcHV0
IGVhY2ggKG5vbi1IVFRQL3dlYnNvY2tldCkgdGVzdCBpbnRvIGl0cyBvd24gc2hhcmQgZm9yIG1h
eGltdW0KLSAgICAgICAgY29uY3VycmVuY3kgaW5zdGVhZCBvZiB0cnlpbmcgdG8gZG8gYW55IHNv
cnQgb2YgcmVhbCBzaGFyZGluZy4KLQotICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgICBBIGxp
c3Qgb2YgbGlzdHMgb2YgVGVzdElucHV0IG9iamVjdHMuCi0gICAgICAgICIiIgotICAgICAgICAj
IEZJWE1FOiB3aGVuIHdlIGFkZGVkIGh0dHAgbG9ja2luZywgd2UgY2hhbmdlZCBob3cgdGhpcyB3
b3JrcyBzdWNoCi0gICAgICAgICMgdGhhdCB3ZSBhbHdheXMgbHVtcCBhbGwgb2YgdGhlIEhUVFAg
dGhyZWFkcyBpbnRvIGEgc2luZ2xlIHNoYXJkLgotICAgICAgICAjIFRoYXQgd2lsbCBzbG93IGRv
d24gZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsLCBidXQgaXQncyB1bmNsZWFyCi0gICAgICAg
ICMgd2hhdCB0aGUgYmVzdCBhbHRlcm5hdGl2ZSBpcyBjb21wbGV0ZWx5IHJldmFtcGluZyBob3cg
d2UgdHJhY2sKLSAgICAgICAgIyB3aGVuIHRvIGdyYWIgdGhlIGxvY2suCi0KLSAgICAgICAgdGVz
dF9saXN0cyA9IFtdCi0gICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jayA9IFtdCi0gICAgICAgIGlm
IG5vdCB1c2VfcmVhbF9zaGFyZHM6Ci0gICAgICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3Rf
ZmlsZXM6Ci0gICAgICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0
X2Zvcl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVp
cmVzX2xvY2sodGVzdF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9s
b2NrLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIHRlc3RfbGlzdHMuYXBwZW5kKCgiLiIsIFt0ZXN0X2lucHV0XSkpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQotICAgICAgICAgICAgZm9yIHRl
c3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA9IHNlbGYu
X2dldF9kaXJfZm9yX3Rlc3RfZmlsZSh0ZXN0X2ZpbGUpCi0gICAgICAgICAgICAgICAgdGVzdF9p
bnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAg
ICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2sodGVzdF9maWxlKToKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZh
dWx0KGRpcmVjdG9yeSwgW10pCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzX2J5X2RpcltkaXJl
Y3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgIyBTb3J0IGJ5IHRoZSBudW1i
ZXIgb2YgdGVzdHMgaW4gdGhlIGRpciBzbyB0aGF0IHRoZSBvbmVzIHdpdGggdGhlCi0gICAgICAg
ICAgICAjIG1vc3QgdGVzdHMgZ2V0IHJ1biBmaXJzdCBpbiBvcmRlciB0byBtYXhpbWl6ZSBwYXJh
bGxlbGl6YXRpb24uCi0gICAgICAgICAgICAjIE51bWJlciBvZiB0ZXN0cyBpcyBhIGdvb2QgZW5v
dWdoLCBidXQgbm90IHBlcmZlY3QsIGFwcHJveGltYXRpb24KLSAgICAgICAgICAgICMgb2YgaG93
IGxvbmcgdGhhdCBzZXQgb2YgdGVzdHMgd2lsbCB0YWtlIHRvIHJ1bi4gV2UgY2FuJ3QganVzdCB1
c2UKLSAgICAgICAgICAgICMgYSBQcmlvcml0eVF1ZXVlIHVudGlsIHdlIG1vdmUgdG8gUHl0aG9u
IDIuNi4KLSAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gdGVzdHNfYnlfZGlyOgotICAgICAg
ICAgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RzX2J5X2RpcltkaXJlY3RvcnldCi0gICAgICAgICAg
ICAgICAgdGVzdF9saXN0X3R1cGxlID0gKGRpcmVjdG9yeSwgdGVzdF9saXN0KQotICAgICAgICAg
ICAgICAgIHRlc3RfbGlzdHMuYXBwZW5kKHRlc3RfbGlzdF90dXBsZSkKLSAgICAgICAgICAgIHRl
c3RfbGlzdHMuc29ydChsYW1iZGEgYSwgYjogY21wKGxlbihiWzFdKSwgbGVuKGFbMV0pKSkKLQot
ICAgICAgICAjIFB1dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdC4gVGhlcmUgYXJlIG9ubHkgYSBjb3Vw
bGUgaHVuZHJlZCBvZiB0aGVtLAotICAgICAgICAjIGJ1dCBlYWNoIGh0dHAgdGVzdCB0YWtlcyBh
IHZlcnkgbG9uZyB0aW1lIHRvIHJ1biwgc28gc29ydGluZyBieSB0aGUKLSAgICAgICAgIyBudW1i
ZXIgb2YgdGVzdHMgZG9lc24ndCBhY2N1cmF0ZWx5IGNhcHR1cmUgaG93IGxvbmcgdGhleSB0YWtl
IHRvIHJ1bi4KLSAgICAgICAgaWYgdGVzdHNfdG9faHR0cF9sb2NrOgotICAgICAgICAgICAgdGVz
dF9saXN0cy5pbnNlcnQoMCwgKCJ0ZXN0c190b19odHRwX2xvY2siLCB0ZXN0c190b19odHRwX2xv
Y2spKQotCi0gICAgICAgIHJldHVybiB0ZXN0X2xpc3RzCi0KLSAgICBkZWYgX2NvbnRhaW5zX3Rl
c3RzKHNlbGYsIHN1YmRpcik6Ci0gICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gc2VsZi5fdGVzdF9m
aWxlczoKLSAgICAgICAgICAgIGlmIHRlc3RfZmlsZS5maW5kKHN1YmRpcikgPj0gMDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBf
bnVtX3dvcmtlcnMoc2VsZiwgbnVtX3NoYXJkcyk6Ci0gICAgICAgIG51bV93b3JrZXJzID0gbWlu
KGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIG51bV9zaGFyZHMpCi0gICAgICAg
IGRyaXZlcl9uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCi0gICAgICAgIGlmIG51bV93
b3JrZXJzID09IDE6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2NvbmZpZygiUnVu
bmluZyAxICVzIG92ZXIgJXMiICUKLSAgICAgICAgICAgICAgICAoZHJpdmVyX25hbWUsIGdyYW1t
YXIucGx1cmFsaXplKCdzaGFyZCcsIG51bV9zaGFyZHMpKSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfY29uZmlnKCJSdW5uaW5nICVkICVzcyBpbiBwYXJh
bGxlbCBvdmVyICVkIHNoYXJkcyIgJQotICAgICAgICAgICAgICAgIChudW1fd29ya2VycywgZHJp
dmVyX25hbWUsIG51bV9zaGFyZHMpKQotICAgICAgICByZXR1cm4gbnVtX3dvcmtlcnMKLQotICAg
IGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnkpOgotICAgICAg
ICAiIiJSdW5zIHRoZSB0ZXN0cyBpbiB0aGUgZmlsZV9saXN0LgotCi0gICAgICAgIFJldHVybjog
QSB0dXBsZSAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5n
cywKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCi0g
ICAgICAgICAgICBpbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBydW4gd2FzIGludGVycnVwdGVk
Ci0gICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBpbnRlcnJ1
cHRpb24gd2FzIGJlY2F1c2Ugc29tZW9uZQotICAgICAgICAgICAgICB0eXBlZCBDdHJsXkMKLSAg
ICAgICAgICAgIHRocmVhZF90aW1pbmdzIGlzIGEgbGlzdCBvZiBkaWN0cyB3aXRoIHRoZSB0b3Rh
bCBydW50aW1lCi0gICAgICAgICAgICAgIG9mIGVhY2ggdGhyZWFkIHdpdGggJ25hbWUnLCAnbnVt
X3Rlc3RzJywgJ3RvdGFsX3RpbWUnIHByb3BlcnRpZXMKLSAgICAgICAgICAgIHRlc3RfdGltaW5n
cyBpcyBhIGxpc3Qgb2YgdGltaW5ncyBmb3IgZWFjaCBzaGFyZGVkIHN1YmRpcmVjdG9yeQotICAg
ICAgICAgICAgICBvZiB0aGUgZm9ybSBbdGltZSwgZGlyZWN0b3J5X25hbWUsIG51bV90ZXN0c10K
LSAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiBydW4gdGlt
ZXMgZm9yIGVhY2ggdGVzdAotICAgICAgICAgICAgICBpbiB0aGUgZm9ybSB7ZmlsZW5hbWU6Zmls
ZW5hbWUsIHRlc3RfcnVuX3RpbWU6dGVzdF9ydW5fdGltZX0KLSAgICAgICAgICAgIHJlc3VsdF9z
dW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCB0byBwb3B1bGF0ZSB3aXRoIHRoZSByZXN1bHRzCi0gICAg
ICAgICIiIgotICAgICAgICBzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5ID0gcmVzdWx0X3N1
bW1hcnkKLSAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMgPSBbXQotICAgICAgICBzZWxmLl9ncm91
cF9zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXMgPSB7fQotCi0gICAgICAg
IGtleWJvYXJkX2ludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgaW50ZXJydXB0ZWQgPSBGYWxz
ZQotICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIHRlc3RfbGlzdHMgPSBz
ZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCi0gICAgICAgICAgICBpbnQoc2VsZi5fb3B0aW9u
cy5jaGlsZF9wcm9jZXNzZXMpID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFs
X2Z1bGx5X3BhcmFsbGVsKQotCi0gICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtl
cnMobGVuKHRlc3RfbGlzdHMpKQotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2Vy
X3dvcmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2Vy
LldvcmtlcikKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAg
ICByZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWlu
Z3MsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVz
dWx0cykKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMg
Li4uJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXIucGx1cmFs
aXplKCd3b3JrZXInLCBudW1fd29ya2VycykpCi0gICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGlu
IHhyYW5nZShudW1fd29ya2Vycyk6Ci0gICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1h
bmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29ya2VyX251bWJlcikKLSAgICAgICAgICAg
IHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3JrZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVj
dGlvbikKLSAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24u
bmFtZV0gPSB3b3JrZXJfc3RhdGUKLQotICAgICAgICAgICAgIyBGSVhNRTogSWYgd2Ugc3RhcnQg
d29ya2VycyB1cCB0b28gcXVpY2tseSwgRHVtcFJlbmRlclRyZWUgYXBwZWFycwotICAgICAgICAg
ICAgIyB0byB0aHJhc2ggb24gc29tZXRoaW5nIGFuZCB0aW1lIG91dCBpdHMgZmlyc3QgZmV3IHRl
c3RzLiBVbnRpbAotICAgICAgICAgICAgIyB3ZSBjYW4gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcg
b24sIHNsZWVwIGEgYml0IGluIGJldHdlZW4KLSAgICAgICAgICAgICMgd29ya2Vycy4KLSAgICAg
ICAgICAgIHRpbWUuc2xlZXAoMC4xKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBk
YXRlKCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCi0gICAgICAgIGZvciB0ZXN0X2xpc3QgaW4gdGVz
dF9saXN0czoKLSAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3Rl
c3RfbGlzdCcsIHRlc3RfbGlzdFswXSwgdGVzdF9saXN0WzFdKQotCi0gICAgICAgICMgV2UgcG9z
dCBvbmUgJ3N0b3AnIG1lc3NhZ2UgZm9yIGVhY2ggd29ya2VyLiBCZWNhdXNlIHRoZSBzdG9wIG1l
c3NhZ2UKLSAgICAgICAgIyBhcmUgc2VudCBhZnRlciBhbGwgb2YgdGhlIHRlc3RzLCBhbmQgYmVj
YXVzZSBlYWNoIHdvcmtlciB3aWxsIHN0b3AKLSAgICAgICAgIyByZWFkaW5nIG1lc3NzYWdlcyBh
ZnRlciByZWNlaXZpbmcgYSBzdG9wLCB3ZSBjYW4gYmUgc3VyZSBlYWNoCi0gICAgICAgICMgd29y
a2VyIHdpbGwgZ2V0IGEgc3RvcCBtZXNzYWdlIGFuZCBoZW5jZSB0aGV5IHdpbGwgYWxsIHNodXQg
ZG93bi4KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKG51bV93b3JrZXJzKToKLSAgICAgICAgICAg
IG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3N0b3AnKQotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAj
IFdlIGxvb3Agd2l0aCBhIHRpbWVvdXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2Vk
Z2VkIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9tZXNz
YWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCi0KLSAgICAgICAgICAgIGlmIGFueSh3b3JrZXJfc3Rh
dGUud2VkZ2VkIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMo
KSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKLSAgICAgICAgICAgICAgICBfbG9n
LmVycm9yKCdSZW1haW5pbmcgd29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5nIG91dC4nKQotICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIF9sb2cuZGVidWcoJ05vIHdlZGdlZCB0aHJlYWRzJykKLQotICAgICAgICAgICAgIyBN
YWtlIHN1cmUgYWxsIG9mIHRoZSB3b3JrZXJzIGhhdmUgc2h1dCBkb3duIChpZiBwb3NzaWJsZSku
Ci0gICAgICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFs
dWVzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHdvcmtlcl9zdGF0ZS53ZWRnZWQgYW5kIHdv
cmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5pc19hbGl2ZSgpOgotICAgICAgICAgICAgICAg
ICAgICB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uam9pbigwLjUpCi0gICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBub3Qgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmlzX2Fs
aXZlKCkKLQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBf
bG9nLmluZm8oIkludGVycnVwdGVkLCBleGl0aW5nIikKLSAgICAgICAgICAgIHNlbGYuY2FuY2Vs
X3dvcmtlcnMoKQotICAgICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAg
ICAgIGV4Y2VwdCBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBf
bG9nLmluZm8oZS5yZWFzb24pCi0gICAgICAgICAgICBzZWxmLmNhbmNlbF93b3JrZXJzKCkKLSAg
ICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAg
ICAjIFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4K
LSAgICAgICAgICAgIF9sb2cuaW5mbygiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCi0gICAg
ICAgICAgICByYWlzZQotCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW3dvcmtlcl9zdGF0ZS5z
dGF0cyBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCldCi0K
LSAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjbGFzcyBpbnN0ZWFkIG9mIGEgdHVw
bGU/Ci0gICAgICAgIHJldHVybiAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0
aHJlYWRfdGltaW5ncywKLSAgICAgICAgICAgICAgICBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5f
YWxsX3Jlc3VsdHMpCi0KLSAgICBkZWYgdXBkYXRlKHNlbGYpOgotICAgICAgICBzZWxmLnVwZGF0
ZV9zdW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkpCi0KLSAgICBkZWYgX2NvbGxl
Y3RfdGltaW5nX2luZm8oc2VsZiwgdGhyZWFkcyk6Ci0gICAgICAgIHRlc3RfdGltaW5ncyA9IHt9
Ci0gICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KLSAgICAgICAgdGhyZWFkX3Rp
bWluZ3MgPSBbXQotCi0gICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKLSAgICAgICAgICAg
IHRocmVhZF90aW1pbmdzLmFwcGVuZCh7J25hbWUnOiB0aHJlYWQuZ2V0TmFtZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtX3Rlc3RzJzogdGhyZWFkLmdldF9udW1f
dGVzdHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUn
OiB0aHJlYWQuZ2V0X3RvdGFsX3RpbWUoKX0pCi0gICAgICAgICAgICB0ZXN0X3RpbWluZ3MudXBk
YXRlKHRocmVhZC5nZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMoKSkKLSAgICAgICAgICAgIGlu
ZGl2aWR1YWxfdGVzdF90aW1pbmdzLmV4dGVuZCh0aHJlYWQuZ2V0X3Rlc3RfcmVzdWx0cygpKQot
Ci0gICAgICAgIHJldHVybiAodGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKLSAgICAgICAgIiIi
UmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4iIiIK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIpCi0K
LSAgICBkZWYgbmVlZHNfd2Vic29ja2V0KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRo
ZXIgdGhlIHRlc3QgcnVubmVyIG5lZWRzIGEgV0VCU09DS0VUIHNlcnZlci4iIiIKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuV0VCU09DS0VUX1NVQkRJUikKLQotICAg
IGRlZiBzZXRfdXBfcnVuKHNlbGYpOgotICAgICAgICAiIiJDb25maWd1cmVzIHRoZSBzeXN0ZW0g
dG8gYmUgcmVhZHkgdG8gcnVuIHRlc3RzLgotCi0gICAgICAgIFJldHVybnMgYSBSZXN1bHRTdW1t
YXJ5IG9iamVjdCBpZiB3ZSBzaG91bGQgY29udGludWUgdG8gcnVuIHRlc3RzLAotICAgICAgICBv
ciBOb25lIGlmIHdlIHNob3VsZCBhYm9ydC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBUaGlz
IG11c3QgYmUgc3RhcnRlZCBiZWZvcmUgd2UgY2hlY2sgdGhlIHN5c3RlbSBkZXBlbmRlbmNpZXMs
Ci0gICAgICAgICMgc2luY2UgdGhlIGhlbHBlciBtYXkgZG8gdGhpbmdzIHRvIG1ha2UgdGhlIHNl
dHVwIGNvcnJlY3QuCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGlu
ZyBoZWxwZXIgLi4uIikKLSAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9oZWxwZXIoKQotCi0gICAg
ICAgICMgQ2hlY2sgdGhhdCB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyAodGhlbWVzLCBmb250cywg
Li4uKSBhcmUgY29ycmVjdC4KLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMubm9jaGVja19z
eXNfZGVwczoKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJDaGVja2lu
ZyBzeXN0ZW0gZGVwZW5kZW5jaWVzIC4uLiIpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcG9y
dC5jaGVja19zeXNfZGVwcyhzZWxmLm5lZWRzX2h0dHAoKSk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5zdG9wX2hlbHBlcigpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmNsb2JiZXJfb2xkX3Jlc3VsdHM6Ci0gICAgICAgICAgICBz
ZWxmLl9jbG9iYmVyX29sZF9yZXN1bHRzKCkKLQotICAgICAgICAjIENyZWF0ZSB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCi0gICAgICAgIHNlbGYuX3Bv
cnQubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0KLSAgICAg
ICAgc2VsZi5fcG9ydC5zZXR1cF90ZXN0X3J1bigpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF91cGRhdGUoIlByZXBhcmluZyB0ZXN0cyAuLi4iKQotICAgICAgICByZXN1bHRfc3VtbWFy
eSA9IHNlbGYucHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KCkKLSAgICAgICAgaWYgbm90
IHJlc3VsdF9zdW1tYXJ5OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXR1
cm4gcmVzdWx0X3N1bW1hcnkKLQotICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgot
ICAgICAgICAiIiJSdW4gYWxsIG91ciB0ZXN0cyBvbiBhbGwgb3VyIHRlc3QgZmlsZXMuCi0KLSAg
ICAgICAgRm9yIGVhY2ggdGVzdCBmaWxlLCB3ZSBydW4gZWFjaCB0ZXN0IHR5cGUuIElmIHRoZXJl
IGFyZSBhbnkgZmFpbHVyZXMsCi0gICAgICAgIHdlIGNvbGxlY3QgdGhlbSBmb3IgcmVwb3J0aW5n
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBv
YmplY3QgdHJhY2tpbmcgdGhlIHRlc3QgcmVzdWx0cy4KLQotICAgICAgICBSZXR1cm46Ci0gICAg
ICAgICAgVGhlIG51bWJlciBvZiB1bmV4cGVjdGVkIHJlc3VsdHMgKDAgPT0gc3VjY2VzcykKLSAg
ICAgICAgIiIiCi0gICAgICAgICMgZ2F0aGVyX3Rlc3RfZmlsZXMoKSBtdXN0IGhhdmUgYmVlbiBj
YWxsZWQgZmlyc3QgdG8gaW5pdGlhbGl6ZSB1cy4KLSAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgZmlu
ZCBhbnkgZmlsZXMgdG8gdGVzdCwgd2UndmUgZXJyb3JlZCBvdXQgYWxyZWFkeSBpbgotICAgICAg
ICAjIHByZXBhcmVfbGlzdHNfYW5kX3ByaW50X291dHB1dCgpLgotICAgICAgICBhc3NlcnQobGVu
KHNlbGYuX3Rlc3RfZmlsZXMpKQotCi0gICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQot
Ci0gICAgICAgIGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWlu
Z3MsIHRlc3RfdGltaW5ncywgXAotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mg
PSAoCi0gICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCBy
ZXN1bHRfc3VtbWFyeSkpCi0KLSAgICAgICAgIyBXZSBleGNsdWRlIHRoZSBjcmFzaGVzIGZyb20g
dGhlIGxpc3Qgb2YgcmVzdWx0cyB0byByZXRyeSwgYmVjYXVzZQotICAgICAgICAjIHdlIHdhbnQg
dG8gdHJlYXQgZXZlbiBhIHBvdGVudGlhbGx5IGZsYWt5IGNyYXNoIGFzIGFuIGVycm9yLgotICAg
ICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwgaW5jbHVk
ZV9jcmFzaGVzPUZhbHNlKQotICAgICAgICByZXRyeV9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkK
LSAgICAgICAgd2hpbGUgKGxlbihmYWlsdXJlcykgYW5kIHNlbGYuX29wdGlvbnMucmV0cnlfZmFp
bHVyZXMgYW5kCi0gICAgICAgICAgICBub3Qgc2VsZi5fcmV0cnlpbmcgYW5kIG5vdCBpbnRlcnJ1
cHRlZCk6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJycpCi0gICAgICAgICAgICBfbG9nLmluZm8o
IlJldHJ5aW5nICVkIHVuZXhwZWN0ZWQgZmFpbHVyZShzKSAuLi4iICUgbGVuKGZhaWx1cmVzKSkK
LSAgICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgIHNlbGYuX3JldHJ5aW5nID0g
VHJ1ZQotICAgICAgICAgICAgcmV0cnlfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhw
ZWN0YXRpb25zLCBmYWlsdXJlcy5rZXlzKCkpCi0gICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBp
bnRlbnRpb25hbGx5IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGhlcmUuCi0gICAgICAgICAgICBz
ZWxmLl9ydW5fdGVzdHMoZmFpbHVyZXMua2V5cygpLCByZXRyeV9zdW1tYXJ5KQotICAgICAgICAg
ICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmV0cnlfc3VtbWFyeSwgaW5jbHVkZV9j
cmFzaGVzPVRydWUpCi0KLSAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQotCi0gICAgICAg
IHNlbGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3Rf
dGltaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5KQotCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5KHJlc3Vs
dF9zdW1tYXJ5KQotCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBzeXMuc3Rk
ZXJyLmZsdXNoKCkKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1h
cnkocmVzdWx0X3N1bW1hcnkudG90YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWQpCi0K
LSAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9y
dCwKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5
X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSkK
LSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModW5leHBlY3Rl
ZF9yZXN1bHRzKQotCi0gICAgICAgICMgRklYTUU6IHJlbW92ZSByZWNvcmRfcmVzdWx0cy4gSXQn
cyBqdXN0IHVzZWQgZm9yIHRlc3RpbmcuIFRoZXJlJ3Mgbm8gbmVlZAotICAgICAgICAjIGZvciBp
dCB0byBiZSBhIGNvbW1hbmRsaW5lIGFyZ3VtZW50LgotICAgICAgICBpZiAoc2VsZi5fb3B0aW9u
cy5yZWNvcmRfcmVzdWx0cyBhbmQgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1biBhbmQKLSAgICAg
ICAgICAgIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6Ci0gICAgICAgICAgICAjIFdyaXRlIHRo
ZSBzYW1lIGRhdGEgdG8gbG9nIGZpbGVzIGFuZCB1cGxvYWQgZ2VuZXJhdGVkIEpTT04gZmlsZXMK
LSAgICAgICAgICAgICMgdG8gYXBwZW5naW5lIHNlcnZlci4KLSAgICAgICAgICAgIHN1bW1hcml6
ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAg
ICAgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5k
aXZpZHVhbF90ZXN0X3RpbWluZ3MsIG9ubHlfdW5leHBlY3RlZD1GYWxzZSkKLSAgICAgICAgICAg
IHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVzKHVuZXhwZWN0ZWRfcmVzdWx0cywgc3VtbWFyaXplZF9y
ZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQotCi0gICAgICAgICMgV3JpdGUgdGhlIHN1bW1h
cnkgdG8gZGlzayAocmVzdWx0cy5odG1sKSBhbmQgZGlzcGxheSBpdCBpZiByZXF1ZXN0ZWQuCi0g
ICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICBzZWxmLl9j
b3B5X3Jlc3VsdHNfaHRtbF9maWxlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2hv
d19yZXN1bHRzOgotICAgICAgICAgICAgICAgIHNlbGYuX3Nob3dfcmVzdWx0c19odG1sX2ZpbGUo
cmVzdWx0X3N1bW1hcnkpCi0KLSAgICAgICAgIyBOb3cgdGhhdCB3ZSd2ZSBjb21wbGV0ZWQgYWxs
IHRoZSBwcm9jZXNzaW5nIHdlIGNhbiwgd2UgcmUtcmFpc2UKLSAgICAgICAgIyBhIEtleWJvYXJk
SW50ZXJydXB0IGlmIG5lY2Vzc2FyeSBzbyB0aGUgY2FsbGVyIGNhbiBoYW5kbGUgaXQuCi0gICAg
ICAgIGlmIGtleWJvYXJkX2ludGVycnVwdGVkOgotICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJ
bnRlcnJ1cHQKLQotICAgICAgICAjIElnbm9yZSBmbGFreSBmYWlsdXJlcyBhbmQgdW5leHBlY3Rl
ZCBwYXNzZXMgc28gd2UgZG9uJ3QgdHVybiB0aGUKLSAgICAgICAgIyBib3QgcmVkIGZvciB0aG9z
ZS4KLSAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX3JlZ3Jlc3Npb25zJ10K
LQotICAgIGRlZiBjbGVhbl91cF9ydW4oc2VsZik6Ci0gICAgICAgICIiIlJlc3RvcmVzIHRoZSBz
eXN0ZW0gYWZ0ZXIgd2UncmUgZG9uZSBydW5uaW5nIHRlc3RzLiIiIgotCi0gICAgICAgIF9sb2cu
ZGVidWcoImZsdXNoaW5nIHN0ZG91dCIpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAg
ICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRlcnIiKQotICAgICAgICBzeXMuc3RkZXJyLmZs
dXNoKCkKLSAgICAgICAgX2xvZy5kZWJ1Zygic3RvcHBpbmcgaGVscGVyIikKLSAgICAgICAgc2Vs
Zi5fcG9ydC5zdG9wX2hlbHBlcigpCi0KLSAgICBkZWYgdXBkYXRlX3N1bW1hcnkoc2VsZiwgcmVz
dWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJVcGRhdGUgdGhlIHN1bW1hcnkgYW5kIHByaW50IHJl
c3VsdHMgd2l0aCBhbnkgY29tcGxldGVkIHRlc3RzLiIiIgotICAgICAgICB3aGlsZSBUcnVlOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0cy5U
ZXN0UmVzdWx0LmxvYWRzKHNlbGYuX3Jlc3VsdF9xdWV1ZS5nZXRfbm93YWl0KCkpCi0gICAgICAg
ICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHJlc3VsdF9zdW1tYXJ5LCBy
ZXN1bHQpCi0KLSAgICBkZWYgX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYsIHJlc3Vs
dF9zdW1tYXJ5LCByZXN1bHQpOgotICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9u
cy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFt
ZSwgcmVzdWx0LnR5cGUsIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMpCi0gICAgICAgIHJlc3Vs
dF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQotICAgICAgICBleHBfc3RyID0gc2VsZi5f
ZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgcmVzdWx0
LmZpbGVuYW1lKQotICAgICAgICBnb3Rfc3RyID0gc2VsZi5fZXhwZWN0YXRpb25zLmV4cGVjdGF0
aW9uX3RvX3N0cmluZyhyZXN1bHQudHlwZSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90
ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3RyKQotICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3Byb2dyZXNzKHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl9yZXRyeWlu
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2Zp
bGVzX2xpc3QpCi0KLSAgICAgICAgZGVmIGludGVycnVwdF9pZl9hdF9mYWlsdXJlX2xpbWl0KGxp
bWl0LCBjb3VudCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICBpZiBsaW1pdCBhbmQgY291bnQgPj0g
bGltaXQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9u
KG1lc3NhZ2UgJSBjb3VudCkKLQotICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1p
dCgKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2ZhaWx1cmVzLAotICAg
ICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9mYWlsdXJlcywKLSAgICAgICAgICAg
ICJBYm9ydGluZyBydW4gc2luY2UgJWQgZmFpbHVyZXMgd2VyZSByZWFjaGVkIikKLSAgICAgICAg
aW50ZXJydXB0X2lmX2F0X2ZhaWx1cmVfbGltaXQoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25z
LmV4aXRfYWZ0ZXJfbl9jcmFzaGVzX29yX3RpbWVvdXRzLAotICAgICAgICAgICAgcmVzdWx0X3N1
bW1hcnkudW5leHBlY3RlZF9jcmFzaGVzX29yX3RpbWVvdXRzLAotICAgICAgICAgICAgIkFib3J0
aW5nIHJ1biBzaW5jZSAlZCBjcmFzaGVzIG9yIHRpbWVvdXRzIHdlcmUgcmVhY2hlZCIpCi0KLSAg
ICBkZWYgX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICMgSnVzdCBjbG9iYmVy
IHRoZSBhY3R1YWwgdGVzdCByZXN1bHRzIGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBvdGhlcgotICAg
ICAgICAjIGZpbGVzIGluIHRoZSByZXN1bHRzIGRpcmVjdG9yeSBhcmUgZXhwbGljaXRseSB1c2Vk
IGZvciBjcm9zcy1ydW4KLSAgICAgICAgIyB0cmFja2luZy4KLSAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF91cGRhdGUoIkNsb2JiZXJpbmcgb2xkIHJlc3VsdHMgaW4gJXMiICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0gICAg
ICAgIGxheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAg
ICAgICBwb3NzaWJsZV9kaXJzID0gc2VsZi5fcG9ydC50ZXN0X2RpcnMoKQotICAgICAgICBmb3Ig
ZGlybmFtZSBpbiBwb3NzaWJsZV9kaXJzOgotICAgICAgICAgICAgaWYgc2VsZi5fZnMuaXNkaXIo
c2VsZi5fZnMuam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fZnMucm10cmVlKHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3Rvcnks
IGRpcm5hbWUpKQotCi0gICAgZGVmIF9nZXRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0X3N1bW1hcnks
IGluY2x1ZGVfY3Jhc2hlcyk6Ci0gICAgICAgICIiIkZpbHRlcnMgYSBkaWN0IG9mIHJlc3VsdHMg
YW5kIHJldHVybnMgb25seSB0aGUgZmFpbHVyZXMuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICByZXN1bHRfc3VtbWFyeTogdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3QgcnVuCi0gICAgICAgICAg
aW5jbHVkZV9jcmFzaGVzOiB3aGV0aGVyIGNyYXNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBvdXRw
dXQuCi0gICAgICAgICAgICBXZSB1c2UgRmFsc2Ugd2hlbiBmaW5kaW5nIHRoZSBsaXN0IG9mIGZh
aWx1cmVzIHRvIHJldHJ5Ci0gICAgICAgICAgICB0byBzZWUgaWYgdGhlIHJlc3VsdHMgd2VyZSBm
bGFreS4gQWx0aG91Z2ggdGhlIGNyYXNoZXMgbWF5IGFsc28gYmUKLSAgICAgICAgICAgIGZsYWt5
LCB3ZSB0cmVhdCB0aGVtIGFzIGlmIHRoZXkgYXJlbid0IHNvIHRoYXQgdGhleSdyZSBub3QgaWdu
b3JlZC4KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBhIGRpY3Qgb2YgZmlsZXMgLT4gcmVz
dWx0cwotICAgICAgICAiIiIKLSAgICAgICAgZmFpbGVkX3Jlc3VsdHMgPSB7fQotICAgICAgICBm
b3IgdGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0cy5pdGVy
aXRlbXMoKToKLSAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9u
cy5QQVNTIG9yCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlv
bnMuQ1JBU0ggYW5kIG5vdCBpbmNsdWRlX2NyYXNoZXMpOgotICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0XSA9IHJlc3VsdC50eXBlCi0KLSAg
ICAgICAgcmV0dXJuIGZhaWxlZF9yZXN1bHRzCi0KLSAgICBkZWYgX2NoYXJfZm9yX3Jlc3VsdChz
ZWxmLCByZXN1bHQpOgotICAgICAgICByZXN1bHQgPSByZXN1bHQubG93ZXIoKQotICAgICAgICBp
ZiByZXN1bHQgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05TOgotICAgICAgICAg
ICAgcmVzdWx0X2VudW1fdmFsdWUgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlNb
cmVzdWx0XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0X2VudW1fdmFsdWUgPSBU
ZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlNbcmVzdWx0XQotICAgICAgICByZXR1cm4ganNv
bl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0b3IuRkFJ
TFVSRV9UT19DSEFSW3Jlc3VsdF9lbnVtX3ZhbHVlXQotCi0gICAgZGVmIF91cGxvYWRfanNvbl9m
aWxlcyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0
X3N1bW1hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGlt
aW5ncyk6Ci0gICAgICAgICIiIldyaXRlcyB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBydW4gYXMg
SlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCi0gICAgICAgIGRpciBhbmQgdXBsb2FkIHRoZSBm
aWxlcyB0byB0aGUgYXBwZW5naW5lIHNlcnZlci4KLQotICAgICAgICBUaGVyZSBhcmUgdGhyZWUg
ZGlmZmVyZW50IGZpbGVzIHdyaXR0ZW4gaW50byB0aGUgcmVzdWx0cyBkaXI6Ci0gICAgICAgICAg
dW5leHBlY3RlZF9yZXN1bHRzLmpzb246IEEgc2hvcnQgbGlzdCBvZiBhbnkgdW5leHBlY3RlZCBy
ZXN1bHRzLgotICAgICAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IHRoZSBidWlsZGJvdHMgdG8gZGlz
cGxheSByZXN1bHRzLgotICAgICAgICAgIGV4cGVjdGF0aW9ucy5qc29uOiBUaGlzIGlzIHVzZWQg
YnkgdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQuCi0gICAgICAgICAgcmVzdWx0cy5qc29uOiBBIGZ1
bGwgbGlzdCBvZiB0aGUgcmVzdWx0cyAtIHVzZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAg
ICAgZGFzaGJvYXJkIGFuZCB0aGUgYWdncmVnYXRlIHJlc3VsdHMgZGFzaGJvYXJkLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzOiBkaWN0IG9mIHVuZXhwZWN0
ZWQgcmVzdWx0cwotICAgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0czogZGljdCBvZiByZXN1bHRz
Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGZ1bGwgc3VtbWFyeSBvYmplY3QKLSAgICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczogbGlzdCBvZiB0ZXN0IHRpbWVzICh1c2VkIGJ5IHRo
ZSBmbGFraW5lc3MKLSAgICAgICAgICAgIGRhc2hib2FyZCkuCi0gICAgICAgICIiIgotICAgICAg
ICBfbG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5KQotCi0gICAgICAgIHVuZXhwZWN0ZWRfanNvbl9wYXRoID0gc2VsZi5fZnMuam9p
bihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIikKLSAg
ICAgICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci53cml0ZV9qc29uKHNlbGYuX2ZzLCB1bmV4cGVj
dGVkX3Jlc3VsdHMsIHVuZXhwZWN0ZWRfanNvbl9wYXRoKQotCi0gICAgICAgIGZ1bGxfcmVzdWx0
c19wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgImZ1bGxfcmVz
dWx0cy5qc29uIikKLSAgICAgICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci53cml0ZV9qc29uKHNl
bGYuX2ZzLCBzdW1tYXJpemVkX3Jlc3VsdHMsIGZ1bGxfcmVzdWx0c19wYXRoKQotCi0gICAgICAg
ICMgV3JpdGUgYSBqc29uIGZpbGUgb2YgdGhlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlIGZv
ciB0aGUgbGF5b3V0Ci0gICAgICAgICMgdGVzdHMgZGFzaGJvYXJkLgotICAgICAgICBleHBlY3Rh
dGlvbnNfcGF0aCA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJleHBl
Y3RhdGlvbnMuanNvbiIpCi0gICAgICAgIGV4cGVjdGF0aW9uc19qc29uID0gXAotICAgICAgICAg
ICAgc2VsZi5fZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfanNvbl9mb3JfYWxsX3BsYXRm
b3JtcygpCi0gICAgICAgIHNlbGYuX2ZzLndyaXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUiQUREX0VYUEVDVEFUSU9OUygl
cyk7IiAlIGV4cGVjdGF0aW9uc19qc29uKQotCi0gICAgICAgIGdlbmVyYXRvciA9IGpzb25fbGF5
b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yKAotICAgICAg
ICAgICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5idWlsZGVyX25hbWUsIHNlbGYuX29wdGlv
bnMuYnVpbGRfbmFtZSwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuYnVpbGRfbnVtYmVyLCBz
ZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgIEJVSUxERVJfQkFTRV9VUkwsIGlu
ZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCBy
ZXN1bHRfc3VtbWFyeSwgc2VsZi5fdGVzdF9maWxlc19saXN0LAotICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLAotICAgICAgICAgICAgImxheW91dC10ZXN0cyIs
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc3Rlcl9uYW1lKQotCi0gICAgICAgIF9sb2cu
ZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNPTiBmaWxlcy4iKQotCi0gICAgICAgIGpzb25fZmls
ZXMgPSBbImV4cGVjdGF0aW9ucy5qc29uIiwgImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiIsICJm
dWxsX3Jlc3VsdHMuanNvbiJdCi0KLSAgICAgICAgZ2VuZXJhdG9yLnVwbG9hZF9qc29uX2ZpbGVz
KGpzb25fZmlsZXMpCi0KLSAgICBkZWYgX3ByaW50X2NvbmZpZyhzZWxmKToKLSAgICAgICAgIiIi
UHJpbnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdCBydW4uIiIiCi0gICAgICAgIHAg
PSBzZWxmLl9wcmludGVyCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJVc2luZyBwb3J0ICclcyci
ICUgc2VsZi5fcG9ydC5uYW1lKCkpCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJUZXN0IGNvbmZp
Z3VyYXRpb246ICVzIiAlIHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCkpCi0gICAgICAg
IHAucHJpbnRfY29uZmlnKCJQbGFjaW5nIHRlc3QgcmVzdWx0cyBpbiAlcyIgJSBzZWxmLl9yZXN1
bHRzX2RpcmVjdG9yeSkKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmU6Ci0g
ICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUGxhY2luZyBuZXcgYmFzZWxpbmVzIGluICVzIiAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmJhc2VsaW5lX3BhdGgoKSkK
LSAgICAgICAgcC5wcmludF9jb25maWcoIlVzaW5nICVzIGJ1aWxkIiAlIHNlbGYuX29wdGlvbnMu
Y29uZmlndXJhdGlvbikKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKLSAg
ICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQaXhlbCB0ZXN0cyBlbmFibGVkIikKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQaXhlbCB0ZXN0cyBkaXNhYmxlZCIp
Ci0KLSAgICAgICAgcC5wcmludF9jb25maWcoIlJlZ3VsYXIgdGltZW91dDogJXMsIHNsb3cgdGVz
dCB0aW1lb3V0OiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy50
aW1lX291dF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2xvd190
aW1lX291dF9tcykpCi0KLSAgICAgICAgcC5wcmludF9jb25maWcoJ0NvbW1hbmQgbGluZTogJyAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKHNlbGYuX3BvcnQuZHJpdmVyX2NtZF9s
aW5lKCkpKQotICAgICAgICBwLnByaW50X2NvbmZpZygiV29ya2VyIG1vZGVsOiAlcyIgJSBzZWxm
Ll9vcHRpb25zLndvcmtlcl9tb2RlbCkKLSAgICAgICAgcC5wcmludF9jb25maWcoIiIpCi0KLSAg
ICBkZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFy
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSwg
cmVzdWx0X3R5cGVfc3RyKToKLSAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVz
dHMgaW4gYSBnaXZlbiByZXN1bHQgY2xhc3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeSAtIHRoZSBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdHMgdG8g
cmVwb3J0IG9uCi0gICAgICAgICAgcmVzdWx0X3R5cGUgLSB0aGUgcGFydGljdWxhciByZXN1bHQg
dHlwZSB0byByZXBvcnQgaW4gdGhlIHN1bW1hcnkuCi0gICAgICAgICAgcmVzdWx0X3R5cGVfc3Ry
IC0gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHJlc3VsdF90eXBlLgotICAgICAgICAiIiIK
LSAgICAgICAgdGVzdHMgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0
X3R5cGUocmVzdWx0X3R5cGUpCi0gICAgICAgIG5vdyA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5
X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLk5PV10KLSAgICAgICAgd29udGZpeCA9IHJlc3Vs
dF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLldPTlRGSVhdCi0K
LSAgICAgICAgIyBXZSB1c2UgYSBmYW5jeSBmb3JtYXQgc3RyaW5nIGluIG9yZGVyIHRvIHByaW50
IHRoZSBkYXRhIG91dCBpbiBhCi0gICAgICAgICMgbmljZWx5LWFsaWduZWQgdGFibGUuCi0gICAg
ICAgIGZtdHN0ciA9ICgiRXhwZWN0OiAlJTVkICUlLThzICglJSVkZCBub3csICUlJWRkIHdvbnRm
aXgpIgotICAgICAgICAgICAgICAgICAgJSAoc2VsZi5fbnVtX2RpZ2l0cyhub3cpLCBzZWxmLl9u
dW1fZGlnaXRzKHdvbnRmaXgpKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3Rl
ZChmbXRzdHIgJQotICAgICAgICAgICAgKGxlbih0ZXN0cyksIHJlc3VsdF90eXBlX3N0ciwgbGVu
KHRlc3RzICYgbm93KSwgbGVuKHRlc3RzICYgd29udGZpeCkpKQotCi0gICAgZGVmIF9udW1fZGln
aXRzKHNlbGYsIG51bSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBvZiBkaWdpdHMg
bmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIGEKLSAgICAgICAgc2VxdWVuY2UuIiIi
Ci0gICAgICAgIG5kaWdpdHMgPSAxCi0gICAgICAgIGlmIGxlbihudW0pOgotICAgICAgICAgICAg
bmRpZ2l0cyA9IGludChtYXRoLmxvZzEwKGxlbihudW0pKSkgKyAxCi0gICAgICAgIHJldHVybiBu
ZGlnaXRzCi0KLSAgICBkZWYgX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKHNlbGYsIHRvdGFsX3Rp
bWUsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVj
dG9yeV90ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUmVjb3JkIHRp
bWluZy1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgdGhlIHRlc3QgcnVuLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgdG90YWxfdGltZTogdG90YWwgZWxhcHNlZCB0aW1lIChpbiBzZWNvbmRz
KSBmb3IgdGhlIHRlc3QgcnVuCi0gICAgICAgICAgdGhyZWFkX3RpbWluZ3M6IHdhbGwgY2xvY2sg
dGltZSBlYWNoIHRocmVhZCByYW4gZm9yCi0gICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5n
czogdGltaW5nIGJ5IGRpcmVjdG9yeQotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
OiB0aW1pbmcgYnkgZmlsZQotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVj
dCBmb3IgdGhlIHRlc3QgcnVuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3RpbWluZygiVGVzdCB0aW1pbmc6IikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90
aW1pbmcoIiAgJTYuMmYgdG90YWwgdGVzdGluZyB0aW1lIiAlIHRvdGFsX3RpbWUpCi0gICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3RpbWluZygiVGhyZWFkIHRpbWluZzoiKQotICAgICAgICBjdW1sX3RpbWUgPSAwCi0gICAg
ICAgIGZvciB0IGluIHRocmVhZF90aW1pbmdzOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90aW1pbmcoIiAgICAlMTBzOiAlNWQgdGVzdHMsICU2LjJmIHNlY3MiICUKLSAgICAgICAg
ICAgICAgICAgICh0WyduYW1lJ10sIHRbJ251bV90ZXN0cyddLCB0Wyd0b3RhbF90aW1lJ10pKQot
ICAgICAgICAgICAgY3VtbF90aW1lICs9IHRbJ3RvdGFsX3RpbWUnXQotICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3RpbWluZygiICAgJTYuMmYgY3VtdWxhdGl2ZSwgJTYuMmYgb3B0aW1hbCIg
JQotICAgICAgICAgICAgICAoY3VtbF90aW1lLCBjdW1sX3RpbWUgLyBpbnQoc2VsZi5fb3B0aW9u
cy5jaGlsZF9wcm9jZXNzZXMpKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmco
IiIpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhpbmRp
dmlkdWFsX3Rlc3RfdGltaW5ncykKLSAgICAgICAgc2VsZi5fcHJpbnRfaW5kaXZpZHVhbF90ZXN0
X3RpbWVzKGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCi0gICAgICAgIHNlbGYuX3ByaW50X2Rp
cmVjdG9yeV90aW1pbmdzKGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgX3ByaW50
X2FnZ3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3Moc2VsZiwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mp
OgotICAgICAgICAiIiJQcmludHMgYWdncmVnYXRlIHN0YXRpc3RpY3MgKGUuZy4gbWVkaWFuLCBt
ZWFuLCBldGMuKSBmb3IgYWxsIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RSZXN1bHRzIGZvciBhbGwgdGVzdHMuCi0g
ICAgICAgICIiIgotICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSA9IFt0ZXN0X3N0
YXRzLnRlc3RfcnVuX3RpbWUgZm9yIHRlc3Rfc3RhdHMgaW4gaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3NdCi0gICAgICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygiUEVS
IFRFU1QgVElNRSBJTiBURVNUU0hFTEwgKHNlY29uZHMpOiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSkK
LQotICAgIGRlZiBfcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKHNlbGYsIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9z
dW1tYXJ5KToKLSAgICAgICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMgZm9yIHNsb3csIHRpbWVv
dXQgYW5kIGNyYXNoIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RTdGF0cyBmb3IgYWxsIHRlc3RzLgotICAgICAgICAg
IHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGVzdCBydW4KLSAgICAgICAgIiIi
Ci0gICAgICAgICMgUmV2ZXJzZS1zb3J0IGJ5IHRoZSB0aW1lIHNwZW50IGluIER1bXBSZW5kZXJU
cmVlLgotICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5zb3J0KGxhbWJkYSBhLCBiOgot
ICAgICAgICAgICAgY21wKGIudGVzdF9ydW5fdGltZSwgYS50ZXN0X3J1bl90aW1lKSkKLQotICAg
ICAgICBudW1fcHJpbnRlZCA9IDAKLSAgICAgICAgc2xvd190ZXN0cyA9IFtdCi0gICAgICAgIHRp
bWVvdXRfb3JfY3Jhc2hfdGVzdHMgPSBbXQotICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMg
PSBbXQotICAgICAgICBmb3IgdGVzdF90dXBsZSBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoK
LSAgICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFtZQotICAgICAgICAgICAg
aXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYuX3Rl
c3RfaXNfc2xvdyhmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9v
cl9zbG93ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVw
bGUpCi0KLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVz
OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHNbZmlsZW5h
bWVdLnR5cGUKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25z
LlRJTUVPVVQgb3IKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRp
b25zLkNSQVNIKToKLSAgICAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzLmFwcGVu
ZCh0ZXN0X3R1cGxlKQotCi0gICAgICAgICAgICBpZiAobm90IGlzX3RpbWVvdXRfY3Jhc2hfb3Jf
c2xvdyBhbmQKLSAgICAgICAgICAgICAgICBudW1fcHJpbnRlZCA8IHByaW50aW5nLk5VTV9TTE9X
X1RFU1RTX1RPX0xPRyk6Ci0gICAgICAgICAgICAgICAgbnVtX3ByaW50ZWQgPSBudW1fcHJpbnRl
ZCArIDEKLSAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMuYXBwZW5kKHRlc3Rf
dHVwbGUpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0gICAgICAg
IHNlbGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcoIiVzIHNsb3dlc3QgdGVzdHMgdGhhdCBhcmUg
bm90ICIKLSAgICAgICAgICAgICJtYXJrZWQgYXMgU0xPVyBhbmQgZGlkIG5vdCB0aW1lb3V0L2Ny
YXNoOiIgJQotICAgICAgICAgICAgcHJpbnRpbmcuTlVNX1NMT1dfVEVTVFNfVE9fTE9HLCB1bmV4
cGVjdGVkX3Nsb3dfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIi
KQotICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGltaW5nKCJUZXN0cyBtYXJrZWQgYXMg
U0xPVzoiLCBzbG93X3Rlc3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygi
IikKLSAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygiVGVzdHMgdGhhdCB0aW1l
ZCBvdXQgb3IgY3Jhc2hlZDoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGlt
aW5nKCIiKQotCi0gICAgZGVmIF9wcmludF90ZXN0X2xpc3RfdGltaW5nKHNlbGYsIHRpdGxlLCB0
ZXN0X2xpc3QpOgotICAgICAgICAiIiJQcmludCB0aW1pbmcgaW5mbyBmb3IgZWFjaCB0ZXN0Lgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGl0bGU6IHNlY3Rpb24gaGVhZGluZwotICAgICAg
ICAgIHRlc3RfbGlzdDogdGVzdHMgdGhhdCBmYWxsIGluIHRoaXMgc2VjdGlvbgotICAgICAgICAi
IiIKLSAgICAgICAgaWYgc2VsZi5fcHJpbnRlci5kaXNhYmxlZCgnc2xvd2VzdCcpOgotICAgICAg
ICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcodGl0bGUp
Ci0gICAgICAgIGZvciB0ZXN0X3R1cGxlIGluIHRlc3RfbGlzdDoKLSAgICAgICAgICAgIGZpbGVu
YW1lID0gdGVzdF90dXBsZS5maWxlbmFtZVtsZW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCkpICsgMTpdCi0gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVu
YW1lLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICAgICAgdGVzdF9ydW5fdGltZSA9IHJvdW5k
KHRlc3RfdHVwbGUudGVzdF9ydW5fdGltZSwgMSkKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGltaW5nKCIgICVzIHRvb2sgJXMgc2Vjb25kcyIgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lKSkKLQotICAgIGRl
ZiBfcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3Moc2VsZiwgZGlyZWN0b3J5X3Rlc3RfdGltaW5ncyk6
Ci0gICAgICAgICIiIlByaW50IHRpbWluZyBpbmZvIGJ5IGRpcmVjdG9yeSBmb3IgYW55IGRpcmVj
dG9yaWVzIHRoYXQKLSAgICAgICAgdGFrZSA+IDEwIHNlY29uZHMgdG8gcnVuLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nOiB0aW1lIGluZm8gZm9yIGVh
Y2ggZGlyZWN0b3J5Ci0gICAgICAgICIiIgotICAgICAgICB0aW1pbmdzID0gW10KLSAgICAgICAg
Zm9yIGRpcmVjdG9yeSBpbiBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOgotICAgICAgICAgICAgbnVt
X3Rlc3RzLCB0aW1lX2Zvcl9kaXJlY3RvcnkgPSBkaXJlY3RvcnlfdGVzdF90aW1pbmdzW2RpcmVj
dG9yeV0KLSAgICAgICAgICAgIHRpbWluZ3MuYXBwZW5kKChyb3VuZCh0aW1lX2Zvcl9kaXJlY3Rv
cnksIDEpLCBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Rlc3Rz
KSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZygiVGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3JpZXM6IikKLSAgICAg
ICAgbWluX3NlY29uZHNfdG9fcHJpbnQgPSAxMAotICAgICAgICBmb3IgdGltaW5nIGluIHRpbWlu
Z3M6Ci0gICAgICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190b19wcmludDoKLSAg
ICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygKLSAgICAgICAgICAgICAg
ICAgICAgIiAgJXMgdG9vayAlcyBzZWNvbmRzIHRvIHJ1biAlcyB0ZXN0cy4iICUgKHRpbWluZ1sx
XSwKLSAgICAgICAgICAgICAgICAgICAgdGltaW5nWzBdLCB0aW1pbmdbMl0pKQotICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLQotICAgIGRlZiBfcHJpbnRfc3RhdGlzdGlj
c19mb3JfdGVzdF90aW1pbmdzKHNlbGYsIHRpdGxlLCB0aW1pbmdzKToKLSAgICAgICAgIiIiUHJp
bnRzIHRoZSBtZWRpYW4sIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgdmFsdWVz
IGluCi0gICAgICAgIHRpbWluZ3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB0aXRsZTog
VGl0bGUgZm9yIHRoZXNlIHRpbWluZ3MuCi0gICAgICAgICAgdGltaW5nczogQSBsaXN0IG9mIGZs
b2F0cyByZXByZXNlbnRpbmcgdGltZXMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X3RpbWluZyh0aXRsZSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAg
ICBudW1fdGVzdHMgPSBsZW4odGltaW5ncykKLSAgICAgICAgaWYgbm90IG51bV90ZXN0czoKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICBwZXJjZW50aWxlOTAgPSB0aW1pbmdzW2ludCguOSAq
IG51bV90ZXN0cyldCi0gICAgICAgIHBlcmNlbnRpbGU5OSA9IHRpbWluZ3NbaW50KC45OSAqIG51
bV90ZXN0cyldCi0KLSAgICAgICAgaWYgbnVtX3Rlc3RzICUgMiA9PSAxOgotICAgICAgICAgICAg
bWVkaWFuID0gdGltaW5nc1soKG51bV90ZXN0cyAtIDEpIC8gMikgLSAxXQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDIgLSAxXQotICAgICAg
ICAgICAgdXBwZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDJdCi0gICAgICAgICAgICBtZWRpYW4g
PSAoZmxvYXQobG93ZXIgKyB1cHBlcikpIC8gMgotCi0gICAgICAgIG1lYW4gPSBzdW0odGltaW5n
cykgLyBudW1fdGVzdHMKLQotICAgICAgICBmb3IgdGltZSBpbiB0aW1pbmdzOgotICAgICAgICAg
ICAgc3VtX29mX2RldmlhdGlvbnMgPSBtYXRoLnBvdyh0aW1lIC0gbWVhbiwgMikKLQotICAgICAg
ICBzdGRfZGV2aWF0aW9uID0gbWF0aC5zcXJ0KHN1bV9vZl9kZXZpYXRpb25zIC8gbnVtX3Rlc3Rz
KQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBNZWRpYW46ICAgICAgICAg
ICU2LjNmIiAlIG1lZGlhbikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAg
TWVhbjogICAgICAgICAgICAlNi4zZiIgJSBtZWFuKQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3RpbWluZygiICA5MHRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5MCkKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgOTl0aCBwZXJjZW50aWxlOiAlNi4z
ZiIgJSBwZXJjZW50aWxlOTkpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIg
IFN0YW5kYXJkIGRldjogICAgJTYuM2YiICUgc3RkX2RldmlhdGlvbikKLSAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0KLSAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1tYXJ5
KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUHJpbnQgYSBzaG9ydCBzdW1tYXJ5
IGFib3V0IGhvdyBtYW55IHRlc3RzIHBhc3NlZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
IHJlc3VsdF9zdW1tYXJ5OiBpbmZvcm1hdGlvbiB0byBsb2cKLSAgICAgICAgIiIiCi0gICAgICAg
IGZhaWxlZCA9IGxlbihyZXN1bHRfc3VtbWFyeS5mYWlsdXJlcykKLSAgICAgICAgc2tpcHBlZCA9
IGxlbigKLSAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Rl
c3RfZXhwZWN0YXRpb25zLlNLSVBdKQotICAgICAgICB0b3RhbCA9IHJlc3VsdF9zdW1tYXJ5LnRv
dGFsCi0gICAgICAgIHBhc3NlZCA9IHRvdGFsIC0gZmFpbGVkIC0gc2tpcHBlZAotICAgICAgICBw
Y3RfcGFzc2VkID0gMC4wCi0gICAgICAgIGlmIHRvdGFsID4gMDoKLSAgICAgICAgICAgIHBjdF9w
YXNzZWQgPSBmbG9hdChwYXNzZWQpICogMTAwIC8gdG90YWwKLQotICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwo
Ij0+IFJlc3VsdHM6ICVkLyVkIHRlc3RzIHBhc3NlZCAoJS4xZiUlKSIgJQotICAgICAgICAgICAg
ICAgICAgICAgKHBhc3NlZCwgdG90YWwsIHBjdF9wYXNzZWQpKQotICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnlf
ZW50cnkocmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5OT1cs
ICJUZXN0cyB0byBiZSBmaXhlZCIpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1
YWwoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJlc3VsdF9z
dW1tYXJ5LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWCwKLSAgICAgICAg
ICAgICJUZXN0cyB0aGF0IHdpbGwgb25seSBiZSBmaXhlZCBpZiB0aGV5IGNyYXNoIChXT05URklY
KSIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQotCi0gICAgZGVmIF9w
cmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShzZWxmLCByZXN1bHRfc3VtbWFyeSwgdGltZWxpbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKToKLSAgICAgICAg
IiIiUHJpbnQgYSBzdW1tYXJ5IGJsb2NrIG9mIHJlc3VsdHMgZm9yIGEgcGFydGljdWxhciB0aW1l
bGluZSBvZiB0ZXN0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6
IHN1bW1hcnkgdG8gcHJpbnQgcmVzdWx0cyBmb3IKLSAgICAgICAgICB0aW1lbGluZTogdGhlIHRp
bWVsaW5lIHRvIHByaW50IHJlc3VsdHMgZm9yIChOT1QsIFdPTlRGSVgsIGV0Yy4pCi0gICAgICAg
ICAgaGVhZGluZzogYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB0aW1lbGluZQotICAgICAg
ICAiIiIKLSAgICAgICAgdG90YWwgPSBsZW4ocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxp
bmVbdGltZWxpbmVdKQotICAgICAgICBub3RfcGFzc2luZyA9ICh0b3RhbCAtCi0gICAgICAgICAg
IGxlbihyZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0aW9u
cy5QQVNTXSAmCi0gICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGlu
ZVt0aW1lbGluZV0pKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiPT4gJXMg
KCVkKToiICUgKGhlYWRpbmcsIG5vdF9wYXNzaW5nKSkKLQotICAgICAgICBmb3IgcmVzdWx0IGlu
IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX09SREVSOgotICAgICAgICAgICAgaWYg
cmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6Ci0gICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgIHJlc3VsdHMgPSAocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0
YXRpb25bcmVzdWx0XSAmCi0gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRl
c3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKLSAgICAgICAgICAgIGRlc2MgPSBUZXN0RXhwZWN0
YXRpb25zRmlsZS5FWFBFQ1RBVElPTl9ERVNDUklQVElPTlNbcmVzdWx0XQotICAgICAgICAgICAg
aWYgbm90X3Bhc3NpbmcgYW5kIGxlbihyZXN1bHRzKToKLSAgICAgICAgICAgICAgICBwY3QgPSBs
ZW4ocmVzdWx0cykgKiAxMDAuMCAvIG5vdF9wYXNzaW5nCi0gICAgICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF9hY3R1YWwoIiAgJTVkICUtMjRzICglNC4xZiUlKSIgJQotICAgICAgICAg
ICAgICAgICAgICAobGVuKHJlc3VsdHMpLCBkZXNjW2xlbihyZXN1bHRzKSAhPSAxXSwgcGN0KSkK
LQotICAgIGRlZiBfY29weV9yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKLSAgICAgICAgYmFzZV9k
aXIgPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnZmFz
dCcsICdoYXJuZXNzJykKLSAgICAgICAgcmVzdWx0c19maWxlID0gc2VsZi5fZnMuam9pbihiYXNl
X2RpciwgJ3Jlc3VsdHMuaHRtbCcpCi0gICAgICAgICMgRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRv
IGlmIHRoaXMgZG9lc24ndCBleGlzdCAoZS5nLiwgaW4gdW5pdCB0ZXN0cyk/Ci0gICAgICAgIGlm
IHNlbGYuX2ZzLmV4aXN0cyhyZXN1bHRzX2ZpbGUpOgotICAgICAgICAgICAgc2VsZi5fZnMuY29w
eWZpbGUocmVzdWx0c19maWxlLCBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5
LCAicmVzdWx0cy5odG1sIikpCi0KLSAgICBkZWYgX3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2Vs
ZiwgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJTaG93cyB0aGUgcmVzdWx0cy5odG1sIHBh
Z2UuIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZnVsbF9yZXN1bHRzX2h0bWw6Ci0gICAg
ICAgICAgICB0ZXN0X2ZpbGVzID0gcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMua2V5cygpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZ2V0X2Zh
aWx1cmVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLSAgICAgICAgICAg
IHRlc3RfZmlsZXMgPSB1bmV4cGVjdGVkX2ZhaWx1cmVzLmtleXMoKQotCi0gICAgICAgIGlmIG5v
dCBsZW4odGVzdF9maWxlcyk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICByZXN1bHRz
X2ZpbGVuYW1lID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgInJlc3Vs
dHMuaHRtbCIpCi0gICAgICAgIHNlbGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1
bHRzX2ZpbGVuYW1lKQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnVGVz
dFJ1bm5lcicKLQotICAgIGRlZiBpc19kb25lKHNlbGYpOgotICAgICAgICB3b3JrZXJfc3RhdGVz
ID0gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKQotICAgICAgICByZXR1cm4gd29ya2VyX3N0
YXRlcyBhbmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcl9zdGF0ZSkgZm9yIHdvcmtl
cl9zdGF0ZSBpbiB3b3JrZXJfc3RhdGVzKQotCi0gICAgZGVmIF93b3JrZXJfaXNfZG9uZShzZWxm
LCB3b3JrZXJfc3RhdGUpOgotICAgICAgICB0ID0gdGltZS50aW1lKCkKLSAgICAgICAgaWYgd29y
a2VyX3N0YXRlLmRvbmUgb3Igd29ya2VyX3N0YXRlLndlZGdlZDoKLSAgICAgICAgICAgIHJldHVy
biBUcnVlCi0KLSAgICAgICAgbmV4dF90aW1lb3V0ID0gd29ya2VyX3N0YXRlLm5leHRfdGltZW91
dAotICAgICAgICBXRURHRV9QQURESU5HID0gNDAuMAotICAgICAgICBpZiBuZXh0X3RpbWVvdXQg
YW5kIHQgPiBuZXh0X3RpbWVvdXQgKyBXRURHRV9QQURESU5HOgotICAgICAgICAgICAgX2xvZy5l
cnJvcignJykKLSAgICAgICAgICAgIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5sb2df
d2VkZ2VkX3dvcmtlcih3b3JrZXJfc3RhdGUuY3VycmVudF90ZXN0X25hbWUpCi0gICAgICAgICAg
ICBfbG9nLmVycm9yKCcnKQotICAgICAgICAgICAgd29ya2VyX3N0YXRlLndlZGdlZCA9IFRydWUK
LSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVm
IGNhbmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYu
X3dvcmtlcl9zdGF0ZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICB3b3JrZXJfc3RhdGUud29ya2Vy
X2Nvbm5lY3Rpb24uY2FuY2VsKCkKLQotICAgIGRlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYs
IHNvdXJjZSwgdGVzdF9pbmZvLCBoYW5nX3RpbWVvdXQpOgotICAgICAgICB3b3JrZXJfc3RhdGUg
PSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLmN1cnJl
bnRfdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfaW5m
by5maWxlbmFtZSkKLSAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGltZW91dCA9IHRpbWUudGlt
ZSgpICsgaGFuZ190aW1lb3V0Ci0KLSAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc291cmNlKToK
LSAgICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCi0gICAg
ICAgIHdvcmtlcl9zdGF0ZS5kb25lID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZV9leGNlcHRpb24o
c2VsZiwgc291cmNlLCBleGNlcHRpb25faW5mbyk6Ci0gICAgICAgIGV4Y2VwdGlvbl90eXBlLCBl
eGNlcHRpb25fdmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBleGNlcHRpb25faW5mbwotICAg
ICAgICByYWlzZSBleGNlcHRpb25fdHlwZSwgZXhjZXB0aW9uX3ZhbHVlLCBleGNlcHRpb25fdHJh
Y2ViYWNrCi0KLSAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX2xpc3Qoc2VsZiwgc291cmNlLCBsaXN0
X25hbWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKToKLSAgICAgICAgc2VsZi5fZ3JvdXBfc3Rh
dHNbbGlzdF9uYW1lXSA9IChudW1fdGVzdHMsIGVsYXBzZWRfdGltZSkKLQotICAgIGRlZiBoYW5k
bGVfZmluaXNoZWRfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToKLSAg
ICAgICAgd29ya2VyX3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCi0gICAgICAg
IHdvcmtlcl9zdGF0ZS5uZXh0X3RpbWVvdXQgPSBOb25lCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5j
dXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKLSAgICAgICAgd29ya2VyX3N0YXRlLnN0YXRzWyd0b3Rh
bF90aW1lJ10gKz0gZWxhcHNlZF90aW1lCi0gICAgICAgIHdvcmtlcl9zdGF0ZS5zdGF0c1snbnVt
X3Rlc3RzJ10gKz0gMQotCi0gICAgICAgIGlmIHdvcmtlcl9zdGF0ZS53ZWRnZWQ6Ci0gICAgICAg
ICAgICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBoYXZlIG91ciB0aW1lb3V0cyB0dW5l
ZCBwcm9wZXJseS4KLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIHVud2VkZ2VkIiwgc291cmNl
KQotCi0gICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzLmFwcGVuZChyZXN1bHQpCi0gICAgICAgIHNl
bGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnksIHJlc3VsdCkKLQotCi1kZWYgcmVhZF90ZXN0X2ZpbGVzKGZzLCBmaWxlcyk6Ci0gICAgdGVz
dHMgPSBbXQotICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBmaWxlX2NvbnRlbnRzID0gZnMucmVhZF90ZXh0X2ZpbGUoZmlsZSkuc3BsaXQoJ1xuJykKLSAg
ICAgICAgICAgIGZvciBsaW5lIGluIGZpbGVfY29udGVudHM6Ci0gICAgICAgICAgICAgICAgbGlu
ZSA9IHRlc3RfZXhwZWN0YXRpb25zLnN0cmlwX2NvbW1lbnRzKGxpbmUpCi0gICAgICAgICAgICAg
ICAgaWYgbGluZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKGxpbmUpCi0gICAg
ICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5F
Tk9FTlQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKLSAgICAgICAgICAgICAg
ICBfbG9nLmNyaXRpY2FsKCctLXRlc3QtbGlzdCBmaWxlICIlcyIgbm90IGZvdW5kJyAlIGZpbGUp
Ci0gICAgICAgICAgICByYWlzZQotICAgIHJldHVybiB0ZXN0cwotCi0KLWNsYXNzIF9Xb3JrZXJT
dGF0ZShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgZm9yIHRoZSBUZXN0UnVubmVyL21hbmFnZXIg
dG8gdXNlIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlCi0gICAgb2YgdGhlIHdvcmtlcnMuIiIi
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bWJlciwgd29ya2VyX2Nvbm5lY3Rpb24pOgotICAg
ICAgICBzZWxmLndvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAg
c2VsZi5udW1iZXIgPSBudW1iZXIKLSAgICAgICAgc2VsZi5kb25lID0gRmFsc2UKLSAgICAgICAg
c2VsZi5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKLSAgICAgICAgc2VsZi5uZXh0X3RpbWVvdXQg
PSBOb25lCi0gICAgICAgIHNlbGYud2VkZ2VkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zdGF0cyA9
IHt9Ci0gICAgICAgIHNlbGYuc3RhdHNbJ25hbWUnXSA9IHdvcmtlcl9jb25uZWN0aW9uLm5hbWUK
LSAgICAgICAgc2VsZi5zdGF0c1snbnVtX3Rlc3RzJ10gPSAwCi0gICAgICAgIHNlbGYuc3RhdHNb
J3RvdGFsX3RpbWUnXSA9IDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuICJfV29ya2VyU3RhdGUoIiArIHN0cihzZWxmLl9fZGljdF9fKSArICIpIgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9ydW5uZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODI1NjRkMi4uMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVzdC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmln
aHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5p
dmVyc2l0eSBvZiBTemVnZWQKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdHMgZm9y
IFRlc3RSdW5uZXIoKS4iIiIKLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawotCi1pbXBvcnQgdGVzdF9ydW5uZXIKLQotCi1jbGFzcyBUZXN0
UnVubmVyV3JhcHBlcih0ZXN0X3J1bm5lci5UZXN0UnVubmVyKToKLSAgICBkZWYgX2dldF90ZXN0
X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X2Zp
bGUKLQotCi1jbGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IHRlc3Rfc2hhcmRfdGVzdHMoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IF9zaGFyZF90ZXN0
cyBpbiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyIHJlYWxseQotICAgICAgICAjIHB1dCB0aGUgaHR0
cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCi0gICAgICAgIHBvcnQgPSBNb2NrKCkKLSAgICAg
ICAgcG9ydC5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgpCi0g
ICAgICAgIHJ1bm5lciA9IFRlc3RSdW5uZXJXcmFwcGVyKHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2Nr
KCksCi0gICAgICAgICAgICBwcmludGVyPU1vY2soKSkKLQotICAgICAgICB0ZXN0X2xpc3QgPSBb
Ci0gICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCi0g
ICAgICAgICAgIkxheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwiLAotICAgICAg
ICAgICJMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJl
c2guaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2Nr
ZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCIsCi0gICAgICAg
ICAgIkxheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1j
b250ZW50LXR5cGVzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0
cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5odG1sIiwKLSAgICAgICAg
ICAiTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5o
dG1sIiwKLSAgICAgICAgXQotCi0gICAgICAgIGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jayA9
IHNldChbCi0gICAgICAgICAgJ0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0
bScsCi0gICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3Vy
Y2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAgICAnTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnLAotICAgICAgICAgICdMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBl
cy5odG1sJywKLSAgICAgICAgXSkKLQotICAgICAgICAjIEZJWE1FOiBJZGVhbGx5IHRoZSBIVFRQ
IHRlc3RzIGRvbid0IGhhdmUgdG8gYWxsIGJlIGluIG9uZSBzaGFyZC4KLSAgICAgICAgc2luZ2xl
X3RocmVhZF9yZXN1bHRzID0gcnVubmVyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIEZhbHNlKQot
ICAgICAgICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHModGVzdF9s
aXN0LCBUcnVlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9j
ayIsIHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChzaW5nbGVfdGhyZWFkX3Jlc3VsdHNb
MF1bMV0pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xvY2siLCBt
dWx0aV90aHJlYWRfcmVzdWx0c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1swXVsxXSkp
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5CmluZGV4IGUzZDVlYmIuLjUzZTJlMzAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMzcs
OSArMzcsMTAgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiAKLWZyb20g
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IKLWZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0
X3J1bm5lcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IGxheW91dF9wYWNrYWdl
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9y
ZXN1bHRzX2dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHByaW50aW5nCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZSBpbXBvcnQgbWFuYWdlcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0
IHVzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgc2ltcGxlanNvbgpAQCAtODgs
MzIgKzg5LDMyIEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9
c3lzLnN0ZGVyciwKICAgICAjIGluIGEgdHJ5L2ZpbmFsbHkgdG8gZW5zdXJlIHRoYXQgd2UgY2xl
YW4gdXAgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4KICAgICBudW1fdW5leHBlY3RlZF9yZXN1
bHRzID0gLTEKICAgICB0cnk6Ci0gICAgICAgIHJ1bm5lciA9IHRlc3RfcnVubmVyLlRlc3RSdW5u
ZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKLSAgICAgICAgcnVubmVyLl9wcmludF9jb25maWco
KQorICAgICAgICBtYW5hZ2VyID0gbGF5b3V0X3BhY2thZ2UubWFuYWdlci5NYW5hZ2VyKHBvcnQs
IG9wdGlvbnMsIHByaW50ZXIpCisgICAgICAgIG1hbmFnZXIuX3ByaW50X2NvbmZpZygpCiAKICAg
ICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNvbGxlY3RpbmcgdGVzdHMgLi4uIikKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcnVubmVyLmNvbGxlY3RfdGVzdHMoYXJncywgbGFzdF91bmV4
cGVjdGVkX3Jlc3VsdHMpCisgICAgICAgICAgICBtYW5hZ2VyLmNvbGxlY3RfdGVzdHMoYXJncywg
bGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgogICAg
ICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xCiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIGlmIG9wdGlvbnMubGludF90ZXN0
X2ZpbGVzOgotICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5saW50KCkKKyAgICAgICAgICAgIHJl
dHVybiBtYW5hZ2VyLmxpbnQoKQogCiAgICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJQYXJz
aW5nIGV4cGVjdGF0aW9ucyAuLi4iKQotICAgICAgICBydW5uZXIucGFyc2VfZXhwZWN0YXRpb25z
KCkKKyAgICAgICAgbWFuYWdlci5wYXJzZV9leHBlY3RhdGlvbnMoKQogCiAgICAgICAgIHByaW50
ZXIucHJpbnRfdXBkYXRlKCJDaGVja2luZyBidWlsZCAuLi4iKQotICAgICAgICBpZiBub3QgcG9y
dC5jaGVja19idWlsZChydW5uZXIubmVlZHNfaHR0cCgpKToKKyAgICAgICAgaWYgbm90IHBvcnQu
Y2hlY2tfYnVpbGQobWFuYWdlci5uZWVkc19odHRwKCkpOgogICAgICAgICAgICAgX2xvZy5lcnJv
cigiQnVpbGQgY2hlY2sgZmFpbGVkIikKICAgICAgICAgICAgIHJldHVybiAtMQogCi0gICAgICAg
IHJlc3VsdF9zdW1tYXJ5ID0gcnVubmVyLnNldF91cF9ydW4oKQorICAgICAgICByZXN1bHRfc3Vt
bWFyeSA9IG1hbmFnZXIuc2V0X3VwX3J1bigpCiAgICAgICAgIGlmIHJlc3VsdF9zdW1tYXJ5Ogot
ICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9IHJ1bm5lci5ydW4ocmVzdWx0X3N1
bW1hcnkpCi0gICAgICAgICAgICBydW5uZXIuY2xlYW5fdXBfcnVuKCkKKyAgICAgICAgICAgIG51
bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSBtYW5hZ2VyLnJ1bihyZXN1bHRfc3VtbWFyeSkKKyAgICAg
ICAgICAgIG1hbmFnZXIuY2xlYW5fdXBfcnVuKCkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIlRl
c3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogJWQiICUKICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cykKICAgICBmaW5hbGx5OgpAQCAtMTQ5LDkgKzE1MCw5
IEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0X29iaiwgb3B0aW9ucyk6CiAKICAg
ICBpZiBub3Qgb3B0aW9ucy50aW1lX291dF9tczoKICAgICAgICAgaWYgb3B0aW9ucy5jb25maWd1
cmF0aW9uID09ICJEZWJ1ZyI6Ci0gICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3Ry
KDIgKiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQorICAg
ICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cigyICogbWFuYWdlci5NYW5hZ2VyLkRF
RkFVTFRfVEVTVF9USU1FT1VUX01TKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3B0aW9u
cy50aW1lX291dF9tcyA9IHN0cih0ZXN0X3J1bm5lci5UZXN0UnVubmVyLkRFRkFVTFRfVEVTVF9U
SU1FT1VUX01TKQorICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cihtYW5hZ2Vy
Lk1hbmFnZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCiAKICAgICBvcHRpb25zLnNsb3dfdGlt
ZV9vdXRfbXMgPSBzdHIoNSAqIGludChvcHRpb25zLnRpbWVfb3V0X21zKSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90660</attachid>
            <date>2011-04-21 20:24:38 -0700</date>
            <delta_ts>2011-04-21 20:24:38 -0700</delta_ts>
            <desc>try again with the patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>131809</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3N2I0
YTBhLi5iMjAxZGZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDQtMTcgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IG9ic29sZXRlIG9sZCBjb2RlLCBwYXJ0IDMg
LSByZW5hbWUgdGVzdF9ydW5uZXIgdG8gbWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg3NTQKKworICAgICAgICB0ZXN0X3J1bm5lciBoYXNu
J3QgYmVlbiBhIGdyZWF0IG5hbWUgZm9yIHNvbWUgdGltZSwgc2luY2UgYWxsIG9mCisgICAgICAg
IHRoZSB0ZXN0IHJ1bm5pbmcgaXMgYWN0dWFsbHkgZG9uZSBpbiB3b3JrZXIgYW5kCisgICAgICAg
IHNpbmdsZV90ZXN0X3J1bm5lci4gUmVuYW1lIHRvIG1hbmFnZXIgdG8gbWF0Y2ggdGhlIHRlcm1p
bm9sb2d5CisgICAgICAgIGVsc2V3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5p
dHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5OiBSZW1v
dmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTEtMDQtMjEg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJkNTEyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CkBAIC0w
LDAgKzEsMTMyMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
R2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBT
emVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgorVGhlIE1hbmFnZXIgcnVucyBhIHNlcmll
cyBvZiB0ZXN0cyAoVGVzdFR5cGUgaW50ZXJmYWNlKSBhZ2FpbnN0IGEgc2V0CitvZiB0ZXN0IGZp
bGVzLiAgSWYgYSB0ZXN0IGZpbGUgZmFpbHMgYSBUZXN0VHlwZSwgaXQgcmV0dXJucyBhIGxpc3Qg
b2YgVGVzdEZhaWx1cmUKK29iamVjdHMgdG8gdGhlIE1hbmFnZXIuIFRoZSBNYW5hZ2VyIHRoZW4g
YWdncmVnYXRlcyB0aGUgVGVzdEZhaWx1cmVzIHRvCitjcmVhdGUgYSBmaW5hbCByZXBvcnQuCisi
IiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBvcnQgY29w
eQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG1hdGgKK2ltcG9ydCBRdWV1
ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fbGF5b3V0X3Jlc3VsdHNf
Z2VuZXJhdG9yCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5
b3V0X3BhY2thZ2UgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgorZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1
cmVzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9yZXN1bHRzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQgdGVzdF9yZXN1bHRzX3VwbG9hZGVyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZSBpbXBvcnQgd29ya2VyCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxh
eW91dF9wYWNrYWdlLnJlc3VsdF9zdW1tYXJ5IGltcG9ydCBSZXN1bHRTdW1tYXJ5Citmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X2lucHV0IGltcG9ydCBUZXN0
SW5wdXQKKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCitmcm9t
IHdlYmtpdHB5LnRvb2wgaW1wb3J0IGdyYW1tYXIKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQorCisjIEJ1aWxkZXIgYmFzZSBVUkwgd2hlcmUgd2UgaGF2ZSB0aGUgYXJjaGl2
ZWQgdGVzdCByZXN1bHRzLgorQlVJTERFUl9CQVNFX1VSTCA9ICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvIgorCitUZXN0RXhwZWN0YXRpb25z
RmlsZSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxlCisKKworZGVmIHN1
bW1hcml6ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBy
ZXRyeV9zdW1tYXJ5LCB0ZXN0X3RpbWluZ3MsIG9ubHlfdW5leHBlY3RlZCk6CisgICAgIiIiU3Vt
bWFyaXplIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMgYXMgYSBkaWN0LgorCisgICAgRklYTUU6IHNw
bGl0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaW50byBhIHNlcGFyYXRlIGNsYXNzPworCisgICAgQXJn
czoKKyAgICAgICAgcG9ydF9vYmo6IGludGVyZmFjZSB0byBwb3J0LXNwZWNpZmljIGhvb2tzCisg
ICAgICAgIGV4cGVjdGF0aW9uczogdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyBv
YmplY3QKKyAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gaW5pdGlh
bCB0ZXN0IHJ1bnMKKyAgICAgICAgcmV0cnlfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgZnJvbSBm
aW5hbCB0ZXN0IHJ1biBvZiByZXRyaWVkIHRlc3RzCisgICAgICAgIHRlc3RfdGltaW5nczogYSBs
aXN0IG9mIFRlc3RSZXN1bHQgb2JqZWN0cyB3aGljaCBjb250YWluIHRlc3QgcnVudGltZXMgaW4g
c2Vjb25kcworICAgICAgICBvbmx5X3VuZXhwZWN0ZWQ6IHdoZXRoZXIgdG8gcmV0dXJuIGEgc3Vt
bWFyeSBvbmx5IGZvciB0aGUgdW5leHBlY3RlZCByZXN1bHRzCisgICAgUmV0dXJuczoKKyAgICAg
ICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9mIHRoZSB1bmV4cGVjdGVkIHJl
c3VsdHMgZnJvbSB0aGUKKyAgICAgICAgcnVuLCB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOgor
ICAgICAgICAndmVyc2lvbic6IGEgdmVyc2lvbiBpbmRpY2F0b3IgKDEgaW4gdGhpcyB2ZXJzaW9u
KQorICAgICAgICAnZml4YWJsZSc6ICMgb2YgZml4YWJsZSB0ZXN0cyAoTk9XIC0gUEFTUykKKyAg
ICAgICAgJ3NraXBwZWQnOiAjIG9mIHNraXBwZWQgdGVzdHMgKE5PVyAmIFNLSVBQRUQpCisgICAg
ICAgICdudW1fcmVncmVzc2lvbnMnOiAjIG9mIG5vbi1mbGFreSBmYWlsdXJlcworICAgICAgICAn
bnVtX2ZsYWt5JzogIyBvZiBmbGFreSBmYWlsdXJlcworICAgICAgICAnbnVtX3Bhc3Nlcyc6ICMg
b2YgdW5leHBlY3RlZCBwYXNzZXMKKyAgICAgICAgJ3Rlc3RzJzogYSBkaWN0IG9mIHRlc3RzIC0+
IHsnZXhwZWN0ZWQnOiAnLi4uJywgJ2FjdHVhbCc6ICcuLi4nLCAndGltZV9tcyc6IC4uLn0KKyAg
ICAiIiIKKyAgICByZXN1bHRzID0ge30KKyAgICByZXN1bHRzWyd2ZXJzaW9uJ10gPSAxCisKKyAg
ICB0ZXN0X3RpbWluZ3NfbWFwID0gZGljdCgodGVzdF9yZXN1bHQuZmlsZW5hbWUsIHRlc3RfcmVz
dWx0LnRlc3RfcnVuX3RpbWUpIGZvciB0ZXN0X3Jlc3VsdCBpbiB0ZXN0X3RpbWluZ3MpCisKKyAg
ICB0YmUgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvbgorICAgIHRidCA9IHJl
c3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lCisgICAgcmVzdWx0c1snZml4YWJsZSddID0g
bGVuKHRidFt0ZXN0X2V4cGVjdGF0aW9ucy5OT1ddIC0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGJlW3Rlc3RfZXhwZWN0YXRpb25zLlBBU1NdKQorICAgIHJlc3VsdHNbJ3NraXBw
ZWQnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRiZVt0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQXSkKKworICAgIG51bV9w
YXNzZXMgPSAwCisgICAgbnVtX2ZsYWt5ID0gMAorICAgIG51bV9yZWdyZXNzaW9ucyA9IDAKKyAg
ICBrZXl3b3JkcyA9IHt9CisgICAgZm9yIGV4cGVjYXRpb25fc3RyaW5nLCBleHBlY3RhdGlvbl9l
bnVtIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OUy5pdGVyaXRlbXMoKToKKyAg
ICAgICAga2V5d29yZHNbZXhwZWN0YXRpb25fZW51bV0gPSBleHBlY2F0aW9uX3N0cmluZy51cHBl
cigpCisKKyAgICBmb3IgbW9kaWZpZXJfc3RyaW5nLCBtb2RpZmllcl9lbnVtIGluIFRlc3RFeHBl
Y3RhdGlvbnNGaWxlLk1PRElGSUVSUy5pdGVyaXRlbXMoKToKKyAgICAgICAga2V5d29yZHNbbW9k
aWZpZXJfZW51bV0gPSBtb2RpZmllcl9zdHJpbmcudXBwZXIoKQorCisgICAgdGVzdHMgPSB7fQor
ICAgIG9yaWdpbmFsX3Jlc3VsdHMgPSByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHMg
aWYgb25seV91bmV4cGVjdGVkIGVsc2UgcmVzdWx0X3N1bW1hcnkucmVzdWx0cworCisgICAgZm9y
IGZpbGVuYW1lLCByZXN1bHQgaW4gb3JpZ2luYWxfcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAg
ICAgIyBOb3RlIHRoYXQgaWYgYSB0ZXN0IGNyYXNoZWQgaW4gdGhlIG9yaWdpbmFsIHJ1biwgd2Ug
aWdub3JlCisgICAgICAgICMgd2hldGhlciBvciBub3QgaXQgY3Jhc2hlZCB3aGVuIHdlIHJldHJp
ZWQgaXQgKGlmIHdlIHJldHJpZWQgaXQpLAorICAgICAgICAjIGFuZCBhbHdheXMgY29uc2lkZXIg
dGhlIHJlc3VsdCBub3QgZmxha3kuCisgICAgICAgIHRlc3QgPSBwb3J0X29iai5yZWxhdGl2ZV90
ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKQorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGF0aW9ucy5n
ZXRfZXhwZWN0YXRpb25zX3N0cmluZyhmaWxlbmFtZSkKKyAgICAgICAgcmVzdWx0X3R5cGUgPSBy
ZXN1bHQudHlwZQorICAgICAgICBhY3R1YWwgPSBba2V5d29yZHNbcmVzdWx0X3R5cGVdXQorCisg
ICAgICAgIGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6CisgICAgICAg
ICAgICBudW1fcGFzc2VzICs9IDEKKyAgICAgICAgZWxpZiByZXN1bHRfdHlwZSA9PSB0ZXN0X2V4
cGVjdGF0aW9ucy5DUkFTSDoKKyAgICAgICAgICAgIG51bV9yZWdyZXNzaW9ucyArPSAxCisgICAg
ICAgIGVsaWYgZmlsZW5hbWUgaW4gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzOgor
ICAgICAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIHJldHJ5X3N1bW1hcnkudW5leHBlY3RlZF9y
ZXN1bHRzOgorICAgICAgICAgICAgICAgIGFjdHVhbC5leHRlbmQoZXhwZWN0YXRpb25zLmdldF9l
eHBlY3RhdGlvbnNfc3RyaW5nKGZpbGVuYW1lKS5zcGxpdCgiICIpKQorICAgICAgICAgICAgICAg
IG51bV9mbGFreSArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHJ5
X3Jlc3VsdF90eXBlID0gcmV0cnlfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHNbZmlsZW5hbWVd
LnR5cGUKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRfdHlwZSAhPSByZXRyeV9yZXN1bHRfdHlw
ZToKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmFwcGVuZChrZXl3b3Jkc1tyZXRyeV9yZXN1
bHRfdHlwZV0pCisgICAgICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbnVtX3JlZ3Jlc3Npb25zICs9IDEKKwor
ICAgICAgICB0ZXN0c1t0ZXN0XSA9IHt9CisgICAgICAgIHRlc3RzW3Rlc3RdWydleHBlY3RlZCdd
ID0gZXhwZWN0ZWQKKyAgICAgICAgdGVzdHNbdGVzdF1bJ2FjdHVhbCddID0gIiAiLmpvaW4oYWN0
dWFsKQorICAgICAgICAjIEZJWE1FOiBTZXQgdGhpcyBjb3JyZWN0bHkgb25jZSBodHRwczovL3dl
YmtpdC5vcmcvYi8zNzczOSBpcyBmaXhlZAorICAgICAgICAjIGFuZCBvbmx5IHNldCBpdCBpZiB0
aGVyZSBhY3R1YWxseSBpcyBzdGRlcnIgZGF0YS4KKyAgICAgICAgdGVzdHNbdGVzdF1bJ2hhc19z
dGRlcnInXSA9IEZhbHNlCisKKyAgICAgICAgZmFpbHVyZV90eXBlcyA9IFt0eXBlKGYpIGZvciBm
IGluIHJlc3VsdC5mYWlsdXJlc10KKyAgICAgICAgaWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlz
c2luZ0F1ZGlvIGluIGZhaWx1cmVfdHlwZXM6CisgICAgICAgICAgICB0ZXN0c1t0ZXN0XVsnaXNf
bWlzc2luZ19hdWRpbyddID0gVHJ1ZQorCisgICAgICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVy
ZVJlZnRlc3RNaXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVzOgorICAgICAgICAgICAgdGVzdHNbdGVz
dF1bJ2lzX3JlZnRlc3QnXSA9IFRydWUKKworICAgICAgICBmb3IgZiBpbiByZXN1bHQuZmFpbHVy
ZXM6CisgICAgICAgICAgICBpZiAnaXNfcmVmdGVzdCcgaW4gcmVzdWx0LmZhaWx1cmVzOgorICAg
ICAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19yZWZ0ZXN0J10gPSBUcnVlCisKKyAgICAgICAg
aWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIgaW4gZmFp
bHVyZV90eXBlczoKKyAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19taXNtYXRjaF9yZWZ0ZXN0
J10gPSBUcnVlCisKKyAgICAgICAgaWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ1Jlc3Vs
dCBpbiBmYWlsdXJlX3R5cGVzOgorICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2lzX21pc3Npbmdf
dGV4dCddID0gVHJ1ZQorCisgICAgICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJ
bWFnZSBpbiBmYWlsdXJlX3R5cGVzIG9yIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFn
ZUhhc2ggaW4gZmFpbHVyZV90eXBlczoKKyAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19taXNz
aW5nX2ltYWdlJ10gPSBUcnVlCisKKyAgICAgICAgaWYgZmlsZW5hbWUgaW4gdGVzdF90aW1pbmdz
X21hcDoKKyAgICAgICAgICAgIHRpbWVfc2Vjb25kcyA9IHRlc3RfdGltaW5nc19tYXBbZmlsZW5h
bWVdCisgICAgICAgICAgICB0ZXN0c1t0ZXN0XVsndGltZV9tcyddID0gaW50KDEwMDAgKiB0aW1l
X3NlY29uZHMpCisKKyAgICByZXN1bHRzWyd0ZXN0cyddID0gdGVzdHMKKyAgICByZXN1bHRzWydu
dW1fcGFzc2VzJ10gPSBudW1fcGFzc2VzCisgICAgcmVzdWx0c1snbnVtX2ZsYWt5J10gPSBudW1f
Zmxha3kKKyAgICByZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXSA9IG51bV9yZWdyZXNzaW9ucwor
ICAgICMgRklYTUU6IElmIG5vbi1jaHJvbWl1bSBwb3J0cyBzdGFydCB1c2luZyBhbiBleHBlY3Rh
dGlvbnMgZmlsZSwKKyAgICAjIHdlIHNob3VsZCBtYWtlIHRoaXMgY2hlY2sgbW9yZSByb2J1c3Qu
CisgICAgcmVzdWx0c1sndXNlc19leHBlY3RhdGlvbnNfZmlsZSddID0gcG9ydF9vYmoubmFtZSgp
LmZpbmQoJ2Nocm9taXVtJykgIT0gLTEKKyAgICByZXN1bHRzWydsYXlvdXRfdGVzdHNfZGlyJ10g
PSBwb3J0X29iai5sYXlvdXRfdGVzdHNfZGlyKCkKKyAgICByZXN1bHRzWydoYXNfd2RpZmYnXSA9
IHBvcnRfb2JqLndkaWZmX2F2YWlsYWJsZSgpCisgICAgcmVzdWx0c1snaGFzX3ByZXR0eV9wYXRj
aCddID0gcG9ydF9vYmoucHJldHR5X3BhdGNoX2F2YWlsYWJsZSgpCisKKyAgICByZXR1cm4gcmVz
dWx0cworCisKK2NsYXNzIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgor
ICAgICIiIlJhaXNlZCB3aGVuIGEgdGVzdCBydW4gc2hvdWxkIGJlIHN0b3BwZWQgaW1tZWRpYXRl
bHkuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYXNvbik6CisgICAgICAgIHNlbGYucmVh
c29uID0gcmVhc29uCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX19jbGFzc19fLCAoc2VsZi5yZWFzb24sKQorCisKK2NsYXNzIE1hbmFnZXI6CisgICAg
IiIiQSBjbGFzcyBmb3IgbWFuYWdpbmcgcnVubmluZyBhIHNlcmllcyBvZiB0ZXN0cyBvbiBhIHNl
cmllcyBvZiBsYXlvdXQKKyAgICB0ZXN0IGZpbGVzLiIiIgorCisKKyAgICAjIFRoZSBwZXItdGVz
dCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcywgaWYgbm8gLS10aW1lLW91dC1tcyBvcHRpb24gd2Fz
CisgICAgIyBnaXZlbiB0byBydW5fd2Via2l0X3Rlc3RzLiBUaGlzIHNob3VsZCBjb3JyZXNwb25k
IHRvIHRoZSBkZWZhdWx0IHRpbWVvdXQKKyAgICAjIGluIER1bXBSZW5kZXJUcmVlLgorICAgIERF
RkFVTFRfVEVTVF9USU1FT1VUX01TID0gNiAqIDEwMDAKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwb3J0LCBvcHRpb25zLCBwcmludGVyKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB0ZXN0IHJ1
bm5lciBkYXRhIHN0cnVjdHVyZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBwb3J0OiBh
biBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQtc3BlY2lmaWMKKyAgICAgICAgICBvcHRpb25zOiBh
IGRpY3Rpb25hcnkgb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAgICAgICAgICBwcmludGVyOiBh
IFByaW50ZXIgb2JqZWN0IHRvIHJlY29yZCB1cGRhdGVzIHRvLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fZnMgPSBwb3J0Ll9maWxlc3lzdGVt
CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuX3ByaW50ZXIg
PSBwcmludGVyCisgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0gTm9uZQorCisgICAgICAg
IHNlbGYuSFRUUF9TVUJESVIgPSBzZWxmLl9mcy5qb2luKCcnLCAnaHR0cCcsICcnKQorICAgICAg
ICBzZWxmLldFQlNPQ0tFVF9TVUJESVIgPSBzZWxmLl9mcy5qb2luKCcnLCAnd2Vic29ja2V0Jywg
JycpCisgICAgICAgIHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9ICJMYXlvdXRUZXN0cyIg
KyBzZWxmLl9mcy5zZXAKKworCisgICAgICAgICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRv
IGluc3RhbGwgcHlPcGVuU1NMIG9uIGJ1aWxkYm90cy4KKyAgICAgICAgIyBzZWxmLl93ZWJzb2Nr
ZXRfc2VjdXJlX3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCisgICAgICAg
ICMgICAgICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHVzZV90bHM9VHJ1ZSwgcG9ydD05
MzIzKQorCisgICAgICAgICMgYSBzZXQgb2YgdGVzdCBmaWxlcywgYW5kIHRoZSBzYW1lIHRlc3Rz
IGFzIGEgbGlzdAorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KCkKKyAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlc19saXN0ID0gTm9uZQorICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBR
dWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuX3JldHJ5aW5nID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCkKKwor
ICAgICAgICBzZWxmLl9hbGxfcmVzdWx0cyA9IFtdCisgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRz
ID0ge30KKyAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IE5vbmUKKworICAg
ICAgICAjIFRoaXMgbWFwcyB3b3JrZXIgbmFtZXMgdG8gdGhlIHN0YXRlIHdlIGFyZSB0cmFja2lu
ZyBmb3IgZWFjaCBvZiB0aGVtLgorICAgICAgICBzZWxmLl93b3JrZXJfc3RhdGVzID0ge30KKwor
CisgICAgZGVmIGNvbGxlY3RfdGVzdHMoc2VsZiwgYXJncywgbGFzdF91bmV4cGVjdGVkX3Jlc3Vs
dHMpOgorICAgICAgICAiIiJGaW5kIGFsbCB0aGUgZmlsZXMgdG8gdGVzdC4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgIGFyZ3M6IGxpc3Qgb2YgdGVzdCBhcmd1bWVudHMgZnJvbSB0aGUgY29t
bWFuZCBsaW5lCisgICAgICAgICAgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHM6IGxpc3Qgb2YgdW5l
eHBlY3RlZCByZXN1bHRzIHRvIHJldGVzdCwgaWYgYW55CisKKyAgICAgICAgIiIiCisgICAgICAg
IHBhdGhzID0gc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMoYXJncykKKyAgICAgICAgcGF0
aHMgKz0gbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy50
ZXN0X2xpc3Q6CisgICAgICAgICAgICBwYXRocyArPSBzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVm
aXhlcyhyZWFkX3Rlc3RfZmlsZXMoc2VsZi5fZnMsIHNlbGYuX29wdGlvbnMudGVzdF9saXN0KSkK
KyAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNlbGYuX3BvcnQudGVzdHMocGF0aHMpCisKKyAg
ICBkZWYgX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKHNlbGYsIHBhdGhzKToKKyAgICAgICAgcmV0
dXJuIFtzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgocGF0aCkgZm9yIHBhdGggaW4gcGF0aHMg
aWYgcGF0aF0KKworICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJfcHJlZml4KHNlbGYsIHBhdGgpOgor
ICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoc2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZKToK
KyAgICAgICAgICAgIHJldHVybiBwYXRoW2xlbihzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlkp
Ol0KKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBsaW50KHNlbGYpOgorICAgICAgICBs
aW50X2ZhaWxlZCA9IEZhbHNlCisgICAgICAgIGZvciB0ZXN0X2NvbmZpZ3VyYXRpb24gaW4gc2Vs
Zi5fcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpOgorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIHNlbGYubGludF9leHBlY3RhdGlvbnModGVzdF9jb25maWd1cmF0aW9uKQor
ICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6CisgICAgICAg
ICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci53cml0ZSgiIikKKworICAgICAgICBpZiBsaW50X2ZhaWxlZDoKKyAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkxpbnQgZmFpbGVkLiIpCisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgICAgICBf
bG9nLmluZm8oIkxpbnQgc3VjY2VlZGVkLiIpCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYg
bGludF9leHBlY3RhdGlvbnMoc2VsZiwgY29uZmlnKToKKyAgICAgICAgcG9ydCA9IHNlbGYuX3Bv
cnQKKyAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKKyAgICAgICAg
ICAgIHBvcnQsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVj
dGF0aW9ucygpLAorICAgICAgICAgICAgY29uZmlnLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5saW50X3Rlc3RfZmlsZXMsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zX292
ZXJyaWRlcygpKQorCisgICAgZGVmIHBhcnNlX2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAg
IiIiUGFyc2UgdGhlIGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0ZXN0X2xpc3QgZmlsZXMgYW5kIHJl
dHVybiBhIGRhdGEKKyAgICAgICAgc3RydWN0dXJlIGhvbGRpbmcgdGhlbS4gVGhyb3dzIGFuIGVy
cm9yIGlmIHRoZSB0ZXN0X2xpc3QgZmlsZXMgaGF2ZQorICAgICAgICBpbnZhbGlkIHN5bnRheC4i
IiIKKyAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKKyAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25z
ID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKKyAgICAgICAgICAgIHBvcnQs
CisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4
cGVjdGF0aW9ucygpLAorICAgICAgICAgICAgcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKKyAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9y
dC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKKworICAgICMgRklYTUU6IFRoaXMgbWV0
aG9kIGlzIHdheSB0b28gbG9uZyBhbmQgbmVlZHMgdG8gYmUgYnJva2VuIGludG8gcGllY2VzLgor
ICAgIGRlZiBwcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoc2VsZik6CisgICAgICAgICIi
IkNyZWF0ZSBhcHByb3ByaWF0ZSBzdWJzZXRzIG9mIHRlc3QgbGlzdHMgYW5kIHJldHVybnMgYQor
ICAgICAgICBSZXN1bHRTdW1tYXJ5IG9iamVjdC4gQWxzbyBwcmludHMgZXhwZWN0ZWQgdGVzdCBj
b3VudHMuCisgICAgICAgICIiIgorCisgICAgICAgICMgUmVtb3ZlIHNraXBwZWQgLSBib3RoIGZp
eGFibGUgYW5kIGlnbm9yZWQgLSBmaWxlcyBmcm9tIHRoZQorICAgICAgICAjIHRvcC1sZXZlbCBs
aXN0IG9mIGZpbGVzIHRvIHRlc3QuCisgICAgICAgIG51bV9hbGxfdGVzdF9maWxlcyA9IGxlbihz
ZWxmLl90ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKCJG
b3VuZDogICVkIHRlc3RzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkpCisgICAgICAgIGlmIG5vdCBudW1fYWxsX3Rlc3RfZmls
ZXM6CisgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCdObyB0ZXN0cyB0byBydW4uJykKKyAgICAg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2tpcHBlZCA9IHNldCgpCisgICAgICAgIGlm
IG51bV9hbGxfdGVzdF9maWxlcyA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmZvcmNlOgorICAg
ICAgICAgICAgc2tpcHBlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1
bHRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNL
SVApCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzIC09IHNraXBwZWQKKworICAgICAgICAj
IENyZWF0ZSBhIHNvcnRlZCBsaXN0IG9mIHRlc3QgZmlsZXMgc28gdGhlIHN1YnNldCBjaHVuaywK
KyAgICAgICAgIyBpZiB1c2VkLCBjb250YWlucyBhbHBoYWJldGljYWxseSBjb25zZWN1dGl2ZSB0
ZXN0cy4KKyAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gbGlzdChzZWxmLl90ZXN0X2Zp
bGVzKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKKyAgICAgICAg
ICAgIHJhbmRvbS5zaHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5zb3J0KCkKKworICAgICAgICAjIElm
IHRoZSB1c2VyIHNwZWNpZmllcyB0aGV5IGp1c3Qgd2FudCB0byBydW4gYSBzdWJzZXQgb2YgdGhl
IHRlc3RzLAorICAgICAgICAjIGp1c3QgZ3JhYiBhIHN1YnNldCBvZiB0aGUgbm9uLXNraXBwZWQg
dGVzdHMuCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNlbGYuX29wdGlv
bnMucnVuX3BhcnQ6CisgICAgICAgICAgICBjaHVua192YWx1ZSA9IHNlbGYuX29wdGlvbnMucnVu
X2NodW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQKKyAgICAgICAgICAgIHRlc3RfZmlsZXMg
PSBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICAoY2h1bmtfbnVtLCBjaHVua19sZW4pID0gY2h1bmtfdmFsdWUuc3BsaXQoIjoiKQorICAgICAg
ICAgICAgICAgIGNodW5rX251bSA9IGludChjaHVua19udW0pCisgICAgICAgICAgICAgICAgYXNz
ZXJ0KGNodW5rX251bSA+PSAwKQorICAgICAgICAgICAgICAgIHRlc3Rfc2l6ZSA9IGludChjaHVu
a19sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rfc2l6ZSA+IDApCisgICAgICAgICAg
ICBleGNlcHQ6CisgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgiaW52YWxpZCBjaHVuayAn
JXMnIiAlIGNodW5rX3ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgICAgICMgR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMKKyAgICAgICAgICAgIG51bV90ZXN0cyA9
IGxlbih0ZXN0X2ZpbGVzKQorCisgICAgICAgICAgICAjIEdldCB0aGUgc3RhcnQgb2Zmc2V0IG9m
IHRoZSBzbGljZS4KKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX2NodW5rOgorICAg
ICAgICAgICAgICAgIGNodW5rX2xlbiA9IHRlc3Rfc2l6ZQorICAgICAgICAgICAgICAgICMgSW4g
dGhpcyBjYXNlIGNodW5rX251bSBjYW4gYmUgcmVhbGx5IGxhcmdlLiBXZSBuZWVkCisgICAgICAg
ICAgICAgICAgIyB0byBtYWtlIHRoZSBzbGF2ZSBmaXQgaW4gdGhlIGN1cnJlbnQgbnVtYmVyIG9m
IHRlc3RzLgorICAgICAgICAgICAgICAgIHNsaWNlX3N0YXJ0ID0gKGNodW5rX251bSAqIGNodW5r
X2xlbikgJSBudW1fdGVzdHMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBW
YWxpZGF0ZSB0aGUgZGF0YS4KKyAgICAgICAgICAgICAgICBhc3NlcnQodGVzdF9zaXplIDw9IG51
bV90ZXN0cykKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2h1bmtfbnVtIDw9IHRlc3Rfc2l6ZSkK
KworICAgICAgICAgICAgICAgICMgVG8gY291bnQgdGhlIGNodW5rX2xlbiwgYW5kIG1ha2Ugc3Vy
ZSB3ZSBkb24ndCBza2lwCisgICAgICAgICAgICAgICAgIyBzb21lIHRlc3RzLCB3ZSByb3VuZCB0
byB0aGUgbmV4dCB2YWx1ZSB0aGF0IGZpdHMgZXhhY3RseQorICAgICAgICAgICAgICAgICMgYWxs
IHRoZSBwYXJ0cy4KKyAgICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gbnVtX3Rlc3RzCisg
ICAgICAgICAgICAgICAgaWYgcm91bmRlZF90ZXN0cyAlIHRlc3Rfc2l6ZSAhPSAwOgorICAgICAg
ICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gKG51bV90ZXN0cyArIHRlc3Rfc2l6ZSAtCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bV90ZXN0cyAlIHRlc3Rfc2l6
ZSkpCisKKyAgICAgICAgICAgICAgICBjaHVua19sZW4gPSByb3VuZGVkX3Rlc3RzIC8gdGVzdF9z
aXplCisgICAgICAgICAgICAgICAgc2xpY2Vfc3RhcnQgPSBjaHVua19sZW4gKiAoY2h1bmtfbnVt
IC0gMSkKKyAgICAgICAgICAgICAgICAjIEl0IGRvZXMgbm90IG1pbmQgaWYgd2UgZ28gb3ZlciB0
ZXN0X3NpemUuCisKKyAgICAgICAgICAgICMgR2V0IHRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBzbGlj
ZS4KKyAgICAgICAgICAgIHNsaWNlX2VuZCA9IG1pbihudW1fdGVzdHMsIHNsaWNlX3N0YXJ0ICsg
Y2h1bmtfbGVuKQorCisgICAgICAgICAgICBmaWxlcyA9IHRlc3RfZmlsZXNbc2xpY2Vfc3RhcnQ6
c2xpY2VfZW5kXQorCisgICAgICAgICAgICB0ZXN0c19ydW5fbXNnID0gJ1J1bm5pbmc6ICVkIHRl
c3RzIChjaHVuayBzbGljZSBbJWQ6JWRdIG9mICVkKScgJSAoCisgICAgICAgICAgICAgICAgKHNs
aWNlX2VuZCAtIHNsaWNlX3N0YXJ0KSwgc2xpY2Vfc3RhcnQsIHNsaWNlX2VuZCwgbnVtX3Rlc3Rz
KQorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCh0ZXN0c19ydW5fbXNn
KQorCisgICAgICAgICAgICAjIElmIHdlIHJlYWNoZWQgdGhlIGVuZCBhbmQgd2UgZG9uJ3QgaGF2
ZSBlbm91Z2ggdGVzdHMsIHdlIHJ1biBzb21lCisgICAgICAgICAgICAjIGZyb20gdGhlIGJlZ2lu
bmluZy4KKyAgICAgICAgICAgIGlmIHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0IDwgY2h1bmtfbGVu
OgorICAgICAgICAgICAgICAgIGV4dHJhID0gY2h1bmtfbGVuIC0gKHNsaWNlX2VuZCAtIHNsaWNl
X3N0YXJ0KQorICAgICAgICAgICAgICAgIGV4dHJhX21zZyA9ICgnICAgbGFzdCBjaHVuayBpcyBw
YXJ0aWFsLCBhcHBlbmRpbmcgWzA6JWRdJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0cmEpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChleHRy
YV9tc2cpCisgICAgICAgICAgICAgICAgdGVzdHNfcnVuX21zZyArPSAiXG4iICsgZXh0cmFfbXNn
CisgICAgICAgICAgICAgICAgZmlsZXMuZXh0ZW5kKHRlc3RfZmlsZXNbMDpleHRyYV0pCisgICAg
ICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5LCAidGVzdHNfcnVuLnR4dCIpCisgICAgICAgICAgICBzZWxmLl9mcy53cml0ZV90
ZXh0X2ZpbGUodGVzdHNfcnVuX2ZpbGVuYW1lLCB0ZXN0c19ydW5fbXNnKQorCisgICAgICAgICAg
ICBsZW5fc2tpcF9jaHVuayA9IGludChsZW4oZmlsZXMpICogbGVuKHNraXBwZWQpIC8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkp
CisgICAgICAgICAgICBza2lwX2NodW5rX2xpc3QgPSBsaXN0KHNraXBwZWQpWzA6bGVuX3NraXBf
Y2h1bmtdCisgICAgICAgICAgICBza2lwX2NodW5rID0gc2V0KHNraXBfY2h1bmtfbGlzdCkKKwor
ICAgICAgICAgICAgIyBVcGRhdGUgZXhwZWN0YXRpb25zIHNvIHRoYXQgdGhlIHN0YXRzIGFyZSBj
YWxjdWxhdGVkIGNvcnJlY3RseS4KKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwYXNzIGEgbGlz
dCB0aGF0IGluY2x1ZGVzIHRoZSByaWdodCAjIG9mIHNraXBwZWQgZmlsZXMKKyAgICAgICAgICAg
ICMgdG8gUGFyc2VFeHBlY3RhdGlvbnMgc28gdGhhdCBSZXN1bHRTdW1tYXJ5KCkgd2lsbCBnZXQg
dGhlIGNvcnJlY3QKKyAgICAgICAgICAgICMgc3RhdHMuIFNvLCB3ZSBhZGQgaW4gdGhlIHN1YnNl
dCBvZiBza2lwcGVkIGZpbGVzLCBhbmQgdGhlbgorICAgICAgICAgICAgIyBzdWJ0cmFjdCB0aGVt
IGJhY2sgb3V0LgorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMgKyBz
a2lwX2NodW5rX2xpc3QKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoc2VsZi5f
dGVzdF9maWxlc19saXN0KQorCisgICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygp
CisKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoZmlsZXMpCisgICAgICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcworICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2tpcF9jaHVuayA9IHNraXBwZWQKKworICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3Vs
dFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxl
cyB8IHNraXBfY2h1bmspCisgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2Zf
dHlwZShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1Ms
ICJwYXNzZXMiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUo
cmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFp
bHVyZXMiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVz
dWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5
IikKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9z
dW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQor
CisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZm9yY2U6CisgICAgICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X2V4cGVjdGVkKCdSdW5uaW5nIGFsbCB0ZXN0cywgaW5jbHVkaW5nICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NraXBzICgtLWZvcmNlKScpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBkb24ndCBhY3R1YWxseSBy
dW4gdGhlIHNraXBwZWQgdGVzdHMgKHRoZXkgd2VyZQorICAgICAgICAgICAgIyBzdWJ0cmFjdGVk
IG91dCBvZiBzZWxmLl90ZXN0X2ZpbGVzLCBhYm92ZSksIGJ1dCB3ZSBzdHViIG91dCB0aGUKKyAg
ICAgICAgICAgICMgcmVzdWx0cyBoZXJlIHNvIHRoZSBzdGF0aXN0aWNzIGNhbiByZW1haW4gYWNj
dXJhdGUuCisgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lwX2NodW5rOgorICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3QpCisgICAgICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQCisgICAgICAgICAgICAgICAg
cmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF9leHBlY3RlZCgnJykKKworICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3Vy
ZSB3ZSBkaWRuJ3QgZmlsdGVyIG91dCBhbGwgb2YgdGhlIHRlc3RzLgorICAgICAgICBpZiBub3Qg
bGVuKHNlbGYuX3Rlc3RfZmlsZXMpOgorICAgICAgICAgICAgX2xvZy5pbmZvKCJBbGwgdGVzdHMg
YXJlIGJlaW5nIHNraXBwZWQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0X3N1bW1hcnkKKworICAgIGRlZiBfZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHNl
bGYsIHRlc3RfZmlsZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGhpZ2hlc3QtbGV2ZWwgZGly
ZWN0b3J5IGJ5IHdoaWNoIHRvIHNoYXJkIHRoZSBnaXZlbgorICAgICAgICB0ZXN0IGZpbGUuIiIi
CisgICAgICAgIGluZGV4ID0gdGVzdF9maWxlLnJmaW5kKHNlbGYuX2ZzLnNlcCArIHNlbGYuTEFZ
T1VUX1RFU1RTX0RJUkVDVE9SWSkKKworICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVbaW5k
ZXggKyBsZW4oc2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZKTpdCisgICAgICAgIHRlc3RfZmls
ZV9wYXJ0cyA9IHRlc3RfZmlsZS5zcGxpdChzZWxmLl9mcy5zZXAsIDEpCisgICAgICAgIGRpcmVj
dG9yeSA9IHRlc3RfZmlsZV9wYXJ0c1swXQorICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVf
cGFydHNbMV0KKworICAgICAgICAjIFRoZSBodHRwIHRlc3RzIGFyZSB2ZXJ5IHN0YWJsZSBvbiBt
YWMvbGludXguCisgICAgICAgICMgVE9ETyhvamFuKTogTWFrZSB0aGUgaHR0cCBzZXJ2ZXIgb24g
V2luZG93cyBiZSBhcGFjaGUgc28gd2UgY2FuCisgICAgICAgICMgdHVybiBzaGFyZCB0aGUgaHR0
cCB0ZXN0cyB0aGVyZSBhcyB3ZWxsLiBTd2l0Y2hpbmcgdG8gYXBhY2hlIGlzCisgICAgICAgICMg
d2hhdCBtYWRlIHRoZW0gc3RhYmxlIG9uIGxpbnV4L21hYy4KKyAgICAgICAgcmV0dXJuX3ZhbHVl
ID0gZGlyZWN0b3J5CisgICAgICAgIHdoaWxlICgoZGlyZWN0b3J5ICE9ICdodHRwJyBvciBzeXMu
cGxhdGZvcm0gaW4gKCdkYXJ3aW4nLCAnbGludXgyJykpCisgICAgICAgICAgICAgICAgYW5kIHRl
c3RfZmlsZS5maW5kKHNlbGYuX2ZzLnNlcCkgPj0gMCk6CisgICAgICAgICAgICB0ZXN0X2ZpbGVf
cGFydHMgPSB0ZXN0X2ZpbGUuc3BsaXQoc2VsZi5fZnMuc2VwLCAxKQorICAgICAgICAgICAgZGly
ZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRzWzBdCisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBz
ZWxmLl9mcy5qb2luKHJldHVybl92YWx1ZSwgZGlyZWN0b3J5KQorICAgICAgICAgICAgdGVzdF9m
aWxlID0gdGVzdF9maWxlX3BhcnRzWzFdCisKKyAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZQor
CisgICAgZGVmIF9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgorICAg
ICAgICAiIiJSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBUZXN0SW5wdXQgb2JqZWN0IGZvciB0aGUg
ZmlsZS4gTW9zdGx5IHRoaXMKKyAgICAgICAgaXMgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUgdGlt
ZW91dCB2YWx1ZSAoaW4gbXMpIHRvIHVzZSBmb3IgdGhlIGdpdmVuCisgICAgICAgIHRlc3QuIiIi
CisgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgorICAgICAgICAgICAg
cmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9t
cykKKyAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGlt
ZV9vdXRfbXMpCisKKyAgICBkZWYgX3Rlc3RfcmVxdWlyZXNfbG9jayhzZWxmLCB0ZXN0X2ZpbGUp
OgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQg
d2hlbgorICAgICAgICBydW5uaW5nIG11bHRpcGxlIGNvcGllcyBvZiBOUldUcy4iIiIKKyAgICAg
ICAgc3BsaXRfcGF0aCA9IHRlc3RfZmlsZS5zcGxpdChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnNl
cCkKKyAgICAgICAgcmV0dXJuICdodHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGlu
IHNwbGl0X3BhdGgKKworICAgIGRlZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBl
Y3RhdGlvbnMuU0xPVykKKworICAgIGRlZiBfc2hhcmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywg
dXNlX3JlYWxfc2hhcmRzKToKKyAgICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4K
KyAgICAgICAgVGhpcyBoZWxwcyBlbnN1cmUgdGhhdCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNo
IG90aGVyIChha2EgYmFkIHRlc3RzISkKKyAgICAgICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVy
IGFzIG1vc3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5jaWVzIHRlbmQgdG8KKyAgICAgICAgb2NjdXIg
d2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gSWYgdXNlX3JlYWxfc2hhcmRzIGlzIEZhbHNlLCB3
ZQorICAgICAgICBwdXQgZWFjaCAobm9uLUhUVFAvd2Vic29ja2V0KSB0ZXN0IGludG8gaXRzIG93
biBzaGFyZCBmb3IgbWF4aW11bQorICAgICAgICBjb25jdXJyZW5jeSBpbnN0ZWFkIG9mIHRyeWlu
ZyB0byBkbyBhbnkgc29ydCBvZiByZWFsIHNoYXJkaW5nLgorCisgICAgICAgIFJldHVybjoKKyAg
ICAgICAgICAgIEEgbGlzdCBvZiBsaXN0cyBvZiBUZXN0SW5wdXQgb2JqZWN0cy4KKyAgICAgICAg
IiIiCisgICAgICAgICMgRklYTUU6IHdoZW4gd2UgYWRkZWQgaHR0cCBsb2NraW5nLCB3ZSBjaGFu
Z2VkIGhvdyB0aGlzIHdvcmtzIHN1Y2gKKyAgICAgICAgIyB0aGF0IHdlIGFsd2F5cyBsdW1wIGFs
bCBvZiB0aGUgSFRUUCB0aHJlYWRzIGludG8gYSBzaW5nbGUgc2hhcmQuCisgICAgICAgICMgVGhh
dCB3aWxsIHNsb3cgZG93biBleHBlcmltZW50YWwtZnVsbHktcGFyYWxsZWwsIGJ1dCBpdCdzIHVu
Y2xlYXIKKyAgICAgICAgIyB3aGF0IHRoZSBiZXN0IGFsdGVybmF0aXZlIGlzIGNvbXBsZXRlbHkg
cmV2YW1waW5nIGhvdyB3ZSB0cmFjaworICAgICAgICAjIHdoZW4gdG8gZ3JhYiB0aGUgbG9jay4K
KworICAgICAgICB0ZXN0X2xpc3RzID0gW10KKyAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrID0g
W10KKyAgICAgICAgaWYgbm90IHVzZV9yZWFsX3NoYXJkczoKKyAgICAgICAgICAgIGZvciB0ZXN0
X2ZpbGUgaW4gdGVzdF9maWxlczoKKyAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5f
Z2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQorICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgorICAgICAgICAgICAgICAgICAgICB0
ZXN0c190b19odHRwX2xvY2suYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0cy5hcHBlbmQoKCIuIiwgW3Rlc3RfaW5w
dXRdKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RzX2J5X2RpciA9IHt9CisgICAg
ICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CisgICAgICAgICAgICAgICAgZGly
ZWN0b3J5ID0gc2VsZi5fZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHRlc3RfZmlsZSkKKyAgICAgICAg
ICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9m
aWxlKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2Zp
bGUpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19odHRwX2xvY2suYXBwZW5kKHRlc3Rf
aW5wdXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNf
YnlfZGlyLnNldGRlZmF1bHQoZGlyZWN0b3J5LCBbXSkKKyAgICAgICAgICAgICAgICAgICAgdGVz
dHNfYnlfZGlyW2RpcmVjdG9yeV0uYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAjIFNv
cnQgYnkgdGhlIG51bWJlciBvZiB0ZXN0cyBpbiB0aGUgZGlyIHNvIHRoYXQgdGhlIG9uZXMgd2l0
aCB0aGUKKyAgICAgICAgICAgICMgbW9zdCB0ZXN0cyBnZXQgcnVuIGZpcnN0IGluIG9yZGVyIHRv
IG1heGltaXplIHBhcmFsbGVsaXphdGlvbi4KKyAgICAgICAgICAgICMgTnVtYmVyIG9mIHRlc3Rz
IGlzIGEgZ29vZCBlbm91Z2gsIGJ1dCBub3QgcGVyZmVjdCwgYXBwcm94aW1hdGlvbgorICAgICAg
ICAgICAgIyBvZiBob3cgbG9uZyB0aGF0IHNldCBvZiB0ZXN0cyB3aWxsIHRha2UgdG8gcnVuLiBX
ZSBjYW4ndCBqdXN0IHVzZQorICAgICAgICAgICAgIyBhIFByaW9yaXR5UXVldWUgdW50aWwgd2Ug
bW92ZSB0byBQeXRob24gMi42LgorICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiB0ZXN0c19i
eV9kaXI6CisgICAgICAgICAgICAgICAgdGVzdF9saXN0ID0gdGVzdHNfYnlfZGlyW2RpcmVjdG9y
eV0KKyAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfdHVwbGUgPSAoZGlyZWN0b3J5LCB0ZXN0X2xp
c3QpCisgICAgICAgICAgICAgICAgdGVzdF9saXN0cy5hcHBlbmQodGVzdF9saXN0X3R1cGxlKQor
ICAgICAgICAgICAgdGVzdF9saXN0cy5zb3J0KGxhbWJkYSBhLCBiOiBjbXAobGVuKGJbMV0pLCBs
ZW4oYVsxXSkpKQorCisgICAgICAgICMgUHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0LiBUaGVyZSBh
cmUgb25seSBhIGNvdXBsZSBodW5kcmVkIG9mIHRoZW0sCisgICAgICAgICMgYnV0IGVhY2ggaHR0
cCB0ZXN0IHRha2VzIGEgdmVyeSBsb25nIHRpbWUgdG8gcnVuLCBzbyBzb3J0aW5nIGJ5IHRoZQor
ICAgICAgICAjIG51bWJlciBvZiB0ZXN0cyBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBob3cg
bG9uZyB0aGV5IHRha2UgdG8gcnVuLgorICAgICAgICBpZiB0ZXN0c190b19odHRwX2xvY2s6Cisg
ICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAoInRlc3RzX3RvX2h0dHBfbG9jayIsIHRl
c3RzX3RvX2h0dHBfbG9jaykpCisKKyAgICAgICAgcmV0dXJuIHRlc3RfbGlzdHMKKworICAgIGRl
ZiBfY29udGFpbnNfdGVzdHMoc2VsZiwgc3ViZGlyKToKKyAgICAgICAgZm9yIHRlc3RfZmlsZSBp
biBzZWxmLl90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgaWYgdGVzdF9maWxlLmZpbmQoc3ViZGly
KSA+PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIF9udW1fd29ya2VycyhzZWxmLCBudW1fc2hhcmRzKToKKyAgICAgICAgbnVt
X3dvcmtlcnMgPSBtaW4oaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgbnVtX3No
YXJkcykKKyAgICAgICAgZHJpdmVyX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKKyAg
ICAgICAgaWYgbnVtX3dvcmtlcnMgPT0gMToKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfY29uZmlnKCJSdW5uaW5nIDEgJXMgb3ZlciAlcyIgJQorICAgICAgICAgICAgICAgIChkcml2
ZXJfbmFtZSwgZ3JhbW1hci5wbHVyYWxpemUoJ3NoYXJkJywgbnVtX3NoYXJkcykpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9jb25maWcoIlJ1bm5pbmcg
JWQgJXNzIGluIHBhcmFsbGVsIG92ZXIgJWQgc2hhcmRzIiAlCisgICAgICAgICAgICAgICAgKG51
bV93b3JrZXJzLCBkcml2ZXJfbmFtZSwgbnVtX3NoYXJkcykpCisgICAgICAgIHJldHVybiBudW1f
d29ya2VycworCisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgZmlsZV9saXN0LCByZXN1bHRfc3Vt
bWFyeSk6CisgICAgICAgICIiIlJ1bnMgdGhlIHRlc3RzIGluIHRoZSBmaWxlX2xpc3QuCisKKyAg
ICAgICAgUmV0dXJuOiBBIHR1cGxlIChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQs
IHRocmVhZF90aW1pbmdzLAorICAgICAgICAgICAgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rl
c3RfdGltaW5ncykKKyAgICAgICAgICAgIGludGVycnVwdGVkIGlzIHdoZXRoZXIgdGhlIHJ1biB3
YXMgaW50ZXJydXB0ZWQKKyAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkIGlzIHdoZXRo
ZXIgdGhlIGludGVycnVwdGlvbiB3YXMgYmVjYXVzZSBzb21lb25lCisgICAgICAgICAgICAgIHR5
cGVkIEN0cmxeQworICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MgaXMgYSBsaXN0IG9mIGRpY3Rz
IHdpdGggdGhlIHRvdGFsIHJ1bnRpbWUKKyAgICAgICAgICAgICAgb2YgZWFjaCB0aHJlYWQgd2l0
aCAnbmFtZScsICdudW1fdGVzdHMnLCAndG90YWxfdGltZScgcHJvcGVydGllcworICAgICAgICAg
ICAgdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiB0aW1pbmdzIGZvciBlYWNoIHNoYXJkZWQgc3Vi
ZGlyZWN0b3J5CisgICAgICAgICAgICAgIG9mIHRoZSBmb3JtIFt0aW1lLCBkaXJlY3RvcnlfbmFt
ZSwgbnVtX3Rlc3RzXQorICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgaXMgYSBs
aXN0IG9mIHJ1biB0aW1lcyBmb3IgZWFjaCB0ZXN0CisgICAgICAgICAgICAgIGluIHRoZSBmb3Jt
IHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1lfQorICAgICAg
ICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRlIHdpdGggdGhl
IHJlc3VsdHMKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnkgPSByZXN1bHRfc3VtbWFyeQorICAgICAgICBzZWxmLl9hbGxfcmVzdWx0cyA9IFtdCisgICAg
ICAgIHNlbGYuX2dyb3VwX3N0YXRzID0ge30KKyAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlcyA9
IHt9CisKKyAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBGYWxzZQorICAgICAgICBpbnRl
cnJ1cHRlZCA9IEZhbHNlCisgICAgICAgIHRocmVhZF90aW1pbmdzID0gW10KKworICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKKyAgICAgICAg
dGVzdF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKKyAgICAgICAgICAgIGlu
dChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9u
cy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwpCisKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBz
ZWxmLl9udW1fd29ya2VycyhsZW4odGVzdF9saXN0cykpCisgICAgICAgIG1hbmFnZXJfY29ubmVj
dGlvbiA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLCB3b3JrZXIuV29ya2VyKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1
bjoKKyAgICAgICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVk
LCB0aHJlYWRfdGltaW5ncywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMs
IHNlbGYuX2FsbF9yZXN1bHRzKQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRl
KCdTdGFydGluZyAlcyAuLi4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3JhbW1hci5wbHVyYWxpemUoJ3dvcmtlcicsIG51bV93b3JrZXJzKSkKKyAgICAgICAgZm9yIHdv
cmtlcl9udW1iZXIgaW4geHJhbmdlKG51bV93b3JrZXJzKToKKyAgICAgICAgICAgIHdvcmtlcl9j
b25uZWN0aW9uID0gbWFuYWdlcl9jb25uZWN0aW9uLnN0YXJ0X3dvcmtlcih3b3JrZXJfbnVtYmVy
KQorICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdvcmtlcl9udW1iZXIs
IHdvcmtlcl9jb25uZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlc1t3b3Jr
ZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtlcl9zdGF0ZQorCisgICAgICAgICAgICAjIEZJWE1F
OiBJZiB3ZSBzdGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5LCBEdW1wUmVuZGVyVHJlZSBhcHBl
YXJzCisgICAgICAgICAgICAjIHRvIHRocmFzaCBvbiBzb21ldGhpbmcgYW5kIHRpbWUgb3V0IGl0
cyBmaXJzdCBmZXcgdGVzdHMuIFVudGlsCisgICAgICAgICAgICAjIHdlIGNhbiBmaWd1cmUgb3V0
IHdoYXQncyBnb2luZyBvbiwgc2xlZXAgYSBiaXQgaW4gYmV0d2VlbgorICAgICAgICAgICAgIyB3
b3JrZXJzLgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIikKKyAgICAgICAgZm9yIHRl
c3RfbGlzdCBpbiB0ZXN0X2xpc3RzOgorICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBv
c3RfbWVzc2FnZSgndGVzdF9saXN0JywgdGVzdF9saXN0WzBdLCB0ZXN0X2xpc3RbMV0pCisKKyAg
ICAgICAgIyBXZSBwb3N0IG9uZSAnc3RvcCcgbWVzc2FnZSBmb3IgZWFjaCB3b3JrZXIuIEJlY2F1
c2UgdGhlIHN0b3AgbWVzc2FnZQorICAgICAgICAjIGFyZSBzZW50IGFmdGVyIGFsbCBvZiB0aGUg
dGVzdHMsIGFuZCBiZWNhdXNlIGVhY2ggd29ya2VyIHdpbGwgc3RvcAorICAgICAgICAjIHJlYWRp
bmcgbWVzc3NhZ2VzIGFmdGVyIHJlY2VpdmluZyBhIHN0b3AsIHdlIGNhbiBiZSBzdXJlIGVhY2gK
KyAgICAgICAgIyB3b3JrZXIgd2lsbCBnZXQgYSBzdG9wIG1lc3NhZ2UgYW5kIGhlbmNlIHRoZXkg
d2lsbCBhbGwgc2h1dCBkb3duLgorICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobnVtX3dvcmtlcnMp
OgorICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfZG9uZSgpOgorICAg
ICAgICAgICAgICAgICMgV2UgbG9vcCB3aXRoIGEgdGltZW91dCBpbiBvcmRlciB0byBiZSBhYmxl
IHRvIGRldGVjdCB3ZWRnZWQgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5l
Y3Rpb24ucnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKworICAgICAgICAgICAgaWYg
YW55KHdvcmtlcl9zdGF0ZS53ZWRnZWQgZm9yIHdvcmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJf
c3RhdGVzLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoJ1JlbWFpbmluZyB3b3JrZXJzIGFyZSB3ZWRnZWQsIGJhaWxp
bmcgb3V0LicpCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTm8gd2VkZ2VkIHRocmVhZHMnKQorCisg
ICAgICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgb2YgdGhlIHdvcmtlcnMgaGF2ZSBzaHV0IGRvd24g
KGlmIHBvc3NpYmxlKS4KKyAgICAgICAgICAgIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29y
a2VyX3N0YXRlcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgd29ya2VyX3N0YXRl
LndlZGdlZCBhbmQgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmlzX2FsaXZlKCk6Cisg
ICAgICAgICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5qb2luKDAu
NSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB3b3JrZXJfc3RhdGUud29ya2VyX2Nv
bm5lY3Rpb24uaXNfYWxpdmUoKQorCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoK
KyAgICAgICAgICAgIF9sb2cuaW5mbygiSW50ZXJydXB0ZWQsIGV4aXRpbmciKQorICAgICAgICAg
ICAgc2VsZi5jYW5jZWxfd29ya2VycygpCisgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRl
ZCA9IFRydWUKKyAgICAgICAgZXhjZXB0IFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiwgZToK
KyAgICAgICAgICAgIF9sb2cuaW5mbyhlLnJlYXNvbikKKyAgICAgICAgICAgIHNlbGYuY2FuY2Vs
X3dvcmtlcnMoKQorICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2Vw
dDoKKyAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNlcHRpb247IGRvbid0IHRyeSB0byBjbGVh
biB1cCB3b3JrZXJzLgorICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNlcHRpb24gcmFpc2VkLCBl
eGl0aW5nIikKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBb
d29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRl
cy52YWx1ZXMoKV0KKworICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBhIGNsYXNzIGlu
c3RlYWQgb2YgYSB0dXBsZT8KKyAgICAgICAgcmV0dXJuIChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRf
aW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAorICAgICAgICAgICAgICAgIHNlbGYuX2dyb3Vw
X3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKworICAgIGRlZiB1cGRhdGUoc2VsZik6CisgICAg
ICAgIHNlbGYudXBkYXRlX3N1bW1hcnkoc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSkKKwor
ICAgIGRlZiBfY29sbGVjdF90aW1pbmdfaW5mbyhzZWxmLCB0aHJlYWRzKToKKyAgICAgICAgdGVz
dF90aW1pbmdzID0ge30KKyAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSBbXQorICAg
ICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCisKKyAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRz
OgorICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5kKHsnbmFtZSc6IHRocmVhZC5nZXRO
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1fdGVzdHMnOiB0
aHJlYWQuZ2V0X251bV90ZXN0cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRfdG90YWxfdGltZSgpfSkKKyAgICAgICAgICAgIHRl
c3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdldF90ZXN0X2dyb3VwX3RpbWluZ19zdGF0cygpKQor
ICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MuZXh0ZW5kKHRocmVhZC5nZXRfdGVz
dF9yZXN1bHRzKCkpCisKKyAgICAgICAgcmV0dXJuICh0aHJlYWRfdGltaW5ncywgdGVzdF90aW1p
bmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKworICAgIGRlZiBuZWVkc19odHRwKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIHRlc3QgcnVubmVyIG5lZWRzIGFuIEhU
VFAgc2VydmVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNfdGVzdHMoc2VsZi5I
VFRQX1NVQkRJUikKKworICAgIGRlZiBuZWVkc193ZWJzb2NrZXQoc2VsZik6CisgICAgICAgICIi
IlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBydW5uZXIgbmVlZHMgYSBXRUJTT0NLRVQgc2VydmVy
LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNfdGVzdHMoc2VsZi5XRUJTT0NLRVRf
U1VCRElSKQorCisgICAgZGVmIHNldF91cF9ydW4oc2VsZik6CisgICAgICAgICIiIkNvbmZpZ3Vy
ZXMgdGhlIHN5c3RlbSB0byBiZSByZWFkeSB0byBydW4gdGVzdHMuCisKKyAgICAgICAgUmV0dXJu
cyBhIFJlc3VsdFN1bW1hcnkgb2JqZWN0IGlmIHdlIHNob3VsZCBjb250aW51ZSB0byBydW4gdGVz
dHMsCisgICAgICAgIG9yIE5vbmUgaWYgd2Ugc2hvdWxkIGFib3J0LgorCisgICAgICAgICIiIgor
ICAgICAgICAjIFRoaXMgbXVzdCBiZSBzdGFydGVkIGJlZm9yZSB3ZSBjaGVjayB0aGUgc3lzdGVt
IGRlcGVuZGVuY2llcywKKyAgICAgICAgIyBzaW5jZSB0aGUgaGVscGVyIG1heSBkbyB0aGluZ3Mg
dG8gbWFrZSB0aGUgc2V0dXAgY29ycmVjdC4KKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91
cGRhdGUoIlN0YXJ0aW5nIGhlbHBlciAuLi4iKQorICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2hl
bHBlcigpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzICh0
aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0
aW9ucy5ub2NoZWNrX3N5c19kZXBzOgorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91
cGRhdGUoIkNoZWNraW5nIHN5c3RlbSBkZXBlbmRlbmNpZXMgLi4uIikKKyAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9wb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYubmVlZHNfaHR0cCgpKToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuY2xvYmJlcl9vbGRfcmVzdWx0czoK
KyAgICAgICAgICAgIHNlbGYuX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoKQorCisgICAgICAgICMgQ3Jl
YXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KKyAg
ICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLl9yZXN1bHRzX2RpcmVj
dG9yeSkKKworICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVuKCkKKworICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiUHJlcGFyaW5nIHRlc3RzIC4uLiIpCisgICAgICAg
IHJlc3VsdF9zdW1tYXJ5ID0gc2VsZi5wcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoKQor
ICAgICAgICBpZiBub3QgcmVzdWx0X3N1bW1hcnk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgICAgIHJldHVybiByZXN1bHRfc3VtbWFyeQorCisgICAgZGVmIHJ1bihzZWxmLCByZXN1
bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlJ1biBhbGwgb3VyIHRlc3RzIG9uIGFsbCBvdXIgdGVz
dCBmaWxlcy4KKworICAgICAgICBGb3IgZWFjaCB0ZXN0IGZpbGUsIHdlIHJ1biBlYWNoIHRlc3Qg
dHlwZS4gSWYgdGhlcmUgYXJlIGFueSBmYWlsdXJlcywKKyAgICAgICAgd2UgY29sbGVjdCB0aGVt
IGZvciByZXBvcnRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICByZXN1bHRfc3VtbWFy
eTogYSBzdW1tYXJ5IG9iamVjdCB0cmFja2luZyB0aGUgdGVzdCByZXN1bHRzLgorCisgICAgICAg
IFJldHVybjoKKyAgICAgICAgICBUaGUgbnVtYmVyIG9mIHVuZXhwZWN0ZWQgcmVzdWx0cyAoMCA9
PSBzdWNjZXNzKQorICAgICAgICAiIiIKKyAgICAgICAgIyBnYXRoZXJfdGVzdF9maWxlcygpIG11
c3QgaGF2ZSBiZWVuIGNhbGxlZCBmaXJzdCB0byBpbml0aWFsaXplIHVzLgorICAgICAgICAjIElm
IHdlIGRpZG4ndCBmaW5kIGFueSBmaWxlcyB0byB0ZXN0LCB3ZSd2ZSBlcnJvcmVkIG91dCBhbHJl
YWR5IGluCisgICAgICAgICMgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KCkuCisgICAg
ICAgIGFzc2VydChsZW4oc2VsZi5fdGVzdF9maWxlcykpCisKKyAgICAgICAgc3RhcnRfdGltZSA9
IHRpbWUudGltZSgpCisKKyAgICAgICAgaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVk
LCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBcCisgICAgICAgICAgICBpbmRpdmlkdWFs
X3Rlc3RfdGltaW5ncyA9ICgKKyAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhzZWxmLl90ZXN0
X2ZpbGVzX2xpc3QsIHJlc3VsdF9zdW1tYXJ5KSkKKworICAgICAgICAjIFdlIGV4Y2x1ZGUgdGhl
IGNyYXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1bHRzIHRvIHJldHJ5LCBiZWNhdXNlCisgICAg
ICAgICMgd2Ugd2FudCB0byB0cmVhdCBldmVuIGEgcG90ZW50aWFsbHkgZmxha3kgY3Jhc2ggYXMg
YW4gZXJyb3IuCisgICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9z
dW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9RmFsc2UpCisgICAgICAgIHJldHJ5X3N1bW1hcnkgPSBy
ZXN1bHRfc3VtbWFyeQorICAgICAgICB3aGlsZSAobGVuKGZhaWx1cmVzKSBhbmQgc2VsZi5fb3B0
aW9ucy5yZXRyeV9mYWlsdXJlcyBhbmQKKyAgICAgICAgICAgIG5vdCBzZWxmLl9yZXRyeWluZyBh
bmQgbm90IGludGVycnVwdGVkKToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnJykKKyAgICAgICAg
ICAgIF9sb2cuaW5mbygiUmV0cnlpbmcgJWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIgJSBs
ZW4oZmFpbHVyZXMpKQorICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQorICAgICAgICAgICAgc2Vs
Zi5fcmV0cnlpbmcgPSBUcnVlCisgICAgICAgICAgICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3Vt
bWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1cmVzLmtleXMoKSkKKyAgICAgICAgICAgICMg
Tm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgaGVyZS4K
KyAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJlcy5rZXlzKCksIHJldHJ5X3N1bW1h
cnkpCisgICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXRyeV9zdW1t
YXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKKworICAgICAgICBlbmRfdGltZSA9IHRpbWUudGlt
ZSgpCisKKyAgICAgICAgc2VsZi5fcHJpbnRfdGltaW5nX3N0YXRpc3RpY3MoZW5kX3RpbWUgLSBz
dGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRf
dGltaW5ncywgdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCisKKyAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0
X3N1bW1hcnkocmVzdWx0X3N1bW1hcnkpCisKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisg
ICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
b25lX2xpbmVfc3VtbWFyeShyZXN1bHRfc3VtbWFyeS50b3RhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnku
dW5leHBlY3RlZCkKKworICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVz
dWx0cyhzZWxmLl9wb3J0LAorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRf
c3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIG9ubHlfdW5l
eHBlY3RlZD1UcnVlKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VuZXhwZWN0ZWRfcmVz
dWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCisKKyAgICAgICAgIyBGSVhNRTogcmVtb3ZlIHJlY29y
ZF9yZXN1bHRzLiBJdCdzIGp1c3QgdXNlZCBmb3IgdGVzdGluZy4gVGhlcmUncyBubyBuZWVkCisg
ICAgICAgICMgZm9yIGl0IHRvIGJlIGEgY29tbWFuZGxpbmUgYXJndW1lbnQuCisgICAgICAgIGlm
IChzZWxmLl9vcHRpb25zLnJlY29yZF9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5kcnlf
cnVuIGFuZAorICAgICAgICAgICAgbm90IGtleWJvYXJkX2ludGVycnVwdGVkKToKKyAgICAgICAg
ICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBsb2cgZmlsZXMgYW5kIHVwbG9hZCBnZW5lcmF0
ZWQgSlNPTiBmaWxlcworICAgICAgICAgICAgIyB0byBhcHBlbmdpbmUgc2VydmVyLgorICAgICAg
ICAgICAgc3VtbWFyaXplZF9yZXN1bHRzID0gc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwK
KyAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRy
eV9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkPUZhbHNl
KQorICAgICAgICAgICAgc2VsZi5fdXBsb2FkX2pzb25fZmlsZXModW5leHBlY3RlZF9yZXN1bHRz
LCBzdW1tYXJpemVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCisKKyAgICAgICAgIyBX
cml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBkaXNwbGF5IGl0IGlm
IHJlcXVlc3RlZC4KKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKKyAgICAg
ICAgICAgIHNlbGYuX2NvcHlfcmVzdWx0c19odG1sX2ZpbGUoKQorICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5zaG93X3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgc2VsZi5fc2hvd19yZXN1
bHRzX2h0bWxfZmlsZShyZXN1bHRfc3VtbWFyeSkKKworICAgICAgICAjIE5vdyB0aGF0IHdlJ3Zl
IGNvbXBsZXRlZCBhbGwgdGhlIHByb2Nlc3Npbmcgd2UgY2FuLCB3ZSByZS1yYWlzZQorICAgICAg
ICAjIGEgS2V5Ym9hcmRJbnRlcnJ1cHQgaWYgbmVjZXNzYXJ5IHNvIHRoZSBjYWxsZXIgY2FuIGhh
bmRsZSBpdC4KKyAgICAgICAgaWYga2V5Ym9hcmRfaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICBy
YWlzZSBLZXlib2FyZEludGVycnVwdAorCisgICAgICAgICMgSWdub3JlIGZsYWt5IGZhaWx1cmVz
IGFuZCB1bmV4cGVjdGVkIHBhc3NlcyBzbyB3ZSBkb24ndCB0dXJuIHRoZQorICAgICAgICAjIGJv
dCByZWQgZm9yIHRob3NlLgorICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9yZXN1bHRzWydudW1f
cmVncmVzc2lvbnMnXQorCisgICAgZGVmIGNsZWFuX3VwX3J1bihzZWxmKToKKyAgICAgICAgIiIi
UmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25lIHJ1bm5pbmcgdGVzdHMuIiIiCisK
KyAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3Rkb3V0IikKKyAgICAgICAgc3lzLnN0ZG91
dC5mbHVzaCgpCisgICAgICAgIF9sb2cuZGVidWcoImZsdXNoaW5nIHN0ZGVyciIpCisgICAgICAg
IHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICBfbG9nLmRlYnVnKCJzdG9wcGluZyBoZWxwZXIi
KQorICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKKworICAgIGRlZiB1cGRhdGVfc3Vt
bWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlVwZGF0ZSB0aGUgc3VtbWFy
eSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0ZWQgdGVzdHMuIiIiCisgICAgICAg
IHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
dGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQubG9hZHMoc2VsZi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dh
aXQoKSkKKyAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocmVz
dWx0X3N1bW1hcnksIHJlc3VsdCkKKworICAgIGRlZiBfdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1
bHQoc2VsZiwgcmVzdWx0X3N1bW1hcnksIHJlc3VsdCk6CisgICAgICAgIGV4cGVjdGVkID0gc2Vs
Zi5fZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAorICAgICAgICAgICAg
cmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykK
KyAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQpCisgICAgICAgIGV4
cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoCisgICAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWUpCisgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3Rh
dGlvbnMuZXhwZWN0YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQorICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9z
dHIpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocmVzdWx0X3N1bW1hcnks
IHNlbGYuX3JldHJ5aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKKworICAgICAgICBkZWYgaW50ZXJydXB0X2lmX2F0X2Zh
aWx1cmVfbGltaXQobGltaXQsIGNvdW50LCBtZXNzYWdlKToKKyAgICAgICAgICAgIGlmIGxpbWl0
IGFuZCBjb3VudCA+PSBsaW1pdDoKKyAgICAgICAgICAgICAgICByYWlzZSBUZXN0UnVuSW50ZXJy
dXB0ZWRFeGNlcHRpb24obWVzc2FnZSAlIGNvdW50KQorCisgICAgICAgIGludGVycnVwdF9pZl9h
dF9mYWlsdXJlX2xpbWl0KAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leGl0X2FmdGVyX25f
ZmFpbHVyZXMsCisgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX2ZhaWx1cmVz
LAorICAgICAgICAgICAgIkFib3J0aW5nIHJ1biBzaW5jZSAlZCBmYWlsdXJlcyB3ZXJlIHJlYWNo
ZWQiKQorICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgKKyAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2NyYXNoZXNfb3JfdGltZW91dHMsCisgICAgICAg
ICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX2NyYXNoZXNfb3JfdGltZW91dHMsCisgICAg
ICAgICAgICAiQWJvcnRpbmcgcnVuIHNpbmNlICVkIGNyYXNoZXMgb3IgdGltZW91dHMgd2VyZSBy
ZWFjaGVkIikKKworICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0cyhzZWxmKToKKyAgICAgICAg
IyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMgZGlyZWN0b3JpZXMgc2luY2Ug
dGhlIG90aGVyCisgICAgICAgICMgZmlsZXMgaW4gdGhlIHJlc3VsdHMgZGlyZWN0b3J5IGFyZSBl
eHBsaWNpdGx5IHVzZWQgZm9yIGNyb3NzLXJ1bgorICAgICAgICAjIHRyYWNraW5nLgorICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2xvYmJlcmluZyBvbGQgcmVzdWx0cyBpbiAl
cyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSkKKyAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpCisgICAgICAgIHBvc3NpYmxlX2RpcnMgPSBzZWxmLl9wb3J0LnRlc3RfZGlycygp
CisgICAgICAgIGZvciBkaXJuYW1lIGluIHBvc3NpYmxlX2RpcnM6CisgICAgICAgICAgICBpZiBz
ZWxmLl9mcy5pc2RpcihzZWxmLl9mcy5qb2luKGxheW91dF90ZXN0c19kaXIsIGRpcm5hbWUpKToK
KyAgICAgICAgICAgICAgICBzZWxmLl9mcy5ybXRyZWUoc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1
bHRzX2RpcmVjdG9yeSwgZGlybmFtZSkpCisKKyAgICBkZWYgX2dldF9mYWlsdXJlcyhzZWxmLCBy
ZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzKToKKyAgICAgICAgIiIiRmlsdGVycyBhIGRp
Y3Qgb2YgcmVzdWx0cyBhbmQgcmV0dXJucyBvbmx5IHRoZSBmYWlsdXJlcy4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBy
dW4KKyAgICAgICAgICBpbmNsdWRlX2NyYXNoZXM6IHdoZXRoZXIgY3Jhc2hlcyBhcmUgaW5jbHVk
ZWQgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgICAgIFdlIHVzZSBGYWxzZSB3aGVuIGZpbmRpbmcg
dGhlIGxpc3Qgb2YgZmFpbHVyZXMgdG8gcmV0cnkKKyAgICAgICAgICAgIHRvIHNlZSBpZiB0aGUg
cmVzdWx0cyB3ZXJlIGZsYWt5LiBBbHRob3VnaCB0aGUgY3Jhc2hlcyBtYXkgYWxzbyBiZQorICAg
ICAgICAgICAgZmxha3ksIHdlIHRyZWF0IHRoZW0gYXMgaWYgdGhleSBhcmVuJ3Qgc28gdGhhdCB0
aGV5J3JlIG5vdCBpZ25vcmVkLgorICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIGEgZGljdCBv
ZiBmaWxlcyAtPiByZXN1bHRzCisgICAgICAgICIiIgorICAgICAgICBmYWlsZWRfcmVzdWx0cyA9
IHt9CisgICAgICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcmVzdWx0X3N1bW1hcnkudW5leHBlY3Rl
ZF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IHRl
c3RfZXhwZWN0YXRpb25zLlBBU1Mgb3IKKyAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9PSB0
ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hlcyk6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZhaWxlZF9yZXN1bHRzW3Rlc3RdID0gcmVz
dWx0LnR5cGUKKworICAgICAgICByZXR1cm4gZmFpbGVkX3Jlc3VsdHMKKworICAgIGRlZiBfY2hh
cl9mb3JfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5sb3dl
cigpCisgICAgICAgIGlmIHJlc3VsdCBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElP
TlM6CisgICAgICAgICAgICByZXN1bHRfZW51bV92YWx1ZSA9IFRlc3RFeHBlY3RhdGlvbnNGaWxl
LkVYUEVDVEFUSU9OU1tyZXN1bHRdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHRf
ZW51bV92YWx1ZSA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVSU1tyZXN1bHRdCisgICAg
ICAgIHJldHVybiBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5KU09OTGF5b3V0UmVzdWx0
c0dlbmVyYXRvci5GQUlMVVJFX1RPX0NIQVJbcmVzdWx0X2VudW1fdmFsdWVdCisKKyAgICBkZWYg
X3VwbG9hZF9qc29uX2ZpbGVzKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cywgc3VtbWFyaXplZF9y
ZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzKToKKyAgICAgICAgIiIiV3JpdGVzIHRoZSByZXN1bHRzIG9mIHRo
ZSB0ZXN0IHJ1biBhcyBKU09OIGZpbGVzIGludG8gdGhlIHJlc3VsdHMKKyAgICAgICAgZGlyIGFu
ZCB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoZSBhcHBlbmdpbmUgc2VydmVyLgorCisgICAgICAgIFRo
ZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZmlsZXMgd3JpdHRlbiBpbnRvIHRoZSByZXN1bHRzIGRp
cjoKKyAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbjogQSBzaG9ydCBsaXN0IG9mIGFu
eSB1bmV4cGVjdGVkIHJlc3VsdHMuCisgICAgICAgICAgICBUaGlzIGlzIHVzZWQgYnkgdGhlIGJ1
aWxkYm90cyB0byBkaXNwbGF5IHJlc3VsdHMuCisgICAgICAgICAgZXhwZWN0YXRpb25zLmpzb246
IFRoaXMgaXMgdXNlZCBieSB0aGUgZmxha2luZXNzIGRhc2hib2FyZC4KKyAgICAgICAgICByZXN1
bHRzLmpzb246IEEgZnVsbCBsaXN0IG9mIHRoZSByZXN1bHRzIC0gdXNlZCBieSB0aGUgZmxha2lu
ZXNzCisgICAgICAgICAgICBkYXNoYm9hcmQgYW5kIHRoZSBhZ2dyZWdhdGUgcmVzdWx0cyBkYXNo
Ym9hcmQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHM6IGRp
Y3Qgb2YgdW5leHBlY3RlZCByZXN1bHRzCisgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzOiBk
aWN0IG9mIHJlc3VsdHMKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogZnVsbCBzdW1tYXJ5IG9i
amVjdAorICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBsaXN0IG9mIHRlc3QgdGlt
ZXMgKHVzZWQgYnkgdGhlIGZsYWtpbmVzcworICAgICAgICAgICAgZGFzaGJvYXJkKS4KKyAgICAg
ICAgIiIiCisgICAgICAgIF9sb2cuZGVidWcoIldyaXRpbmcgSlNPTiBmaWxlcyBpbiAlcy4iICUg
c2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCisKKyAgICAgICAgdW5leHBlY3RlZF9qc29uX3BhdGgg
PSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidW5leHBlY3RlZF9yZXN1
bHRzLmpzb24iKQorICAgICAgICBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLndyaXRlX2pzb24oc2Vs
Zi5fZnMsIHVuZXhwZWN0ZWRfcmVzdWx0cywgdW5leHBlY3RlZF9qc29uX3BhdGgpCisKKyAgICAg
ICAgZnVsbF9yZXN1bHRzX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0
b3J5LCAiZnVsbF9yZXN1bHRzLmpzb24iKQorICAgICAgICBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9y
LndyaXRlX2pzb24oc2VsZi5fZnMsIHN1bW1hcml6ZWRfcmVzdWx0cywgZnVsbF9yZXN1bHRzX3Bh
dGgpCisKKyAgICAgICAgIyBXcml0ZSBhIGpzb24gZmlsZSBvZiB0aGUgdGVzdF9leHBlY3RhdGlv
bnMudHh0IGZpbGUgZm9yIHRoZSBsYXlvdXQKKyAgICAgICAgIyB0ZXN0cyBkYXNoYm9hcmQuCisg
ICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSwgImV4cGVjdGF0aW9ucy5qc29uIikKKyAgICAgICAgZXhwZWN0YXRpb25zX2pzb24g
PSBcCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19qc29u
X2Zvcl9hbGxfcGxhdGZvcm1zKCkKKyAgICAgICAgc2VsZi5fZnMud3JpdGVfdGV4dF9maWxlKGV4
cGVjdGF0aW9uc19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSJBRERf
RVhQRUNUQVRJT05TKCVzKTsiICUgZXhwZWN0YXRpb25zX2pzb24pCisKKyAgICAgICAgZ2VuZXJh
dG9yID0ganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91dFJlc3VsdHNHZW5l
cmF0b3IoCisgICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLmJ1aWxkZXJfbmFt
ZSwgc2VsZi5fb3B0aW9ucy5idWlsZF9uYW1lLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5i
dWlsZF9udW1iZXIsIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICAgICAgQlVJTERF
Ul9CQVNFX1VSTCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisgICAgICAgICAgICBzZWxmLl9l
eHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QsCisgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXIsCisgICAgICAgICAgICAi
bGF5b3V0LXRlc3RzIiwKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubWFzdGVyX25hbWUpCisK
KyAgICAgICAgX2xvZy5kZWJ1ZygiRmluaXNoZWQgd3JpdGluZyBKU09OIGZpbGVzLiIpCisKKyAg
ICAgICAganNvbl9maWxlcyA9IFsiZXhwZWN0YXRpb25zLmpzb24iLCAiaW5jcmVtZW50YWxfcmVz
dWx0cy5qc29uIiwgImZ1bGxfcmVzdWx0cy5qc29uIl0KKworICAgICAgICBnZW5lcmF0b3IudXBs
b2FkX2pzb25fZmlsZXMoanNvbl9maWxlcykKKworICAgIGRlZiBfcHJpbnRfY29uZmlnKHNlbGYp
OgorICAgICAgICAiIiJQcmludHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0ZXN0IHJ1bi4i
IiIKKyAgICAgICAgcCA9IHNlbGYuX3ByaW50ZXIKKyAgICAgICAgcC5wcmludF9jb25maWcoIlVz
aW5nIHBvcnQgJyVzJyIgJSBzZWxmLl9wb3J0Lm5hbWUoKSkKKyAgICAgICAgcC5wcmludF9jb25m
aWcoIlRlc3QgY29uZmlndXJhdGlvbjogJXMiICUgc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRp
b24oKSkKKyAgICAgICAgcC5wcmludF9jb25maWcoIlBsYWNpbmcgdGVzdCByZXN1bHRzIGluICVz
IiAlIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5l
d19iYXNlbGluZToKKyAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFjaW5nIG5ldyBiYXNl
bGluZXMgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuYmFz
ZWxpbmVfcGF0aCgpKQorICAgICAgICBwLnByaW50X2NvbmZpZygiVXNpbmcgJXMgYnVpbGQiICUg
c2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBp
eGVsX3Rlc3RzOgorICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBpeGVsIHRlc3RzIGVuYWJs
ZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBpeGVsIHRl
c3RzIGRpc2FibGVkIikKKworICAgICAgICBwLnByaW50X2NvbmZpZygiUmVndWxhciB0aW1lb3V0
OiAlcywgc2xvdyB0ZXN0IHRpbWVvdXQ6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKSkKKworICAgICAgICBwLnByaW50X2NvbmZpZygnQ29t
bWFuZCBsaW5lOiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oc2VsZi5fcG9y
dC5kcml2ZXJfY21kX2xpbmUoKSkpCisgICAgICAgIHAucHJpbnRfY29uZmlnKCJXb3JrZXIgbW9k
ZWw6ICVzIiAlIHNlbGYuX29wdGlvbnMud29ya2VyX21vZGVsKQorICAgICAgICBwLnByaW50X2Nv
bmZpZygiIikKKworICAgIGRlZiBfcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYs
IHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdF90eXBlLCByZXN1bHRfdHlwZV9zdHIpOgorICAgICAgICAiIiJQcmludCB0aGUgbnVt
YmVyIG9mIHRoZSB0ZXN0cyBpbiBhIGdpdmVuIHJlc3VsdCBjbGFzcy4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5IC0gdGhlIG9iamVjdCBjb250YWluaW5nIGFsbCB0
aGUgcmVzdWx0cyB0byByZXBvcnQgb24KKyAgICAgICAgICByZXN1bHRfdHlwZSAtIHRoZSBwYXJ0
aWN1bGFyIHJlc3VsdCB0eXBlIHRvIHJlcG9ydCBpbiB0aGUgc3VtbWFyeS4KKyAgICAgICAgICBy
ZXN1bHRfdHlwZV9zdHIgLSBhIHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzdWx0X3R5cGUu
CisgICAgICAgICIiIgorICAgICAgICB0ZXN0cyA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfdGVz
dHNfd2l0aF9yZXN1bHRfdHlwZShyZXN1bHRfdHlwZSkKKyAgICAgICAgbm93ID0gcmVzdWx0X3N1
bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGVzdF9leHBlY3RhdGlvbnMuTk9XXQorICAgICAgICB3
b250Zml4ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGVzdF9leHBlY3RhdGlv
bnMuV09OVEZJWF0KKworICAgICAgICAjIFdlIHVzZSBhIGZhbmN5IGZvcm1hdCBzdHJpbmcgaW4g
b3JkZXIgdG8gcHJpbnQgdGhlIGRhdGEgb3V0IGluIGEKKyAgICAgICAgIyBuaWNlbHktYWxpZ25l
ZCB0YWJsZS4KKyAgICAgICAgZm10c3RyID0gKCJFeHBlY3Q6ICUlNWQgJSUtOHMgKCUlJWRkIG5v
dywgJSUlZGQgd29udGZpeCkiCisgICAgICAgICAgICAgICAgICAlIChzZWxmLl9udW1fZGlnaXRz
KG5vdyksIHNlbGYuX251bV9kaWdpdHMod29udGZpeCkpKQorICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X2V4cGVjdGVkKGZtdHN0ciAlCisgICAgICAgICAgICAobGVuKHRlc3RzKSwgcmVzdWx0
X3R5cGVfc3RyLCBsZW4odGVzdHMgJiBub3cpLCBsZW4odGVzdHMgJiB3b250Zml4KSkpCisKKyAg
ICBkZWYgX251bV9kaWdpdHMoc2VsZiwgbnVtKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVt
YmVyIG9mIGRpZ2l0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBsZW5ndGggb2YgYQorICAgICAg
ICBzZXF1ZW5jZS4iIiIKKyAgICAgICAgbmRpZ2l0cyA9IDEKKyAgICAgICAgaWYgbGVuKG51bSk6
CisgICAgICAgICAgICBuZGlnaXRzID0gaW50KG1hdGgubG9nMTAobGVuKG51bSkpKSArIDEKKyAg
ICAgICAgcmV0dXJuIG5kaWdpdHMKKworICAgIGRlZiBfcHJpbnRfdGltaW5nX3N0YXRpc3RpY3Mo
c2VsZiwgdG90YWxfdGltZSwgdGhyZWFkX3RpbWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpOgorICAgICAg
ICAiIiJSZWNvcmQgdGltaW5nLXNwZWNpZmljIGluZm9ybWF0aW9uIGZvciB0aGUgdGVzdCBydW4u
CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0b3RhbF90aW1lOiB0b3RhbCBlbGFwc2VkIHRp
bWUgKGluIHNlY29uZHMpIGZvciB0aGUgdGVzdCBydW4KKyAgICAgICAgICB0aHJlYWRfdGltaW5n
czogd2FsbCBjbG9jayB0aW1lIGVhY2ggdGhyZWFkIHJhbiBmb3IKKyAgICAgICAgICBkaXJlY3Rv
cnlfdGVzdF90aW1pbmdzOiB0aW1pbmcgYnkgZGlyZWN0b3J5CisgICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3M6IHRpbWluZyBieSBmaWxlCisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6
IHN1bW1hcnkgb2JqZWN0IGZvciB0aGUgdGVzdCBydW4KKyAgICAgICAgIiIiCisgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJUZXN0IHRpbWluZzoiKQorICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3RpbWluZygiICAlNi4yZiB0b3RhbCB0ZXN0aW5nIHRpbWUiICUgdG90YWxf
dGltZSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCisgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJUaHJlYWQgdGltaW5nOiIpCisgICAgICAgIGN1bWxf
dGltZSA9IDAKKyAgICAgICAgZm9yIHQgaW4gdGhyZWFkX3RpbWluZ3M6CisgICAgICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAgICUxMHM6ICU1ZCB0ZXN0cywgJTYuMmYgc2Vj
cyIgJQorICAgICAgICAgICAgICAgICAgKHRbJ25hbWUnXSwgdFsnbnVtX3Rlc3RzJ10sIHRbJ3Rv
dGFsX3RpbWUnXSkpCisgICAgICAgICAgICBjdW1sX3RpbWUgKz0gdFsndG90YWxfdGltZSddCisg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgICAlNi4yZiBjdW11bGF0aXZlLCAl
Ni4yZiBvcHRpbWFsIiAlCisgICAgICAgICAgICAgIChjdW1sX3RpbWUsIGN1bWxfdGltZSAvIGlu
dChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykpKQorICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3RpbWluZygiIikKKworICAgICAgICBzZWxmLl9wcmludF9hZ2dyZWdhdGVfdGVzdF9z
dGF0aXN0aWNzKGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorICAgICAgICBzZWxmLl9wcmludF9p
bmRpdmlkdWFsX3Rlc3RfdGltZXMoaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSkKKyAgICAgICAg
c2VsZi5fcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3MoZGlyZWN0b3J5X3Rlc3RfdGltaW5ncykKKwor
ICAgIGRlZiBfcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhzZWxmLCBpbmRpdmlkdWFs
X3Rlc3RfdGltaW5ncyk6CisgICAgICAgICIiIlByaW50cyBhZ2dyZWdhdGUgc3RhdGlzdGljcyAo
ZS5nLiBtZWRpYW4sIG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVzdHMuCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFJlc3VsdHMgZm9y
IGFsbCB0ZXN0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHRpbWVzX2Zvcl9kdW1wX3JlbmRlcl90
cmVlID0gW3Rlc3Rfc3RhdHMudGVzdF9ydW5fdGltZSBmb3IgdGVzdF9zdGF0cyBpbiBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5nc10KKyAgICAgICAgc2VsZi5fcHJpbnRfc3RhdGlzdGljc19mb3JfdGVz
dF90aW1pbmdzKCJQRVIgVEVTVCBUSU1FIElOIFRFU1RTSEVMTCAoc2Vjb25kcyk6IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzX2Zvcl9kdW1w
X3JlbmRlcl90cmVlKQorCisgICAgZGVmIF9wcmludF9pbmRpdmlkdWFsX3Rlc3RfdGltZXMoc2Vs
ZiwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJQcmludHMgdGhlIHJ1biB0aW1lcyBm
b3Igc2xvdywgdGltZW91dCBhbmQgY3Jhc2ggdGVzdHMuCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFN0YXRzIGZvciBhbGwgdGVz
dHMuCisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZvciB0ZXN0IHJ1
bgorICAgICAgICAiIiIKKyAgICAgICAgIyBSZXZlcnNlLXNvcnQgYnkgdGhlIHRpbWUgc3BlbnQg
aW4gRHVtcFJlbmRlclRyZWUuCisgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLnNvcnQo
bGFtYmRhIGEsIGI6CisgICAgICAgICAgICBjbXAoYi50ZXN0X3J1bl90aW1lLCBhLnRlc3RfcnVu
X3RpbWUpKQorCisgICAgICAgIG51bV9wcmludGVkID0gMAorICAgICAgICBzbG93X3Rlc3RzID0g
W10KKyAgICAgICAgdGltZW91dF9vcl9jcmFzaF90ZXN0cyA9IFtdCisgICAgICAgIHVuZXhwZWN0
ZWRfc2xvd190ZXN0cyA9IFtdCisgICAgICAgIGZvciB0ZXN0X3R1cGxlIGluIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzOgorICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0X3R1cGxlLmZpbGVuYW1l
CisgICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBGYWxzZQorICAgICAgICAg
ICAgaWYgc2VsZi5fdGVzdF9pc19zbG93KGZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBpc190
aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBUcnVlCisgICAgICAgICAgICAgICAgc2xvd190ZXN0cy5h
cHBlbmQodGVzdF90dXBsZSkKKworICAgICAgICAgICAgaWYgZmlsZW5hbWUgaW4gcmVzdWx0X3N1
bW1hcnkuZmFpbHVyZXM6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0X3N1bW1hcnku
cmVzdWx0c1tmaWxlbmFtZV0udHlwZQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdGVz
dF9leHBlY3RhdGlvbnMuVElNRU9VVCBvcgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPT0g
dGVzdF9leHBlY3RhdGlvbnMuQ1JBU0gpOgorICAgICAgICAgICAgICAgICAgICBpc190aW1lb3V0
X2NyYXNoX29yX3Nsb3cgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb3JfY3Jh
c2hfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCisKKyAgICAgICAgICAgIGlmIChub3QgaXNfdGlt
ZW91dF9jcmFzaF9vcl9zbG93IGFuZAorICAgICAgICAgICAgICAgIG51bV9wcmludGVkIDwgcHJp
bnRpbmcuTlVNX1NMT1dfVEVTVFNfVE9fTE9HKToKKyAgICAgICAgICAgICAgICBudW1fcHJpbnRl
ZCA9IG51bV9wcmludGVkICsgMQorICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfc2xvd190ZXN0
cy5hcHBlbmQodGVzdF90dXBsZSkKKworICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWlu
ZygiIikKKyAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygiJXMgc2xvd2VzdCB0
ZXN0cyB0aGF0IGFyZSBub3QgIgorICAgICAgICAgICAgIm1hcmtlZCBhcyBTTE9XIGFuZCBkaWQg
bm90IHRpbWVvdXQvY3Jhc2g6IiAlCisgICAgICAgICAgICBwcmludGluZy5OVU1fU0xPV19URVNU
U19UT19MT0csIHVuZXhwZWN0ZWRfc2xvd190ZXN0cykKKyAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90aW1pbmcoIiIpCisgICAgICAgIHNlbGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcoIlRl
c3RzIG1hcmtlZCBhcyBTTE9XOiIsIHNsb3dfdGVzdHMpCisgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGltaW5nKCIiKQorICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGltaW5nKCJU
ZXN0cyB0aGF0IHRpbWVkIG91dCBvciBjcmFzaGVkOiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZW91dF9vcl9jcmFzaF90ZXN0cykKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF90aW1pbmcoIiIpCisKKyAgICBkZWYgX3ByaW50X3Rlc3RfbGlzdF90aW1pbmco
c2VsZiwgdGl0bGUsIHRlc3RfbGlzdCk6CisgICAgICAgICIiIlByaW50IHRpbWluZyBpbmZvIGZv
ciBlYWNoIHRlc3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0aXRsZTogc2VjdGlvbiBo
ZWFkaW5nCisgICAgICAgICAgdGVzdF9saXN0OiB0ZXN0cyB0aGF0IGZhbGwgaW4gdGhpcyBzZWN0
aW9uCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wcmludGVyLmRpc2FibGVkKCdzbG93
ZXN0Jyk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZyh0aXRsZSkKKyAgICAgICAgZm9yIHRlc3RfdHVwbGUgaW4gdGVzdF9saXN0OgorICAg
ICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0X3R1cGxlLmZpbGVuYW1lW2xlbigKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSkgKyAxOl0KKyAgICAgICAgICAgIGZp
bGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnXFwnLCAnLycpCisgICAgICAgICAgICB0ZXN0X3J1
bl90aW1lID0gcm91bmQodGVzdF90dXBsZS50ZXN0X3J1bl90aW1lLCAxKQorICAgICAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgJXMgdG9vayAlcyBzZWNvbmRzIiAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUsIHRlc3RfcnVuX3Rp
bWUpKQorCisgICAgZGVmIF9wcmludF9kaXJlY3RvcnlfdGltaW5ncyhzZWxmLCBkaXJlY3Rvcnlf
dGVzdF90aW1pbmdzKToKKyAgICAgICAgIiIiUHJpbnQgdGltaW5nIGluZm8gYnkgZGlyZWN0b3J5
IGZvciBhbnkgZGlyZWN0b3JpZXMgdGhhdAorICAgICAgICB0YWtlID4gMTAgc2Vjb25kcyB0byBy
dW4uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmc6IHRp
bWUgaW5mbyBmb3IgZWFjaCBkaXJlY3RvcnkKKyAgICAgICAgIiIiCisgICAgICAgIHRpbWluZ3Mg
PSBbXQorICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3M6Cisg
ICAgICAgICAgICBudW1fdGVzdHMsIHRpbWVfZm9yX2RpcmVjdG9yeSA9IGRpcmVjdG9yeV90ZXN0
X3RpbWluZ3NbZGlyZWN0b3J5XQorICAgICAgICAgICAgdGltaW5ncy5hcHBlbmQoKHJvdW5kKHRp
bWVfZm9yX2RpcmVjdG9yeSwgMSksIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudW1fdGVzdHMpKQorICAgICAgICB0aW1pbmdzLnNvcnQoKQorCisgICAgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdGltaW5nKCJUaW1lIHRvIHByb2Nlc3Mgc2xvd2VzdCBzdWJkaXJlY3Rv
cmllczoiKQorICAgICAgICBtaW5fc2Vjb25kc190b19wcmludCA9IDEwCisgICAgICAgIGZvciB0
aW1pbmcgaW4gdGltaW5nczoKKyAgICAgICAgICAgIGlmIHRpbWluZ1swXSA+IG1pbl9zZWNvbmRz
X3RvX3ByaW50OgorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKAor
ICAgICAgICAgICAgICAgICAgICAiICAlcyB0b29rICVzIHNlY29uZHMgdG8gcnVuICVzIHRlc3Rz
LiIgJSAodGltaW5nWzFdLAorICAgICAgICAgICAgICAgICAgICB0aW1pbmdbMF0sIHRpbWluZ1sy
XSkpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQorCisgICAgZGVmIF9w
cmludF9zdGF0aXN0aWNzX2Zvcl90ZXN0X3RpbWluZ3Moc2VsZiwgdGl0bGUsIHRpbWluZ3MpOgor
ICAgICAgICAiIiJQcmludHMgdGhlIG1lZGlhbiwgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9u
IG9mIHRoZSB2YWx1ZXMgaW4KKyAgICAgICAgdGltaW5ncy4KKworICAgICAgICBBcmdzOgorICAg
ICAgICAgIHRpdGxlOiBUaXRsZSBmb3IgdGhlc2UgdGltaW5ncy4KKyAgICAgICAgICB0aW1pbmdz
OiBBIGxpc3Qgb2YgZmxvYXRzIHJlcHJlc2VudGluZyB0aW1lcy4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKHRpdGxlKQorICAgICAgICB0aW1pbmdzLnNv
cnQoKQorCisgICAgICAgIG51bV90ZXN0cyA9IGxlbih0aW1pbmdzKQorICAgICAgICBpZiBub3Qg
bnVtX3Rlc3RzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBlcmNlbnRpbGU5MCA9IHRp
bWluZ3NbaW50KC45ICogbnVtX3Rlc3RzKV0KKyAgICAgICAgcGVyY2VudGlsZTk5ID0gdGltaW5n
c1tpbnQoLjk5ICogbnVtX3Rlc3RzKV0KKworICAgICAgICBpZiBudW1fdGVzdHMgJSAyID09IDE6
CisgICAgICAgICAgICBtZWRpYW4gPSB0aW1pbmdzWygobnVtX3Rlc3RzIC0gMSkgLyAyKSAtIDFd
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb3dlciA9IHRpbWluZ3NbbnVtX3Rlc3RzIC8g
MiAtIDFdCisgICAgICAgICAgICB1cHBlciA9IHRpbWluZ3NbbnVtX3Rlc3RzIC8gMl0KKyAgICAg
ICAgICAgIG1lZGlhbiA9IChmbG9hdChsb3dlciArIHVwcGVyKSkgLyAyCisKKyAgICAgICAgbWVh
biA9IHN1bSh0aW1pbmdzKSAvIG51bV90ZXN0cworCisgICAgICAgIGZvciB0aW1lIGluIHRpbWlu
Z3M6CisgICAgICAgICAgICBzdW1fb2ZfZGV2aWF0aW9ucyA9IG1hdGgucG93KHRpbWUgLSBtZWFu
LCAyKQorCisgICAgICAgIHN0ZF9kZXZpYXRpb24gPSBtYXRoLnNxcnQoc3VtX29mX2RldmlhdGlv
bnMgLyBudW1fdGVzdHMpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIE1l
ZGlhbjogICAgICAgICAgJTYuM2YiICUgbWVkaWFuKQorICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3RpbWluZygiICBNZWFuOiAgICAgICAgICAgICU2LjNmIiAlIG1lYW4pCisgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIDkwdGggcGVyY2VudGlsZTogJTYuM2YiICUgcGVy
Y2VudGlsZTkwKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICA5OXRoIHBl
cmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5OSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90aW1pbmcoIiAgU3RhbmRhcmQgZGV2OiAgICAlNi4zZiIgJSBzdGRfZGV2aWF0aW9uKQor
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKKworICAgIGRlZiBfcHJpbnRf
cmVzdWx0X3N1bW1hcnkoc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJQcmludCBh
IHNob3J0IHN1bW1hcnkgYWJvdXQgaG93IG1hbnkgdGVzdHMgcGFzc2VkLgorCisgICAgICAgIEFy
Z3M6CisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGluZm9ybWF0aW9uIHRvIGxvZworICAgICAg
ICAiIiIKKyAgICAgICAgZmFpbGVkID0gbGVuKHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzKQorICAg
ICAgICBza2lwcGVkID0gbGVuKAorICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlf
ZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuU0tJUF0pCisgICAgICAgIHRvdGFsID0gcmVz
dWx0X3N1bW1hcnkudG90YWwKKyAgICAgICAgcGFzc2VkID0gdG90YWwgLSBmYWlsZWQgLSBza2lw
cGVkCisgICAgICAgIHBjdF9wYXNzZWQgPSAwLjAKKyAgICAgICAgaWYgdG90YWwgPiAwOgorICAg
ICAgICAgICAgcGN0X3Bhc3NlZCA9IGZsb2F0KHBhc3NlZCkgKiAxMDAgLyB0b3RhbAorCisgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQorICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X2FjdHVhbCgiPT4gUmVzdWx0czogJWQvJWQgdGVzdHMgcGFzc2VkICglLjFmJSUpIiAl
CisgICAgICAgICAgICAgICAgICAgICAocGFzc2VkLCB0b3RhbCwgcGN0X3Bhc3NlZCkpCisgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQorICAgICAgICBzZWxmLl9wcmludF9y
ZXN1bHRfc3VtbWFyeV9lbnRyeShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhw
ZWN0YXRpb25zLk5PVywgIlRlc3RzIHRvIGJlIGZpeGVkIikKKworICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X2FjdHVhbCgiIikKKyAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnlf
ZW50cnkocmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5XT05U
RklYLAorICAgICAgICAgICAgIlRlc3RzIHRoYXQgd2lsbCBvbmx5IGJlIGZpeGVkIGlmIHRoZXkg
Y3Jhc2ggKFdPTlRGSVgpIikKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiIp
CisKKyAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHNlbGYsIHJlc3VsdF9zdW1t
YXJ5LCB0aW1lbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRp
bmcpOgorICAgICAgICAiIiJQcmludCBhIHN1bW1hcnkgYmxvY2sgb2YgcmVzdWx0cyBmb3IgYSBw
YXJ0aWN1bGFyIHRpbWVsaW5lIG9mIHRlc3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeTogc3VtbWFyeSB0byBwcmludCByZXN1bHRzIGZvcgorICAgICAgICAgIHRp
bWVsaW5lOiB0aGUgdGltZWxpbmUgdG8gcHJpbnQgcmVzdWx0cyBmb3IgKE5PVCwgV09OVEZJWCwg
ZXRjLikKKyAgICAgICAgICBoZWFkaW5nOiBhIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHRp
bWVsaW5lCisgICAgICAgICIiIgorICAgICAgICB0b3RhbCA9IGxlbihyZXN1bHRfc3VtbWFyeS50
ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0pCisgICAgICAgIG5vdF9wYXNzaW5nID0gKHRvdGFs
IC0KKyAgICAgICAgICAgbGVuKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Rl
c3RfZXhwZWN0YXRpb25zLlBBU1NdICYKKyAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRl
c3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
YWN0dWFsKCI9PiAlcyAoJWQpOiIgJSAoaGVhZGluZywgbm90X3Bhc3NpbmcpKQorCisgICAgICAg
IGZvciByZXN1bHQgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05fT1JERVI6Cisg
ICAgICAgICAgICBpZiByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUzoKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmVzdWx0cyA9IChyZXN1bHRfc3VtbWFyeS50
ZXN0c19ieV9leHBlY3RhdGlvbltyZXN1bHRdICYKKyAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKQorICAgICAgICAgICAgZGVz
YyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OU1tyZXN1bHRd
CisgICAgICAgICAgICBpZiBub3RfcGFzc2luZyBhbmQgbGVuKHJlc3VsdHMpOgorICAgICAgICAg
ICAgICAgIHBjdCA9IGxlbihyZXN1bHRzKSAqIDEwMC4wIC8gbm90X3Bhc3NpbmcKKyAgICAgICAg
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiICAlNWQgJS0yNHMgKCU0LjFmJSUp
IiAlCisgICAgICAgICAgICAgICAgICAgIChsZW4ocmVzdWx0cyksIGRlc2NbbGVuKHJlc3VsdHMp
ICE9IDFdLCBwY3QpKQorCisgICAgZGVmIF9jb3B5X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgor
ICAgICAgICBiYXNlX2RpciA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlv
dXRUZXN0cycsICdmYXN0JywgJ2hhcm5lc3MnKQorICAgICAgICByZXN1bHRzX2ZpbGUgPSBzZWxm
Ll9mcy5qb2luKGJhc2VfZGlyLCAncmVzdWx0cy5odG1sJykKKyAgICAgICAgIyBGSVhNRTogV2hh
dCBzaG91bGQgd2UgZG8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0IChlLmcuLCBpbiB1bml0IHRlc3Rz
KT8KKyAgICAgICAgaWYgc2VsZi5fZnMuZXhpc3RzKHJlc3VsdHNfZmlsZSk6CisgICAgICAgICAg
ICBzZWxmLl9mcy5jb3B5ZmlsZShyZXN1bHRzX2ZpbGUsIHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVz
dWx0c19kaXJlY3RvcnksICJyZXN1bHRzLmh0bWwiKSkKKworICAgIGRlZiBfc2hvd19yZXN1bHRz
X2h0bWxfZmlsZShzZWxmLCByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlNob3dzIHRoZSBy
ZXN1bHRzLmh0bWwgcGFnZS4iIiIKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5mdWxsX3Jlc3Vs
dHNfaHRtbDoKKyAgICAgICAgICAgIHRlc3RfZmlsZXMgPSByZXN1bHRfc3VtbWFyeS5mYWlsdXJl
cy5rZXlzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVuZXhwZWN0ZWRfZmFpbHVyZXMg
PSBzZWxmLl9nZXRfZmFpbHVyZXMocmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1UcnVl
KQorICAgICAgICAgICAgdGVzdF9maWxlcyA9IHVuZXhwZWN0ZWRfZmFpbHVyZXMua2V5cygpCisK
KyAgICAgICAgaWYgbm90IGxlbih0ZXN0X2ZpbGVzKToKKyAgICAgICAgICAgIHJldHVybgorCisg
ICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGly
ZWN0b3J5LCAicmVzdWx0cy5odG1sIikKKyAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNf
aHRtbF9maWxlKHJlc3VsdHNfZmlsZW5hbWUpCisKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuICdNYW5hZ2VyJworCisgICAgZGVmIGlzX2RvbmUoc2VsZik6CisgICAgICAgIHdv
cmtlcl9zdGF0ZXMgPSBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpCisgICAgICAgIHJldHVy
biB3b3JrZXJfc3RhdGVzIGFuZCBhbGwoc2VsZi5fd29ya2VyX2lzX2RvbmUod29ya2VyX3N0YXRl
KSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9zdGF0ZXMpCisKKyAgICBkZWYgX3dvcmtlcl9p
c19kb25lKHNlbGYsIHdvcmtlcl9zdGF0ZSk6CisgICAgICAgIHQgPSB0aW1lLnRpbWUoKQorICAg
ICAgICBpZiB3b3JrZXJfc3RhdGUuZG9uZSBvciB3b3JrZXJfc3RhdGUud2VkZ2VkOgorICAgICAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBuZXh0X3RpbWVvdXQgPSB3b3JrZXJfc3RhdGUu
bmV4dF90aW1lb3V0CisgICAgICAgIFdFREdFX1BBRERJTkcgPSA0MC4wCisgICAgICAgIGlmIG5l
eHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdFREdFX1BBRERJTkc6CisgICAgICAg
ICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgd29ya2VyX3N0YXRlLndvcmtlcl9jb25u
ZWN0aW9uLmxvZ193ZWRnZWRfd29ya2VyKHdvcmtlcl9zdGF0ZS5jdXJyZW50X3Rlc3RfbmFtZSkK
KyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICB3b3JrZXJfc3RhdGUud2Vk
Z2VkID0gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgY2FuY2VsX3dvcmtlcnMoc2VsZik6CisgICAgICAgIGZvciB3b3JrZXJfc3Rh
dGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHdvcmtlcl9z
dGF0ZS53b3JrZXJfY29ubmVjdGlvbi5jYW5jZWwoKQorCisgICAgZGVmIGhhbmRsZV9zdGFydGVk
X3Rlc3Qoc2VsZiwgc291cmNlLCB0ZXN0X2luZm8sIGhhbmdfdGltZW91dCk6CisgICAgICAgIHdv
cmtlcl9zdGF0ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNlXQorICAgICAgICB3b3JrZXJf
c3RhdGUuY3VycmVudF90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5h
bWUodGVzdF9pbmZvLmZpbGVuYW1lKQorICAgICAgICB3b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0
ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQKKworICAgIGRlZiBoYW5kbGVfZG9uZShzZWxm
LCBzb3VyY2UpOgorICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3Nv
dXJjZV0KKyAgICAgICAgd29ya2VyX3N0YXRlLmRvbmUgPSBUcnVlCisKKyAgICBkZWYgaGFuZGxl
X2V4Y2VwdGlvbihzZWxmLCBzb3VyY2UsIGV4Y2VwdGlvbl9pbmZvKToKKyAgICAgICAgZXhjZXB0
aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgZXhjZXB0aW9uX3RyYWNlYmFjayA9IGV4Y2VwdGlv
bl9pbmZvCisgICAgICAgIHJhaXNlIGV4Y2VwdGlvbl90eXBlLCBleGNlcHRpb25fdmFsdWUsIGV4
Y2VwdGlvbl90cmFjZWJhY2sKKworICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfbGlzdChzZWxmLCBz
b3VyY2UsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgorICAgICAgICBzZWxm
Ll9ncm91cF9zdGF0c1tsaXN0X25hbWVdID0gKG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQorCisg
ICAgZGVmIGhhbmRsZV9maW5pc2hlZF90ZXN0KHNlbGYsIHNvdXJjZSwgcmVzdWx0LCBlbGFwc2Vk
X3RpbWUpOgorICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJj
ZV0KKyAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGltZW91dCA9IE5vbmUKKyAgICAgICAgd29y
a2VyX3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lID0gTm9uZQorICAgICAgICB3b3JrZXJfc3RhdGUu
c3RhdHNbJ3RvdGFsX3RpbWUnXSArPSBlbGFwc2VkX3RpbWUKKyAgICAgICAgd29ya2VyX3N0YXRl
LnN0YXRzWydudW1fdGVzdHMnXSArPSAxCisKKyAgICAgICAgaWYgd29ya2VyX3N0YXRlLndlZGdl
ZDoKKyAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGlmIHdlIGhhdmUgb3VyIHRp
bWVvdXRzIHR1bmVkIHByb3Blcmx5LgorICAgICAgICAgICAgX2xvZy5lcnJvcigiJXMgdW53ZWRn
ZWQiLCBzb3VyY2UpCisKKyAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkK
KyAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQoc2VsZi5fY3VycmVudF9y
ZXN1bHRfc3VtbWFyeSwgcmVzdWx0KQorCisKK2RlZiByZWFkX3Rlc3RfZmlsZXMoZnMsIGZpbGVz
KToKKyAgICB0ZXN0cyA9IFtdCisgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmcy5yZWFkX3RleHRfZmlsZShmaWxlKS5zcGxp
dCgnXG4nKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgICAgICBsaW5lID0gdGVzdF9leHBlY3RhdGlvbnMuc3RyaXBfY29tbWVudHMobGluZSkKKyAg
ICAgICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQo
bGluZSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgICAgICBpZiBlLmVycm5v
ID09IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCcnKQorICAg
ICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJy0tdGVzdC1saXN0IGZpbGUgIiVzIiBub3QgZm91
bmQnICUgZmlsZSkKKyAgICAgICAgICAgIHJhaXNlCisgICAgcmV0dXJuIHRlc3RzCisKKworY2xh
c3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgdGhlIG1hbmFnZXIg
dG8gdXNlIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB3b3JrZXJzLiIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKToKKyAgICAgICAg
c2VsZi53b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCisgICAgICAgIHNlbGYu
bnVtYmVyID0gbnVtYmVyCisgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYu
Y3VycmVudF90ZXN0X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF90aW1lb3V0ID0gTm9u
ZQorICAgICAgICBzZWxmLndlZGdlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuc3RhdHMgPSB7fQor
ICAgICAgICBzZWxmLnN0YXRzWyduYW1lJ10gPSB3b3JrZXJfY29ubmVjdGlvbi5uYW1lCisgICAg
ICAgIHNlbGYuc3RhdHNbJ251bV90ZXN0cyddID0gMAorICAgICAgICBzZWxmLnN0YXRzWyd0b3Rh
bF90aW1lJ10gPSAwCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAi
X1dvcmtlclN0YXRlKCIgKyBzdHIoc2VsZi5fX2RpY3RfXykgKyAiKSIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQzY2VkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsODQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFw
Y3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdHMgZm9yIG1hbmFnZXIuTWFuYWdlcigpLiIi
IgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9y
dCBmaWxlc3lzdGVtX21vY2sKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBN
b2NrCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBt
YW5hZ2VyCisKKworY2xhc3MgTWFuYWdlcldyYXBwZXIobWFuYWdlci5NYW5hZ2VyKToKKyAgICBk
ZWYgX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJl
dHVybiB0ZXN0X2ZpbGUKKworCitjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3Rfc2hhcmRfdGVzdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IF9z
aGFyZF90ZXN0cyBpbiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyIHJlYWxseQorICAgICAgICAjIHB1
dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCisgICAgICAgIHBvcnQgPSBNb2Nr
KCkKKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5
c3RlbSgpCisgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyV3JhcHBlcihwb3J0PXBvcnQsIG9wdGlv
bnM9TW9jaygpLCBwcmludGVyPU1vY2soKSkKKworICAgICAgICB0ZXN0X2xpc3QgPSBbCisgICAg
ICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCisgICAgICAg
ICAgIkxheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwiLAorICAgICAgICAgICJM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRt
bCIsCisgICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJv
dG9jb2wtaWdub3JlZC5odG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGlz
cGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCIsCisgICAgICAgICAgIkxh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50
LXR5cGVzLmh0bWwiLAorICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwiLAorICAgICAgICAgICJMYXlvdXRUZXN0cy9pZXRl
c3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5odG1sIiwKKyAgICAgICAgICAiTGF5
b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5odG1sIiwK
KyAgICAgICAgXQorCisgICAgICAgIGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jayA9IHNldChb
CisgICAgICAgICAgJ0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCisg
ICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8t
cmVmcmVzaC5odG1sJywKKyAgICAgICAgICAnTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dl
YnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnLAorICAgICAgICAgICdMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1s
JywKKyAgICAgICAgXSkKKworICAgICAgICAjIEZJWE1FOiBJZGVhbGx5IHRoZSBIVFRQIHRlc3Rz
IGRvbid0IGhhdmUgdG8gYWxsIGJlIGluIG9uZSBzaGFyZC4KKyAgICAgICAgc2luZ2xlX3RocmVh
ZF9yZXN1bHRzID0gbWFuYWdlci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBGYWxzZSkKKyAgICAg
ICAgbXVsdGlfdGhyZWFkX3Jlc3VsdHMgPSBtYW5hZ2VyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3Qs
IFRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwg
c2luZ2xlX3RocmVhZF9yZXN1bHRzWzBdWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0KHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVsx
XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIG11bHRp
X3RocmVhZF9yZXN1bHRzWzBdWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
X3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0KG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
cHJpbnRpbmdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQppbmRleCA4ZjYzZWRkLi4wNDBm
ODIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpAQCAt
NDIsNyArNDIsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBp
bXBvcnQgcmVzdWx0X3N1bW1hcnkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9w
YWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHMKLWZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3J1bm5lcgorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1hbmFnZXIKIAogCiBk
ZWYgZ2V0X29wdGlvbnMoYXJncyk6CkBAIC01MTMsNyArNTEzLDcgQEAgY2xhc3MgIFRlc3Rwcmlu
dGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICByZXRyeS5hZGQoc2VsZi5n
ZXRfcmVzdWx0KCdwYXNzZXMvdGV4dC5odG1sJyksIFRydWUpCiAgICAgICAgICAgICAgICAgcmV0
cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sJyks
IFRydWUpCiAgICAgICAgICAgICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcpLCBUcnVlKQotICAgICAgICAgICAgdW5leHBlY3RlZF9y
ZXN1bHRzID0gdGVzdF9ydW5uZXIuc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwgZXhwLCBy
cywgcmV0cnksIHRlc3RfdGltaW5ncz17fSwgb25seV91bmV4cGVjdGVkPVRydWUpCisgICAgICAg
ICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBtYW5hZ2VyLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYu
X3BvcnQsIGV4cCwgcnMsIHJldHJ5LCB0ZXN0X3RpbWluZ3M9e30sIG9ubHlfdW5leHBlY3RlZD1U
cnVlKQogICAgICAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0cwogCiAgICAgICAgIHRl
c3RzID0gWydwYXNzZXMvdGV4dC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRt
bCcsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhMjZkYjYwLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTMyMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiCi1UaGUgVGVzdFJ1bm5lciBjbGFz
cyBydW5zIGEgc2VyaWVzIG9mIHRlc3RzIChUZXN0VHlwZSBpbnRlcmZhY2UpIGFnYWluc3QgYSBz
ZXQKLW9mIHRlc3QgZmlsZXMuICBJZiBhIHRlc3QgZmlsZSBmYWlscyBhIFRlc3RUeXBlLCBpdCBy
ZXR1cm5zIGEgbGlzdCBUZXN0RmFpbHVyZQotb2JqZWN0cyB0byB0aGUgVGVzdFJ1bm5lci4gIFRo
ZSBUZXN0UnVubmVyIHRoZW4gYWdncmVnYXRlcyB0aGUgVGVzdEZhaWx1cmVzIHRvCi1jcmVhdGUg
YSBmaW5hbCByZXBvcnQuCi0iIiIKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRl
bWVudAotCi1pbXBvcnQgY29weQotaW1wb3J0IGVycm5vCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0
IG1hdGgKLWltcG9ydCBRdWV1ZQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN5cwotaW1wb3J0IHRp
bWUKLQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpz
b25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5s
YXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tl
cgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50
aW5nCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRf
cGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5s
YXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzX3VwbG9hZGVyCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgd29ya2VyCi0KLWZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnJlc3VsdF9zdW1tYXJ5IGltcG9ydCBSZXN1
bHRTdW1tYXJ5Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0
X2lucHV0IGltcG9ydCBUZXN0SW5wdXQKLQotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9y
dCBzaW1wbGVqc29uCi1mcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IGdyYW1tYXIKLQotX2xvZyA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0jIEJ1aWxkZXIgYmFzZSBVUkwgd2hlcmUg
d2UgaGF2ZSB0aGUgYXJjaGl2ZWQgdGVzdCByZXN1bHRzLgotQlVJTERFUl9CQVNFX1VSTCA9ICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvIgot
Ci1UZXN0RXhwZWN0YXRpb25zRmlsZSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlv
bnNGaWxlCi0KLQotZGVmIHN1bW1hcml6ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMs
IHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCB0ZXN0X3RpbWluZ3MsIG9ubHlfdW5leHBl
Y3RlZCk6Ci0gICAgIiIiU3VtbWFyaXplIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMgYXMgYSBkaWN0
LgotCi0gICAgRklYTUU6IHNwbGl0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaW50byBhIHNlcGFyYXRl
IGNsYXNzPwotCi0gICAgQXJnczoKLSAgICAgICAgcG9ydF9vYmo6IGludGVyZmFjZSB0byBwb3J0
LXNwZWNpZmljIGhvb2tzCi0gICAgICAgIGV4cGVjdGF0aW9uczogdGVzdF9leHBlY3RhdGlvbnMu
VGVzdEV4cGVjdGF0aW9ucyBvYmplY3QKLSAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkg
b2JqZWN0IGZyb20gaW5pdGlhbCB0ZXN0IHJ1bnMKLSAgICAgICAgcmV0cnlfc3VtbWFyeTogc3Vt
bWFyeSBvYmplY3QgZnJvbSBmaW5hbCB0ZXN0IHJ1biBvZiByZXRyaWVkIHRlc3RzCi0gICAgICAg
IHRlc3RfdGltaW5nczogYSBsaXN0IG9mIFRlc3RSZXN1bHQgb2JqZWN0cyB3aGljaCBjb250YWlu
IHRlc3QgcnVudGltZXMgaW4gc2Vjb25kcwotICAgICAgICBvbmx5X3VuZXhwZWN0ZWQ6IHdoZXRo
ZXIgdG8gcmV0dXJuIGEgc3VtbWFyeSBvbmx5IGZvciB0aGUgdW5leHBlY3RlZCByZXN1bHRzCi0g
ICAgUmV0dXJuczoKLSAgICAgICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9m
IHRoZSB1bmV4cGVjdGVkIHJlc3VsdHMgZnJvbSB0aGUKLSAgICAgICAgcnVuLCB3aXRoIHRoZSBm
b2xsb3dpbmcgZmllbGRzOgotICAgICAgICAndmVyc2lvbic6IGEgdmVyc2lvbiBpbmRpY2F0b3Ig
KDEgaW4gdGhpcyB2ZXJzaW9uKQotICAgICAgICAnZml4YWJsZSc6ICMgb2YgZml4YWJsZSB0ZXN0
cyAoTk9XIC0gUEFTUykKLSAgICAgICAgJ3NraXBwZWQnOiAjIG9mIHNraXBwZWQgdGVzdHMgKE5P
VyAmIFNLSVBQRUQpCi0gICAgICAgICdudW1fcmVncmVzc2lvbnMnOiAjIG9mIG5vbi1mbGFreSBm
YWlsdXJlcwotICAgICAgICAnbnVtX2ZsYWt5JzogIyBvZiBmbGFreSBmYWlsdXJlcwotICAgICAg
ICAnbnVtX3Bhc3Nlcyc6ICMgb2YgdW5leHBlY3RlZCBwYXNzZXMKLSAgICAgICAgJ3Rlc3RzJzog
YSBkaWN0IG9mIHRlc3RzIC0+IHsnZXhwZWN0ZWQnOiAnLi4uJywgJ2FjdHVhbCc6ICcuLi4nLCAn
dGltZV9tcyc6IC4uLn0KLSAgICAiIiIKLSAgICByZXN1bHRzID0ge30KLSAgICByZXN1bHRzWyd2
ZXJzaW9uJ10gPSAxCi0KLSAgICB0ZXN0X3RpbWluZ3NfbWFwID0gZGljdCgodGVzdF9yZXN1bHQu
ZmlsZW5hbWUsIHRlc3RfcmVzdWx0LnRlc3RfcnVuX3RpbWUpIGZvciB0ZXN0X3Jlc3VsdCBpbiB0
ZXN0X3RpbWluZ3MpCi0KLSAgICB0YmUgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3Rh
dGlvbgotICAgIHRidCA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lCi0gICAgcmVz
dWx0c1snZml4YWJsZSddID0gbGVuKHRidFt0ZXN0X2V4cGVjdGF0aW9ucy5OT1ddIC0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJlW3Rlc3RfZXhwZWN0YXRpb25zLlBBU1NdKQot
ICAgIHJlc3VsdHNbJ3NraXBwZWQnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiZVt0ZXN0X2V4cGVjdGF0aW9ucy5T
S0lQXSkKLQotICAgIG51bV9wYXNzZXMgPSAwCi0gICAgbnVtX2ZsYWt5ID0gMAotICAgIG51bV9y
ZWdyZXNzaW9ucyA9IDAKLSAgICBrZXl3b3JkcyA9IHt9Ci0gICAgZm9yIGV4cGVjYXRpb25fc3Ry
aW5nLCBleHBlY3RhdGlvbl9lbnVtIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9O
Uy5pdGVyaXRlbXMoKToKLSAgICAgICAga2V5d29yZHNbZXhwZWN0YXRpb25fZW51bV0gPSBleHBl
Y2F0aW9uX3N0cmluZy51cHBlcigpCi0KLSAgICBmb3IgbW9kaWZpZXJfc3RyaW5nLCBtb2RpZmll
cl9lbnVtIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVSUy5pdGVyaXRlbXMoKToKLSAg
ICAgICAga2V5d29yZHNbbW9kaWZpZXJfZW51bV0gPSBtb2RpZmllcl9zdHJpbmcudXBwZXIoKQot
Ci0gICAgdGVzdHMgPSB7fQotICAgIG9yaWdpbmFsX3Jlc3VsdHMgPSByZXN1bHRfc3VtbWFyeS51
bmV4cGVjdGVkX3Jlc3VsdHMgaWYgb25seV91bmV4cGVjdGVkIGVsc2UgcmVzdWx0X3N1bW1hcnku
cmVzdWx0cwotCi0gICAgZm9yIGZpbGVuYW1lLCByZXN1bHQgaW4gb3JpZ2luYWxfcmVzdWx0cy5p
dGVyaXRlbXMoKToKLSAgICAgICAgIyBOb3RlIHRoYXQgaWYgYSB0ZXN0IGNyYXNoZWQgaW4gdGhl
IG9yaWdpbmFsIHJ1biwgd2UgaWdub3JlCi0gICAgICAgICMgd2hldGhlciBvciBub3QgaXQgY3Jh
c2hlZCB3aGVuIHdlIHJldHJpZWQgaXQgKGlmIHdlIHJldHJpZWQgaXQpLAotICAgICAgICAjIGFu
ZCBhbHdheXMgY29uc2lkZXIgdGhlIHJlc3VsdCBub3QgZmxha3kuCi0gICAgICAgIHRlc3QgPSBw
b3J0X29iai5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKQotICAgICAgICBleHBlY3Rl
ZCA9IGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZyhmaWxlbmFtZSkKLSAgICAg
ICAgcmVzdWx0X3R5cGUgPSByZXN1bHQudHlwZQotICAgICAgICBhY3R1YWwgPSBba2V5d29yZHNb
cmVzdWx0X3R5cGVdXQotCi0gICAgICAgIGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRp
b25zLlBBU1M6Ci0gICAgICAgICAgICBudW1fcGFzc2VzICs9IDEKLSAgICAgICAgZWxpZiByZXN1
bHRfdHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSDoKLSAgICAgICAgICAgIG51bV9yZWdy
ZXNzaW9ucyArPSAxCi0gICAgICAgIGVsaWYgZmlsZW5hbWUgaW4gcmVzdWx0X3N1bW1hcnkudW5l
eHBlY3RlZF9yZXN1bHRzOgotICAgICAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIHJldHJ5X3N1
bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzOgotICAgICAgICAgICAgICAgIGFjdHVhbC5leHRlbmQo
ZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKGZpbGVuYW1lKS5zcGxpdCgiICIp
KQotICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdF90eXBlID0gcmV0cnlfc3VtbWFyeS51bmV4cGVjdGVk
X3Jlc3VsdHNbZmlsZW5hbWVdLnR5cGUKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRfdHlwZSAh
PSByZXRyeV9yZXN1bHRfdHlwZToKLSAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmFwcGVuZChr
ZXl3b3Jkc1tyZXRyeV9yZXN1bHRfdHlwZV0pCi0gICAgICAgICAgICAgICAgICAgIG51bV9mbGFr
eSArPSAxCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbnVtX3Jl
Z3Jlc3Npb25zICs9IDEKLQotICAgICAgICB0ZXN0c1t0ZXN0XSA9IHt9Ci0gICAgICAgIHRlc3Rz
W3Rlc3RdWydleHBlY3RlZCddID0gZXhwZWN0ZWQKLSAgICAgICAgdGVzdHNbdGVzdF1bJ2FjdHVh
bCddID0gIiAiLmpvaW4oYWN0dWFsKQotICAgICAgICAjIEZJWE1FOiBTZXQgdGhpcyBjb3JyZWN0
bHkgb25jZSBodHRwczovL3dlYmtpdC5vcmcvYi8zNzczOSBpcyBmaXhlZAotICAgICAgICAjIGFu
ZCBvbmx5IHNldCBpdCBpZiB0aGVyZSBhY3R1YWxseSBpcyBzdGRlcnIgZGF0YS4KLSAgICAgICAg
dGVzdHNbdGVzdF1bJ2hhc19zdGRlcnInXSA9IEZhbHNlCi0KLSAgICAgICAgZmFpbHVyZV90eXBl
cyA9IFt0eXBlKGYpIGZvciBmIGluIHJlc3VsdC5mYWlsdXJlc10KLSAgICAgICAgaWYgdGVzdF9m
YWlsdXJlcy5GYWlsdXJlTWlzc2luZ0F1ZGlvIGluIGZhaWx1cmVfdHlwZXM6Ci0gICAgICAgICAg
ICB0ZXN0c1t0ZXN0XVsnaXNfbWlzc2luZ19hdWRpbyddID0gVHJ1ZQotCi0gICAgICAgIGlmIHRl
c3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVzOgotICAg
ICAgICAgICAgdGVzdHNbdGVzdF1bJ2lzX3JlZnRlc3QnXSA9IFRydWUKLQotICAgICAgICBmb3Ig
ZiBpbiByZXN1bHQuZmFpbHVyZXM6Ci0gICAgICAgICAgICBpZiAnaXNfcmVmdGVzdCcgaW4gcmVz
dWx0LmZhaWx1cmVzOgotICAgICAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydpc19yZWZ0ZXN0J10g
PSBUcnVlCi0KLSAgICAgICAgaWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNo
RGlkTm90T2NjdXIgaW4gZmFpbHVyZV90eXBlczoKLSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWydp
c19taXNtYXRjaF9yZWZ0ZXN0J10gPSBUcnVlCi0KLSAgICAgICAgaWYgdGVzdF9mYWlsdXJlcy5G
YWlsdXJlTWlzc2luZ1Jlc3VsdCBpbiBmYWlsdXJlX3R5cGVzOgotICAgICAgICAgICAgdGVzdHNb
dGVzdF1bJ2lzX21pc3NpbmdfdGV4dCddID0gVHJ1ZQotCi0gICAgICAgIGlmIHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZU1pc3NpbmdJbWFnZSBpbiBmYWlsdXJlX3R5cGVzIG9yIHRlc3RfZmFpbHVyZXMu
RmFpbHVyZU1pc3NpbmdJbWFnZUhhc2ggaW4gZmFpbHVyZV90eXBlczoKLSAgICAgICAgICAgIHRl
c3RzW3Rlc3RdWydpc19taXNzaW5nX2ltYWdlJ10gPSBUcnVlCi0KLSAgICAgICAgaWYgZmlsZW5h
bWUgaW4gdGVzdF90aW1pbmdzX21hcDoKLSAgICAgICAgICAgIHRpbWVfc2Vjb25kcyA9IHRlc3Rf
dGltaW5nc19tYXBbZmlsZW5hbWVdCi0gICAgICAgICAgICB0ZXN0c1t0ZXN0XVsndGltZV9tcydd
ID0gaW50KDEwMDAgKiB0aW1lX3NlY29uZHMpCi0KLSAgICByZXN1bHRzWyd0ZXN0cyddID0gdGVz
dHMKLSAgICByZXN1bHRzWydudW1fcGFzc2VzJ10gPSBudW1fcGFzc2VzCi0gICAgcmVzdWx0c1sn
bnVtX2ZsYWt5J10gPSBudW1fZmxha3kKLSAgICByZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXSA9
IG51bV9yZWdyZXNzaW9ucwotICAgICMgRklYTUU6IElmIG5vbi1jaHJvbWl1bSBwb3J0cyBzdGFy
dCB1c2luZyBhbiBleHBlY3RhdGlvbnMgZmlsZSwKLSAgICAjIHdlIHNob3VsZCBtYWtlIHRoaXMg
Y2hlY2sgbW9yZSByb2J1c3QuCi0gICAgcmVzdWx0c1sndXNlc19leHBlY3RhdGlvbnNfZmlsZSdd
ID0gcG9ydF9vYmoubmFtZSgpLmZpbmQoJ2Nocm9taXVtJykgIT0gLTEKLSAgICByZXN1bHRzWyds
YXlvdXRfdGVzdHNfZGlyJ10gPSBwb3J0X29iai5sYXlvdXRfdGVzdHNfZGlyKCkKLSAgICByZXN1
bHRzWydoYXNfd2RpZmYnXSA9IHBvcnRfb2JqLndkaWZmX2F2YWlsYWJsZSgpCi0gICAgcmVzdWx0
c1snaGFzX3ByZXR0eV9wYXRjaCddID0gcG9ydF9vYmoucHJldHR5X3BhdGNoX2F2YWlsYWJsZSgp
Ci0KLSAgICByZXR1cm4gcmVzdWx0cwotCi0KLWNsYXNzIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2Vw
dGlvbihFeGNlcHRpb24pOgotICAgICIiIlJhaXNlZCB3aGVuIGEgdGVzdCBydW4gc2hvdWxkIGJl
IHN0b3BwZWQgaW1tZWRpYXRlbHkuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYXNvbik6
Ci0gICAgICAgIHNlbGYucmVhc29uID0gcmVhc29uCi0KLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5yZWFzb24sKQotCi0KLWNs
YXNzIFRlc3RSdW5uZXI6Ci0gICAgIiIiQSBjbGFzcyBmb3IgbWFuYWdpbmcgcnVubmluZyBhIHNl
cmllcyBvZiB0ZXN0cyBvbiBhIHNlcmllcyBvZiBsYXlvdXQKLSAgICB0ZXN0IGZpbGVzLiIiIgot
Ci0KLSAgICAjIFRoZSBwZXItdGVzdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcywgaWYgbm8gLS10
aW1lLW91dC1tcyBvcHRpb24gd2FzCi0gICAgIyBnaXZlbiB0byBydW5fd2Via2l0X3Rlc3RzLiBU
aGlzIHNob3VsZCBjb3JyZXNwb25kIHRvIHRoZSBkZWZhdWx0IHRpbWVvdXQKLSAgICAjIGluIER1
bXBSZW5kZXJUcmVlLgotICAgIERFRkFVTFRfVEVTVF9USU1FT1VUX01TID0gNiAqIDEwMDAKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zLCBwcmludGVyKToKLSAgICAgICAg
IiIiSW5pdGlhbGl6ZSB0ZXN0IHJ1bm5lciBkYXRhIHN0cnVjdHVyZXMuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICBwb3J0OiBhbiBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQtc3BlY2lmaWMK
LSAgICAgICAgICBvcHRpb25zOiBhIGRpY3Rpb25hcnkgb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMK
LSAgICAgICAgICBwcmludGVyOiBhIFByaW50ZXIgb2JqZWN0IHRvIHJlY29yZCB1cGRhdGVzIHRv
LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5f
ZnMgPSBwb3J0Ll9maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0g
ICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGVyCi0gICAgICAgIHNlbGYuX21lc3NhZ2VfYnJv
a2VyID0gTm9uZQotCi0gICAgICAgIHNlbGYuSFRUUF9TVUJESVIgPSBzZWxmLl9mcy5qb2luKCcn
LCAnaHR0cCcsICcnKQotICAgICAgICBzZWxmLldFQlNPQ0tFVF9TVUJESVIgPSBzZWxmLl9mcy5q
b2luKCcnLCAnd2Vic29ja2V0JywgJycpCi0gICAgICAgIHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVD
VE9SWSA9ICJMYXlvdXRUZXN0cyIgKyBzZWxmLl9mcy5zZXAKLQotCi0gICAgICAgICMgZGlzYWJs
ZSB3c3Mgc2VydmVyLiBuZWVkIHRvIGluc3RhbGwgcHlPcGVuU1NMIG9uIGJ1aWxkYm90cy4KLSAg
ICAgICAgIyBzZWxmLl93ZWJzb2NrZXRfc2VjdXJlX3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIu
UHlXZWJTb2NrZXQoCi0gICAgICAgICMgICAgICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3Rvcnks
IHVzZV90bHM9VHJ1ZSwgcG9ydD05MzIzKQotCi0gICAgICAgICMgYSBzZXQgb2YgdGVzdCBmaWxl
cywgYW5kIHRoZSBzYW1lIHRlc3RzIGFzIGEgbGlzdAotICAgICAgICBzZWxmLl90ZXN0X2ZpbGVz
ID0gc2V0KCkKLSAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gTm9uZQotICAgICAgICBz
ZWxmLl9yZXN1bHRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuX3JldHJ5aW5n
ID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9wb3J0LnJl
c3VsdHNfZGlyZWN0b3J5KCkKLQotICAgICAgICBzZWxmLl9hbGxfcmVzdWx0cyA9IFtdCi0gICAg
ICAgIHNlbGYuX2dyb3VwX3N0YXRzID0ge30KLSAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRf
c3VtbWFyeSA9IE5vbmUKLQotICAgICAgICAjIFRoaXMgbWFwcyB3b3JrZXIgbmFtZXMgdG8gdGhl
IHN0YXRlIHdlIGFyZSB0cmFja2luZyBmb3IgZWFjaCBvZiB0aGVtLgotICAgICAgICBzZWxmLl93
b3JrZXJfc3RhdGVzID0ge30KLQotCi0gICAgZGVmIGNvbGxlY3RfdGVzdHMoc2VsZiwgYXJncywg
bGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpOgotICAgICAgICAiIiJGaW5kIGFsbCB0aGUgZmlsZXMg
dG8gdGVzdC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGFyZ3M6IGxpc3Qgb2YgdGVzdCBh
cmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lCi0gICAgICAgICAgbGFzdF91bmV4cGVjdGVk
X3Jlc3VsdHM6IGxpc3Qgb2YgdW5leHBlY3RlZCByZXN1bHRzIHRvIHJldGVzdCwgaWYgYW55Ci0K
LSAgICAgICAgIiIiCi0gICAgICAgIHBhdGhzID0gc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4
ZXMoYXJncykKLSAgICAgICAgcGF0aHMgKz0gbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMKLSAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBwYXRocyArPSBzZWxm
Ll9zdHJpcF90ZXN0X2Rpcl9wcmVmaXhlcyhyZWFkX3Rlc3RfZmlsZXMoc2VsZi5fZnMsIHNlbGYu
X29wdGlvbnMudGVzdF9saXN0KSkKLSAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNlbGYuX3Bv
cnQudGVzdHMocGF0aHMpCi0KLSAgICBkZWYgX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKHNlbGYs
IHBhdGhzKToKLSAgICAgICAgcmV0dXJuIFtzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgocGF0
aCkgZm9yIHBhdGggaW4gcGF0aHMgaWYgcGF0aF0KLQotICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJf
cHJlZml4KHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoc2VsZi5MQVlP
VVRfVEVTVFNfRElSRUNUT1JZKToKLSAgICAgICAgICAgIHJldHVybiBwYXRoW2xlbihzZWxmLkxB
WU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KLSAgICAgICAgcmV0dXJuIHBhdGgKLQotICAgIGRlZiBs
aW50KHNlbGYpOgotICAgICAgICBsaW50X2ZhaWxlZCA9IEZhbHNlCi0gICAgICAgIGZvciB0ZXN0
X2NvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYubGludF9leHBlY3RhdGlvbnMo
dGVzdF9jb25maWd1cmF0aW9uKQotICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25z
LlBhcnNlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCi0gICAgICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikKLQotICAgICAgICBpZiBsaW50X2ZhaWxl
ZDoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZmFpbGVkLiIpCi0gICAgICAgICAgICBy
ZXR1cm4gLTEKLQotICAgICAgICBfbG9nLmluZm8oIkxpbnQgc3VjY2VlZGVkLiIpCi0gICAgICAg
IHJldHVybiAwCi0KLSAgICBkZWYgbGludF9leHBlY3RhdGlvbnMoc2VsZiwgY29uZmlnKToKLSAg
ICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKLSAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4
cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHBvcnQsCi0gICAgICAgICAgICBOb25lLAotICAgICAg
ICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAotICAgICAgICAgICAgY29uZmlnLAotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCi0gICAgICAgICAgICBwb3J0
LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpKQotCi0gICAgZGVmIHBhcnNlX2V4cGVjdGF0
aW9ucyhzZWxmKToKLSAgICAgICAgIiIiUGFyc2UgdGhlIGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0
ZXN0X2xpc3QgZmlsZXMgYW5kIHJldHVybiBhIGRhdGEKLSAgICAgICAgc3RydWN0dXJlIGhvbGRp
bmcgdGhlbS4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0ZXN0X2xpc3QgZmlsZXMgaGF2ZQotICAg
ICAgICBpbnZhbGlkIHN5bnRheC4iIiIKLSAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKLSAgICAg
ICAgc2VsZi5fZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9u
cygKLSAgICAgICAgICAgIHBvcnQsCi0gICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzLAotICAg
ICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAotICAgICAgICAgICAgcG9ydC50ZXN0
X2NvbmZpZ3VyYXRpb24oKSwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2Zp
bGVzLAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKLQot
ICAgICMgRklYTUU6IFRoaXMgbWV0aG9kIGlzIHdheSB0b28gbG9uZyBhbmQgbmVlZHMgdG8gYmUg
YnJva2VuIGludG8gcGllY2VzLgotICAgIGRlZiBwcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRw
dXQoc2VsZik6Ci0gICAgICAgICIiIkNyZWF0ZSBhcHByb3ByaWF0ZSBzdWJzZXRzIG9mIHRlc3Qg
bGlzdHMgYW5kIHJldHVybnMgYQotICAgICAgICBSZXN1bHRTdW1tYXJ5IG9iamVjdC4gQWxzbyBw
cmludHMgZXhwZWN0ZWQgdGVzdCBjb3VudHMuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgUmVt
b3ZlIHNraXBwZWQgLSBib3RoIGZpeGFibGUgYW5kIGlnbm9yZWQgLSBmaWxlcyBmcm9tIHRoZQot
ICAgICAgICAjIHRvcC1sZXZlbCBsaXN0IG9mIGZpbGVzIHRvIHRlc3QuCi0gICAgICAgIG51bV9h
bGxfdGVzdF9maWxlcyA9IGxlbihzZWxmLl90ZXN0X2ZpbGVzKQotICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X2V4cGVjdGVkKCJGb3VuZDogICVkIHRlc3RzIiAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkpCi0gICAgICAgIGlm
IG5vdCBudW1fYWxsX3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCdObyB0
ZXN0cyB0byBydW4uJykKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2tpcHBl
ZCA9IHNldCgpCi0gICAgICAgIGlmIG51bV9hbGxfdGVzdF9maWxlcyA+IDEgYW5kIG5vdCBzZWxm
Ll9vcHRpb25zLmZvcmNlOgotICAgICAgICAgICAgc2tpcHBlZCA9IHNlbGYuX2V4cGVjdGF0aW9u
cy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfZXhwZWN0YXRpb25zLlNLSVApCi0gICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzIC09
IHNraXBwZWQKLQotICAgICAgICAjIENyZWF0ZSBhIHNvcnRlZCBsaXN0IG9mIHRlc3QgZmlsZXMg
c28gdGhlIHN1YnNldCBjaHVuaywKLSAgICAgICAgIyBpZiB1c2VkLCBjb250YWlucyBhbHBoYWJl
dGljYWxseSBjb25zZWN1dGl2ZSB0ZXN0cy4KLSAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0
ID0gbGlzdChzZWxmLl90ZXN0X2ZpbGVzKQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJhbmRv
bWl6ZV9vcmRlcjoKLSAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNf
bGlzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5z
b3J0KCkKLQotICAgICAgICAjIElmIHRoZSB1c2VyIHNwZWNpZmllcyB0aGV5IGp1c3Qgd2FudCB0
byBydW4gYSBzdWJzZXQgb2YgdGhlIHRlc3RzLAotICAgICAgICAjIGp1c3QgZ3JhYiBhIHN1YnNl
dCBvZiB0aGUgbm9uLXNraXBwZWQgdGVzdHMuCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVu
X2NodW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQ6Ci0gICAgICAgICAgICBjaHVua192YWx1
ZSA9IHNlbGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQKLSAg
ICAgICAgICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QKLSAgICAgICAgICAg
IHRyeToKLSAgICAgICAgICAgICAgICAoY2h1bmtfbnVtLCBjaHVua19sZW4pID0gY2h1bmtfdmFs
dWUuc3BsaXQoIjoiKQotICAgICAgICAgICAgICAgIGNodW5rX251bSA9IGludChjaHVua19udW0p
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA+PSAwKQotICAgICAgICAgICAgICAg
IHRlc3Rfc2l6ZSA9IGludChjaHVua19sZW4pCi0gICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rf
c2l6ZSA+IDApCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5jcml0
aWNhbCgiaW52YWxpZCBjaHVuayAnJXMnIiAlIGNodW5rX3ZhbHVlKQotICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICMgR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMKLSAg
ICAgICAgICAgIG51bV90ZXN0cyA9IGxlbih0ZXN0X2ZpbGVzKQotCi0gICAgICAgICAgICAjIEdl
dCB0aGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KLSAgICAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMucnVuX2NodW5rOgotICAgICAgICAgICAgICAgIGNodW5rX2xlbiA9IHRlc3Rfc2l6ZQot
ICAgICAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlIGNodW5rX251bSBjYW4gYmUgcmVhbGx5IGxh
cmdlLiBXZSBuZWVkCi0gICAgICAgICAgICAgICAgIyB0byBtYWtlIHRoZSBzbGF2ZSBmaXQgaW4g
dGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRlc3RzLgotICAgICAgICAgICAgICAgIHNsaWNlX3N0YXJ0
ID0gKGNodW5rX251bSAqIGNodW5rX2xlbikgJSBudW1fdGVzdHMKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgIyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICAgICAgICAgICAgICBh
c3NlcnQodGVzdF9zaXplIDw9IG51bV90ZXN0cykKLSAgICAgICAgICAgICAgICBhc3NlcnQoY2h1
bmtfbnVtIDw9IHRlc3Rfc2l6ZSkKLQotICAgICAgICAgICAgICAgICMgVG8gY291bnQgdGhlIGNo
dW5rX2xlbiwgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBza2lwCi0gICAgICAgICAgICAgICAgIyBz
b21lIHRlc3RzLCB3ZSByb3VuZCB0byB0aGUgbmV4dCB2YWx1ZSB0aGF0IGZpdHMgZXhhY3RseQot
ICAgICAgICAgICAgICAgICMgYWxsIHRoZSBwYXJ0cy4KLSAgICAgICAgICAgICAgICByb3VuZGVk
X3Rlc3RzID0gbnVtX3Rlc3RzCi0gICAgICAgICAgICAgICAgaWYgcm91bmRlZF90ZXN0cyAlIHRl
c3Rfc2l6ZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gKG51bV90
ZXN0cyArIHRlc3Rfc2l6ZSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG51bV90ZXN0cyAlIHRlc3Rfc2l6ZSkpCi0KLSAgICAgICAgICAgICAgICBjaHVua19sZW4gPSBy
b3VuZGVkX3Rlc3RzIC8gdGVzdF9zaXplCi0gICAgICAgICAgICAgICAgc2xpY2Vfc3RhcnQgPSBj
aHVua19sZW4gKiAoY2h1bmtfbnVtIC0gMSkKLSAgICAgICAgICAgICAgICAjIEl0IGRvZXMgbm90
IG1pbmQgaWYgd2UgZ28gb3ZlciB0ZXN0X3NpemUuCi0KLSAgICAgICAgICAgICMgR2V0IHRoZSBl
bmQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KLSAgICAgICAgICAgIHNsaWNlX2VuZCA9IG1pbihudW1f
dGVzdHMsIHNsaWNlX3N0YXJ0ICsgY2h1bmtfbGVuKQotCi0gICAgICAgICAgICBmaWxlcyA9IHRl
c3RfZmlsZXNbc2xpY2Vfc3RhcnQ6c2xpY2VfZW5kXQotCi0gICAgICAgICAgICB0ZXN0c19ydW5f
bXNnID0gJ1J1bm5pbmc6ICVkIHRlc3RzIChjaHVuayBzbGljZSBbJWQ6JWRdIG9mICVkKScgJSAo
Ci0gICAgICAgICAgICAgICAgKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0KSwgc2xpY2Vfc3RhcnQs
IHNsaWNlX2VuZCwgbnVtX3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9l
eHBlY3RlZCh0ZXN0c19ydW5fbXNnKQotCi0gICAgICAgICAgICAjIElmIHdlIHJlYWNoZWQgdGhl
IGVuZCBhbmQgd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggdGVzdHMsIHdlIHJ1biBzb21lCi0gICAgICAg
ICAgICAjIGZyb20gdGhlIGJlZ2lubmluZy4KLSAgICAgICAgICAgIGlmIHNsaWNlX2VuZCAtIHNs
aWNlX3N0YXJ0IDwgY2h1bmtfbGVuOgotICAgICAgICAgICAgICAgIGV4dHJhID0gY2h1bmtfbGVu
IC0gKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0KQotICAgICAgICAgICAgICAgIGV4dHJhX21zZyA9
ICgnICAgbGFzdCBjaHVuayBpcyBwYXJ0aWFsLCBhcHBlbmRpbmcgWzA6JWRdJyAlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmEpCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF9leHBlY3RlZChleHRyYV9tc2cpCi0gICAgICAgICAgICAgICAgdGVzdHNfcnVuX21z
ZyArPSAiXG4iICsgZXh0cmFfbXNnCi0gICAgICAgICAgICAgICAgZmlsZXMuZXh0ZW5kKHRlc3Rf
ZmlsZXNbMDpleHRyYV0pCi0gICAgICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBzZWxmLl9m
cy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidGVzdHNfcnVuLnR4dCIpCi0gICAgICAg
ICAgICBzZWxmLl9mcy53cml0ZV90ZXh0X2ZpbGUodGVzdHNfcnVuX2ZpbGVuYW1lLCB0ZXN0c19y
dW5fbXNnKQotCi0gICAgICAgICAgICBsZW5fc2tpcF9jaHVuayA9IGludChsZW4oZmlsZXMpICog
bGVuKHNraXBwZWQpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KGxl
bihzZWxmLl90ZXN0X2ZpbGVzKSkpCi0gICAgICAgICAgICBza2lwX2NodW5rX2xpc3QgPSBsaXN0
KHNraXBwZWQpWzA6bGVuX3NraXBfY2h1bmtdCi0gICAgICAgICAgICBza2lwX2NodW5rID0gc2V0
KHNraXBfY2h1bmtfbGlzdCkKLQotICAgICAgICAgICAgIyBVcGRhdGUgZXhwZWN0YXRpb25zIHNv
IHRoYXQgdGhlIHN0YXRzIGFyZSBjYWxjdWxhdGVkIGNvcnJlY3RseS4KLSAgICAgICAgICAgICMg
V2UgbmVlZCB0byBwYXNzIGEgbGlzdCB0aGF0IGluY2x1ZGVzIHRoZSByaWdodCAjIG9mIHNraXBw
ZWQgZmlsZXMKLSAgICAgICAgICAgICMgdG8gUGFyc2VFeHBlY3RhdGlvbnMgc28gdGhhdCBSZXN1
bHRTdW1tYXJ5KCkgd2lsbCBnZXQgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICMgc3RhdHMuIFNv
LCB3ZSBhZGQgaW4gdGhlIHN1YnNldCBvZiBza2lwcGVkIGZpbGVzLCBhbmQgdGhlbgotICAgICAg
ICAgICAgIyBzdWJ0cmFjdCB0aGVtIGJhY2sgb3V0LgotICAgICAgICAgICAgc2VsZi5fdGVzdF9m
aWxlc19saXN0ID0gZmlsZXMgKyBza2lwX2NodW5rX2xpc3QKLSAgICAgICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXMgPSBzZXQoc2VsZi5fdGVzdF9maWxlc19saXN0KQotCi0gICAgICAgICAgICBzZWxm
LnBhcnNlX2V4cGVjdGF0aW9ucygpCi0KLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBz
ZXQoZmlsZXMpCi0gICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcwotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2tpcF9jaHVuayA9IHNraXBwZWQKLQotICAgICAgICBy
ZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLAotICAgICAg
ICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmspCi0gICAgICAgIHNlbGYuX3ByaW50
X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgIHRl
c3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMiKQotICAgICAgICBzZWxmLl9wcmludF9leHBl
Y3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQotICAgICAgICBzZWxmLl9wcmludF9leHBlY3Rl
ZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVj
dGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVz
dWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlv
bnMuU0tJUCwgInNraXBwZWQiKQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZm9yY2U6Ci0g
ICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKCdSdW5uaW5nIGFsbCB0ZXN0
cywgaW5jbHVkaW5nICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NraXBzICgtLWZvcmNlKScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdGUgdGhh
dCB3ZSBkb24ndCBhY3R1YWxseSBydW4gdGhlIHNraXBwZWQgdGVzdHMgKHRoZXkgd2VyZQotICAg
ICAgICAgICAgIyBzdWJ0cmFjdGVkIG91dCBvZiBzZWxmLl90ZXN0X2ZpbGVzLCBhYm92ZSksIGJ1
dCB3ZSBzdHViIG91dCB0aGUKLSAgICAgICAgICAgICMgcmVzdWx0cyBoZXJlIHNvIHRoZSBzdGF0
aXN0aWNzIGNhbiByZW1haW4gYWNjdXJhdGUuCi0gICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lw
X2NodW5rOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0
KHRlc3QpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5T
S0lQCi0gICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQ9
VHJ1ZSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnJykKLQotICAgICAg
ICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBkaWRuJ3QgZmlsdGVyIG91dCBhbGwgb2YgdGhlIHRl
c3RzLgotICAgICAgICBpZiBub3QgbGVuKHNlbGYuX3Rlc3RfZmlsZXMpOgotICAgICAgICAgICAg
X2xvZy5pbmZvKCJBbGwgdGVzdHMgYXJlIGJlaW5nIHNraXBwZWQiKQotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0X3N1bW1hcnkKLQotICAgIGRlZiBfZ2V0
X2Rpcl9mb3JfdGVzdF9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgICIiIlJldHVybnMg
dGhlIGhpZ2hlc3QtbGV2ZWwgZGlyZWN0b3J5IGJ5IHdoaWNoIHRvIHNoYXJkIHRoZSBnaXZlbgot
ICAgICAgICB0ZXN0IGZpbGUuIiIiCi0gICAgICAgIGluZGV4ID0gdGVzdF9maWxlLnJmaW5kKHNl
bGYuX2ZzLnNlcCArIHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSkKLQotICAgICAgICB0ZXN0
X2ZpbGUgPSB0ZXN0X2ZpbGVbaW5kZXggKyBsZW4oc2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZ
KTpdCi0gICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3RfZmlsZS5zcGxpdChzZWxmLl9mcy5z
ZXAsIDEpCi0gICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmlsZV9wYXJ0c1swXQotICAgICAgICB0
ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVfcGFydHNbMV0KLQotICAgICAgICAjIFRoZSBodHRwIHRlc3Rz
IGFyZSB2ZXJ5IHN0YWJsZSBvbiBtYWMvbGludXguCi0gICAgICAgICMgVE9ETyhvamFuKTogTWFr
ZSB0aGUgaHR0cCBzZXJ2ZXIgb24gV2luZG93cyBiZSBhcGFjaGUgc28gd2UgY2FuCi0gICAgICAg
ICMgdHVybiBzaGFyZCB0aGUgaHR0cCB0ZXN0cyB0aGVyZSBhcyB3ZWxsLiBTd2l0Y2hpbmcgdG8g
YXBhY2hlIGlzCi0gICAgICAgICMgd2hhdCBtYWRlIHRoZW0gc3RhYmxlIG9uIGxpbnV4L21hYy4K
LSAgICAgICAgcmV0dXJuX3ZhbHVlID0gZGlyZWN0b3J5Ci0gICAgICAgIHdoaWxlICgoZGlyZWN0
b3J5ICE9ICdodHRwJyBvciBzeXMucGxhdGZvcm0gaW4gKCdkYXJ3aW4nLCAnbGludXgyJykpCi0g
ICAgICAgICAgICAgICAgYW5kIHRlc3RfZmlsZS5maW5kKHNlbGYuX2ZzLnNlcCkgPj0gMCk6Ci0g
ICAgICAgICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0X2ZpbGUuc3BsaXQoc2VsZi5fZnMuc2Vw
LCAxKQotICAgICAgICAgICAgZGlyZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRzWzBdCi0gICAgICAg
ICAgICByZXR1cm5fdmFsdWUgPSBzZWxmLl9mcy5qb2luKHJldHVybl92YWx1ZSwgZGlyZWN0b3J5
KQotICAgICAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlX3BhcnRzWzFdCi0KLSAgICAgICAg
cmV0dXJuIHJldHVybl92YWx1ZQotCi0gICAgZGVmIF9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZShz
ZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBUZXN0
SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4gTW9zdGx5IHRoaXMKLSAgICAgICAgaXMgdXNlZCBm
b3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2YWx1ZSAoaW4gbXMpIHRvIHVzZSBmb3IgdGhlIGdp
dmVuCi0gICAgICAgIHRlc3QuIiIiCi0gICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0
X2ZpbGUpOgotICAgICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29w
dGlvbnMuc2xvd190aW1lX291dF9tcykKLSAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2Zp
bGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMpCi0KLSAgICBkZWYgX3Rlc3RfcmVxdWlyZXNf
bG9jayhzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgdGVz
dCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgotICAgICAgICBydW5uaW5nIG11bHRpcGxlIGNvcGll
cyBvZiBOUldUcy4iIiIKLSAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3RfZmlsZS5zcGxpdChzZWxm
Ll9wb3J0Ll9maWxlc3lzdGVtLnNlcCkKLSAgICAgICAgcmV0dXJuICdodHRwJyBpbiBzcGxpdF9w
YXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGgKLQotICAgIGRlZiBfdGVzdF9pc19zbG93
KHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMuaGFz
X21vZGlmaWVyKHRlc3RfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKLQotICAgIGRlZiBfc2hhcmRfdGVz
dHMoc2VsZiwgdGVzdF9maWxlcywgdXNlX3JlYWxfc2hhcmRzKToKLSAgICAgICAgIiIiR3JvdXBz
IHRlc3RzIGludG8gYmF0Y2hlcy4KLSAgICAgICAgVGhpcyBoZWxwcyBlbnN1cmUgdGhhdCB0ZXN0
cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3RzISkKLSAgICAgICAgY29u
dGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5jaWVzIHRl
bmQgdG8KLSAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gSWYgdXNlX3Jl
YWxfc2hhcmRzIGlzIEZhbHNlLCB3ZQotICAgICAgICBwdXQgZWFjaCAobm9uLUhUVFAvd2Vic29j
a2V0KSB0ZXN0IGludG8gaXRzIG93biBzaGFyZCBmb3IgbWF4aW11bQotICAgICAgICBjb25jdXJy
ZW5jeSBpbnN0ZWFkIG9mIHRyeWluZyB0byBkbyBhbnkgc29ydCBvZiByZWFsIHNoYXJkaW5nLgot
Ci0gICAgICAgIFJldHVybjoKLSAgICAgICAgICAgIEEgbGlzdCBvZiBsaXN0cyBvZiBUZXN0SW5w
dXQgb2JqZWN0cy4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRklYTUU6IHdoZW4gd2UgYWRkZWQg
aHR0cCBsb2NraW5nLCB3ZSBjaGFuZ2VkIGhvdyB0aGlzIHdvcmtzIHN1Y2gKLSAgICAgICAgIyB0
aGF0IHdlIGFsd2F5cyBsdW1wIGFsbCBvZiB0aGUgSFRUUCB0aHJlYWRzIGludG8gYSBzaW5nbGUg
c2hhcmQuCi0gICAgICAgICMgVGhhdCB3aWxsIHNsb3cgZG93biBleHBlcmltZW50YWwtZnVsbHkt
cGFyYWxsZWwsIGJ1dCBpdCdzIHVuY2xlYXIKLSAgICAgICAgIyB3aGF0IHRoZSBiZXN0IGFsdGVy
bmF0aXZlIGlzIGNvbXBsZXRlbHkgcmV2YW1waW5nIGhvdyB3ZSB0cmFjawotICAgICAgICAjIHdo
ZW4gdG8gZ3JhYiB0aGUgbG9jay4KLQotICAgICAgICB0ZXN0X2xpc3RzID0gW10KLSAgICAgICAg
dGVzdHNfdG9faHR0cF9sb2NrID0gW10KLSAgICAgICAgaWYgbm90IHVzZV9yZWFsX3NoYXJkczoK
LSAgICAgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gdGVzdF9maWxlczoKLSAgICAgICAgICAgICAg
ICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQot
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgot
ICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19odHRwX2xvY2suYXBwZW5kKHRlc3RfaW5wdXQp
Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0cy5h
cHBlbmQoKCIuIiwgW3Rlc3RfaW5wdXRdKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRl
c3RzX2J5X2RpciA9IHt9Ci0gICAgICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6
Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5ID0gc2VsZi5fZ2V0X2Rpcl9mb3JfdGVzdF9maWxl
KHRlc3RfZmlsZSkKLSAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3Rf
aW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3Rf
cmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19o
dHRwX2xvY2suYXBwZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyLnNldGRlZmF1bHQoZGlyZWN0b3J5LCBbXSkKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0uYXBwZW5kKHRlc3RfaW5w
dXQpCi0gICAgICAgICAgICAjIFNvcnQgYnkgdGhlIG51bWJlciBvZiB0ZXN0cyBpbiB0aGUgZGly
IHNvIHRoYXQgdGhlIG9uZXMgd2l0aCB0aGUKLSAgICAgICAgICAgICMgbW9zdCB0ZXN0cyBnZXQg
cnVuIGZpcnN0IGluIG9yZGVyIHRvIG1heGltaXplIHBhcmFsbGVsaXphdGlvbi4KLSAgICAgICAg
ICAgICMgTnVtYmVyIG9mIHRlc3RzIGlzIGEgZ29vZCBlbm91Z2gsIGJ1dCBub3QgcGVyZmVjdCwg
YXBwcm94aW1hdGlvbgotICAgICAgICAgICAgIyBvZiBob3cgbG9uZyB0aGF0IHNldCBvZiB0ZXN0
cyB3aWxsIHRha2UgdG8gcnVuLiBXZSBjYW4ndCBqdXN0IHVzZQotICAgICAgICAgICAgIyBhIFBy
aW9yaXR5UXVldWUgdW50aWwgd2UgbW92ZSB0byBQeXRob24gMi42LgotICAgICAgICAgICAgZm9y
IGRpcmVjdG9yeSBpbiB0ZXN0c19ieV9kaXI6Ci0gICAgICAgICAgICAgICAgdGVzdF9saXN0ID0g
dGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0KLSAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfdHVwbGUg
PSAoZGlyZWN0b3J5LCB0ZXN0X2xpc3QpCi0gICAgICAgICAgICAgICAgdGVzdF9saXN0cy5hcHBl
bmQodGVzdF9saXN0X3R1cGxlKQotICAgICAgICAgICAgdGVzdF9saXN0cy5zb3J0KGxhbWJkYSBh
LCBiOiBjbXAobGVuKGJbMV0pLCBsZW4oYVsxXSkpKQotCi0gICAgICAgICMgUHV0IHRoZSBodHRw
IHRlc3RzIGZpcnN0LiBUaGVyZSBhcmUgb25seSBhIGNvdXBsZSBodW5kcmVkIG9mIHRoZW0sCi0g
ICAgICAgICMgYnV0IGVhY2ggaHR0cCB0ZXN0IHRha2VzIGEgdmVyeSBsb25nIHRpbWUgdG8gcnVu
LCBzbyBzb3J0aW5nIGJ5IHRoZQotICAgICAgICAjIG51bWJlciBvZiB0ZXN0cyBkb2Vzbid0IGFj
Y3VyYXRlbHkgY2FwdHVyZSBob3cgbG9uZyB0aGV5IHRha2UgdG8gcnVuLgotICAgICAgICBpZiB0
ZXN0c190b19odHRwX2xvY2s6Ci0gICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAoInRl
c3RzX3RvX2h0dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBfbG9jaykpCi0KLSAgICAgICAgcmV0dXJu
IHRlc3RfbGlzdHMKLQotICAgIGRlZiBfY29udGFpbnNfdGVzdHMoc2VsZiwgc3ViZGlyKToKLSAg
ICAgICAgZm9yIHRlc3RfZmlsZSBpbiBzZWxmLl90ZXN0X2ZpbGVzOgotICAgICAgICAgICAgaWYg
dGVzdF9maWxlLmZpbmQoc3ViZGlyKSA+PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVl
Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9udW1fd29ya2VycyhzZWxmLCBudW1f
c2hhcmRzKToKLSAgICAgICAgbnVtX3dvcmtlcnMgPSBtaW4oaW50KHNlbGYuX29wdGlvbnMuY2hp
bGRfcHJvY2Vzc2VzKSwgbnVtX3NoYXJkcykKLSAgICAgICAgZHJpdmVyX25hbWUgPSBzZWxmLl9w
b3J0LmRyaXZlcl9uYW1lKCkKLSAgICAgICAgaWYgbnVtX3dvcmtlcnMgPT0gMToKLSAgICAgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfY29uZmlnKCJSdW5uaW5nIDEgJXMgb3ZlciAlcyIgJQot
ICAgICAgICAgICAgICAgIChkcml2ZXJfbmFtZSwgZ3JhbW1hci5wbHVyYWxpemUoJ3NoYXJkJywg
bnVtX3NoYXJkcykpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF9jb25maWcoIlJ1bm5pbmcgJWQgJXNzIGluIHBhcmFsbGVsIG92ZXIgJWQgc2hhcmRzIiAl
Ci0gICAgICAgICAgICAgICAgKG51bV93b3JrZXJzLCBkcml2ZXJfbmFtZSwgbnVtX3NoYXJkcykp
Ci0gICAgICAgIHJldHVybiBudW1fd29ya2VycwotCi0gICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwg
ZmlsZV9saXN0LCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlJ1bnMgdGhlIHRlc3RzIGlu
IHRoZSBmaWxlX2xpc3QuCi0KLSAgICAgICAgUmV0dXJuOiBBIHR1cGxlIChpbnRlcnJ1cHRlZCwg
a2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAgdGVzdF90
aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKLSAgICAgICAgICAgIGludGVycnVwdGVk
IGlzIHdoZXRoZXIgdGhlIHJ1biB3YXMgaW50ZXJydXB0ZWQKLSAgICAgICAgICAgIGtleWJvYXJk
X2ludGVycnVwdGVkIGlzIHdoZXRoZXIgdGhlIGludGVycnVwdGlvbiB3YXMgYmVjYXVzZSBzb21l
b25lCi0gICAgICAgICAgICAgIHR5cGVkIEN0cmxeQwotICAgICAgICAgICAgdGhyZWFkX3RpbWlu
Z3MgaXMgYSBsaXN0IG9mIGRpY3RzIHdpdGggdGhlIHRvdGFsIHJ1bnRpbWUKLSAgICAgICAgICAg
ICAgb2YgZWFjaCB0aHJlYWQgd2l0aCAnbmFtZScsICdudW1fdGVzdHMnLCAndG90YWxfdGltZScg
cHJvcGVydGllcwotICAgICAgICAgICAgdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiB0aW1pbmdz
IGZvciBlYWNoIHNoYXJkZWQgc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAgIG9mIHRoZSBmb3Jt
IFt0aW1lLCBkaXJlY3RvcnlfbmFtZSwgbnVtX3Rlc3RzXQotICAgICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3MgaXMgYSBsaXN0IG9mIHJ1biB0aW1lcyBmb3IgZWFjaCB0ZXN0Ci0gICAg
ICAgICAgICAgIGluIHRoZSBmb3JtIHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0
ZXN0X3J1bl90aW1lfQotICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0
IHRvIHBvcHVsYXRlIHdpdGggdGhlIHJlc3VsdHMKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYu
X2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQotICAgICAgICBzZWxmLl9h
bGxfcmVzdWx0cyA9IFtdCi0gICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzID0ge30KLSAgICAgICAg
c2VsZi5fd29ya2VyX3N0YXRlcyA9IHt9Ci0KLSAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQg
PSBGYWxzZQotICAgICAgICBpbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIHRocmVhZF90aW1p
bmdzID0gW10KLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcg
dGVzdHMgLi4uJykKLSAgICAgICAgdGVzdF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVf
bGlzdCwKLSAgICAgICAgICAgIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykgPiAx
IGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwpCi0KLSAg
ICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycyhsZW4odGVzdF9saXN0cykpCi0g
ICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5nZXQoc2Vs
Zi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCB3b3JrZXIuV29ya2VyKQotCi0gICAgICAgIGlm
IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50
ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQotCi0gICAgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyAlcyAuLi4nICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hci5wbHVyYWxpemUoJ3dvcmtlcicsIG51bV93b3Jr
ZXJzKSkKLSAgICAgICAgZm9yIHdvcmtlcl9udW1iZXIgaW4geHJhbmdlKG51bV93b3JrZXJzKToK
LSAgICAgICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0gbWFuYWdlcl9jb25uZWN0aW9uLnN0YXJ0
X3dvcmtlcih3b3JrZXJfbnVtYmVyKQotICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtl
clN0YXRlKHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQotICAgICAgICAgICAgc2Vs
Zi5fd29ya2VyX3N0YXRlc1t3b3JrZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtlcl9zdGF0ZQot
Ci0gICAgICAgICAgICAjIEZJWE1FOiBJZiB3ZSBzdGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5
LCBEdW1wUmVuZGVyVHJlZSBhcHBlYXJzCi0gICAgICAgICAgICAjIHRvIHRocmFzaCBvbiBzb21l
dGhpbmcgYW5kIHRpbWUgb3V0IGl0cyBmaXJzdCBmZXcgdGVzdHMuIFVudGlsCi0gICAgICAgICAg
ICAjIHdlIGNhbiBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiwgc2xlZXAgYSBiaXQgaW4gYmV0
d2VlbgotICAgICAgICAgICAgIyB3b3JrZXJzLgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEp
Ci0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIHRlc3Rpbmcg
Li4uIikKLSAgICAgICAgZm9yIHRlc3RfbGlzdCBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAg
bWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgndGVzdF9saXN0JywgdGVzdF9saXN0WzBd
LCB0ZXN0X2xpc3RbMV0pCi0KLSAgICAgICAgIyBXZSBwb3N0IG9uZSAnc3RvcCcgbWVzc2FnZSBm
b3IgZWFjaCB3b3JrZXIuIEJlY2F1c2UgdGhlIHN0b3AgbWVzc2FnZQotICAgICAgICAjIGFyZSBz
ZW50IGFmdGVyIGFsbCBvZiB0aGUgdGVzdHMsIGFuZCBiZWNhdXNlIGVhY2ggd29ya2VyIHdpbGwg
c3RvcAotICAgICAgICAjIHJlYWRpbmcgbWVzc3NhZ2VzIGFmdGVyIHJlY2VpdmluZyBhIHN0b3As
IHdlIGNhbiBiZSBzdXJlIGVhY2gKLSAgICAgICAgIyB3b3JrZXIgd2lsbCBnZXQgYSBzdG9wIG1l
c3NhZ2UgYW5kIGhlbmNlIHRoZXkgd2lsbCBhbGwgc2h1dCBkb3duLgotICAgICAgICBmb3IgaSBp
biB4cmFuZ2UobnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBv
c3RfbWVzc2FnZSgnc3RvcCcpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90
IHNlbGYuaXNfZG9uZSgpOgotICAgICAgICAgICAgICAgICMgV2UgbG9vcCB3aXRoIGEgdGltZW91
dCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGRldGVjdCB3ZWRnZWQgdGhyZWFkcy4KLSAgICAgICAg
ICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEu
MCkKLQotICAgICAgICAgICAgaWYgYW55KHdvcmtlcl9zdGF0ZS53ZWRnZWQgZm9yIHdvcmtlcl9z
dGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpKToKLSAgICAgICAgICAgICAgICBf
bG9nLmVycm9yKCcnKQotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1JlbWFpbmluZyB3b3Jr
ZXJzIGFyZSB3ZWRnZWQsIGJhaWxpbmcgb3V0LicpCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJv
cignJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTm8g
d2VkZ2VkIHRocmVhZHMnKQotCi0gICAgICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgb2YgdGhlIHdv
cmtlcnMgaGF2ZSBzaHV0IGRvd24gKGlmIHBvc3NpYmxlKS4KLSAgICAgICAgICAgIGZvciB3b3Jr
ZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAg
ICBpZiBub3Qgd29ya2VyX3N0YXRlLndlZGdlZCBhbmQgd29ya2VyX3N0YXRlLndvcmtlcl9jb25u
ZWN0aW9uLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZS53b3Jr
ZXJfY29ubmVjdGlvbi5qb2luKDAuNSkKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB3
b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKQotCi0gICAgICAgIGV4Y2Vw
dCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIF9sb2cuaW5mbygiSW50ZXJydXB0ZWQs
IGV4aXRpbmciKQotICAgICAgICAgICAgc2VsZi5jYW5jZWxfd29ya2VycygpCi0gICAgICAgICAg
ICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgZXhjZXB0IFRlc3RSdW5JbnRl
cnJ1cHRlZEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIF9sb2cuaW5mbyhlLnJlYXNvbikKLSAg
ICAgICAgICAgIHNlbGYuY2FuY2VsX3dvcmtlcnMoKQotICAgICAgICAgICAgaW50ZXJydXB0ZWQg
PSBUcnVlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNlcHRp
b247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgotICAgICAgICAgICAgX2xvZy5pbmZv
KCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICAg
ICAgdGhyZWFkX3RpbWluZ3MgPSBbd29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUg
aW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKV0KLQotICAgICAgICAjIEZJWE1FOiBzaG91
bGQgdGhpcyBiZSBhIGNsYXNzIGluc3RlYWQgb2YgYSB0dXBsZT8KLSAgICAgICAgcmV0dXJuIChp
bnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAg
ICAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKLQotICAgIGRl
ZiB1cGRhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYudXBkYXRlX3N1bW1hcnkoc2VsZi5fY3VycmVu
dF9yZXN1bHRfc3VtbWFyeSkKLQotICAgIGRlZiBfY29sbGVjdF90aW1pbmdfaW5mbyhzZWxmLCB0
aHJlYWRzKToKLSAgICAgICAgdGVzdF90aW1pbmdzID0ge30KLSAgICAgICAgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3MgPSBbXQotICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCi0KLSAgICAgICAg
Zm9yIHRocmVhZCBpbiB0aHJlYWRzOgotICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5k
KHsnbmFtZSc6IHRocmVhZC5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdudW1fdGVzdHMnOiB0aHJlYWQuZ2V0X251bV90ZXN0cygpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRfdG90YWxfdGlt
ZSgpfSkKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdldF90ZXN0X2dy
b3VwX3RpbWluZ19zdGF0cygpKQotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mu
ZXh0ZW5kKHRocmVhZC5nZXRfdGVzdF9yZXN1bHRzKCkpCi0KLSAgICAgICAgcmV0dXJuICh0aHJl
YWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKLQotICAg
IGRlZiBuZWVkc19odHRwKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIHRl
c3QgcnVubmVyIG5lZWRzIGFuIEhUVFAgc2VydmVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5f
Y29udGFpbnNfdGVzdHMoc2VsZi5IVFRQX1NVQkRJUikKLQotICAgIGRlZiBuZWVkc193ZWJzb2Nr
ZXQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBydW5uZXIgbmVl
ZHMgYSBXRUJTT0NLRVQgc2VydmVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNf
dGVzdHMoc2VsZi5XRUJTT0NLRVRfU1VCRElSKQotCi0gICAgZGVmIHNldF91cF9ydW4oc2VsZik6
Ci0gICAgICAgICIiIkNvbmZpZ3VyZXMgdGhlIHN5c3RlbSB0byBiZSByZWFkeSB0byBydW4gdGVz
dHMuCi0KLSAgICAgICAgUmV0dXJucyBhIFJlc3VsdFN1bW1hcnkgb2JqZWN0IGlmIHdlIHNob3Vs
ZCBjb250aW51ZSB0byBydW4gdGVzdHMsCi0gICAgICAgIG9yIE5vbmUgaWYgd2Ugc2hvdWxkIGFi
b3J0LgotCi0gICAgICAgICIiIgotICAgICAgICAjIFRoaXMgbXVzdCBiZSBzdGFydGVkIGJlZm9y
ZSB3ZSBjaGVjayB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcywKLSAgICAgICAgIyBzaW5jZSB0aGUg
aGVscGVyIG1heSBkbyB0aGluZ3MgdG8gbWFrZSB0aGUgc2V0dXAgY29ycmVjdC4KLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIGhlbHBlciAuLi4iKQotICAgICAg
ICBzZWxmLl9wb3J0LnN0YXJ0X2hlbHBlcigpCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBz
eXN0ZW0gZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgotICAg
ICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ub2NoZWNrX3N5c19kZXBzOgotICAgICAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIkNoZWNraW5nIHN5c3RlbSBkZXBlbmRlbmNpZXMg
Li4uIikKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYu
bmVlZHNfaHR0cCgpKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
Y2xvYmJlcl9vbGRfcmVzdWx0czoKLSAgICAgICAgICAgIHNlbGYuX2Nsb2JiZXJfb2xkX3Jlc3Vs
dHMoKQotCi0gICAgICAgICMgQ3JlYXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXNu
J3QgYWxyZWFkeSBleGlzdC4KLSAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9y
eShzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSkKLQotICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rl
c3RfcnVuKCkKLQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiUHJlcGFyaW5n
IHRlc3RzIC4uLiIpCi0gICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gc2VsZi5wcmVwYXJlX2xpc3Rz
X2FuZF9wcmludF9vdXRwdXQoKQotICAgICAgICBpZiBub3QgcmVzdWx0X3N1bW1hcnk6Ci0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJldHVybiByZXN1bHRfc3VtbWFyeQotCi0g
ICAgZGVmIHJ1bihzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlJ1biBhbGwgb3Vy
IHRlc3RzIG9uIGFsbCBvdXIgdGVzdCBmaWxlcy4KLQotICAgICAgICBGb3IgZWFjaCB0ZXN0IGZp
bGUsIHdlIHJ1biBlYWNoIHRlc3QgdHlwZS4gSWYgdGhlcmUgYXJlIGFueSBmYWlsdXJlcywKLSAg
ICAgICAgd2UgY29sbGVjdCB0aGVtIGZvciByZXBvcnRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9iamVjdCB0cmFja2luZyB0aGUgdGVz
dCByZXN1bHRzLgotCi0gICAgICAgIFJldHVybjoKLSAgICAgICAgICBUaGUgbnVtYmVyIG9mIHVu
ZXhwZWN0ZWQgcmVzdWx0cyAoMCA9PSBzdWNjZXNzKQotICAgICAgICAiIiIKLSAgICAgICAgIyBn
YXRoZXJfdGVzdF9maWxlcygpIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBmaXJzdCB0byBpbml0aWFs
aXplIHVzLgotICAgICAgICAjIElmIHdlIGRpZG4ndCBmaW5kIGFueSBmaWxlcyB0byB0ZXN0LCB3
ZSd2ZSBlcnJvcmVkIG91dCBhbHJlYWR5IGluCi0gICAgICAgICMgcHJlcGFyZV9saXN0c19hbmRf
cHJpbnRfb3V0cHV0KCkuCi0gICAgICAgIGFzc2VydChsZW4oc2VsZi5fdGVzdF9maWxlcykpCi0K
LSAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgaW50ZXJydXB0ZWQs
IGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBcCi0g
ICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9ICgKLSAgICAgICAgICAgIHNlbGYu
X3J1bl90ZXN0cyhzZWxmLl90ZXN0X2ZpbGVzX2xpc3QsIHJlc3VsdF9zdW1tYXJ5KSkKLQotICAg
ICAgICAjIFdlIGV4Y2x1ZGUgdGhlIGNyYXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1bHRzIHRv
IHJldHJ5LCBiZWNhdXNlCi0gICAgICAgICMgd2Ugd2FudCB0byB0cmVhdCBldmVuIGEgcG90ZW50
aWFsbHkgZmxha3kgY3Jhc2ggYXMgYW4gZXJyb3IuCi0gICAgICAgIGZhaWx1cmVzID0gc2VsZi5f
Z2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9RmFsc2UpCi0gICAg
ICAgIHJldHJ5X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQotICAgICAgICB3aGlsZSAobGVuKGZh
aWx1cmVzKSBhbmQgc2VsZi5fb3B0aW9ucy5yZXRyeV9mYWlsdXJlcyBhbmQKLSAgICAgICAgICAg
IG5vdCBzZWxmLl9yZXRyeWluZyBhbmQgbm90IGludGVycnVwdGVkKToKLSAgICAgICAgICAgIF9s
b2cuaW5mbygnJykKLSAgICAgICAgICAgIF9sb2cuaW5mbygiUmV0cnlpbmcgJWQgdW5leHBlY3Rl
ZCBmYWlsdXJlKHMpIC4uLiIgJSBsZW4oZmFpbHVyZXMpKQotICAgICAgICAgICAgX2xvZy5pbmZv
KCcnKQotICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBUcnVlCi0gICAgICAgICAgICByZXRy
eV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1cmVzLmtl
eXMoKSkKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgaWdub3JlIHRo
ZSByZXR1cm4gdmFsdWUgaGVyZS4KLSAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJl
cy5rZXlzKCksIHJldHJ5X3N1bW1hcnkpCi0gICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dl
dF9mYWlsdXJlcyhyZXRyeV9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLQotICAgICAg
ICBlbmRfdGltZSA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfdGltaW5nX3N0
YXRpc3RpY3MoZW5kX3RpbWUgLSBzdGFydF90aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCi0KLSAgICAg
ICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnkocmVzdWx0X3N1bW1hcnkpCi0KLSAgICAgICAg
c3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotCi0gICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeShyZXN1bHRfc3VtbWFyeS50b3Rh
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9z
dW1tYXJ5LmV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZCkKLQotICAgICAgICB1bmV4cGVjdGVkX3Jl
c3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhzZWxmLl9wb3J0LAotICAgICAgICAgICAgc2VsZi5f
ZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3MsIG9ubHlfdW5leHBlY3RlZD1UcnVlKQotICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCi0KLSAgICAgICAg
IyBGSVhNRTogcmVtb3ZlIHJlY29yZF9yZXN1bHRzLiBJdCdzIGp1c3QgdXNlZCBmb3IgdGVzdGlu
Zy4gVGhlcmUncyBubyBuZWVkCi0gICAgICAgICMgZm9yIGl0IHRvIGJlIGEgY29tbWFuZGxpbmUg
YXJndW1lbnQuCi0gICAgICAgIGlmIChzZWxmLl9vcHRpb25zLnJlY29yZF9yZXN1bHRzIGFuZCBu
b3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuIGFuZAotICAgICAgICAgICAgbm90IGtleWJvYXJkX2lu
dGVycnVwdGVkKToKLSAgICAgICAgICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBsb2cgZmls
ZXMgYW5kIHVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcwotICAgICAgICAgICAgIyB0byBhcHBl
bmdpbmUgc2VydmVyLgotICAgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzID0gc3VtbWFyaXpl
X3Jlc3VsdHMoc2VsZi5fcG9ydCwKLSAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMs
IHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywg
b25seV91bmV4cGVjdGVkPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5fdXBsb2FkX2pzb25fZmls
ZXModW5leHBlY3RlZF9yZXN1bHRzLCBzdW1tYXJpemVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3Rp
bWluZ3MpCi0KLSAgICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0
bWwpIGFuZCBkaXNwbGF5IGl0IGlmIHJlcXVlc3RlZC4KLSAgICAgICAgaWYgbm90IHNlbGYuX29w
dGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHNlbGYuX2NvcHlfcmVzdWx0c19odG1sX2ZpbGUo
KQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5zaG93X3Jlc3VsdHM6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRfc3VtbWFyeSkKLQotICAg
ICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGNvbXBsZXRlZCBhbGwgdGhlIHByb2Nlc3Npbmcgd2UgY2Fu
LCB3ZSByZS1yYWlzZQotICAgICAgICAjIGEgS2V5Ym9hcmRJbnRlcnJ1cHQgaWYgbmVjZXNzYXJ5
IHNvIHRoZSBjYWxsZXIgY2FuIGhhbmRsZSBpdC4KLSAgICAgICAgaWYga2V5Ym9hcmRfaW50ZXJy
dXB0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAotCi0gICAgICAgICMg
SWdub3JlIGZsYWt5IGZhaWx1cmVzIGFuZCB1bmV4cGVjdGVkIHBhc3NlcyBzbyB3ZSBkb24ndCB0
dXJuIHRoZQotICAgICAgICAjIGJvdCByZWQgZm9yIHRob3NlLgotICAgICAgICByZXR1cm4gdW5l
eHBlY3RlZF9yZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXQotCi0gICAgZGVmIGNsZWFuX3VwX3J1
bihzZWxmKToKLSAgICAgICAgIiIiUmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25l
IHJ1bm5pbmcgdGVzdHMuIiIiCi0KLSAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3Rkb3V0
IikKLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIF9sb2cuZGVidWcoImZsdXNo
aW5nIHN0ZGVyciIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICBfbG9nLmRl
YnVnKCJzdG9wcGluZyBoZWxwZXIiKQotICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkK
LQotICAgIGRlZiB1cGRhdGVfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAg
ICIiIlVwZGF0ZSB0aGUgc3VtbWFyeSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0
ZWQgdGVzdHMuIiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQubG9hZHMoc2VsZi5f
cmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0
eToKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N1
bW1hcnlfd2l0aF9yZXN1bHQocmVzdWx0X3N1bW1hcnksIHJlc3VsdCkKLQotICAgIGRlZiBfdXBk
YXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQoc2VsZiwgcmVzdWx0X3N1bW1hcnksIHJlc3VsdCk6Ci0g
ICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5fZXhwZWN0ZWRf
cmVzdWx0KAotICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5f
b3B0aW9ucy5waXhlbF90ZXN0cykKLSAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwg
ZXhwZWN0ZWQpCi0gICAgICAgIGV4cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVj
dGF0aW9uc19zdHJpbmcoCi0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUpCi0gICAgICAgIGdv
dF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50
eXBlKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhw
ZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcHJv
Z3Jlc3MocmVzdWx0X3N1bW1hcnksIHNlbGYuX3JldHJ5aW5nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKLQotICAgICAgICBk
ZWYgaW50ZXJydXB0X2lmX2F0X2ZhaWx1cmVfbGltaXQobGltaXQsIGNvdW50LCBtZXNzYWdlKToK
LSAgICAgICAgICAgIGlmIGxpbWl0IGFuZCBjb3VudCA+PSBsaW1pdDoKLSAgICAgICAgICAgICAg
ICByYWlzZSBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24obWVzc2FnZSAlIGNvdW50KQotCi0g
ICAgICAgIGludGVycnVwdF9pZl9hdF9mYWlsdXJlX2xpbWl0KAotICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5leGl0X2FmdGVyX25fZmFpbHVyZXMsCi0gICAgICAgICAgICByZXN1bHRfc3VtbWFy
eS51bmV4cGVjdGVkX2ZhaWx1cmVzLAotICAgICAgICAgICAgIkFib3J0aW5nIHJ1biBzaW5jZSAl
ZCBmYWlsdXJlcyB3ZXJlIHJlYWNoZWQiKQotICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVy
ZV9saW1pdCgKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2NyYXNoZXNf
b3JfdGltZW91dHMsCi0gICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX2NyYXNo
ZXNfb3JfdGltZW91dHMsCi0gICAgICAgICAgICAiQWJvcnRpbmcgcnVuIHNpbmNlICVkIGNyYXNo
ZXMgb3IgdGltZW91dHMgd2VyZSByZWFjaGVkIikKLQotICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVz
dWx0cyhzZWxmKToKLSAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3Vs
dHMgZGlyZWN0b3JpZXMgc2luY2UgdGhlIG90aGVyCi0gICAgICAgICMgZmlsZXMgaW4gdGhlIHJl
c3VsdHMgZGlyZWN0b3J5IGFyZSBleHBsaWNpdGx5IHVzZWQgZm9yIGNyb3NzLXJ1bgotICAgICAg
ICAjIHRyYWNraW5nLgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2xvYmJl
cmluZyBvbGQgcmVzdWx0cyBpbiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSkKLSAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9
IHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIHBvc3NpYmxlX2RpcnMgPSBz
ZWxmLl9wb3J0LnRlc3RfZGlycygpCi0gICAgICAgIGZvciBkaXJuYW1lIGluIHBvc3NpYmxlX2Rp
cnM6Ci0gICAgICAgICAgICBpZiBzZWxmLl9mcy5pc2RpcihzZWxmLl9mcy5qb2luKGxheW91dF90
ZXN0c19kaXIsIGRpcm5hbWUpKToKLSAgICAgICAgICAgICAgICBzZWxmLl9mcy5ybXRyZWUoc2Vs
Zi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgZGlybmFtZSkpCi0KLSAgICBkZWYg
X2dldF9mYWlsdXJlcyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzKToKLSAg
ICAgICAgIiIiRmlsdGVycyBhIGRpY3Qgb2YgcmVzdWx0cyBhbmQgcmV0dXJucyBvbmx5IHRoZSBm
YWlsdXJlcy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiB0aGUg
cmVzdWx0cyBvZiB0aGUgdGVzdCBydW4KLSAgICAgICAgICBpbmNsdWRlX2NyYXNoZXM6IHdoZXRo
ZXIgY3Jhc2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4KLSAgICAgICAgICAgIFdlIHVz
ZSBGYWxzZSB3aGVuIGZpbmRpbmcgdGhlIGxpc3Qgb2YgZmFpbHVyZXMgdG8gcmV0cnkKLSAgICAg
ICAgICAgIHRvIHNlZSBpZiB0aGUgcmVzdWx0cyB3ZXJlIGZsYWt5LiBBbHRob3VnaCB0aGUgY3Jh
c2hlcyBtYXkgYWxzbyBiZQotICAgICAgICAgICAgZmxha3ksIHdlIHRyZWF0IHRoZW0gYXMgaWYg
dGhleSBhcmVuJ3Qgc28gdGhhdCB0aGV5J3JlIG5vdCBpZ25vcmVkLgotICAgICAgICBSZXR1cm5z
OgotICAgICAgICAgIGEgZGljdCBvZiBmaWxlcyAtPiByZXN1bHRzCi0gICAgICAgICIiIgotICAg
ICAgICBmYWlsZWRfcmVzdWx0cyA9IHt9Ci0gICAgICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcmVz
dWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAg
aWYgKHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1Mgb3IKLSAgICAgICAgICAg
ICAgICByZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1
ZGVfY3Jhc2hlcyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZhaWxl
ZF9yZXN1bHRzW3Rlc3RdID0gcmVzdWx0LnR5cGUKLQotICAgICAgICByZXR1cm4gZmFpbGVkX3Jl
c3VsdHMKLQotICAgIGRlZiBfY2hhcl9mb3JfcmVzdWx0KHNlbGYsIHJlc3VsdCk6Ci0gICAgICAg
IHJlc3VsdCA9IHJlc3VsdC5sb3dlcigpCi0gICAgICAgIGlmIHJlc3VsdCBpbiBUZXN0RXhwZWN0
YXRpb25zRmlsZS5FWFBFQ1RBVElPTlM6Ci0gICAgICAgICAgICByZXN1bHRfZW51bV92YWx1ZSA9
IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OU1tyZXN1bHRdCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICByZXN1bHRfZW51bV92YWx1ZSA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1P
RElGSUVSU1tyZXN1bHRdCi0gICAgICAgIHJldHVybiBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVy
YXRvci5KU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvci5GQUlMVVJFX1RPX0NIQVJbcmVzdWx0X2Vu
dW1fdmFsdWVdCi0KLSAgICBkZWYgX3VwbG9hZF9qc29uX2ZpbGVzKHNlbGYsIHVuZXhwZWN0ZWRf
cmVzdWx0cywgc3VtbWFyaXplZF9yZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKLSAgICAgICAgIiIiV3Jp
dGVzIHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0IHJ1biBhcyBKU09OIGZpbGVzIGludG8gdGhlIHJl
c3VsdHMKLSAgICAgICAgZGlyIGFuZCB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoZSBhcHBlbmdpbmUg
c2VydmVyLgotCi0gICAgICAgIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZmlsZXMgd3JpdHRl
biBpbnRvIHRoZSByZXN1bHRzIGRpcjoKLSAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMuanNv
bjogQSBzaG9ydCBsaXN0IG9mIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMuCi0gICAgICAgICAgICBU
aGlzIGlzIHVzZWQgYnkgdGhlIGJ1aWxkYm90cyB0byBkaXNwbGF5IHJlc3VsdHMuCi0gICAgICAg
ICAgZXhwZWN0YXRpb25zLmpzb246IFRoaXMgaXMgdXNlZCBieSB0aGUgZmxha2luZXNzIGRhc2hi
b2FyZC4KLSAgICAgICAgICByZXN1bHRzLmpzb246IEEgZnVsbCBsaXN0IG9mIHRoZSByZXN1bHRz
IC0gdXNlZCBieSB0aGUgZmxha2luZXNzCi0gICAgICAgICAgICBkYXNoYm9hcmQgYW5kIHRoZSBh
Z2dyZWdhdGUgcmVzdWx0cyBkYXNoYm9hcmQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB1
bmV4cGVjdGVkX3Jlc3VsdHM6IGRpY3Qgb2YgdW5leHBlY3RlZCByZXN1bHRzCi0gICAgICAgICAg
c3VtbWFyaXplZF9yZXN1bHRzOiBkaWN0IG9mIHJlc3VsdHMKLSAgICAgICAgICByZXN1bHRfc3Vt
bWFyeTogZnVsbCBzdW1tYXJ5IG9iamVjdAotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzOiBsaXN0IG9mIHRlc3QgdGltZXMgKHVzZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAg
ICAgZGFzaGJvYXJkKS4KLSAgICAgICAgIiIiCi0gICAgICAgIF9sb2cuZGVidWcoIldyaXRpbmcg
SlNPTiBmaWxlcyBpbiAlcy4iICUgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0KLSAgICAgICAg
dW5leHBlY3RlZF9qc29uX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0
b3J5LCAidW5leHBlY3RlZF9yZXN1bHRzLmpzb24iKQotICAgICAgICBqc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yLndyaXRlX2pzb24oc2VsZi5fZnMsIHVuZXhwZWN0ZWRfcmVzdWx0cywgdW5leHBlY3Rl
ZF9qc29uX3BhdGgpCi0KLSAgICAgICAgZnVsbF9yZXN1bHRzX3BhdGggPSBzZWxmLl9mcy5qb2lu
KHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAiZnVsbF9yZXN1bHRzLmpzb24iKQotICAgICAgICBq
c29uX3Jlc3VsdHNfZ2VuZXJhdG9yLndyaXRlX2pzb24oc2VsZi5fZnMsIHN1bW1hcml6ZWRfcmVz
dWx0cywgZnVsbF9yZXN1bHRzX3BhdGgpCi0KLSAgICAgICAgIyBXcml0ZSBhIGpzb24gZmlsZSBv
ZiB0aGUgdGVzdF9leHBlY3RhdGlvbnMudHh0IGZpbGUgZm9yIHRoZSBsYXlvdXQKLSAgICAgICAg
IyB0ZXN0cyBkYXNoYm9hcmQuCi0gICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5fZnMu
am9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgImV4cGVjdGF0aW9ucy5qc29uIikKLSAgICAg
ICAgZXhwZWN0YXRpb25zX2pzb24gPSBcCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMu
Z2V0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1zKCkKLSAgICAgICAgc2VsZi5f
ZnMud3JpdGVfdGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSJBRERfRVhQRUNUQVRJT05TKCVzKTsiICUgZXhwZWN0YXRpb25zX2pz
b24pCi0KLSAgICAgICAgZ2VuZXJhdG9yID0ganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3Iu
SlNPTkxheW91dFJlc3VsdHNHZW5lcmF0b3IoCi0gICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxm
Ll9vcHRpb25zLmJ1aWxkZXJfbmFtZSwgc2VsZi5fb3B0aW9ucy5idWlsZF9uYW1lLAotICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5idWlsZF9udW1iZXIsIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5
LAotICAgICAgICAgICAgQlVJTERFUl9CQVNFX1VSTCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Ms
Ci0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl90
ZXN0X2ZpbGVzX2xpc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19z
ZXJ2ZXIsCi0gICAgICAgICAgICAibGF5b3V0LXRlc3RzIiwKLSAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMubWFzdGVyX25hbWUpCi0KLSAgICAgICAgX2xvZy5kZWJ1ZygiRmluaXNoZWQgd3JpdGlu
ZyBKU09OIGZpbGVzLiIpCi0KLSAgICAgICAganNvbl9maWxlcyA9IFsiZXhwZWN0YXRpb25zLmpz
b24iLCAiaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uIiwgImZ1bGxfcmVzdWx0cy5qc29uIl0KLQot
ICAgICAgICBnZW5lcmF0b3IudXBsb2FkX2pzb25fZmlsZXMoanNvbl9maWxlcykKLQotICAgIGRl
ZiBfcHJpbnRfY29uZmlnKHNlbGYpOgotICAgICAgICAiIiJQcmludHMgdGhlIGNvbmZpZ3VyYXRp
b24gZm9yIHRoZSB0ZXN0IHJ1bi4iIiIKLSAgICAgICAgcCA9IHNlbGYuX3ByaW50ZXIKLSAgICAg
ICAgcC5wcmludF9jb25maWcoIlVzaW5nIHBvcnQgJyVzJyIgJSBzZWxmLl9wb3J0Lm5hbWUoKSkK
LSAgICAgICAgcC5wcmludF9jb25maWcoIlRlc3QgY29uZmlndXJhdGlvbjogJXMiICUgc2VsZi5f
cG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSkKLSAgICAgICAgcC5wcmludF9jb25maWcoIlBsYWNp
bmcgdGVzdCByZXN1bHRzIGluICVzIiAlIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZToKLSAgICAgICAgICAgIHAucHJpbnRfY29u
ZmlnKCJQbGFjaW5nIG5ldyBiYXNlbGluZXMgaW4gJXMiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BvcnQuYmFzZWxpbmVfcGF0aCgpKQotICAgICAgICBwLnByaW50X2NvbmZp
ZygiVXNpbmcgJXMgYnVpbGQiICUgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKQotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgotICAgICAgICAgICAgcC5wcmludF9jb25m
aWcoIlBpeGVsIHRlc3RzIGVuYWJsZWQiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcC5w
cmludF9jb25maWcoIlBpeGVsIHRlc3RzIGRpc2FibGVkIikKLQotICAgICAgICBwLnByaW50X2Nv
bmZpZygiUmVndWxhciB0aW1lb3V0OiAlcywgc2xvdyB0ZXN0IHRpbWVvdXQ6ICVzIiAlCi0gICAg
ICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKSkKLQotICAgICAg
ICBwLnByaW50X2NvbmZpZygnQ29tbWFuZCBsaW5lOiAnICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgJyAnLmpvaW4oc2VsZi5fcG9ydC5kcml2ZXJfY21kX2xpbmUoKSkpCi0gICAgICAgIHAucHJp
bnRfY29uZmlnKCJXb3JrZXIgbW9kZWw6ICVzIiAlIHNlbGYuX29wdGlvbnMud29ya2VyX21vZGVs
KQotICAgICAgICBwLnByaW50X2NvbmZpZygiIikKLQotICAgIGRlZiBfcHJpbnRfZXhwZWN0ZWRf
cmVzdWx0c19vZl90eXBlKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwZV9zdHIpOgotICAg
ICAgICAiIiJQcmludCB0aGUgbnVtYmVyIG9mIHRoZSB0ZXN0cyBpbiBhIGdpdmVuIHJlc3VsdCBj
bGFzcy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5IC0gdGhlIG9i
amVjdCBjb250YWluaW5nIGFsbCB0aGUgcmVzdWx0cyB0byByZXBvcnQgb24KLSAgICAgICAgICBy
ZXN1bHRfdHlwZSAtIHRoZSBwYXJ0aWN1bGFyIHJlc3VsdCB0eXBlIHRvIHJlcG9ydCBpbiB0aGUg
c3VtbWFyeS4KLSAgICAgICAgICByZXN1bHRfdHlwZV9zdHIgLSBhIHN0cmluZyBkZXNjcmlwdGlv
biBvZiB0aGUgcmVzdWx0X3R5cGUuCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0cyA9IHNlbGYu
X2V4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZShyZXN1bHRfdHlwZSkKLSAg
ICAgICAgbm93ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGVzdF9leHBlY3Rh
dGlvbnMuTk9XXQotICAgICAgICB3b250Zml4ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGlt
ZWxpbmVbdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWF0KLQotICAgICAgICAjIFdlIHVzZSBhIGZh
bmN5IGZvcm1hdCBzdHJpbmcgaW4gb3JkZXIgdG8gcHJpbnQgdGhlIGRhdGEgb3V0IGluIGEKLSAg
ICAgICAgIyBuaWNlbHktYWxpZ25lZCB0YWJsZS4KLSAgICAgICAgZm10c3RyID0gKCJFeHBlY3Q6
ICUlNWQgJSUtOHMgKCUlJWRkIG5vdywgJSUlZGQgd29udGZpeCkiCi0gICAgICAgICAgICAgICAg
ICAlIChzZWxmLl9udW1fZGlnaXRzKG5vdyksIHNlbGYuX251bV9kaWdpdHMod29udGZpeCkpKQot
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKGZtdHN0ciAlCi0gICAgICAgICAg
ICAobGVuKHRlc3RzKSwgcmVzdWx0X3R5cGVfc3RyLCBsZW4odGVzdHMgJiBub3cpLCBsZW4odGVz
dHMgJiB3b250Zml4KSkpCi0KLSAgICBkZWYgX251bV9kaWdpdHMoc2VsZiwgbnVtKToKLSAgICAg
ICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRo
ZSBsZW5ndGggb2YgYQotICAgICAgICBzZXF1ZW5jZS4iIiIKLSAgICAgICAgbmRpZ2l0cyA9IDEK
LSAgICAgICAgaWYgbGVuKG51bSk6Ci0gICAgICAgICAgICBuZGlnaXRzID0gaW50KG1hdGgubG9n
MTAobGVuKG51bSkpKSArIDEKLSAgICAgICAgcmV0dXJuIG5kaWdpdHMKLQotICAgIGRlZiBfcHJp
bnRfdGltaW5nX3N0YXRpc3RpY3Moc2VsZiwgdG90YWxfdGltZSwgdGhyZWFkX3RpbWluZ3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5ncywgaW5k
aXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJSZWNvcmQgdGltaW5nLXNwZWNpZmljIGluZm9ybWF0
aW9uIGZvciB0aGUgdGVzdCBydW4uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB0b3RhbF90
aW1lOiB0b3RhbCBlbGFwc2VkIHRpbWUgKGluIHNlY29uZHMpIGZvciB0aGUgdGVzdCBydW4KLSAg
ICAgICAgICB0aHJlYWRfdGltaW5nczogd2FsbCBjbG9jayB0aW1lIGVhY2ggdGhyZWFkIHJhbiBm
b3IKLSAgICAgICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOiB0aW1pbmcgYnkgZGlyZWN0b3J5
Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IHRpbWluZyBieSBmaWxlCi0gICAg
ICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZvciB0aGUgdGVzdCBydW4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJUZXN0IHRpbWlu
ZzoiKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAlNi4yZiB0b3RhbCB0
ZXN0aW5nIHRpbWUiICUgdG90YWxfdGltZSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90
aW1pbmcoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJUaHJlYWQgdGlt
aW5nOiIpCi0gICAgICAgIGN1bWxfdGltZSA9IDAKLSAgICAgICAgZm9yIHQgaW4gdGhyZWFkX3Rp
bWluZ3M6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAgICUxMHM6
ICU1ZCB0ZXN0cywgJTYuMmYgc2VjcyIgJQotICAgICAgICAgICAgICAgICAgKHRbJ25hbWUnXSwg
dFsnbnVtX3Rlc3RzJ10sIHRbJ3RvdGFsX3RpbWUnXSkpCi0gICAgICAgICAgICBjdW1sX3RpbWUg
Kz0gdFsndG90YWxfdGltZSddCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIg
ICAlNi4yZiBjdW11bGF0aXZlLCAlNi4yZiBvcHRpbWFsIiAlCi0gICAgICAgICAgICAgIChjdW1s
X3RpbWUsIGN1bWxfdGltZSAvIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykpKQot
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLQotICAgICAgICBzZWxmLl9w
cmludF9hZ2dyZWdhdGVfdGVzdF9zdGF0aXN0aWNzKGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQot
ICAgICAgICBzZWxmLl9wcmludF9pbmRpdmlkdWFsX3Rlc3RfdGltZXMoaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRfc3VtbWFyeSkKLSAgICAgICAgc2VsZi5fcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3MoZGlyZWN0
b3J5X3Rlc3RfdGltaW5ncykKLQotICAgIGRlZiBfcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlz
dGljcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6Ci0gICAgICAgICIiIlByaW50cyBh
Z2dyZWdhdGUgc3RhdGlzdGljcyAoZS5nLiBtZWRpYW4sIG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVz
dHMuCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExp
c3Qgb2YgVGVzdFJlc3VsdHMgZm9yIGFsbCB0ZXN0cy4KLSAgICAgICAgIiIiCi0gICAgICAgIHRp
bWVzX2Zvcl9kdW1wX3JlbmRlcl90cmVlID0gW3Rlc3Rfc3RhdHMudGVzdF9ydW5fdGltZSBmb3Ig
dGVzdF9zdGF0cyBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nc10KLSAgICAgICAgc2VsZi5fcHJp
bnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1pbmdzKCJQRVIgVEVTVCBUSU1FIElOIFRFU1RTSEVM
TCAoc2Vjb25kcyk6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVzX2Zvcl9kdW1wX3JlbmRlcl90cmVlKQotCi0gICAgZGVmIF9wcmludF9pbmRp
dmlkdWFsX3Rlc3RfdGltZXMoc2VsZiwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJQ
cmludHMgdGhlIHJ1biB0aW1lcyBmb3Igc2xvdywgdGltZW91dCBhbmQgY3Jhc2ggdGVzdHMuCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2Yg
VGVzdFN0YXRzIGZvciBhbGwgdGVzdHMuCi0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1h
cnkgb2JqZWN0IGZvciB0ZXN0IHJ1bgotICAgICAgICAiIiIKLSAgICAgICAgIyBSZXZlcnNlLXNv
cnQgYnkgdGhlIHRpbWUgc3BlbnQgaW4gRHVtcFJlbmRlclRyZWUuCi0gICAgICAgIGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzLnNvcnQobGFtYmRhIGEsIGI6Ci0gICAgICAgICAgICBjbXAoYi50ZXN0
X3J1bl90aW1lLCBhLnRlc3RfcnVuX3RpbWUpKQotCi0gICAgICAgIG51bV9wcmludGVkID0gMAot
ICAgICAgICBzbG93X3Rlc3RzID0gW10KLSAgICAgICAgdGltZW91dF9vcl9jcmFzaF90ZXN0cyA9
IFtdCi0gICAgICAgIHVuZXhwZWN0ZWRfc2xvd190ZXN0cyA9IFtdCi0gICAgICAgIGZvciB0ZXN0
X3R1cGxlIGluIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOgotICAgICAgICAgICAgZmlsZW5hbWUg
PSB0ZXN0X3R1cGxlLmZpbGVuYW1lCi0gICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Ns
b3cgPSBGYWxzZQotICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9pc19zbG93KGZpbGVuYW1lKToK
LSAgICAgICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBUcnVlCi0gICAgICAg
ICAgICAgICAgc2xvd190ZXN0cy5hcHBlbmQodGVzdF90dXBsZSkKLQotICAgICAgICAgICAgaWYg
ZmlsZW5hbWUgaW4gcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXM6Ci0gICAgICAgICAgICAgICAgcmVz
dWx0ID0gcmVzdWx0X3N1bW1hcnkucmVzdWx0c1tmaWxlbmFtZV0udHlwZQotICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVCBvcgotICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0gpOgotICAgICAgICAg
ICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBUcnVlCi0gICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCi0KLSAgICAg
ICAgICAgIGlmIChub3QgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93IGFuZAotICAgICAgICAgICAg
ICAgIG51bV9wcmludGVkIDwgcHJpbnRpbmcuTlVNX1NMT1dfVEVTVFNfVE9fTE9HKToKLSAgICAg
ICAgICAgICAgICBudW1fcHJpbnRlZCA9IG51bV9wcmludGVkICsgMQotICAgICAgICAgICAgICAg
IHVuZXhwZWN0ZWRfc2xvd190ZXN0cy5hcHBlbmQodGVzdF90dXBsZSkKLQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZygiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0
X3RpbWluZygiJXMgc2xvd2VzdCB0ZXN0cyB0aGF0IGFyZSBub3QgIgotICAgICAgICAgICAgIm1h
cmtlZCBhcyBTTE9XIGFuZCBkaWQgbm90IHRpbWVvdXQvY3Jhc2g6IiAlCi0gICAgICAgICAgICBw
cmludGluZy5OVU1fU0xPV19URVNUU19UT19MT0csIHVuZXhwZWN0ZWRfc2xvd190ZXN0cykKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50
X3Rlc3RfbGlzdF90aW1pbmcoIlRlc3RzIG1hcmtlZCBhcyBTTE9XOiIsIHNsb3dfdGVzdHMpCi0g
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQotICAgICAgICBzZWxmLl9wcmlu
dF90ZXN0X2xpc3RfdGltaW5nKCJUZXN0cyB0aGF0IHRpbWVkIG91dCBvciBjcmFzaGVkOiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9vcl9jcmFzaF90ZXN0
cykKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0KLSAgICBkZWYgX3By
aW50X3Rlc3RfbGlzdF90aW1pbmcoc2VsZiwgdGl0bGUsIHRlc3RfbGlzdCk6Ci0gICAgICAgICIi
IlByaW50IHRpbWluZyBpbmZvIGZvciBlYWNoIHRlc3QuCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICB0aXRsZTogc2VjdGlvbiBoZWFkaW5nCi0gICAgICAgICAgdGVzdF9saXN0OiB0ZXN0cyB0
aGF0IGZhbGwgaW4gdGhpcyBzZWN0aW9uCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9w
cmludGVyLmRpc2FibGVkKCdzbG93ZXN0Jyk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZyh0aXRsZSkKLSAgICAgICAgZm9yIHRlc3RfdHVw
bGUgaW4gdGVzdF9saXN0OgotICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0X3R1cGxlLmZpbGVu
YW1lW2xlbigKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSkg
KyAxOl0KLSAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnXFwnLCAnLycp
Ci0gICAgICAgICAgICB0ZXN0X3J1bl90aW1lID0gcm91bmQodGVzdF90dXBsZS50ZXN0X3J1bl90
aW1lLCAxKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgJXMgdG9v
ayAlcyBzZWNvbmRzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZmlsZW5hbWUsIHRlc3RfcnVuX3RpbWUpKQotCi0gICAgZGVmIF9wcmludF9kaXJlY3RvcnlfdGlt
aW5ncyhzZWxmLCBkaXJlY3RvcnlfdGVzdF90aW1pbmdzKToKLSAgICAgICAgIiIiUHJpbnQgdGlt
aW5nIGluZm8gYnkgZGlyZWN0b3J5IGZvciBhbnkgZGlyZWN0b3JpZXMgdGhhdAotICAgICAgICB0
YWtlID4gMTAgc2Vjb25kcyB0byBydW4uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBkaXJl
Y3RvcnlfdGVzdF90aW1pbmc6IHRpbWUgaW5mbyBmb3IgZWFjaCBkaXJlY3RvcnkKLSAgICAgICAg
IiIiCi0gICAgICAgIHRpbWluZ3MgPSBbXQotICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGRpcmVj
dG9yeV90ZXN0X3RpbWluZ3M6Ci0gICAgICAgICAgICBudW1fdGVzdHMsIHRpbWVfZm9yX2RpcmVj
dG9yeSA9IGRpcmVjdG9yeV90ZXN0X3RpbWluZ3NbZGlyZWN0b3J5XQotICAgICAgICAgICAgdGlt
aW5ncy5hcHBlbmQoKHJvdW5kKHRpbWVfZm9yX2RpcmVjdG9yeSwgMSksIGRpcmVjdG9yeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fdGVzdHMpKQotICAgICAgICB0aW1pbmdzLnNv
cnQoKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJUaW1lIHRvIHByb2Nl
c3Mgc2xvd2VzdCBzdWJkaXJlY3RvcmllczoiKQotICAgICAgICBtaW5fc2Vjb25kc190b19wcmlu
dCA9IDEwCi0gICAgICAgIGZvciB0aW1pbmcgaW4gdGltaW5nczoKLSAgICAgICAgICAgIGlmIHRp
bWluZ1swXSA+IG1pbl9zZWNvbmRzX3RvX3ByaW50OgotICAgICAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIucHJpbnRfdGltaW5nKAotICAgICAgICAgICAgICAgICAgICAiICAlcyB0b29rICVzIHNl
Y29uZHMgdG8gcnVuICVzIHRlc3RzLiIgJSAodGltaW5nWzFdLAotICAgICAgICAgICAgICAgICAg
ICB0aW1pbmdbMF0sIHRpbWluZ1syXSkpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGlt
aW5nKCIiKQotCi0gICAgZGVmIF9wcmludF9zdGF0aXN0aWNzX2Zvcl90ZXN0X3RpbWluZ3Moc2Vs
ZiwgdGl0bGUsIHRpbWluZ3MpOgotICAgICAgICAiIiJQcmludHMgdGhlIG1lZGlhbiwgbWVhbiBh
bmQgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHRoZSB2YWx1ZXMgaW4KLSAgICAgICAgdGltaW5ncy4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgIHRpdGxlOiBUaXRsZSBmb3IgdGhlc2UgdGltaW5n
cy4KLSAgICAgICAgICB0aW1pbmdzOiBBIGxpc3Qgb2YgZmxvYXRzIHJlcHJlc2VudGluZyB0aW1l
cy4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKHRpdGxl
KQotICAgICAgICB0aW1pbmdzLnNvcnQoKQotCi0gICAgICAgIG51bV90ZXN0cyA9IGxlbih0aW1p
bmdzKQotICAgICAgICBpZiBub3QgbnVtX3Rlc3RzOgotICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgIHBlcmNlbnRpbGU5MCA9IHRpbWluZ3NbaW50KC45ICogbnVtX3Rlc3RzKV0KLSAgICAgICAg
cGVyY2VudGlsZTk5ID0gdGltaW5nc1tpbnQoLjk5ICogbnVtX3Rlc3RzKV0KLQotICAgICAgICBp
ZiBudW1fdGVzdHMgJSAyID09IDE6Ci0gICAgICAgICAgICBtZWRpYW4gPSB0aW1pbmdzWygobnVt
X3Rlc3RzIC0gMSkgLyAyKSAtIDFdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb3dlciA9
IHRpbWluZ3NbbnVtX3Rlc3RzIC8gMiAtIDFdCi0gICAgICAgICAgICB1cHBlciA9IHRpbWluZ3Nb
bnVtX3Rlc3RzIC8gMl0KLSAgICAgICAgICAgIG1lZGlhbiA9IChmbG9hdChsb3dlciArIHVwcGVy
KSkgLyAyCi0KLSAgICAgICAgbWVhbiA9IHN1bSh0aW1pbmdzKSAvIG51bV90ZXN0cwotCi0gICAg
ICAgIGZvciB0aW1lIGluIHRpbWluZ3M6Ci0gICAgICAgICAgICBzdW1fb2ZfZGV2aWF0aW9ucyA9
IG1hdGgucG93KHRpbWUgLSBtZWFuLCAyKQotCi0gICAgICAgIHN0ZF9kZXZpYXRpb24gPSBtYXRo
LnNxcnQoc3VtX29mX2RldmlhdGlvbnMgLyBudW1fdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50
ZXIucHJpbnRfdGltaW5nKCIgIE1lZGlhbjogICAgICAgICAgJTYuM2YiICUgbWVkaWFuKQotICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBNZWFuOiAgICAgICAgICAgICU2LjNm
IiAlIG1lYW4pCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIDkwdGggcGVy
Y2VudGlsZTogJTYuM2YiICUgcGVyY2VudGlsZTkwKQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3RpbWluZygiICA5OXRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5OSkKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgU3RhbmRhcmQgZGV2OiAgICAlNi4z
ZiIgJSBzdGRfZGV2aWF0aW9uKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygi
IikKLQotICAgIGRlZiBfcHJpbnRfcmVzdWx0X3N1bW1hcnkoc2VsZiwgcmVzdWx0X3N1bW1hcnkp
OgotICAgICAgICAiIiJQcmludCBhIHNob3J0IHN1bW1hcnkgYWJvdXQgaG93IG1hbnkgdGVzdHMg
cGFzc2VkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGluZm9y
bWF0aW9uIHRvIGxvZwotICAgICAgICAiIiIKLSAgICAgICAgZmFpbGVkID0gbGVuKHJlc3VsdF9z
dW1tYXJ5LmZhaWx1cmVzKQotICAgICAgICBza2lwcGVkID0gbGVuKAotICAgICAgICAgICAgcmVz
dWx0X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuU0tJUF0p
Ci0gICAgICAgIHRvdGFsID0gcmVzdWx0X3N1bW1hcnkudG90YWwKLSAgICAgICAgcGFzc2VkID0g
dG90YWwgLSBmYWlsZWQgLSBza2lwcGVkCi0gICAgICAgIHBjdF9wYXNzZWQgPSAwLjAKLSAgICAg
ICAgaWYgdG90YWwgPiAwOgotICAgICAgICAgICAgcGN0X3Bhc3NlZCA9IGZsb2F0KHBhc3NlZCkg
KiAxMDAgLyB0b3RhbAotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQot
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiPT4gUmVzdWx0czogJWQvJWQgdGVz
dHMgcGFzc2VkICglLjFmJSUpIiAlCi0gICAgICAgICAgICAgICAgICAgICAocGFzc2VkLCB0b3Rh
bCwgcGN0X3Bhc3NlZCkpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQot
ICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShyZXN1bHRfc3VtbWFyeSwK
LSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLk5PVywgIlRlc3RzIHRvIGJlIGZpeGVkIikK
LQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5f
cHJpbnRfcmVzdWx0X3N1bW1hcnlfZW50cnkocmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0
ZXN0X2V4cGVjdGF0aW9ucy5XT05URklYLAotICAgICAgICAgICAgIlRlc3RzIHRoYXQgd2lsbCBv
bmx5IGJlIGZpeGVkIGlmIHRoZXkgY3Jhc2ggKFdPTlRGSVgpIikKLSAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF9hY3R1YWwoIiIpCi0KLSAgICBkZWYgX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2Vu
dHJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCB0aW1lbGluZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRpbmcpOgotICAgICAgICAiIiJQcmludCBhIHN1bW1hcnkgYmxv
Y2sgb2YgcmVzdWx0cyBmb3IgYSBwYXJ0aWN1bGFyIHRpbWVsaW5lIG9mIHRlc3QuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSB0byBwcmludCByZXN1
bHRzIGZvcgotICAgICAgICAgIHRpbWVsaW5lOiB0aGUgdGltZWxpbmUgdG8gcHJpbnQgcmVzdWx0
cyBmb3IgKE5PVCwgV09OVEZJWCwgZXRjLikKLSAgICAgICAgICBoZWFkaW5nOiBhIHRleHR1YWwg
ZGVzY3JpcHRpb24gb2YgdGhlIHRpbWVsaW5lCi0gICAgICAgICIiIgotICAgICAgICB0b3RhbCA9
IGxlbihyZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0pCi0gICAgICAg
IG5vdF9wYXNzaW5nID0gKHRvdGFsIC0KLSAgICAgICAgICAgbGVuKHJlc3VsdF9zdW1tYXJ5LnRl
c3RzX2J5X2V4cGVjdGF0aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlBBU1NdICYKLSAgICAgICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkpCi0gICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCI9PiAlcyAoJWQpOiIgJSAoaGVhZGluZywgbm90
X3Bhc3NpbmcpKQotCi0gICAgICAgIGZvciByZXN1bHQgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUu
RVhQRUNUQVRJT05fT1JERVI6Ci0gICAgICAgICAgICBpZiByZXN1bHQgPT0gdGVzdF9leHBlY3Rh
dGlvbnMuUEFTUzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmVzdWx0
cyA9IChyZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvbltyZXN1bHRdICYKLSAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxp
bmVdKQotICAgICAgICAgICAgZGVzYyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9O
X0RFU0NSSVBUSU9OU1tyZXN1bHRdCi0gICAgICAgICAgICBpZiBub3RfcGFzc2luZyBhbmQgbGVu
KHJlc3VsdHMpOgotICAgICAgICAgICAgICAgIHBjdCA9IGxlbihyZXN1bHRzKSAqIDEwMC4wIC8g
bm90X3Bhc3NpbmcKLSAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgi
ICAlNWQgJS0yNHMgKCU0LjFmJSUpIiAlCi0gICAgICAgICAgICAgICAgICAgIChsZW4ocmVzdWx0
cyksIGRlc2NbbGVuKHJlc3VsdHMpICE9IDFdLCBwY3QpKQotCi0gICAgZGVmIF9jb3B5X3Jlc3Vs
dHNfaHRtbF9maWxlKHNlbGYpOgotICAgICAgICBiYXNlX2RpciA9IHNlbGYuX3BvcnQucGF0aF9m
cm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdmYXN0JywgJ2hhcm5lc3MnKQotICAgICAg
ICByZXN1bHRzX2ZpbGUgPSBzZWxmLl9mcy5qb2luKGJhc2VfZGlyLCAncmVzdWx0cy5odG1sJykK
LSAgICAgICAgIyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0
IChlLmcuLCBpbiB1bml0IHRlc3RzKT8KLSAgICAgICAgaWYgc2VsZi5fZnMuZXhpc3RzKHJlc3Vs
dHNfZmlsZSk6Ci0gICAgICAgICAgICBzZWxmLl9mcy5jb3B5ZmlsZShyZXN1bHRzX2ZpbGUsIHNl
bGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJyZXN1bHRzLmh0bWwiKSkKLQot
ICAgIGRlZiBfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0g
ICAgICAgICIiIlNob3dzIHRoZSByZXN1bHRzLmh0bWwgcGFnZS4iIiIKLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbDoKLSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSBy
ZXN1bHRfc3VtbWFyeS5mYWlsdXJlcy5rZXlzKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHVuZXhwZWN0ZWRfZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmVzdWx0X3N1bW1hcnks
IGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHVuZXhwZWN0
ZWRfZmFpbHVyZXMua2V5cygpCi0KLSAgICAgICAgaWYgbm90IGxlbih0ZXN0X2ZpbGVzKToKLSAg
ICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgPSBzZWxmLl9mcy5q
b2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIikKLSAgICAgICAgc2Vs
Zi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfZmlsZW5hbWUpCi0KLSAgICBk
ZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICdUZXN0UnVubmVyJwotCi0gICAgZGVmIGlz
X2RvbmUoc2VsZik6Ci0gICAgICAgIHdvcmtlcl9zdGF0ZXMgPSBzZWxmLl93b3JrZXJfc3RhdGVz
LnZhbHVlcygpCi0gICAgICAgIHJldHVybiB3b3JrZXJfc3RhdGVzIGFuZCBhbGwoc2VsZi5fd29y
a2VyX2lzX2RvbmUod29ya2VyX3N0YXRlKSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9zdGF0
ZXMpCi0KLSAgICBkZWYgX3dvcmtlcl9pc19kb25lKHNlbGYsIHdvcmtlcl9zdGF0ZSk6Ci0gICAg
ICAgIHQgPSB0aW1lLnRpbWUoKQotICAgICAgICBpZiB3b3JrZXJfc3RhdGUuZG9uZSBvciB3b3Jr
ZXJfc3RhdGUud2VkZ2VkOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBuZXh0
X3RpbWVvdXQgPSB3b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0Ci0gICAgICAgIFdFREdFX1BBRERJ
TkcgPSA0MC4wCi0gICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCAr
IFdFREdFX1BBRERJTkc6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAgICAgICAg
d29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmxvZ193ZWRnZWRfd29ya2VyKHdvcmtlcl9z
dGF0ZS5jdXJyZW50X3Rlc3RfbmFtZSkKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAg
ICAgICAgICB3b3JrZXJfc3RhdGUud2VkZ2VkID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIFRy
dWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgY2FuY2VsX3dvcmtlcnMoc2VsZik6
Ci0gICAgICAgIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMo
KToKLSAgICAgICAgICAgIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5jYW5jZWwoKQot
Ci0gICAgZGVmIGhhbmRsZV9zdGFydGVkX3Rlc3Qoc2VsZiwgc291cmNlLCB0ZXN0X2luZm8sIGhh
bmdfdGltZW91dCk6Ci0gICAgICAgIHdvcmtlcl9zdGF0ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNb
c291cmNlXQotICAgICAgICB3b3JrZXJfc3RhdGUuY3VycmVudF90ZXN0X25hbWUgPSBzZWxmLl9w
b3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9pbmZvLmZpbGVuYW1lKQotICAgICAgICB3
b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQKLQot
ICAgIGRlZiBoYW5kbGVfZG9uZShzZWxmLCBzb3VyY2UpOgotICAgICAgICB3b3JrZXJfc3RhdGUg
PSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLmRvbmUg
PSBUcnVlCi0KLSAgICBkZWYgaGFuZGxlX2V4Y2VwdGlvbihzZWxmLCBzb3VyY2UsIGV4Y2VwdGlv
bl9pbmZvKToKLSAgICAgICAgZXhjZXB0aW9uX3R5cGUsIGV4Y2VwdGlvbl92YWx1ZSwgZXhjZXB0
aW9uX3RyYWNlYmFjayA9IGV4Y2VwdGlvbl9pbmZvCi0gICAgICAgIHJhaXNlIGV4Y2VwdGlvbl90
eXBlLCBleGNlcHRpb25fdmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sKLQotICAgIGRlZiBoYW5k
bGVfZmluaXNoZWRfbGlzdChzZWxmLCBzb3VyY2UsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFw
c2VkX3RpbWUpOgotICAgICAgICBzZWxmLl9ncm91cF9zdGF0c1tsaXN0X25hbWVdID0gKG51bV90
ZXN0cywgZWxhcHNlZF90aW1lKQotCi0gICAgZGVmIGhhbmRsZV9maW5pc2hlZF90ZXN0KHNlbGYs
IHNvdXJjZSwgcmVzdWx0LCBlbGFwc2VkX3RpbWUpOgotICAgICAgICB3b3JrZXJfc3RhdGUgPSBz
ZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KLSAgICAgICAgd29ya2VyX3N0YXRlLm5leHRfdGlt
ZW91dCA9IE5vbmUKLSAgICAgICAgd29ya2VyX3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lID0gTm9u
ZQotICAgICAgICB3b3JrZXJfc3RhdGUuc3RhdHNbJ3RvdGFsX3RpbWUnXSArPSBlbGFwc2VkX3Rp
bWUKLSAgICAgICAgd29ya2VyX3N0YXRlLnN0YXRzWydudW1fdGVzdHMnXSArPSAxCi0KLSAgICAg
ICAgaWYgd29ya2VyX3N0YXRlLndlZGdlZDoKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3Qg
aGFwcGVuIGlmIHdlIGhhdmUgb3VyIHRpbWVvdXRzIHR1bmVkIHByb3Blcmx5LgotICAgICAgICAg
ICAgX2xvZy5lcnJvcigiJXMgdW53ZWRnZWQiLCBzb3VyY2UpCi0KLSAgICAgICAgc2VsZi5fYWxs
X3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0
aF9yZXN1bHQoc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSwgcmVzdWx0KQotCi0KLWRlZiBy
ZWFkX3Rlc3RfZmlsZXMoZnMsIGZpbGVzKToKLSAgICB0ZXN0cyA9IFtdCi0gICAgZm9yIGZpbGUg
aW4gZmlsZXM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmcy5y
ZWFkX3RleHRfZmlsZShmaWxlKS5zcGxpdCgnXG4nKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4g
ZmlsZV9jb250ZW50czoKLSAgICAgICAgICAgICAgICBsaW5lID0gdGVzdF9leHBlY3RhdGlvbnMu
c3RyaXBfY29tbWVudHMobGluZSkKLSAgICAgICAgICAgICAgICBpZiBsaW5lOgotICAgICAgICAg
ICAgICAgICAgICB0ZXN0cy5hcHBlbmQobGluZSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6
Ci0gICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAg
ICBfbG9nLmNyaXRpY2FsKCcnKQotICAgICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJy0tdGVz
dC1saXN0IGZpbGUgIiVzIiBub3QgZm91bmQnICUgZmlsZSkKLSAgICAgICAgICAgIHJhaXNlCi0g
ICAgcmV0dXJuIHRlc3RzCi0KLQotY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6Ci0gICAgIiIi
QSBjbGFzcyBmb3IgdGhlIFRlc3RSdW5uZXIvbWFuYWdlciB0byB1c2UgdG8gdHJhY2sgdGhlIGN1
cnJlbnQgc3RhdGUKLSAgICBvZiB0aGUgd29ya2Vycy4iIiIKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbik6Ci0gICAgICAgIHNlbGYud29ya2VyX2Nvbm5l
Y3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgotICAgICAgICBzZWxmLm51bWJlciA9IG51bWJlcgot
ICAgICAgICBzZWxmLmRvbmUgPSBGYWxzZQotICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdF9uYW1l
ID0gTm9uZQotICAgICAgICBzZWxmLm5leHRfdGltZW91dCA9IE5vbmUKLSAgICAgICAgc2VsZi53
ZWRnZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnN0YXRzID0ge30KLSAgICAgICAgc2VsZi5zdGF0
c1snbmFtZSddID0gd29ya2VyX2Nvbm5lY3Rpb24ubmFtZQotICAgICAgICBzZWxmLnN0YXRzWydu
dW1fdGVzdHMnXSA9IDAKLSAgICAgICAgc2VsZi5zdGF0c1sndG90YWxfdGltZSddID0gMAotCi0g
ICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIl9Xb3JrZXJTdGF0ZSgiICsg
c3RyKHNlbGYuX19kaWN0X18pICsgIikiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
cnVubmVyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjU2NGQy
Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsODUg
KzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBSYXBj
c2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0cyBmb3IgVGVzdFJ1bm5lcigpLiIiIgotCi1p
bXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxl
c3lzdGVtX21vY2sKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi0K
LWltcG9ydCB0ZXN0X3J1bm5lcgotCi0KLWNsYXNzIFRlc3RSdW5uZXJXcmFwcGVyKHRlc3RfcnVu
bmVyLlRlc3RSdW5uZXIpOgotICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUoc2VsZiwg
dGVzdF9maWxlKToKLSAgICAgICAgcmV0dXJuIHRlc3RfZmlsZQotCi0KLWNsYXNzIFRlc3RSdW5u
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhzZWxm
KToKLSAgICAgICAgIyBUZXN0IHRoYXQgX3NoYXJkX3Rlc3RzIGluIHRlc3RfcnVubmVyLlRlc3RS
dW5uZXIgcmVhbGx5Ci0gICAgICAgICMgcHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0IGluIHRoZSBx
dWV1ZS4KLSAgICAgICAgcG9ydCA9IE1vY2soKQotICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0g
ZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkKLSAgICAgICAgcnVubmVyID0gVGVzdFJ1
bm5lcldyYXBwZXIocG9ydD1wb3J0LCBvcHRpb25zPU1vY2soKSwKLSAgICAgICAgICAgIHByaW50
ZXI9TW9jaygpKQotCi0gICAgICAgIHRlc3RfbGlzdCA9IFsKLSAgICAgICAgICAiTGF5b3V0VGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKLSAgICAgICAgICAi
TGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0
bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9mYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5l
LXN0eWxlLWNoYW5nZS1jcmFzaC5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCIsCi0g
ICAgICAgICAgIkxheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVt
ZW50MDMuaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2lldGVzdGNlbnRlci9KYXZhc2Ny
aXB0LzExLjEuNV80LTQtYy0xLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwiLAotICAgICAgICBdCi0KLSAg
ICAgICAgZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrID0gc2V0KFsKLSAgICAgICAgICAnTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtJywKLSAgICAgICAgICAnTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnLAot
ICAgICAgICAgICdMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29s
LWlnbm9yZWQuaHRtbCcsCi0gICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnLAotICAgICAgICBdKQot
Ci0gICAgICAgICMgRklYTUU6IElkZWFsbHkgdGhlIEhUVFAgdGVzdHMgZG9uJ3QgaGF2ZSB0byBh
bGwgYmUgaW4gb25lIHNoYXJkLgotICAgICAgICBzaW5nbGVfdGhyZWFkX3Jlc3VsdHMgPSBydW5u
ZXIuX3NoYXJkX3Rlc3RzKHRlc3RfbGlzdCwgRmFsc2UpCi0gICAgICAgIG11bHRpX3RocmVhZF9y
ZXN1bHRzID0gcnVubmVyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIFRydWUpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwgc2luZ2xlX3RocmVhZF9yZXN1
bHRzWzBdWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0
dHBfbG9jaywgc2V0KHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIG11bHRpX3RocmVhZF9yZXN1bHRzWzBd
WzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9j
aywgc2V0KG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKLQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggZTNkNWVi
Yi4uNTNlMmUzMCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0zNyw5ICszNywxMCBAQCBpbXBvcnQgb3MK
IGltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIAotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQg
anNvbl9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgcHJpbnRp
bmcKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcnVubmVyCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cyBpbXBvcnQgbGF5b3V0X3BhY2thZ2UKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yCitmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgcHJpbnRpbmcKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtYW5hZ2VyCiAK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgdXNlcgogZnJvbSB3ZWJraXRweS50
aGlyZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCkBAIC04OCwzMiArODksMzIgQEAgZGVmIHJ1bihw
b3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLAogICAgICMgaW4g
YSB0cnkvZmluYWxseSB0byBlbnN1cmUgdGhhdCB3ZSBjbGVhbiB1cCB0aGUgbG9nZ2luZyBjb25m
aWd1cmF0aW9uLgogICAgIG51bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSAtMQogICAgIHRyeToKLSAg
ICAgICAgcnVubmVyID0gdGVzdF9ydW5uZXIuVGVzdFJ1bm5lcihwb3J0LCBvcHRpb25zLCBwcmlu
dGVyKQotICAgICAgICBydW5uZXIuX3ByaW50X2NvbmZpZygpCisgICAgICAgIG1hbmFnZXIgPSBs
YXlvdXRfcGFja2FnZS5tYW5hZ2VyLk1hbmFnZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKKyAg
ICAgICAgbWFuYWdlci5fcHJpbnRfY29uZmlnKCkKIAogICAgICAgICBwcmludGVyLnByaW50X3Vw
ZGF0ZSgiQ29sbGVjdGluZyB0ZXN0cyAuLi4iKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBy
dW5uZXIuY29sbGVjdF90ZXN0cyhhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cykKKyAgICAg
ICAgICAgIG1hbmFnZXIuY29sbGVjdF90ZXN0cyhhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0
cykKICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09
IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgIHJh
aXNlCiAKICAgICAgICAgaWYgb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICBy
ZXR1cm4gcnVubmVyLmxpbnQoKQorICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIubGludCgpCiAK
ICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4uLiIp
Ci0gICAgICAgIHJ1bm5lci5wYXJzZV9leHBlY3RhdGlvbnMoKQorICAgICAgICBtYW5hZ2VyLnBh
cnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNoZWNr
aW5nIGJ1aWxkIC4uLiIpCi0gICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2J1aWxkKHJ1bm5lci5u
ZWVkc19odHRwKCkpOgorICAgICAgICBpZiBub3QgcG9ydC5jaGVja19idWlsZChtYW5hZ2VyLm5l
ZWRzX2h0dHAoKSk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJCdWlsZCBjaGVjayBmYWlsZWQi
KQogICAgICAgICAgICAgcmV0dXJuIC0xCiAKLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBydW5u
ZXIuc2V0X3VwX3J1bigpCisgICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gbWFuYWdlci5zZXRfdXBf
cnVuKCkKICAgICAgICAgaWYgcmVzdWx0X3N1bW1hcnk6Ci0gICAgICAgICAgICBudW1fdW5leHBl
Y3RlZF9yZXN1bHRzID0gcnVubmVyLnJ1bihyZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgICAgIHJ1
bm5lci5jbGVhbl91cF9ydW4oKQorICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9
IG1hbmFnZXIucnVuKHJlc3VsdF9zdW1tYXJ5KQorICAgICAgICAgICAgbWFuYWdlci5jbGVhbl91
cF9ydW4oKQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiVGVzdGluZyBjb21wbGV0ZWQsIEV4aXQg
c3RhdHVzOiAlZCIgJQogICAgICAgICAgICAgICAgICAgICAgICBudW1fdW5leHBlY3RlZF9yZXN1
bHRzKQogICAgIGZpbmFsbHk6CkBAIC0xNDksOSArMTUwLDkgQEAgZGVmIF9zZXRfdXBfZGVyaXZl
ZF9vcHRpb25zKHBvcnRfb2JqLCBvcHRpb25zKToKIAogICAgIGlmIG5vdCBvcHRpb25zLnRpbWVf
b3V0X21zOgogICAgICAgICBpZiBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPT0gIkRlYnVnIjoKLSAg
ICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIoMiAqIHRlc3RfcnVubmVyLlRlc3RS
dW5uZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCisgICAgICAgICAgICBvcHRpb25zLnRpbWVf
b3V0X21zID0gc3RyKDIgKiBtYW5hZ2VyLk1hbmFnZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMp
CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKHRl
c3RfcnVubmVyLlRlc3RSdW5uZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCisgICAgICAgICAg
ICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKG1hbmFnZXIuTWFuYWdlci5ERUZBVUxUX1RFU1Rf
VElNRU9VVF9NUykKIAogICAgIG9wdGlvbnMuc2xvd190aW1lX291dF9tcyA9IHN0cig1ICogaW50
KG9wdGlvbnMudGltZV9vdXRfbXMpKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>