<?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>104963</bug_id>
          
          <creation_ts>2012-12-13 15:01:59 -0800</creation_ts>
          <short_desc>nrwt: move rundetails, summarize_results into test_run_results</short_desc>
          <delta_ts>2012-12-13 15:43:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>790980</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 15:01:59 -0800</bug_when>
    <thetext>nrwt: moe rundetails, summarize_results into test_run_results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790983</commentid>
    <comment_count>1</comment_count>
      <attachid>179349</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 15:04:57 -0800</bug_when>
    <thetext>Created attachment 179349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791014</commentid>
    <comment_count>2</comment_count>
      <attachid>179349</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 15:33:25 -0800</bug_when>
    <thetext>Comment on attachment 179349
Patch

TEH RENAMINGS WILL CONTINUE UNTIL MORALE IMPROVES.  rs=me, assuming you&apos;re just renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791015</commentid>
    <comment_count>3</comment_count>
      <attachid>179349</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 15:34:01 -0800</bug_when>
    <thetext>Comment on attachment 179349
Patch

I actually meant &quot;until readability&quot; improves, but I got distracted by the spellchecker yelling at me about &quot;renamings&quot; and then lost in my own joke. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791030</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 15:43:02 -0800</bug_when>
    <thetext>Committed r137672: &lt;http://trac.webkit.org/changeset/137672&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179349</attachid>
            <date>2012-12-13 15:04:57 -0800</date>
            <delta_ts>2012-12-13 15:34:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104963-20121213150218.patch</filename>
            <type>text/plain</type>
            <size>47306</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWMwM2U0OTM3MGE5NTFjMzhkZmQ5OTBlYjgwZjdhNTJi
ZmNlYTgxOC4uYTllM2ExZThlZTAwOTJjNDkzNzkzNDU5ODEzYzBiZWVlMmZjOTFmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1
IEBACiAyMDEyLTEyLTEzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IG1vdmUgcnVuZGV0YWlscywgc3VtbWFyaXplX3Jlc3VsdHMgaW50byB0ZXN0
X3J1bl9yZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDQ5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3JlIGNsZWFudXA7IHRoaXMgdGhlIHBsYWluLW9sZC1kYXRhIGZ1bmN0aW9ucyBvdXQg
b2YgbWFuYWdlci5weQorICAgICAgICBhbmQgaW50byB0ZXN0X3J1bl9yZXN1bHRzIG5leHQgdG8g
dGhlIG90aGVyIGFnZ3JlZ2F0ZSBkYXRhIHN0cnVjdHVyZXMuCisKKyAgICAgICAgQWxzbyB0aGlz
IGNsZWFucyB1cCBhIGJ1bmNoIG9mIHRlc3QgY29kZSBhbmQgcmVkdWNlcyBkdXBsaWNhdGlvbi4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLnJ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weToKKyAgICAg
ICAgKE1hbmFnZXJUZXN0LnRlc3RfbG9va19mb3JfbmV3X2NyYXNoX2xvZ3MpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5
OgorICAgICAgICAoVGVzdFJ1blJlc3VsdHMuX19pbml0X18pOgorICAgICAgICAoVGVzdFJ1blJl
c3VsdHMuYWRkKToKKyAgICAgICAgKFJ1bkRldGFpbHMpOgorICAgICAgICAoUnVuRGV0YWlscy5f
X2luaXRfXyk6CisgICAgICAgIChfaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMpOgorICAgICAgICAo
c3VtbWFyaXplX3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAg
KGdldF9yZXN1bHQpOgorICAgICAgICAocnVuX3Jlc3VsdHMpOgorICAgICAgICAoc3VtbWFyaXpl
ZF9yZXN1bHRzKToKKyAgICAgICAgKEludGVycHJldFRlc3RGYWlsdXJlc1Rlc3QpOgorICAgICAg
ICAoSW50ZXJwcmV0VGVzdEZhaWx1cmVzVGVzdC5zZXRVcCk6CisgICAgICAgIChJbnRlcnByZXRU
ZXN0RmFpbHVyZXNUZXN0LnRlc3RfaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMpOgorICAgICAgICAo
U3VtbWFyaXplZFJlc3VsdHNUZXN0KToKKyAgICAgICAgKFN1bW1hcml6ZWRSZXN1bHRzVGVzdC5z
ZXRVcCk6CisgICAgICAgIChTdW1tYXJpemVkUmVzdWx0c1Rlc3QudGVzdF9ub19zdm5fcmV2aXNp
b24pOgorICAgICAgICAoU3VtbWFyaXplZFJlc3VsdHNUZXN0LnRlc3Rfc3ZuX3JldmlzaW9uKToK
KyAgICAgICAgKFN1bW1hcml6ZWRSZXN1bHRzVGVzdC50ZXN0X3N1bW1hcml6ZWRfcmVzdWx0c193
b250Zml4KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9i
dWlsZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQnVpbGRCb3RQcmludGVyVGVz
dHMuZ2V0X3ByaW50ZXIpOgorICAgICAgICAoQnVpbGRCb3RQcmludGVyVGVzdHMudGVzdF9wcmlu
dF91bmV4cGVjdGVkX3Jlc3VsdHMpOgorICAgICAgICAoQnVpbGRCb3RQcmludGVyVGVzdHMudGVz
dF9wcmludF9yZXN1bHRzKToKKworMjAxMi0xMi0xMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBzdXBwb3J0IC13azIgcG9ydCBuYW1lcyBwcm9wZXJseSBp
biB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzYxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDc1
YzY1YmM2ZmFiZTIxMTgyNDI5NDYyNDdjNDM1MTkyZDUyNmJkNmQuLjIwZGI3YWQ3NDI3ODRmOWQw
ZDE3YTU1NGI4M2RlZTNmZGZhNjgxZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtNDcsNiAr
NDcsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
anNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKK2Zyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0cwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfaW5wdXQgaW1wb3J0IFRlc3RJbnB1dAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC01NywxNzggKzU4LDYgQEAg
QlVJTERFUl9CQVNFX1VSTCA9ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xh
eW91dF90ZXN0X3Jlc3VsdHMvIgogVGVzdEV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25z
LlRlc3RFeHBlY3RhdGlvbnMKIAogCi1jbGFzcyBSdW5EZXRhaWxzKG9iamVjdCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGV4aXRfY29kZSwgc3VtbWFyaXplZF9yZXN1bHRzPU5vbmUsIGluaXRp
YWxfcmVzdWx0cz1Ob25lLCByZXRyeV9yZXN1bHRzPU5vbmUpOgotICAgICAgICBzZWxmLmV4aXRf
Y29kZSA9IGV4aXRfY29kZQotICAgICAgICBzZWxmLnN1bW1hcml6ZWRfcmVzdWx0cyA9IHN1bW1h
cml6ZWRfcmVzdWx0cwotICAgICAgICBzZWxmLmluaXRpYWxfcmVzdWx0cyA9IGluaXRpYWxfcmVz
dWx0cwotICAgICAgICBzZWxmLnJldHJ5X3Jlc3VsdHMgPSByZXRyeV9yZXN1bHRzCi0KLQotZGVm
IGludGVycHJldF90ZXN0X2ZhaWx1cmVzKGZhaWx1cmVzKToKLSAgICB0ZXN0X2RpY3QgPSB7fQot
ICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlwZShmYWlsdXJlKSBmb3IgZmFpbHVyZSBpbiBmYWlsdXJl
c10KLSAgICAjIEZJWE1FOiBnZXQgcmlkIG9mIGFsbCB0aGlzIGlzXyogdmFsdWVzIG9uY2UgdGhl
cmUgaXMgYSAxOjEgbWFwIGJldHdlZW4KLSAgICAjIFRlc3RGYWlsdXJlIHR5cGUgYW5kIHRlc3Rf
ZXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OLgotICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1p
c3NpbmdBdWRpbyBpbiBmYWlsdXJlX3R5cGVzOgotICAgICAgICB0ZXN0X2RpY3RbJ2lzX21pc3Np
bmdfYXVkaW8nXSA9IFRydWUKLQotICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdS
ZXN1bHQgaW4gZmFpbHVyZV90eXBlczoKLSAgICAgICAgdGVzdF9kaWN0Wydpc19taXNzaW5nX3Rl
eHQnXSA9IFRydWUKLQotICAgIGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZSBp
biBmYWlsdXJlX3R5cGVzIG9yIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2gg
aW4gZmFpbHVyZV90eXBlczoKLSAgICAgICAgdGVzdF9kaWN0Wydpc19taXNzaW5nX2ltYWdlJ10g
PSBUcnVlCi0KLSAgICBmb3IgZmFpbHVyZSBpbiBmYWlsdXJlczoKLSAgICAgICAgaWYgaXNpbnN0
YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCkgb3Ig
aXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gp
OgotICAgICAgICAgICAgdGVzdF9kaWN0WydpbWFnZV9kaWZmX3BlcmNlbnQnXSA9IGZhaWx1cmUu
ZGlmZl9wZXJjZW50Ci0KLSAgICByZXR1cm4gdGVzdF9kaWN0Ci0KLQotZGVmIHVzZV90cmFjX2xp
bmtzX2luX3Jlc3VsdHNfaHRtbChwb3J0X29iaik6Ci0gICAgIyBXZSBvbmx5IHVzZSB0cmFjIGxp
bmtzIG9uIHRoZSBidWlsZGJvdHMuCi0gICAgIyBVc2UgZXhpc3RlbmNlIG9mIGJ1aWxkZXJfbmFt
ZSBhcyBhIHByb3h5IGZvciBrbm93aW5nIHdlJ3JlIG9uIGEgYm90LgotICAgIHJldHVybiBwb3J0
X29iai5nZXRfb3B0aW9uKCJidWlsZGVyX25hbWUiKQotCi0KLSMgRklYTUU6IFRoaXMgc2hvdWxk
IGJlIG9uIHRoZSBNYW5hZ2VyIGNsYXNzIChzaW5jZSB0aGF0J3MgdGhlIG9ubHkgY2FsbGVyKQot
IyBvciBzcGxpdCBvZmYgZnJvbSBNYW5hZ2VyIG9udG8gYW5vdGhlciBoZWxwZXIgY2xhc3MsIGJ1
dCBzaG91bGQgbm90IGJlIGEgZnJlZSBmdW5jdGlvbi4KLSMgTW9zdCBsaWtlbHkgdGhpcyBzaG91
bGQgYmUgbWFkZSBpbnRvIGl0cyBvd24gY2xhc3MsIGFuZCB0aGlzIHN1cGVyLWxvbmcgZnVuY3Rp
b24KLSMgc3BsaXQgaW50byBtYW55IGhlbHBlciBmdW5jdGlvbnMuCi1kZWYgc3VtbWFyaXplX3Jl
c3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1
bHRzKToKLSAgICAiIiJSZXR1cm5zIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGEgc3VtbWFyeSBv
ZiB0aGUgdGVzdCBydW5zLCB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOgotICAgICAgICAndmVy
c2lvbic6IGEgdmVyc2lvbiBpbmRpY2F0b3IKLSAgICAgICAgJ2ZpeGFibGUnOiBUaGUgbnVtYmVy
IG9mIGZpeGFibGUgdGVzdHMgKE5PVyAtIFBBU1MpCi0gICAgICAgICdza2lwcGVkJzogVGhlIG51
bWJlciBvZiBza2lwcGVkIHRlc3RzIChOT1cgJiBTS0lQUEVEKQotICAgICAgICAnbnVtX3JlZ3Jl
c3Npb25zJzogVGhlIG51bWJlciBvZiBub24tZmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9m
bGFreSc6IFRoZSBudW1iZXIgb2YgZmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9taXNzaW5n
JzogVGhlIG51bWJlciBvZiB0ZXN0cyB3aXRoIG1pc3NpbmcgcmVzdWx0cwotICAgICAgICAnbnVt
X3Bhc3Nlcyc6IFRoZSBudW1iZXIgb2YgdW5leHBlY3RlZCBwYXNzZXMKLSAgICAgICAgJ3Rlc3Rz
JzogYSBkaWN0IG9mIHRlc3RzIC0+IHsnZXhwZWN0ZWQnOiAnLi4uJywgJ2FjdHVhbCc6ICcuLi4n
fQotICAgICIiIgotICAgIHJlc3VsdHMgPSB7fQotICAgIHJlc3VsdHNbJ3ZlcnNpb24nXSA9IDMK
LQotICAgIHRiZSA9IGluaXRpYWxfcmVzdWx0cy50ZXN0c19ieV9leHBlY3RhdGlvbgotICAgIHRi
dCA9IGluaXRpYWxfcmVzdWx0cy50ZXN0c19ieV90aW1lbGluZQotICAgIHJlc3VsdHNbJ2ZpeGFi
bGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAtIHRiZVt0ZXN0X2V4cGVjdGF0
aW9ucy5QQVNTXSkKLSAgICByZXN1bHRzWydza2lwcGVkJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0
YXRpb25zLk5PV10gJiB0YmVbdGVzdF9leHBlY3RhdGlvbnMuU0tJUF0pCi0KLSAgICBudW1fcGFz
c2VzID0gMAotICAgIG51bV9mbGFreSA9IDAKLSAgICBudW1fbWlzc2luZyA9IDAKLSAgICBudW1f
cmVncmVzc2lvbnMgPSAwCi0gICAga2V5d29yZHMgPSB7fQotICAgIGZvciBleHBlY2F0aW9uX3N0
cmluZywgZXhwZWN0YXRpb25fZW51bSBpbiBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OUy5p
dGVyaXRlbXMoKToKLSAgICAgICAga2V5d29yZHNbZXhwZWN0YXRpb25fZW51bV0gPSBleHBlY2F0
aW9uX3N0cmluZy51cHBlcigpCi0KLSAgICBmb3IgbW9kaWZpZXJfc3RyaW5nLCBtb2RpZmllcl9l
bnVtIGluIFRlc3RFeHBlY3RhdGlvbnMuTU9ESUZJRVJTLml0ZXJpdGVtcygpOgotICAgICAgICBr
ZXl3b3Jkc1ttb2RpZmllcl9lbnVtXSA9IG1vZGlmaWVyX3N0cmluZy51cHBlcigpCi0KLSAgICB0
ZXN0cyA9IHt9Ci0KLSAgICBmb3IgdGVzdF9uYW1lLCByZXN1bHQgaW4gaW5pdGlhbF9yZXN1bHRz
LnJlc3VsdHNfYnlfbmFtZS5pdGVyaXRlbXMoKToKLSAgICAgICAgIyBOb3RlIHRoYXQgaWYgYSB0
ZXN0IGNyYXNoZWQgaW4gdGhlIG9yaWdpbmFsIHJ1biwgd2UgaWdub3JlCi0gICAgICAgICMgd2hl
dGhlciBvciBub3QgaXQgY3Jhc2hlZCB3aGVuIHdlIHJldHJpZWQgaXQgKGlmIHdlIHJldHJpZWQg
aXQpLAotICAgICAgICAjIGFuZCBhbHdheXMgY29uc2lkZXIgdGhlIHJlc3VsdCBub3QgZmxha3ku
Ci0gICAgICAgIGV4cGVjdGVkID0gZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5n
KHRlc3RfbmFtZSkKLSAgICAgICAgcmVzdWx0X3R5cGUgPSByZXN1bHQudHlwZQotICAgICAgICBh
Y3R1YWwgPSBba2V5d29yZHNbcmVzdWx0X3R5cGVdXQotCi0gICAgICAgIGlmIHJlc3VsdF90eXBl
ID09IHRlc3RfZXhwZWN0YXRpb25zLlNLSVA6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAg
ICAgIHRlc3RfZGljdCA9IHt9Ci0gICAgICAgIGlmIHJlc3VsdC5oYXNfc3RkZXJyOgotICAgICAg
ICAgICAgdGVzdF9kaWN0WydoYXNfc3RkZXJyJ10gPSBUcnVlCi0KLSAgICAgICAgaWYgcmVzdWx0
LnJlZnRlc3RfdHlwZToKLSAgICAgICAgICAgIHRlc3RfZGljdC51cGRhdGUocmVmdGVzdF90eXBl
PWxpc3QocmVzdWx0LnJlZnRlc3RfdHlwZSkpCi0KLSAgICAgICAgaWYgZXhwZWN0YXRpb25zLmhh
c19tb2RpZmllcih0ZXN0X25hbWUsIHRlc3RfZXhwZWN0YXRpb25zLldPTlRGSVgpOgotICAgICAg
ICAgICAgdGVzdF9kaWN0Wyd3b250Zml4J10gPSBUcnVlCi0KLSAgICAgICAgaWYgcmVzdWx0X3R5
cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUzoKLSAgICAgICAgICAgIG51bV9wYXNzZXMgKz0g
MQotICAgICAgICAgICAgIyBGSVhNRTogaW5jbHVkZSBwYXNzaW5nIHRlc3RzIHRoYXQgaGF2ZSBz
dGRlcnIgb3V0cHV0LgotICAgICAgICAgICAgaWYgZXhwZWN0ZWQgPT0gJ1BBU1MnOgotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBl
Y3RhdGlvbnMuQ1JBU0g6Ci0gICAgICAgICAgICBpZiB0ZXN0X25hbWUgaW4gaW5pdGlhbF9yZXN1
bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lOgotICAgICAgICAgICAgICAgIG51bV9yZWdy
ZXNzaW9ucyArPSAxCi0gICAgICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlv
bnMuTUlTU0lORzoKLSAgICAgICAgICAgIGlmIHRlc3RfbmFtZSBpbiBpbml0aWFsX3Jlc3VsdHMu
dW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWU6Ci0gICAgICAgICAgICAgICAgbnVtX21pc3Npbmcg
Kz0gMQotICAgICAgICBlbGlmIHRlc3RfbmFtZSBpbiBpbml0aWFsX3Jlc3VsdHMudW5leHBlY3Rl
ZF9yZXN1bHRzX2J5X25hbWU6Ci0gICAgICAgICAgICBpZiByZXRyeV9yZXN1bHRzIGFuZCB0ZXN0
X25hbWUgbm90IGluIHJldHJ5X3Jlc3VsdHMudW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWU6Ci0g
ICAgICAgICAgICAgICAgYWN0dWFsLmV4dGVuZChleHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9u
c19zdHJpbmcodGVzdF9uYW1lKS5zcGxpdCgiICIpKQotICAgICAgICAgICAgICAgIG51bV9mbGFr
eSArPSAxCi0gICAgICAgICAgICBlbGlmIHJldHJ5X3Jlc3VsdHM6Ci0gICAgICAgICAgICAgICAg
cmV0cnlfcmVzdWx0X3R5cGUgPSByZXRyeV9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9u
YW1lW3Rlc3RfbmFtZV0udHlwZQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdF90eXBlICE9IHJl
dHJ5X3Jlc3VsdF90eXBlOgotICAgICAgICAgICAgICAgICAgICBhY3R1YWwuYXBwZW5kKGtleXdv
cmRzW3JldHJ5X3Jlc3VsdF90eXBlXSkKLSAgICAgICAgICAgICAgICAgICAgbnVtX2ZsYWt5ICs9
IDEKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBudW1fcmVncmVz
c2lvbnMgKz0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBudW1fcmVncmVz
c2lvbnMgKz0gMQotCi0gICAgICAgIHRlc3RfZGljdFsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCi0g
ICAgICAgIHRlc3RfZGljdFsnYWN0dWFsJ10gPSAiICIuam9pbihhY3R1YWwpCi0KLSAgICAgICAg
dGVzdF9kaWN0LnVwZGF0ZShpbnRlcnByZXRfdGVzdF9mYWlsdXJlcyhyZXN1bHQuZmFpbHVyZXMp
KQotCi0gICAgICAgICMgU3RvcmUgdGVzdCBoaWVyYXJjaGljYWxseSBieSBkaXJlY3RvcnkuIGUu
Zy4KLSAgICAgICAgIyBmb28vYmFyL2Jhei5odG1sOiB0ZXN0X2RpY3QKLSAgICAgICAgIyBmb28v
YmFyL2JhejEuaHRtbDogdGVzdF9kaWN0Ci0gICAgICAgICMKLSAgICAgICAgIyBiZWNvbWVzCi0g
ICAgICAgICMgZm9vOiB7Ci0gICAgICAgICMgICAgIGJhcjogewotICAgICAgICAjICAgICAgICAg
YmF6Lmh0bWw6IHRlc3RfZGljdCwKLSAgICAgICAgIyAgICAgICAgIGJhejEuaHRtbDogdGVzdF9k
aWN0Ci0gICAgICAgICMgICAgIH0KLSAgICAgICAgIyB9Ci0gICAgICAgIHBhcnRzID0gdGVzdF9u
YW1lLnNwbGl0KCcvJykKLSAgICAgICAgY3VycmVudF9tYXAgPSB0ZXN0cwotICAgICAgICBmb3Ig
aSwgcGFydCBpbiBlbnVtZXJhdGUocGFydHMpOgotICAgICAgICAgICAgaWYgaSA9PSAobGVuKHBh
cnRzKSAtIDEpOgotICAgICAgICAgICAgICAgIGN1cnJlbnRfbWFwW3BhcnRdID0gdGVzdF9kaWN0
Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIHBhcnQgbm90IGluIGN1cnJl
bnRfbWFwOgotICAgICAgICAgICAgICAgIGN1cnJlbnRfbWFwW3BhcnRdID0ge30KLSAgICAgICAg
ICAgIGN1cnJlbnRfbWFwID0gY3VycmVudF9tYXBbcGFydF0KLQotICAgIHJlc3VsdHNbJ3Rlc3Rz
J10gPSB0ZXN0cwotICAgIHJlc3VsdHNbJ251bV9wYXNzZXMnXSA9IG51bV9wYXNzZXMKLSAgICBy
ZXN1bHRzWydudW1fZmxha3knXSA9IG51bV9mbGFreQotICAgIHJlc3VsdHNbJ251bV9taXNzaW5n
J10gPSBudW1fbWlzc2luZwotICAgIHJlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddID0gbnVtX3Jl
Z3Jlc3Npb25zCi0gICAgcmVzdWx0c1sndXNlc19leHBlY3RhdGlvbnNfZmlsZSddID0gcG9ydF9v
YmoudXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICByZXN1bHRzWydpbnRlcnJ1cHRl
ZCddID0gaW5pdGlhbF9yZXN1bHRzLmludGVycnVwdGVkICAjIERvZXMgcmVzdWx0cy5odG1sIGhh
dmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNvbXB1dGUgdGhpcyBpdHNlbGY/IChieSBjaGVja2lu
ZyB0b3RhbCBudW1iZXIgb2YgcmVzdWx0cyB2cy4gdG90YWwgbnVtYmVyIG9mIHRlc3RzPykKLSAg
ICByZXN1bHRzWydsYXlvdXRfdGVzdHNfZGlyJ10gPSBwb3J0X29iai5sYXlvdXRfdGVzdHNfZGly
KCkKLSAgICByZXN1bHRzWydoYXNfd2RpZmYnXSA9IHBvcnRfb2JqLndkaWZmX2F2YWlsYWJsZSgp
Ci0gICAgcmVzdWx0c1snaGFzX3ByZXR0eV9wYXRjaCddID0gcG9ydF9vYmoucHJldHR5X3BhdGNo
X2F2YWlsYWJsZSgpCi0gICAgcmVzdWx0c1sncGl4ZWxfdGVzdHNfZW5hYmxlZCddID0gcG9ydF9v
YmouZ2V0X29wdGlvbigncGl4ZWxfdGVzdHMnKQotCi0gICAgdHJ5OgotICAgICAgICAjIFdlIG9u
bHkgdXNlIHRoZSBzdm4gcmV2aXNpb24gZm9yIHVzaW5nIHRyYWMgbGlua3MgaW4gdGhlIHJlc3Vs
dHMuaHRtbCBmaWxlLAotICAgICAgICAjIERvbid0IGRvIHRoaXMgYnkgZGVmYXVsdCBzaW5jZSBp
dCB0YWtlcyA+MTAwbXMuCi0gICAgICAgICMgRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIHBv
cHVsYXRlIHRoaXMgYm90aCBoZXJlIGFuZCBpbiB0aGUganNvbl9yZXN1bHRzX2dlbmVyYXRvcj8K
LSAgICAgICAgaWYgdXNlX3RyYWNfbGlua3NfaW5fcmVzdWx0c19odG1sKHBvcnRfb2JqKToKLSAg
ICAgICAgICAgIHBvcnRfb2JqLmhvc3QuaW5pdGlhbGl6ZV9zY20oKQotICAgICAgICAgICAgcmVz
dWx0c1sncmV2aXNpb24nXSA9IHBvcnRfb2JqLmhvc3Quc2NtKCkuaGVhZF9zdm5fcmV2aXNpb24o
KQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIF9sb2cud2FybigiRmFpbGVkIHRv
IGRldGVybWluZSBzdm4gcmV2aXNpb24gZm9yIGNoZWNrb3V0IChjd2Q6ICVzLCB3ZWJraXRfYmFz
ZTogJXMpLCBsZWF2aW5nICdyZXZpc2lvbicga2V5IGJsYW5rIGluIGZ1bGxfcmVzdWx0cy5qc29u
LlxuJXMiICUgKHBvcnRfb2JqLl9maWxlc3lzdGVtLmdldGN3ZCgpLCBwb3J0X29iai5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoKSwgZSkpCi0gICAgICAgICMgSGFuZGxlIGNhc2VzIHdoZXJlIHdlJ3Jl
IHJ1bm5pbmcgb3V0c2lkZSBvZiB2ZXJzaW9uIGNvbnRyb2wuCi0gICAgICAgIGltcG9ydCB0cmFj
ZWJhY2sKLSAgICAgICAgX2xvZy5kZWJ1ZygnRmFpbGVkIHRvIGxlYXJuIGhlYWQgc3ZuIHJldmlz
aW9uOicpCi0gICAgICAgIF9sb2cuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAg
ICAgcmVzdWx0c1sncmV2aXNpb24nXSA9ICIiCi0KLSAgICByZXR1cm4gcmVzdWx0cwotCiAKIGNs
YXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAiIiJBIGNsYXNzIGZvciBtYW5hZ2luZyBydW5uaW5n
IGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dApAQCAtMzQ2LDcgKzE3NSw3
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIHBhdGhzLCB0ZXN0X25hbWVz
ID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAg
ICAgICAgICAgICMgVGhpcyBpcyByYWlzZWQgaWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAot
ICAgICAgICAgICAgcmV0dXJuIFJ1bkRldGFpbHMoZXhpdF9jb2RlPS0xKQorICAgICAgICAgICAg
cmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCiAKICAgICAg
ICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4uLiIp
CiAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBl
Y3RhdGlvbnMoc2VsZi5fcG9ydCwgdGVzdF9uYW1lcykKQEAgLTM1NywxMCArMTg2LDEwIEBAIGNs
YXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgd2UncmUg
bm90IHNraXBwaW5nIGV2ZXJ5IHRlc3QuCiAgICAgICAgIGlmIG5vdCB0ZXN0c190b19ydW46CiAg
ICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCdObyB0ZXN0cyB0byBydW4uJykKLSAgICAgICAgICAg
IHJldHVybiBSdW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0
X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlPS0xKQogCiAgICAgICAgIGlmIG5vdCBz
ZWxmLl9zZXRfdXBfcnVuKHRlc3RzX3RvX3J1bik6Ci0gICAgICAgICAgICByZXR1cm4gUnVuRGV0
YWlscyhleGl0X2NvZGU9LTEpCisgICAgICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5S
dW5EZXRhaWxzKGV4aXRfY29kZT0tMSkKIAogICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1l
KCkKICAgICAgICAgdHJ5OgpAQCAtMzg3LDcgKzIxNiw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICAgICAgaWYgcmV0cnlfcmVzdWx0czoKICAgICAgICAgICAgIHNlbGYuX2xvb2tfZm9y
X25ld19jcmFzaF9sb2dzKHJldHJ5X3Jlc3VsdHMsIHN0YXJ0X3RpbWUpCiAKLSAgICAgICAgc3Vt
bWFyaXplZF9yZXN1bHRzID0gc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwgc2VsZi5fZXhw
ZWN0YXRpb25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMpCisgICAgICAgIHN1bW1h
cml6ZWRfcmVzdWx0cyA9IHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5f
cG9ydCwgc2VsZi5fZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMp
CiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcmVzdWx0cyhlbmRfdGltZSAtIHN0YXJ0X3Rp
bWUsIGluaXRpYWxfcmVzdWx0cywgc3VtbWFyaXplZF9yZXN1bHRzKQogCiAgICAgICAgIGlmIG5v
dCBzZWxmLl9vcHRpb25zLmRyeV9ydW46CkBAIC00MDAsOCArMjI5LDggQEAgY2xhc3MgTWFuYWdl
cihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2VsZi5fb3B0aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbCBhbmQgaW5pdGlhbF9yZXN1bHRzLnRv
dGFsX2ZhaWx1cmVzKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNf
aHRtbF9maWxlKHJlc3VsdHNfcGF0aCkKIAotICAgICAgICByZXR1cm4gUnVuRGV0YWlscyhzZWxm
Ll9wb3J0LmV4aXRfY29kZV9mcm9tX3N1bW1hcml6ZWRfcmVzdWx0cyhzdW1tYXJpemVkX3Jlc3Vs
dHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMsIGluaXRp
YWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cykKKyAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3Vs
dHMuUnVuRGV0YWlscyhzZWxmLl9wb3J0LmV4aXRfY29kZV9mcm9tX3N1bW1hcml6ZWRfcmVzdWx0
cyhzdW1tYXJpemVkX3Jlc3VsdHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0cywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1
bHRzKQogCiAgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVuLCB0ZXN0c190b19z
a2lwLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucywgbnVtX3dvcmtlcnMsIHJldHJ5aW5nKToKICAg
ICAgICAgbmVlZHNfaHR0cCA9IHNlbGYuX3BvcnQucmVxdWlyZXNfaHR0cF9zZXJ2ZXIoKSBvciBh
bnkoc2VsZi5faXNfaHR0cF90ZXN0KHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CmluZGV4IDM5NGIwZmU5MGU1YmE5Mjgw
NTQ4YjdiMWRhZDdjMTFhOTFmNGNiMjAuLmFhZDJiMzA4NzI4NDAyMjEwZjEyNDE0ZjBmZjA1NWUw
ZDM4YTc2OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpAQCAtMzQs
MTAgKzM0LDggQEAgaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5jb250cm9sbGVycy5tYW5hZ2VyIGltcG9ydCBNYW5hZ2VyLCBpbnRlcnByZXRfdGVzdF9m
YWlsdXJlcywgc3VtbWFyaXplX3Jlc3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNv
bnRyb2xsZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFnZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBUZXN0UnVuUmVzdWx0cwogZnJvbSB3
ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5t
b2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKQEAgLTkwLDEwNCArODgsMyBAQCBjbGFzcyBNYW5h
Z2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJ1bl9yZXN1bHRzID0gVGVzdFJ1
blJlc3VsdHMoZXhwZWN0YXRpb25zLCBsZW4odGVzdHMpKQogICAgICAgICBtYW5hZ2VyID0gZ2V0
X21hbmFnZXIoKQogICAgICAgICBtYW5hZ2VyLl9sb29rX2Zvcl9uZXdfY3Jhc2hfbG9ncyhydW5f
cmVzdWx0cywgdGltZS50aW1lKCkpCi0KLQotY2xhc3MgU3VtbWFyaXplUmVzdWx0c1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBob3N0ID0g
TW9ja0hvc3QoKQotICAgICAgICBzZWxmLnBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9y
dF9uYW1lPSd0ZXN0JykKLQotICAgIGRlZiB0ZXN0X2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKHNl
bGYpOgotICAgICAgICB0ZXN0X2RpY3QgPSBpbnRlcnByZXRfdGVzdF9mYWlsdXJlcyhbdGVzdF9m
YWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2goZGlmZl9wZXJjZW50PTAuNDIpXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2RpY3RbJ2ltYWdlX2RpZmZfcGVyY2VudCddLCAw
LjQyKQotCi0gICAgICAgIHRlc3RfZGljdCA9IGludGVycHJldF90ZXN0X2ZhaWx1cmVzKFt0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2goc2VsZi5wb3J0LmFic3BhdGhfZm9yX3Rl
c3QoJ2Zvby9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnKSldKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ2ltYWdlX2RpZmZfcGVyY2VudCcgaW4gdGVzdF9kaWN0KQotCi0gICAgICAgIHRlc3RfZGlj
dCA9IGludGVycHJldF90ZXN0X2ZhaWx1cmVzKFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0
TWlzbWF0Y2hEaWROb3RPY2N1cihzZWxmLnBvcnQuYWJzcGF0aF9mb3JfdGVzdCgnZm9vL3JlZnRl
c3QtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHRlc3RfZGljdCksIDApCi0KLSAgICAgICAgdGVzdF9kaWN0ID0gaW50ZXJwcmV0X3Rlc3Rf
ZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdBdWRpbygpXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdpc19taXNzaW5nX2F1ZGlvJyBpbiB0ZXN0X2RpY3QpCi0KLSAgICAg
ICAgdGVzdF9kaWN0ID0gaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMuRmFp
bHVyZU1pc3NpbmdSZXN1bHQoKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaXNfbWlzc2lu
Z190ZXh0JyBpbiB0ZXN0X2RpY3QpCi0KLSAgICAgICAgdGVzdF9kaWN0ID0gaW50ZXJwcmV0X3Rl
c3RfZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZSgpXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCdpc19taXNzaW5nX2ltYWdlJyBpbiB0ZXN0X2RpY3QpCi0KLSAg
ICAgICAgdGVzdF9kaWN0ID0gaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMu
RmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaXNf
bWlzc2luZ19pbWFnZScgaW4gdGVzdF9kaWN0KQotCi0gICAgZGVmIGdldF9yZXN1bHQoc2VsZiwg
dGVzdF9uYW1lLCByZXN1bHRfdHlwZT10ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCBydW5fdGltZT0w
KToKLSAgICAgICAgZmFpbHVyZXMgPSBbXQotICAgICAgICBpZiByZXN1bHRfdHlwZSA9PSB0ZXN0
X2V4cGVjdGF0aW9ucy5USU1FT1VUOgotICAgICAgICAgICAgZmFpbHVyZXMgPSBbdGVzdF9mYWls
dXJlcy5GYWlsdXJlVGltZW91dCgpXQotICAgICAgICBlbGlmIHJlc3VsdF90eXBlID09IHRlc3Rf
ZXhwZWN0YXRpb25zLkNSQVNIOgotICAgICAgICAgICAgZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJl
cy5GYWlsdXJlQ3Jhc2goKV0KLSAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0
KHRlc3RfbmFtZSwgZmFpbHVyZXM9ZmFpbHVyZXMsIHRlc3RfcnVuX3RpbWU9cnVuX3RpbWUpCi0K
LSAgICBkZWYgZ2V0X3J1bl9yZXN1bHRzKHNlbGYsIHBvcnQsIHRlc3RfbmFtZXMsIGV4cGVjdGF0
aW9uc19zdHIpOgotICAgICAgICBwb3J0LmV4cGVjdGF0aW9uc19kaWN0ID0gbGFtYmRhOiB7Jyc6
IGV4cGVjdGF0aW9uc19zdHJ9Ci0gICAgICAgIGV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRp
b25zLlRlc3RFeHBlY3RhdGlvbnMocG9ydCwgdGVzdF9uYW1lcykKLSAgICAgICAgcmV0dXJuIHRl
c3RfbmFtZXMsIFRlc3RSdW5SZXN1bHRzKGV4cGVjdGF0aW9ucywgbGVuKHRlc3RfbmFtZXMpKSwg
ZXhwZWN0YXRpb25zCi0KLSAgICAjIEZJWE1FOiBVc2UgdGhpcyB0byB0ZXN0IG1vcmUgb2Ygc3Vt
bWFyaXplX3Jlc3VsdHMuIFRoaXMgd2FzIG1vdmVkIGZyb20gcHJpbnRpbmdfdW5pdHRlc3QucHku
Ci0gICAgZGVmIHN1bW1hcml6ZWRfcmVzdWx0cyhzZWxmLCBwb3J0LCBleHBlY3RlZCwgcGFzc2lu
ZywgZmxha3ksIGV4dHJhX3Rlc3RzPVtdLCBleHRyYV9leHBlY3RhdGlvbnM9Tm9uZSk6Ci0gICAg
ICAgIHRlc3RzID0gWydwYXNzZXMvdGV4dC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVv
dXQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVj
dGVkL3dvbnRmaXguaHRtbCddCi0gICAgICAgIGlmIGV4dHJhX3Rlc3RzOgotICAgICAgICAgICAg
dGVzdHMuZXh0ZW5kKGV4dHJhX3Rlc3RzKQotCi0gICAgICAgIGV4cGVjdGF0aW9ucyA9ICcnCi0g
ICAgICAgIGlmIGV4dHJhX2V4cGVjdGF0aW9uczoKLSAgICAgICAgICAgIGV4cGVjdGF0aW9ucyAr
PSBleHRyYV9leHBlY3RhdGlvbnMKLQotICAgICAgICB0ZXN0X2lzX3Nsb3cgPSBGYWxzZQotICAg
ICAgICBwYXRocywgaW5pdGlhbF9yZXN1bHRzLCBleHAgPSBzZWxmLmdldF9ydW5fcmVzdWx0cyhw
b3J0LCB0ZXN0cywgZXhwZWN0YXRpb25zKQotICAgICAgICBpZiBleHBlY3RlZDoKLSAgICAgICAg
ICAgIGluaXRpYWxfcmVzdWx0cy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdwYXNzZXMvdGV4dC5odG1s
JywgdGVzdF9leHBlY3RhdGlvbnMuUEFTUyksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0gICAg
ICAgICAgICBpbml0aWFsX3Jlc3VsdHMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvdGltZW91dC5odG1sJywgdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVCksIGV4cGVjdGVk
LCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMuYWRkKHNlbGYuZ2V0
X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIHRlc3RfZXhwZWN0YXRpb25z
LkNSQVNIKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKLSAgICAgICAgZWxpZiBwYXNzaW5nOgot
ICAgICAgICAgICAgaW5pdGlhbF9yZXN1bHRzLmFkZChzZWxmLmdldF9yZXN1bHQoJ3Bhc3Nlcy90
ZXh0Lmh0bWwnKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKLSAgICAgICAgICAgIGluaXRpYWxf
cmVzdWx0cy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0
bWwnKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKLSAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0
cy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyksIGV4
cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbml0aWFs
X3Jlc3VsdHMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcsIHRlc3RfZXhw
ZWN0YXRpb25zLlRJTUVPVVQpLCBleHBlY3RlZCwgdGVzdF9pc19zbG93KQotICAgICAgICAgICAg
aW5pdGlhbF9yZXN1bHRzLmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCcsIHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIKSwgZXhwZWN0ZWQsIHRlc3RfaXNf
c2xvdykKLSAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0cy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdm
YWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVCks
IGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0KLSAgICAgICAgZm9yIHRlc3QgaW4gZXh0cmFfdGVz
dHM6Ci0gICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCh0ZXN0
LCB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0KLSAg
ICAgICAgaWYgZmxha3k6Ci0gICAgICAgICAgICBwYXRocywgcmV0cnlfcmVzdWx0cywgZXhwID0g
c2VsZi5nZXRfcnVuX3Jlc3VsdHMocG9ydCwgdGVzdHMsIGV4cGVjdGF0aW9ucykKLSAgICAgICAg
ICAgIHJldHJ5X3Jlc3VsdHMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcp
LCBUcnVlLCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgICAgICByZXRyeV9yZXN1bHRzLmFkZChzZWxm
LmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcpLCBUcnVlLCB0ZXN0
X2lzX3Nsb3cpCi0gICAgICAgICAgICByZXRyeV9yZXN1bHRzLmFkZChzZWxmLmdldF9yZXN1bHQo
J2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwgVHJ1ZSwgdGVzdF9pc19zbG93KQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgcmV0cnlfcmVzdWx0cyA9IE5vbmUKLQotICAgICAgICBy
ZXR1cm4gc3VtbWFyaXplX3Jlc3VsdHMocG9ydCwgZXhwLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5
X3Jlc3VsdHMpCi0KLSAgICBkZWYgdGVzdF9ub19zdm5fcmV2aXNpb24oc2VsZik6Ci0gICAgICAg
IGhvc3QgPSBNb2NrSG9zdChpbml0aWFsaXplX3NjbV9ieV9kZWZhdWx0PUZhbHNlKQotICAgICAg
ICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0JykKLSAgICAgICAgc3VtbWFyaXpl
ZF9yZXN1bHRzID0gc2VsZi5zdW1tYXJpemVkX3Jlc3VsdHMocG9ydCwgZXhwZWN0ZWQ9RmFsc2Us
IHBhc3Npbmc9RmFsc2UsIGZsYWt5PUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Jl
dmlzaW9uJyBub3QgaW4gc3VtbWFyaXplZF9yZXN1bHRzKQotCi0gICAgZGVmIHRlc3Rfc3ZuX3Jl
dmlzaW9uKHNlbGYpOgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoaW5pdGlhbGl6ZV9zY21fYnlf
ZGVmYXVsdD1GYWxzZSkKLSAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVz
dCcpCi0gICAgICAgIHBvcnQuX29wdGlvbnMuYnVpbGRlcl9uYW1lID0gJ2R1bW15IGJ1aWxkZXIn
Ci0gICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0cyA9IHNlbGYuc3VtbWFyaXplZF9yZXN1bHRzKHBv
cnQsIGV4cGVjdGVkPUZhbHNlLCBwYXNzaW5nPUZhbHNlLCBmbGFreT1GYWxzZSkKLSAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbHMoc3VtbWFyaXplZF9yZXN1bHRzWydyZXZpc2lvbiddLCAnJykK
LQotICAgIGRlZiB0ZXN0X3N1bW1hcml6ZWRfcmVzdWx0c193b250Zml4KHNlbGYpOgotICAgICAg
ICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0
KCd0ZXN0JykKLSAgICAgICAgcG9ydC5fb3B0aW9ucy5idWlsZGVyX25hbWUgPSAnZHVtbXkgYnVp
bGRlcicKLSAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5fZmls
ZXN5c3RlbS5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAiZmFpbHVyZXMvZXhwZWN0ZWQv
d29udGZpeC5odG1sIiksICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKLSAgICAgICAgc3VtbWFyaXpl
ZF9yZXN1bHRzID0gc2VsZi5zdW1tYXJpemVkX3Jlc3VsdHMocG9ydCwgZXhwZWN0ZWQ9RmFsc2Us
IHBhc3Npbmc9RmFsc2UsIGZsYWt5PUZhbHNlLCBleHRyYV90ZXN0cz1bJ2ZhaWx1cmVzL2V4cGVj
dGVkL3dvbnRmaXguaHRtbCddLCBleHRyYV9leHBlY3RhdGlvbnM9J0J1Zyh4KSBmYWlsdXJlcy9l
eHBlY3RlZC93b250Zml4Lmh0bWwgWyBXb250Rml4IF1cbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzdW1tYXJpemVkX3Jlc3VsdHNbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11bJ2V4cGVjdGVkJ11b
J3dvbnRmaXguaHRtbCddWyd3b250Zml4J10pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5Cmlu
ZGV4IDk2NWU2YzUwNTQ4MmZjYzhlMDZjMGYyMDRjZDA5ZjIyZjc1YWM5YWMuLmYwYjdmYTk3ZmZj
MmJlNTBiMTIwY2JjY2I5MDM1MzRjYzAzZjVlM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRz
LnB5CkBAIC0yNyw3ICsyNywxMyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9y
dCBUZXN0RXhwZWN0YXRpb25zLCBTS0lQLCBDUkFTSCwgVElNRU9VVAoraW1wb3J0IGxvZ2dpbmcK
KworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0
aW9ucworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1
cmVzCisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIFRl
c3RSdW5SZXN1bHRzKG9iamVjdCk6CkBAIC00OCw5ICs1NCw5IEBAIGNsYXNzIFRlc3RSdW5SZXN1
bHRzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZmFpbHVyZXNfYnlfbmFtZSA9IHt9CiAgICAgICAg
IHNlbGYudG90YWxfZmFpbHVyZXMgPSAwCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfc2tpcHMgPSAw
Ci0gICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9O
Uy52YWx1ZXMoKToKKyAgICAgICAgZm9yIGV4cGVjdGF0aW9uIGluIHRlc3RfZXhwZWN0YXRpb25z
LlRlc3RFeHBlY3RhdGlvbnMuRVhQRUNUQVRJT05TLnZhbHVlcygpOgogICAgICAgICAgICAgc2Vs
Zi50ZXN0c19ieV9leHBlY3RhdGlvbltleHBlY3RhdGlvbl0gPSBzZXQoKQotICAgICAgICBmb3Ig
dGltZWxpbmUgaW4gVGVzdEV4cGVjdGF0aW9ucy5USU1FTElORVMudmFsdWVzKCk6CisgICAgICAg
IGZvciB0aW1lbGluZSBpbiB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zLlRJTUVM
SU5FUy52YWx1ZXMoKToKICAgICAgICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmVbdGltZWxp
bmVdID0gZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3RpbWVsaW5lKHRpbWVsaW5lKQogICAg
ICAgICBzZWxmLnNsb3dfdGVzdHMgPSBzZXQoKQogICAgICAgICBzZWxmLmludGVycnVwdGVkID0g
RmFsc2UKQEAgLTU4LDcgKzY0LDcgQEAgY2xhc3MgVGVzdFJ1blJlc3VsdHMob2JqZWN0KToKICAg
ICBkZWYgYWRkKHNlbGYsIHRlc3RfcmVzdWx0LCBleHBlY3RlZCwgdGVzdF9pc19zbG93KToKICAg
ICAgICAgc2VsZi50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X3Jlc3VsdC50eXBlXS5hZGQodGVz
dF9yZXN1bHQudGVzdF9uYW1lKQogICAgICAgICBzZWxmLnJlc3VsdHNfYnlfbmFtZVt0ZXN0X3Jl
c3VsdC50ZXN0X25hbWVdID0gdGVzdF9yZXN1bHQKLSAgICAgICAgaWYgdGVzdF9yZXN1bHQudHlw
ZSAhPSBTS0lQOgorICAgICAgICBpZiB0ZXN0X3Jlc3VsdC50eXBlICE9IHRlc3RfZXhwZWN0YXRp
b25zLlNLSVA6CiAgICAgICAgICAgICBzZWxmLmFsbF9yZXN1bHRzLmFwcGVuZCh0ZXN0X3Jlc3Vs
dCkKICAgICAgICAgc2VsZi5yZW1haW5pbmcgLT0gMQogICAgICAgICBpZiBsZW4odGVzdF9yZXN1
bHQuZmFpbHVyZXMpOgpAQCAtNjYsMTYgKzcyLDE3OSBAQCBjbGFzcyBUZXN0UnVuUmVzdWx0cyhv
YmplY3QpOgogICAgICAgICAgICAgc2VsZi5mYWlsdXJlc19ieV9uYW1lW3Rlc3RfcmVzdWx0LnRl
c3RfbmFtZV0gPSB0ZXN0X3Jlc3VsdC5mYWlsdXJlcwogICAgICAgICBpZiBleHBlY3RlZDoKICAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgKz0gMQotICAgICAgICAgICAgaWYgdGVzdF9yZXN1bHQu
dHlwZSA9PSBTS0lQOgorICAgICAgICAgICAgaWYgdGVzdF9yZXN1bHQudHlwZSA9PSB0ZXN0X2V4
cGVjdGF0aW9ucy5TS0lQOgogICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfc2tpcHMgKz0g
MQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Jlc3VsdHNfYnlf
bmFtZVt0ZXN0X3Jlc3VsdC50ZXN0X25hbWVdID0gdGVzdF9yZXN1bHQKICAgICAgICAgICAgIHNl
bGYudW5leHBlY3RlZCArPSAxCiAgICAgICAgICAgICBpZiBsZW4odGVzdF9yZXN1bHQuZmFpbHVy
ZXMpOgogICAgICAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9mYWlsdXJlcyArPSAxCi0gICAg
ICAgICAgICBpZiB0ZXN0X3Jlc3VsdC50eXBlID09IENSQVNIOgorICAgICAgICAgICAgaWYgdGVz
dF9yZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSDoKICAgICAgICAgICAgICAg
ICBzZWxmLnVuZXhwZWN0ZWRfY3Jhc2hlcyArPSAxCi0gICAgICAgICAgICBlbGlmIHRlc3RfcmVz
dWx0LnR5cGUgPT0gVElNRU9VVDoKKyAgICAgICAgICAgIGVsaWYgdGVzdF9yZXN1bHQudHlwZSA9
PSB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUOgogICAgICAgICAgICAgICAgIHNlbGYudW5leHBl
Y3RlZF90aW1lb3V0cyArPSAxCiAgICAgICAgIGlmIHRlc3RfaXNfc2xvdzoKICAgICAgICAgICAg
IHNlbGYuc2xvd190ZXN0cy5hZGQodGVzdF9yZXN1bHQudGVzdF9uYW1lKQorCisKK2NsYXNzIFJ1
bkRldGFpbHMob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhpdF9jb2RlLCBzdW1t
YXJpemVkX3Jlc3VsdHM9Tm9uZSwgaW5pdGlhbF9yZXN1bHRzPU5vbmUsIHJldHJ5X3Jlc3VsdHM9
Tm9uZSk6CisgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gZXhpdF9jb2RlCisgICAgICAgIHNlbGYu
c3VtbWFyaXplZF9yZXN1bHRzID0gc3VtbWFyaXplZF9yZXN1bHRzCisgICAgICAgIHNlbGYuaW5p
dGlhbF9yZXN1bHRzID0gaW5pdGlhbF9yZXN1bHRzCisgICAgICAgIHNlbGYucmV0cnlfcmVzdWx0
cyA9IHJldHJ5X3Jlc3VsdHMKKworCitkZWYgX2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKGZhaWx1
cmVzKToKKyAgICB0ZXN0X2RpY3QgPSB7fQorICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlwZShmYWls
dXJlKSBmb3IgZmFpbHVyZSBpbiBmYWlsdXJlc10KKyAgICAjIEZJWE1FOiBnZXQgcmlkIG9mIGFs
bCB0aGlzIGlzXyogdmFsdWVzIG9uY2UgdGhlcmUgaXMgYSAxOjEgbWFwIGJldHdlZW4KKyAgICAj
IFRlc3RGYWlsdXJlIHR5cGUgYW5kIHRlc3RfZXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OLgorICAg
IGlmIHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdBdWRpbyBpbiBmYWlsdXJlX3R5cGVzOgor
ICAgICAgICB0ZXN0X2RpY3RbJ2lzX21pc3NpbmdfYXVkaW8nXSA9IFRydWUKKworICAgIGlmIHRl
c3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQgaW4gZmFpbHVyZV90eXBlczoKKyAgICAg
ICAgdGVzdF9kaWN0Wydpc19taXNzaW5nX3RleHQnXSA9IFRydWUKKworICAgIGlmIHRlc3RfZmFp
bHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZSBpbiBmYWlsdXJlX3R5cGVzIG9yIHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2ggaW4gZmFpbHVyZV90eXBlczoKKyAgICAgICAgdGVz
dF9kaWN0Wydpc19taXNzaW5nX2ltYWdlJ10gPSBUcnVlCisKKyAgICBmb3IgZmFpbHVyZSBpbiBm
YWlsdXJlczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVJbWFnZUhhc2hNaXNtYXRjaCkgb3IgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gpOgorICAgICAgICAgICAgdGVzdF9kaWN0WydpbWFn
ZV9kaWZmX3BlcmNlbnQnXSA9IGZhaWx1cmUuZGlmZl9wZXJjZW50CisKKyAgICByZXR1cm4gdGVz
dF9kaWN0CisKKworZGVmIHN1bW1hcml6ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMs
IGluaXRpYWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cyk6CisgICAgIiIiUmV0dXJucyBhIGRpY3Rp
b25hcnkgY29udGFpbmluZyBhIHN1bW1hcnkgb2YgdGhlIHRlc3QgcnVucywgd2l0aCB0aGUgZm9s
bG93aW5nIGZpZWxkczoKKyAgICAgICAgJ3ZlcnNpb24nOiBhIHZlcnNpb24gaW5kaWNhdG9yCisg
ICAgICAgICdmaXhhYmxlJzogVGhlIG51bWJlciBvZiBmaXhhYmxlIHRlc3RzIChOT1cgLSBQQVNT
KQorICAgICAgICAnc2tpcHBlZCc6IFRoZSBudW1iZXIgb2Ygc2tpcHBlZCB0ZXN0cyAoTk9XICYg
U0tJUFBFRCkKKyAgICAgICAgJ251bV9yZWdyZXNzaW9ucyc6IFRoZSBudW1iZXIgb2Ygbm9uLWZs
YWt5IGZhaWx1cmVzCisgICAgICAgICdudW1fZmxha3knOiBUaGUgbnVtYmVyIG9mIGZsYWt5IGZh
aWx1cmVzCisgICAgICAgICdudW1fbWlzc2luZyc6IFRoZSBudW1iZXIgb2YgdGVzdHMgd2l0aCBt
aXNzaW5nIHJlc3VsdHMKKyAgICAgICAgJ251bV9wYXNzZXMnOiBUaGUgbnVtYmVyIG9mIHVuZXhw
ZWN0ZWQgcGFzc2VzCisgICAgICAgICd0ZXN0cyc6IGEgZGljdCBvZiB0ZXN0cyAtPiB7J2V4cGVj
dGVkJzogJy4uLicsICdhY3R1YWwnOiAnLi4uJ30KKyAgICAiIiIKKyAgICByZXN1bHRzID0ge30K
KyAgICByZXN1bHRzWyd2ZXJzaW9uJ10gPSAzCisKKyAgICB0YmUgPSBpbml0aWFsX3Jlc3VsdHMu
dGVzdHNfYnlfZXhwZWN0YXRpb24KKyAgICB0YnQgPSBpbml0aWFsX3Jlc3VsdHMudGVzdHNfYnlf
dGltZWxpbmUKKyAgICByZXN1bHRzWydmaXhhYmxlJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0YXRp
b25zLk5PV10gLSB0YmVbdGVzdF9leHBlY3RhdGlvbnMuUEFTU10pCisgICAgcmVzdWx0c1snc2tp
cHBlZCddID0gbGVuKHRidFt0ZXN0X2V4cGVjdGF0aW9ucy5OT1ddICYgdGJlW3Rlc3RfZXhwZWN0
YXRpb25zLlNLSVBdKQorCisgICAgbnVtX3Bhc3NlcyA9IDAKKyAgICBudW1fZmxha3kgPSAwCisg
ICAgbnVtX21pc3NpbmcgPSAwCisgICAgbnVtX3JlZ3Jlc3Npb25zID0gMAorICAgIGtleXdvcmRz
ID0ge30KKyAgICBmb3IgZXhwZWNhdGlvbl9zdHJpbmcsIGV4cGVjdGF0aW9uX2VudW0gaW4gdGVz
dF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucy5FWFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6
CisgICAgICAgIGtleXdvcmRzW2V4cGVjdGF0aW9uX2VudW1dID0gZXhwZWNhdGlvbl9zdHJpbmcu
dXBwZXIoKQorCisgICAgZm9yIG1vZGlmaWVyX3N0cmluZywgbW9kaWZpZXJfZW51bSBpbiB0ZXN0
X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zLk1PRElGSUVSUy5pdGVyaXRlbXMoKToKKyAg
ICAgICAga2V5d29yZHNbbW9kaWZpZXJfZW51bV0gPSBtb2RpZmllcl9zdHJpbmcudXBwZXIoKQor
CisgICAgdGVzdHMgPSB7fQorCisgICAgZm9yIHRlc3RfbmFtZSwgcmVzdWx0IGluIGluaXRpYWxf
cmVzdWx0cy5yZXN1bHRzX2J5X25hbWUuaXRlcml0ZW1zKCk6CisgICAgICAgICMgTm90ZSB0aGF0
IGlmIGEgdGVzdCBjcmFzaGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdlIGlnbm9yZQorICAgICAg
ICAjIHdoZXRoZXIgb3Igbm90IGl0IGNyYXNoZWQgd2hlbiB3ZSByZXRyaWVkIGl0IChpZiB3ZSBy
ZXRyaWVkIGl0KSwKKyAgICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVyIHRoZSByZXN1bHQgbm90
IGZsYWt5LgorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25z
X3N0cmluZyh0ZXN0X25hbWUpCisgICAgICAgIHJlc3VsdF90eXBlID0gcmVzdWx0LnR5cGUKKyAg
ICAgICAgYWN0dWFsID0gW2tleXdvcmRzW3Jlc3VsdF90eXBlXV0KKworICAgICAgICBpZiByZXN1
bHRfdHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQOgorICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICB0ZXN0X2RpY3QgPSB7fQorICAgICAgICBpZiByZXN1bHQuaGFzX3N0ZGVycjoK
KyAgICAgICAgICAgIHRlc3RfZGljdFsnaGFzX3N0ZGVyciddID0gVHJ1ZQorCisgICAgICAgIGlm
IHJlc3VsdC5yZWZ0ZXN0X3R5cGU6CisgICAgICAgICAgICB0ZXN0X2RpY3QudXBkYXRlKHJlZnRl
c3RfdHlwZT1saXN0KHJlc3VsdC5yZWZ0ZXN0X3R5cGUpKQorCisgICAgICAgIGlmIGV4cGVjdGF0
aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9uYW1lLCB0ZXN0X2V4cGVjdGF0aW9ucy5XT05URklYKToK
KyAgICAgICAgICAgIHRlc3RfZGljdFsnd29udGZpeCddID0gVHJ1ZQorCisgICAgICAgIGlmIHJl
c3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6CisgICAgICAgICAgICBudW1fcGFz
c2VzICs9IDEKKyAgICAgICAgICAgICMgRklYTUU6IGluY2x1ZGUgcGFzc2luZyB0ZXN0cyB0aGF0
IGhhdmUgc3RkZXJyIG91dHB1dC4KKyAgICAgICAgICAgIGlmIGV4cGVjdGVkID09ICdQQVNTJzoK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbGlmIHJlc3VsdF90eXBlID09IHRl
c3RfZXhwZWN0YXRpb25zLkNSQVNIOgorICAgICAgICAgICAgaWYgdGVzdF9uYW1lIGluIGluaXRp
YWxfcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZToKKyAgICAgICAgICAgICAgICBu
dW1fcmVncmVzc2lvbnMgKz0gMQorICAgICAgICBlbGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhw
ZWN0YXRpb25zLk1JU1NJTkc6CisgICAgICAgICAgICBpZiB0ZXN0X25hbWUgaW4gaW5pdGlhbF9y
ZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lOgorICAgICAgICAgICAgICAgIG51bV9t
aXNzaW5nICs9IDEKKyAgICAgICAgZWxpZiB0ZXN0X25hbWUgaW4gaW5pdGlhbF9yZXN1bHRzLnVu
ZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lOgorICAgICAgICAgICAgaWYgcmV0cnlfcmVzdWx0cyBh
bmQgdGVzdF9uYW1lIG5vdCBpbiByZXRyeV9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9u
YW1lOgorICAgICAgICAgICAgICAgIGFjdHVhbC5leHRlbmQoZXhwZWN0YXRpb25zLmdldF9leHBl
Y3RhdGlvbnNfc3RyaW5nKHRlc3RfbmFtZSkuc3BsaXQoIiAiKSkKKyAgICAgICAgICAgICAgICBu
dW1fZmxha3kgKz0gMQorICAgICAgICAgICAgZWxpZiByZXRyeV9yZXN1bHRzOgorICAgICAgICAg
ICAgICAgIHJldHJ5X3Jlc3VsdF90eXBlID0gcmV0cnlfcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3Vs
dHNfYnlfbmFtZVt0ZXN0X25hbWVdLnR5cGUKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRfdHlw
ZSAhPSByZXRyeV9yZXN1bHRfdHlwZToKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmFwcGVu
ZChrZXl3b3Jkc1tyZXRyeV9yZXN1bHRfdHlwZV0pCisgICAgICAgICAgICAgICAgICAgIG51bV9m
bGFreSArPSAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbnVt
X3JlZ3Jlc3Npb25zICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbnVt
X3JlZ3Jlc3Npb25zICs9IDEKKworICAgICAgICB0ZXN0X2RpY3RbJ2V4cGVjdGVkJ10gPSBleHBl
Y3RlZAorICAgICAgICB0ZXN0X2RpY3RbJ2FjdHVhbCddID0gIiAiLmpvaW4oYWN0dWFsKQorCisg
ICAgICAgIHRlc3RfZGljdC51cGRhdGUoX2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKHJlc3VsdC5m
YWlsdXJlcykpCisKKyAgICAgICAgIyBTdG9yZSB0ZXN0IGhpZXJhcmNoaWNhbGx5IGJ5IGRpcmVj
dG9yeS4gZS5nLgorICAgICAgICAjIGZvby9iYXIvYmF6Lmh0bWw6IHRlc3RfZGljdAorICAgICAg
ICAjIGZvby9iYXIvYmF6MS5odG1sOiB0ZXN0X2RpY3QKKyAgICAgICAgIworICAgICAgICAjIGJl
Y29tZXMKKyAgICAgICAgIyBmb286IHsKKyAgICAgICAgIyAgICAgYmFyOiB7CisgICAgICAgICMg
ICAgICAgICBiYXouaHRtbDogdGVzdF9kaWN0LAorICAgICAgICAjICAgICAgICAgYmF6MS5odG1s
OiB0ZXN0X2RpY3QKKyAgICAgICAgIyAgICAgfQorICAgICAgICAjIH0KKyAgICAgICAgcGFydHMg
PSB0ZXN0X25hbWUuc3BsaXQoJy8nKQorICAgICAgICBjdXJyZW50X21hcCA9IHRlc3RzCisgICAg
ICAgIGZvciBpLCBwYXJ0IGluIGVudW1lcmF0ZShwYXJ0cyk6CisgICAgICAgICAgICBpZiBpID09
IChsZW4ocGFydHMpIC0gMSk6CisgICAgICAgICAgICAgICAgY3VycmVudF9tYXBbcGFydF0gPSB0
ZXN0X2RpY3QKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgcGFydCBub3Qg
aW4gY3VycmVudF9tYXA6CisgICAgICAgICAgICAgICAgY3VycmVudF9tYXBbcGFydF0gPSB7fQor
ICAgICAgICAgICAgY3VycmVudF9tYXAgPSBjdXJyZW50X21hcFtwYXJ0XQorCisgICAgcmVzdWx0
c1sndGVzdHMnXSA9IHRlc3RzCisgICAgcmVzdWx0c1snbnVtX3Bhc3NlcyddID0gbnVtX3Bhc3Nl
cworICAgIHJlc3VsdHNbJ251bV9mbGFreSddID0gbnVtX2ZsYWt5CisgICAgcmVzdWx0c1snbnVt
X21pc3NpbmcnXSA9IG51bV9taXNzaW5nCisgICAgcmVzdWx0c1snbnVtX3JlZ3Jlc3Npb25zJ10g
PSBudW1fcmVncmVzc2lvbnMKKyAgICByZXN1bHRzWyd1c2VzX2V4cGVjdGF0aW9uc19maWxlJ10g
PSBwb3J0X29iai51c2VzX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQorICAgIHJlc3VsdHNbJ2lu
dGVycnVwdGVkJ10gPSBpbml0aWFsX3Jlc3VsdHMuaW50ZXJydXB0ZWQgICMgRG9lcyByZXN1bHRz
Lmh0bWwgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY29tcHV0ZSB0aGlzIGl0c2VsZj8gKGJ5
IGNoZWNraW5nIHRvdGFsIG51bWJlciBvZiByZXN1bHRzIHZzLiB0b3RhbCBudW1iZXIgb2YgdGVz
dHM/KQorICAgIHJlc3VsdHNbJ2xheW91dF90ZXN0c19kaXInXSA9IHBvcnRfb2JqLmxheW91dF90
ZXN0c19kaXIoKQorICAgIHJlc3VsdHNbJ2hhc193ZGlmZiddID0gcG9ydF9vYmoud2RpZmZfYXZh
aWxhYmxlKCkKKyAgICByZXN1bHRzWydoYXNfcHJldHR5X3BhdGNoJ10gPSBwb3J0X29iai5wcmV0
dHlfcGF0Y2hfYXZhaWxhYmxlKCkKKyAgICByZXN1bHRzWydwaXhlbF90ZXN0c19lbmFibGVkJ10g
PSBwb3J0X29iai5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpCisKKyAgICB0cnk6CisgICAgICAg
ICMgV2Ugb25seSB1c2UgdGhlIHN2biByZXZpc2lvbiBmb3IgdXNpbmcgdHJhYyBsaW5rcyBpbiB0
aGUgcmVzdWx0cy5odG1sIGZpbGUsCisgICAgICAgICMgRG9uJ3QgZG8gdGhpcyBieSBkZWZhdWx0
IHNpbmNlIGl0IHRha2VzID4xMDBtcy4KKyAgICAgICAgIyBGSVhNRTogRG8gd2UgcmVhbGx5IG5l
ZWQgdG8gcG9wdWxhdGUgdGhpcyBib3RoIGhlcmUgYW5kIGluIHRoZSBqc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yPworICAgICAgICBpZiBwb3J0X29iai5nZXRfb3B0aW9uKCJidWlsZGVyX25hbWUiKToK
KyAgICAgICAgICAgIHBvcnRfb2JqLmhvc3QuaW5pdGlhbGl6ZV9zY20oKQorICAgICAgICAgICAg
cmVzdWx0c1sncmV2aXNpb24nXSA9IHBvcnRfb2JqLmhvc3Quc2NtKCkuaGVhZF9zdm5fcmV2aXNp
b24oKQorICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgIF9sb2cud2FybigiRmFpbGVk
IHRvIGRldGVybWluZSBzdm4gcmV2aXNpb24gZm9yIGNoZWNrb3V0IChjd2Q6ICVzLCB3ZWJraXRf
YmFzZTogJXMpLCBsZWF2aW5nICdyZXZpc2lvbicga2V5IGJsYW5rIGluIGZ1bGxfcmVzdWx0cy5q
c29uLlxuJXMiICUgKHBvcnRfb2JqLl9maWxlc3lzdGVtLmdldGN3ZCgpLCBwb3J0X29iai5wYXRo
X2Zyb21fd2Via2l0X2Jhc2UoKSwgZSkpCisgICAgICAgICMgSGFuZGxlIGNhc2VzIHdoZXJlIHdl
J3JlIHJ1bm5pbmcgb3V0c2lkZSBvZiB2ZXJzaW9uIGNvbnRyb2wuCisgICAgICAgIGltcG9ydCB0
cmFjZWJhY2sKKyAgICAgICAgX2xvZy5kZWJ1ZygnRmFpbGVkIHRvIGxlYXJuIGhlYWQgc3ZuIHJl
dmlzaW9uOicpCisgICAgICAgIF9sb2cuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAg
ICAgICAgcmVzdWx0c1sncmV2aXNpb24nXSA9ICIiCisKKyAgICByZXR1cm4gcmVzdWx0cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
cnVuX3Jlc3VsdHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzM3
YzU3YjA1ZjZlZjU1OTIxZjk0NmMzNTQyZjYyZmRhOTM4OTgwCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3Vs
dHNfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwxMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2Nr
SG9zdAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVj
dGF0aW9ucworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2Zh
aWx1cmVzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVz
dWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9y
ZXN1bHRzCisKKworZGVmIGdldF9yZXN1bHQodGVzdF9uYW1lLCByZXN1bHRfdHlwZT10ZXN0X2V4
cGVjdGF0aW9ucy5QQVNTLCBydW5fdGltZT0wKToKKyAgICBmYWlsdXJlcyA9IFtdCisgICAgaWYg
cmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVDoKKyAgICAgICAgZmFpbHVy
ZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgpXQorICAgIGVsaWYgcmVzdWx0X3R5
cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQVVESU86CisgICAgICAgIGZhaWx1cmVzID0gW3Rlc3Rf
ZmFpbHVyZXMuRmFpbHVyZUF1ZGlvTWlzbWF0Y2goKV0KKyAgICBlbGlmIHJlc3VsdF90eXBlID09
IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIOgorICAgICAgICBmYWlsdXJlcyA9IFt0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVDcmFzaCgpXQorICAgIHJldHVybiB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0
ZXN0X25hbWUsIGZhaWx1cmVzPWZhaWx1cmVzLCB0ZXN0X3J1bl90aW1lPXJ1bl90aW1lKQorCisK
K2RlZiBydW5fcmVzdWx0cyhwb3J0KToKKyAgICB0ZXN0cyA9IFsncGFzc2VzL3RleHQuaHRtbCcs
ICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jh
c2guaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9oYW5nLmh0bWwnLAorICAgICAgICAgICAgICdm
YWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sJ10KKyAgICBleHBlY3RhdGlvbnMgPSB0ZXN0X2V4
cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKHBvcnQsIHRlc3RzKQorICAgIHJldHVybiB0ZXN0
X3J1bl9yZXN1bHRzLlRlc3RSdW5SZXN1bHRzKGV4cGVjdGF0aW9ucywgbGVuKHRlc3RzKSkKKwor
CitkZWYgc3VtbWFyaXplZF9yZXN1bHRzKHBvcnQsIGV4cGVjdGVkLCBwYXNzaW5nLCBmbGFreSk6
CisgICAgdGVzdF9pc19zbG93ID0gRmFsc2UKKworICAgIGluaXRpYWxfcmVzdWx0cyA9IHJ1bl9y
ZXN1bHRzKHBvcnQpCisgICAgaWYgZXhwZWN0ZWQ6CisgICAgICAgIGluaXRpYWxfcmVzdWx0cy5h
ZGQoZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcsIHRlc3RfZXhwZWN0YXRpb25zLlBBU1Mp
LCBleHBlY3RlZCwgdGVzdF9pc19zbG93KQorICAgICAgICBpbml0aWFsX3Jlc3VsdHMuYWRkKGdl
dF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwnLCB0ZXN0X2V4cGVjdGF0aW9u
cy5BVURJTyksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCisgICAgICAgIGluaXRpYWxfcmVzdWx0
cy5hZGQoZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sJywgdGVzdF9l
eHBlY3RhdGlvbnMuVElNRU9VVCksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCisgICAgICAgIGlu
aXRpYWxfcmVzdWx0cy5hZGQoZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCcsIHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKKyAg
ICBlbGlmIHBhc3Npbmc6CisgICAgICAgIGluaXRpYWxfcmVzdWx0cy5hZGQoZ2V0X3Jlc3VsdCgn
cGFzc2VzL3RleHQuaHRtbCcpLCBleHBlY3RlZCwgdGVzdF9pc19zbG93KQorICAgICAgICBpbml0
aWFsX3Jlc3VsdHMuYWRkKGdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwn
KSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKKyAgICAgICAgaW5pdGlhbF9yZXN1bHRzLmFkZChn
ZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnKSwgZXhwZWN0ZWQsIHRl
c3RfaXNfc2xvdykKKyAgICAgICAgaW5pdGlhbF9yZXN1bHRzLmFkZChnZXRfcmVzdWx0KCdmYWls
dXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCisgICAg
ZWxzZToKKyAgICAgICAgaW5pdGlhbF9yZXN1bHRzLmFkZChnZXRfcmVzdWx0KCdwYXNzZXMvdGV4
dC5odG1sJywgdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVCksIGV4cGVjdGVkLCB0ZXN0X2lzX3Ns
b3cpCisgICAgICAgIGluaXRpYWxfcmVzdWx0cy5hZGQoZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvYXVkaW8uaHRtbCcsIHRlc3RfZXhwZWN0YXRpb25zLkFVRElPKSwgZXhwZWN0ZWQsIHRl
c3RfaXNfc2xvdykKKyAgICAgICAgaW5pdGlhbF9yZXN1bHRzLmFkZChnZXRfcmVzdWx0KCdmYWls
dXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnLCB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCksIGV4
cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCisgICAgICAgIGluaXRpYWxfcmVzdWx0cy5hZGQoZ2V0X3Jl
c3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIHRlc3RfZXhwZWN0YXRpb25zLlRJ
TUVPVVQpLCBleHBlY3RlZCwgdGVzdF9pc19zbG93KQorCisgICAgICAgICMgd2Ugb25seSBsaXN0
IGhhbmcuaHRtbCBoZXJlLCBzaW5jZSBub3JtYWxseSB0aGlzIGlzIFdvbnRGaXgKKyAgICAgICAg
aW5pdGlhbF9yZXN1bHRzLmFkZChnZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC9oYW5nLmh0
bWwnLCB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykK
KworICAgIGlmIGZsYWt5OgorICAgICAgICByZXRyeV9yZXN1bHRzID0gcnVuX3Jlc3VsdHMocG9y
dCkKKyAgICAgICAgcmV0cnlfcmVzdWx0cy5hZGQoZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRt
bCcpLCBUcnVlLCB0ZXN0X2lzX3Nsb3cpCisgICAgICAgIHJldHJ5X3Jlc3VsdHMuYWRkKGdldF9y
ZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcpLCBUcnVlLCB0ZXN0X2lzX3Ns
b3cpCisgICAgICAgIHJldHJ5X3Jlc3VsdHMuYWRkKGdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVj
dGVkL2NyYXNoLmh0bWwnKSwgVHJ1ZSwgdGVzdF9pc19zbG93KQorICAgIGVsc2U6CisgICAgICAg
IHJldHJ5X3Jlc3VsdHMgPSBOb25lCisKKyAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5zdW1t
YXJpemVfcmVzdWx0cyhwb3J0LCBpbml0aWFsX3Jlc3VsdHMuZXhwZWN0YXRpb25zLCBpbml0aWFs
X3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMpCisKKworY2xhc3MgSW50ZXJwcmV0VGVzdEZhaWx1cmVz
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBo
b3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBzZWxmLnBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5n
ZXQocG9ydF9uYW1lPSd0ZXN0JykKKworICAgIGRlZiB0ZXN0X2ludGVycHJldF90ZXN0X2ZhaWx1
cmVzKHNlbGYpOgorICAgICAgICB0ZXN0X2RpY3QgPSB0ZXN0X3J1bl9yZXN1bHRzLl9pbnRlcnBy
ZXRfdGVzdF9mYWlsdXJlcyhbdGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2go
ZGlmZl9wZXJjZW50PTAuNDIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2RpY3Rb
J2ltYWdlX2RpZmZfcGVyY2VudCddLCAwLjQyKQorCisgICAgICAgIHRlc3RfZGljdCA9IHRlc3Rf
cnVuX3Jlc3VsdHMuX2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKFt0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVSZWZ0ZXN0TWlzbWF0Y2goc2VsZi5wb3J0LmFic3BhdGhfZm9yX3Rlc3QoJ2Zvby9yZWZ0ZXN0
LWV4cGVjdGVkLmh0bWwnKSldKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ltYWdlX2RpZmZf
cGVyY2VudCcgaW4gdGVzdF9kaWN0KQorCisgICAgICAgIHRlc3RfZGljdCA9IHRlc3RfcnVuX3Jl
c3VsdHMuX2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0
ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihzZWxmLnBvcnQuYWJzcGF0aF9mb3JfdGVzdCgnZm9vL3Jl
ZnRlc3QtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKHRlc3RfZGljdCksIDApCisKKyAgICAgICAgdGVzdF9kaWN0ID0gdGVzdF9ydW5fcmVz
dWx0cy5faW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3Np
bmdBdWRpbygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdpc19taXNzaW5nX2F1ZGlvJyBp
biB0ZXN0X2RpY3QpCisKKyAgICAgICAgdGVzdF9kaWN0ID0gdGVzdF9ydW5fcmVzdWx0cy5faW50
ZXJwcmV0X3Rlc3RfZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQo
KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaXNfbWlzc2luZ190ZXh0JyBpbiB0ZXN0X2Rp
Y3QpCisKKyAgICAgICAgdGVzdF9kaWN0ID0gdGVzdF9ydW5fcmVzdWx0cy5faW50ZXJwcmV0X3Rl
c3RfZmFpbHVyZXMoW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZSgpXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCdpc19taXNzaW5nX2ltYWdlJyBpbiB0ZXN0X2RpY3QpCisKKyAg
ICAgICAgdGVzdF9kaWN0ID0gdGVzdF9ydW5fcmVzdWx0cy5faW50ZXJwcmV0X3Rlc3RfZmFpbHVy
ZXMoW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKV0pCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgnaXNfbWlzc2luZ19pbWFnZScgaW4gdGVzdF9kaWN0KQorCisKK2NsYXNz
IFN1bW1hcml6ZWRSZXN1bHRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBob3N0ID0gTW9ja0hvc3QoaW5pdGlhbGl6ZV9zY21fYnlfZGVmYXVs
dD1GYWxzZSkKKyAgICAgICAgc2VsZi5wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRf
bmFtZT0ndGVzdCcpCisKKyAgICBkZWYgdGVzdF9ub19zdm5fcmV2aXNpb24oc2VsZik6CisgICAg
ICAgIHN1bW1hcnkgPSBzdW1tYXJpemVkX3Jlc3VsdHMoc2VsZi5wb3J0LCBleHBlY3RlZD1GYWxz
ZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
cmV2aXNpb24nIG5vdCBpbiBzdW1tYXJ5KQorCisgICAgZGVmIHRlc3Rfc3ZuX3JldmlzaW9uKHNl
bGYpOgorICAgICAgICBzZWxmLnBvcnQuX29wdGlvbnMuYnVpbGRlcl9uYW1lID0gJ2R1bW15IGJ1
aWxkZXInCisgICAgICAgIHN1bW1hcnkgPSBzdW1tYXJpemVkX3Jlc3VsdHMoc2VsZi5wb3J0LCBl
eHBlY3RlZD1GYWxzZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2UpCisgICAgICAgIHNlbGYu
YXNzZXJ0Tm90RXF1YWxzKHN1bW1hcnlbJ3JldmlzaW9uJ10sICcnKQorCisgICAgZGVmIHRlc3Rf
c3VtbWFyaXplZF9yZXN1bHRzX3dvbnRmaXgoc2VsZik6CisgICAgICAgIHNlbGYucG9ydC5fb3B0
aW9ucy5idWlsZGVyX25hbWUgPSAnZHVtbXkgYnVpbGRlcicKKyAgICAgICAgc3VtbWFyeSA9IHN1
bW1hcml6ZWRfcmVzdWx0cyhzZWxmLnBvcnQsIGV4cGVjdGVkPUZhbHNlLCBwYXNzaW5nPUZhbHNl
LCBmbGFreT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1bW1hcnlbJ3Rlc3RzJ11b
J2ZhaWx1cmVzJ11bJ2V4cGVjdGVkJ11bJ2hhbmcuaHRtbCddWyd3b250Zml4J10pCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9y
ZXN1bHRzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvYnVpbGRib3RfcmVzdWx0c191bml0dGVzdC5weQppbmRleCBlMmQ3ZGZlN2JkODEwZWJh
MDE1YzVlMzAzMjc1MmMyZjNhNDYxMDcwLi4wNzZkNWM4OTU4YmJjM2E5NTU1N2ZhZTgwYWViMjkx
YWQ0OWZhNjhhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHNfdW5pdHRlc3QucHkK
QEAgLTMyLDExICszMiwxMSBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21t
b24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IGJ1aWxkYm90X3Jlc3VsdHMKIAogCkBAIC01Miwx
MjQgKzUyLDQ4IEBAIGNsYXNzIEJ1aWxkQm90UHJpbnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgcHJpbnRlciA9IGJ1aWxkYm90X3Jlc3VsdHMuQnVpbGRCb3RQcmludGVyKHN0
cmVhbSwgZGVidWdfbG9nZ2luZz1UcnVlKQogICAgICAgICByZXR1cm4gcHJpbnRlciwgc3RyZWFt
CiAKLSAgICBkZWYgZ2V0X3Jlc3VsdChzZWxmLCB0ZXN0X25hbWUsIHJlc3VsdF90eXBlPXRlc3Rf
ZXhwZWN0YXRpb25zLlBBU1MsIHJ1bl90aW1lPTApOgotICAgICAgICBmYWlsdXJlcyA9IFtdCi0g
ICAgICAgIGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQ6Ci0gICAg
ICAgICAgICBmYWlsdXJlcyA9IFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KCldCi0gICAg
ICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6Ci0gICAgICAg
ICAgICBmYWlsdXJlcyA9IFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpXQotICAgICAgICBl
bGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkFVRElPOgotICAgICAgICAgICAg
ZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQXVkaW9NaXNtYXRjaCgpXQotICAgICAg
ICByZXR1cm4gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdF9uYW1lLCBmYWlsdXJlcz1mYWls
dXJlcywgdGVzdF9ydW5fdGltZT1ydW5fdGltZSkKLQotICAgIGRlZiBnZXRfcnVuX3Jlc3VsdHMo
c2VsZiwgcG9ydCwgdGVzdF9uYW1lcywgZXhwZWN0YXRpb25zX3N0cik6Ci0gICAgICAgIHBvcnQu
dGVzdF9leHBlY3RhdGlvbnMgPSBsYW1iZGE6IGV4cGVjdGF0aW9uc19zdHIKLSAgICAgICAgcG9y
dC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMgPSBsYW1iZGE6IE5vbmUKLSAgICAgICAgZXhw
ZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhwb3J0LCB0ZXN0
X25hbWVzKQotICAgICAgICBycyA9IHRlc3RfcnVuX3Jlc3VsdHMuVGVzdFJ1blJlc3VsdHMoZXhw
ZWN0YXRpb25zLCBsZW4odGVzdF9uYW1lcykpCi0gICAgICAgIHJldHVybiB0ZXN0X25hbWVzLCBy
cywgZXhwZWN0YXRpb25zCi0KICAgICBkZWYgdGVzdF9wcmludF91bmV4cGVjdGVkX3Jlc3VsdHMo
c2VsZik6Ci0gICAgICAgICMgVGhpcyByb3V0aW5lIGlzIHRoZSBvbmx5IG9uZSB0aGF0IHByaW50
cyBzdHVmZiB0aGF0IHRoZSBib3RzCi0gICAgICAgICMgY2FyZSBhYm91dC4KLSAgICAgICAgIwot
ICAgICAgICAjIEZJWE1FOiB0aGVyZSdzIHNvbWUgd2VpcmQgbGF5ZXJpbmcgZ29pbmcgb24gaGVy
ZS4gSXQgc2VlbXMKLSAgICAgICAgIyBsaWtlIHdlIHNob3VsZG4ndCBiZSBib3RoIHVzaW5nIGFu
IGV4cGVjdGF0aW9ucyBzdHJpbmcgYW5kCi0gICAgICAgICMgaGF2aW5nIHRvIHNwZWNpZnkgd2hl
dGhlciBvciBub3QgdGhlIHJlc3VsdCB3YXMgZXhwZWN0ZWQuCi0gICAgICAgICMgVGhpcyB3aG9s
ZSBzZXQgb2YgdGVzdHMgc2hvdWxkIHByb2JhYmx5IGJlIHJld3JpdHRlbi4KLSAgICAgICAgIwot
ICAgICAgICAjIEZJWE1FOiBQbHVzLCB0aGUgZmFjdCB0aGF0IHdlJ3JlIGhhdmluZyB0byBjYWxs
IGludG8KLSAgICAgICAgIyBydW5fd2Via2l0X3Rlc3RzIGlzIGNsZWFybHkgYSBsYXllcmluZyBp
bnZlcnNpb24uCi0gICAgICAgIHRlc3RzID0gWydwYXNzZXMvdGV4dC5odG1sJywgJ2ZhaWx1cmVz
L2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywg
J2ZhaWx1cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwnXQotICAgICAgICBleHBlY3RhdGlvbnMgPSAn
JwotCi0gICAgICAgIGRlZiBnZXRfdW5leHBlY3RlZF9yZXN1bHRzKGV4cGVjdGVkLCBwYXNzaW5n
LCBmbGFreSk6Ci0gICAgICAgICAgICAiIiJSZXR1cm4gYW4gdW5leHBlY3RlZCByZXN1bHRzIHN1
bW1hcnkgbWF0Y2hpbmcgdGhlIGlucHV0IGRlc2NyaXB0aW9uLgotCi0gICAgICAgICAgICBUaGVy
ZSBhcmUgYSBsb3Qgb2YgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiB0ZXN0IHJlc3VsdHMgdGhh
dAotICAgICAgICAgICAgY2FuIGJlIHRlc3RlZDsgdGhpcyByb3V0aW5lIHByb2R1Y2VzIHZhcmlv
dXMgY29tYmluYXRpb25zIGJhc2VkCi0gICAgICAgICAgICBvbiB0aGUgdmFsdWVzIG9mIHRoZSBp
bnB1dCBmbGFncy4KLQotICAgICAgICAgICAgQXJncwotICAgICAgICAgICAgICAgIGV4cGVjdGVk
OiB3aGV0aGVyIHRoZSB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQKLSAgICAgICAgICAgICAgICBwYXNz
aW5nOiB3aGV0aGVyIHRoZSB0ZXN0cyBzaG91bGQgYWxsIHBhc3MKLSAgICAgICAgICAgICAgICBm
bGFreTogd2hldGhlciB0aGUgdGVzdHMgc2hvdWxkIGJlIGZsYWt5IChpZiBGYWxzZSwgdGhleQot
ICAgICAgICAgICAgICAgICAgICBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMgb24gYm90aCBydW5z
OyBpZiBUcnVlLCB0aGV5Ci0gICAgICAgICAgICAgICAgICAgIGFsbCBwYXNzIG9uIHRoZSBzZWNv
bmQgcnVuKS4KLQotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBwb3J0ID0gTW9ja0hvc3Qo
KS5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0JykKLSAgICAgICAgICAgIHRlc3RfaXNfc2xvdyA9IEZh
bHNlCi0gICAgICAgICAgICBwYXRocywgcnMsIGV4cCA9IHNlbGYuZ2V0X3J1bl9yZXN1bHRzKHBv
cnQsIHRlc3RzLCBleHBlY3RhdGlvbnMpCi0gICAgICAgICAgICBpZiBleHBlY3RlZDoKLSAgICAg
ICAgICAgICAgICBycy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdwYXNzZXMvdGV4dC5odG1sJywgdGVz
dF9leHBlY3RhdGlvbnMuUEFTUyksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgICAg
ICAgICAgcnMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRt
bCcsIHRlc3RfZXhwZWN0YXRpb25zLkFVRElPKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKLSAg
ICAgICAgICAgICAgICBycy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC90
aW1lb3V0Lmh0bWwnLCB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUKSwgZXhwZWN0ZWQsIHRlc3Rf
aXNfc2xvdykKLSAgICAgICAgICAgICAgICBycy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJl
cy9leHBlY3RlZC9jcmFzaC5odG1sJywgdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0gpLCBleHBlY3Rl
ZCwgdGVzdF9pc19zbG93KQotICAgICAgICAgICAgZWxpZiBwYXNzaW5nOgotICAgICAgICAgICAg
ICAgIHJzLmFkZChzZWxmLmdldF9yZXN1bHQoJ3Bhc3Nlcy90ZXh0Lmh0bWwnKSwgZXhwZWN0ZWQs
IHRlc3RfaXNfc2xvdykKLSAgICAgICAgICAgICAgICBycy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdm
YWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sJyksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0g
ICAgICAgICAgICAgICAgcnMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQv
dGltZW91dC5odG1sJyksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgICAgICAgICAg
cnMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcpLCBl
eHBlY3RlZCwgdGVzdF9pc19zbG93KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBycy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdwYXNzZXMvdGV4dC5odG1sJywgdGVzdF9leHBlY3Rh
dGlvbnMuVElNRU9VVCksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgICAgICAgICAg
cnMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCcsIHRl
c3RfZXhwZWN0YXRpb25zLkNSQVNIKSwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdykKLSAgICAgICAg
ICAgICAgICBycy5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0
Lmh0bWwnLCB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCksIGV4cGVjdGVkLCB0ZXN0X2lzX3Nsb3cp
Ci0gICAgICAgICAgICAgICAgcnMuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0
ZWQvY3Jhc2guaHRtbCcsIHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQpLCBleHBlY3RlZCwgdGVz
dF9pc19zbG93KQotICAgICAgICAgICAgcmV0cnkgPSBycwotICAgICAgICAgICAgaWYgZmxha3k6
Ci0gICAgICAgICAgICAgICAgcGF0aHMsIHJldHJ5LCBleHAgPSBzZWxmLmdldF9ydW5fcmVzdWx0
cyhwb3J0LCB0ZXN0cywgZXhwZWN0YXRpb25zKQotICAgICAgICAgICAgICAgIHJldHJ5LmFkZChz
ZWxmLmdldF9yZXN1bHQoJ3Bhc3Nlcy90ZXh0Lmh0bWwnKSwgVHJ1ZSwgdGVzdF9pc19zbG93KQot
ICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVj
dGVkL2F1ZGlvLmh0bWwnKSwgVHJ1ZSwgdGVzdF9pc19zbG93KQotICAgICAgICAgICAgICAgIHJl
dHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcp
LCBUcnVlLCB0ZXN0X2lzX3Nsb3cpCi0gICAgICAgICAgICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0
X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcpLCBUcnVlLCB0ZXN0X2lzX3Ns
b3cpCi0gICAgICAgICAgICByZXR1cm4gbWFuYWdlci5zdW1tYXJpemVfcmVzdWx0cyhwb3J0LCBl
eHAsIHJzLCByZXRyeSkKLQorICAgICAgICBwb3J0ID0gTW9ja0hvc3QoKS5wb3J0X2ZhY3Rvcnku
Z2V0KCd0ZXN0JykKICAgICAgICAgcHJpbnRlciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcigpCiAK
ICAgICAgICAgIyB0ZXN0IGV2ZXJ5dGhpbmcgcnVubmluZyBhcyBleHBlY3RlZAogICAgICAgICBE
QVNIRURfTElORSA9ICItIiAqIDc4ICsgIlxuIgotICAgICAgICB1ciA9IGdldF91bmV4cGVjdGVk
X3Jlc3VsdHMoZXhwZWN0ZWQ9VHJ1ZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2UpCi0gICAg
ICAgIHByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHVyKQorICAgICAgICBzdW1tYXJ5
ID0gdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5zdW1tYXJpemVkX3Jlc3VsdHMocG9ydCwgZXhw
ZWN0ZWQ9VHJ1ZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2UpCisgICAgICAgIHByaW50ZXIu
cHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHN1bW1hcnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwob3V0LmdldHZhbHVlKCksIERBU0hFRF9MSU5FKQogCiAgICAgICAgICMgdGVzdCBmYWlsdXJl
cwogICAgICAgICBwcmludGVyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKCkKLSAgICAgICAgdXIg
PSBnZXRfdW5leHBlY3RlZF9yZXN1bHRzKGV4cGVjdGVkPUZhbHNlLCBwYXNzaW5nPUZhbHNlLCBm
bGFreT1GYWxzZSkKLSAgICAgICAgcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModXIp
CisgICAgICAgIHN1bW1hcnkgPSB0ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnN1bW1hcml6ZWRf
cmVzdWx0cyhwb3J0LCBleHBlY3RlZD1GYWxzZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2Up
CisgICAgICAgIHByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHN1bW1hcnkpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkob3V0KQogCiAgICAgICAgICMgdGVzdCB1bmV4cGVjdGVk
IGZsYWt5CiAgICAgICAgIHByaW50ZXIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoKQotICAgICAg
ICB1ciA9IGdldF91bmV4cGVjdGVkX3Jlc3VsdHMoZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9RmFs
c2UsIGZsYWt5PVRydWUpCi0gICAgICAgIHByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRz
KHVyKQorICAgICAgICBzdW1tYXJ5ID0gdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5zdW1tYXJp
emVkX3Jlc3VsdHMocG9ydCwgZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9RmFsc2UsIGZsYWt5PVRy
dWUpCisgICAgICAgIHByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzKHN1bW1hcnkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkob3V0KQogCiAgICAgICAgIHByaW50ZXIsIG91dCA9
IHNlbGYuZ2V0X3ByaW50ZXIoKQotICAgICAgICB1ciA9IGdldF91bmV4cGVjdGVkX3Jlc3VsdHMo
ZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9RmFsc2UsIGZsYWt5PUZhbHNlKQotICAgICAgICBwcmlu
dGVyLnByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyh1cikKKyAgICAgICAgc3VtbWFyeSA9IHRlc3Rf
cnVuX3Jlc3VsdHNfdW5pdHRlc3Quc3VtbWFyaXplZF9yZXN1bHRzKHBvcnQsIGV4cGVjdGVkPUZh
bHNlLCBwYXNzaW5nPUZhbHNlLCBmbGFreT1GYWxzZSkKKyAgICAgICAgcHJpbnRlci5wcmludF91
bmV4cGVjdGVkX3Jlc3VsdHMoc3VtbWFyeSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShv
dXQpCiAKLSAgICAgICAgZXhwZWN0YXRpb25zID0gIiIiCi1CVUdYIDogZmFpbHVyZXMvZXhwZWN0
ZWQvY3Jhc2guaHRtbCA9IENSQVNICi1CVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5o
dG1sID0gVElNRU9VVAotIiIiCiAgICAgICAgIHByaW50ZXIsIG91dCA9IHNlbGYuZ2V0X3ByaW50
ZXIoKQotICAgICAgICB1ciA9IGdldF91bmV4cGVjdGVkX3Jlc3VsdHMoZXhwZWN0ZWQ9RmFsc2Us
IHBhc3Npbmc9RmFsc2UsIGZsYWt5PUZhbHNlKQotICAgICAgICBwcmludGVyLnByaW50X3VuZXhw
ZWN0ZWRfcmVzdWx0cyh1cikKKyAgICAgICAgc3VtbWFyeSA9IHRlc3RfcnVuX3Jlc3VsdHNfdW5p
dHRlc3Quc3VtbWFyaXplZF9yZXN1bHRzKHBvcnQsIGV4cGVjdGVkPUZhbHNlLCBwYXNzaW5nPUZh
bHNlLCBmbGFreT1GYWxzZSkKKyAgICAgICAgcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3Vs
dHMoc3VtbWFyeSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShvdXQpCiAKICAgICAgICAg
cHJpbnRlciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcigpCi0gICAgICAgIHVyID0gZ2V0X3VuZXhw
ZWN0ZWRfcmVzdWx0cyhleHBlY3RlZD1GYWxzZSwgcGFzc2luZz1UcnVlLCBmbGFreT1GYWxzZSkK
LSAgICAgICAgcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModXIpCisgICAgICAgIHN1
bW1hcnkgPSB0ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnN1bW1hcml6ZWRfcmVzdWx0cyhwb3J0
LCBleHBlY3RlZD1GYWxzZSwgcGFzc2luZz1UcnVlLCBmbGFreT1GYWxzZSkKKyAgICAgICAgcHJp
bnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHMoc3VtbWFyeSkKICAgICAgICAgc2VsZi5hc3Nl
cnROb3RFbXB0eShvdXQpCiAKLSAgICAgICAgcHJpbnRlciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRl
cigpCi0gICAgICAgIHRlc3RzID0gWydwYXNzZXMvdGV4dC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVj
dGVkL3RpbWVvdXQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgJ2ZhaWx1
cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwnXQotICAgICAgICBleHBlY3RhdGlvbnMgPSAnJworICAg
IGRlZiB0ZXN0X3ByaW50X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBNb2NrSG9zdCgp
LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnKQotICAgICAgICBwYXRocywgaW5pdGlhbF9yZXN1bHRz
LCBleHAgPSBzZWxmLmdldF9ydW5fcmVzdWx0cyhwb3J0LCB0ZXN0cywgZXhwZWN0YXRpb25zKQot
ICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSBnZXRfdW5leHBlY3RlZF9yZXN1bHRzKGV4cGVj
dGVkPUZhbHNlLCBwYXNzaW5nPVRydWUsIGZsYWt5PUZhbHNlKQotICAgICAgICBkZXRhaWxzID0g
bWFuYWdlci5SdW5EZXRhaWxzKHN1bW1hcml6ZWRfcmVzdWx0c1snbnVtX3JlZ3Jlc3Npb25zJ10s
IHN1bW1hcml6ZWRfcmVzdWx0cywgaW5pdGlhbF9yZXN1bHRzLCBOb25lKQorICAgICAgICBwcmlu
dGVyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKCkKKyAgICAgICAgaW5pdGlhbF9yZXN1bHRzID0g
dGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5ydW5fcmVzdWx0cyhwb3J0KQorICAgICAgICBzdW1t
YXJ5ID0gdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5zdW1tYXJpemVkX3Jlc3VsdHMocG9ydCwg
ZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9VHJ1ZSwgZmxha3k9RmFsc2UpCisgICAgICAgIGRldGFp
bHMgPSB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoc3VtbWFyeVsnbnVtX3JlZ3Jlc3Npb25z
J10sIHN1bW1hcnksIGluaXRpYWxfcmVzdWx0cywgTm9uZSkKICAgICAgICAgcHJpbnRlci5wcmlu
dF9yZXN1bHRzKGRldGFpbHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkob3V0KQo=
</data>
<flag name="review"
          id="196189"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>