<?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>63426</bug_id>
          
          <creation_ts>2011-06-27 00:02:15 -0700</creation_ts>
          <short_desc>Move deduplicate_tests.py into webkitpy.to_be_moved</short_desc>
          <delta_ts>2011-06-27 00:10:06 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>427699</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 00:02:15 -0700</bug_when>
    <thetext>Move deduplicate_tests.py into webkitpy.to_be_moved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427702</commentid>
    <comment_count>1</comment_count>
      <attachid>98669</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 00:03:33 -0700</bug_when>
    <thetext>Created attachment 98669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427705</commentid>
    <comment_count>2</comment_count>
      <attachid>98669</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 00:07:13 -0700</bug_when>
    <thetext>Comment on attachment 98669
Patch

Seems Ok.  SEems we could come up with a better name than &quot;to be moved&quot;.  You should explain what this module is about in __init__.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427706</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 00:10:06 -0700</bug_when>
    <thetext>Committed r89791: &lt;http://trac.webkit.org/changeset/89791&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98669</attachid>
            <date>2011-06-27 00:03:33 -0700</date>
            <delta_ts>2011-06-27 00:07:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63426-20110627000332.patch</filename>
            <type>text/plain</type>
            <size>47056</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg5NzkwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTEtMDYtMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGRlZHVw
bGljYXRlX3Rlc3RzLnB5IGludG8gd2Via2l0cHkudG9fYmVfbW92ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDI2CisKKyAgICAgICAgZGVkdXBs
aWNhdGVfdGVzdHMucHkgZG9lc24ndCBoYXZlbiBhbnl0aGluZyB0byBkbyB3aXRoIGxheW91dCB0
ZXN0cy4KKyAgICAgICAgSXQncyByZWFsbHkgYSBzZXBhcmF0ZSBzY3JpcHQuICBUaGlzIHBhdGNo
IG1vdmVzIGl0IHRvIHRoZSAobmV3KQorICAgICAgICB0b19iZV9tb3ZlZCBwYWNrYWdlIHNvIHRo
YXQgaXQgZG9lc24ndCBkaXN0cmFjdCB1cyB3aGVuIHdvcmtpbmcgb24gTlJXVC4KKworICAgICAg
ICAqIFNjcmlwdHMvZGVkdXBsaWNhdGUtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHMucHk6IFJlbW92ZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3Qu
cHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZDogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9kZWR1cGxpY2F0ZV90ZXN0cy5weTogQ29w
aWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVf
dGVzdHMucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9kZWR1cGxp
Y2F0ZV90ZXN0c191bml0dGVzdC5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHkuCisKIDIwMTEtMDYt
MjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvZGVkdXBsaWNhdGUtdGVz
dHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9kZWR1cGxpY2F0ZS10ZXN0cwkocmV2aXNp
b24gODk3ODUpCisrKyBUb29scy9TY3JpcHRzL2RlZHVwbGljYXRlLXRlc3RzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIFRoaXMgY29tbWFuZCBkdW1wcyBvdXQgYWxsIHN1Y2ggZmls
ZXMuICAKIAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLnN5c3RlbS5s
b2d1dGlscyBhcyBsb2d1dGlscwotaW1wb3J0IHdlYmtpdHB5LmxheW91dF90ZXN0cy5kZWR1cGxp
Y2F0ZV90ZXN0cyBhcyBkZWR1cGxpY2F0ZV90ZXN0cworaW1wb3J0IHdlYmtpdHB5LnRvX2JlX21v
dmVkLmRlZHVwbGljYXRlX3Rlc3RzIGFzIGRlZHVwbGljYXRlX3Rlc3RzCiAKIAogZGVmIHBhcnNl
X2FyZ3MoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVw
bGljYXRlX3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzLnB5CShyZXZpc2lvbiA4OTc4NSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDI0NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImRlZHVwbGljYXRlX3Rlc3RzIC0tIGxpc3Rz
IGR1cGxpY2F0ZWQgYmV0d2VlbiBwbGF0Zm9ybXMuCi0KLUlmIHBsYXRmb3JtL21hYy1sZW9wYXJk
IGlzIG1pc3NpbmcgYW4gZXhwZWN0ZWQgdGVzdCBvdXRwdXQsIHdlIGZhbGwgYmFjayBvbgotcGxh
dGZvcm0vbWFjLiAgVGhpcyBtZWFucyBpdCdzIHBvc3NpYmxlIHRvIGdyb3cgcmVkdW5kYW50IHRl
c3Qgb3V0cHV0cywKLXdoZXJlIHdlIGhhdmUgdGhlIHNhbWUgZXhwZWN0ZWQgZGF0YSBpbiBib3Ro
IGEgcGxhdGZvcm0gZGlyZWN0b3J5IGFuZCBhbm90aGVyCi1wbGF0Zm9ybSBpdCBmYWxscyBiYWNr
IG9uLgotIiIiCi0KLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBv
cwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCByZQotCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgc2NtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGV4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBs
b2d1dGlscwotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvc3BhdGgKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkgYXMgcG9ydF9mYWN0b3J5
Ci0KLV9sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmlsZV9fKQotCi1fQkFTRV9QTEFURk9S
TSA9ICdiYXNlJwotCi0KLWRlZiBwb3J0X2ZhbGxiYWNrcygpOgotICAgICIiIkdldCB0aGUgcG9y
dCBmYWxsYmFjayBpbmZvcm1hdGlvbi4KLSAgICBSZXR1cm5zOgotICAgICAgICBBIGRpY3Rpb25h
cnkgbWFwcGluZyBwbGF0Zm9ybSBuYW1lIHRvIGEgbGlzdCBvZiBvdGhlciBwbGF0Zm9ybXMgdG8g
ZmFsbAotICAgICAgICBiYWNrIG9uLiAgQWxsIHBsYXRmb3JtcyBmYWxsIGJhY2sgb24gJ2Jhc2Un
LgotICAgICIiIgotICAgIGZhbGxiYWNrcyA9IHtfQkFTRV9QTEFURk9STTogW119Ci0gICAgZm9y
IHBvcnRfbmFtZSBpbiBwb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgcGxhdGZvcm1zID0gcG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpLmJh
c2VsaW5lX3NlYXJjaF9wYXRoKCkKLSAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6
Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCInJXMnIGxhY2tzIGJhc2VsaW5lX3NlYXJjaF9wYXRo
KCksIHBsZWFzZSBmaXguIgotICAgICAgICAgICAgICAgICAgICAgICAlIHBvcnRfbmFtZSkKLSAg
ICAgICAgICAgIGZhbGxiYWNrc1twb3J0X25hbWVdID0gW19CQVNFX1BMQVRGT1JNXQotICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgZmFsbGJhY2tzW3BvcnRfbmFtZV0gPSBbb3MucGF0aC5i
YXNlbmFtZShwKSBmb3IgcCBpbiBwbGF0Zm9ybXNdWzE6XQotICAgICAgICBmYWxsYmFja3NbcG9y
dF9uYW1lXS5hcHBlbmQoX0JBU0VfUExBVEZPUk0pCi0KLSAgICByZXR1cm4gZmFsbGJhY2tzCi0K
LQotZGVmIHBhcnNlX2dpdF9vdXRwdXQoZ2l0X291dHB1dCwgZ2xvYl9wYXR0ZXJuKToKLSAgICAi
IiJQYXJzZXMgdGhlIG91dHB1dCBvZiBnaXQgbHMtdHJlZSBhbmQgZmlsdGVycyBiYXNlZCBvbiBn
bG9iX3BhdHRlcm4uCi0gICAgQXJnczoKLSAgICAgICAgZ2l0X291dHB1dDogcmVzdWx0IG9mIGdp
dCBscy10cmVlIC1yIEhFQUQgTGF5b3V0VGVzdHMuCi0gICAgICAgIGdsb2JfcGF0dGVybjogYSBw
YXR0ZXJuIHRvIGZpbHRlciB0aGUgZmlsZXMuCi0gICAgUmV0dXJuczoKLSAgICAgICAgQSBkaWN0
aW9uYXJ5IG1hcHBpbmcgKHRlc3QgbmFtZSwgaGFzaCBvZiBjb250ZW50KSA9PiBbcGF0aHNdCi0g
ICAgIiIiCi0gICAgaGFzaGVzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3Qoc2V0KQotICAgIGZv
ciBsaW5lIGluIGdpdF9vdXRwdXQuc3BsaXQoJ1xuJyk6Ci0gICAgICAgIGlmIG5vdCBsaW5lOgot
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgYXR0cnMsIHBhdGggPSBsaW5lLnN0cmlwKCkuc3Bs
aXQoJ1x0JykKLSAgICAgICAgaWYgbm90IGZubWF0Y2guZm5tYXRjaChwYXRoLCBnbG9iX3BhdHRl
cm4pOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcGF0aCA9IHBhdGhbbGVuKCdMYXlv
dXRUZXN0cy8nKTpdCi0gICAgICAgIG1hdGNoID0gcmUubWF0Y2gocideKHBsYXRmb3JtLy4qPy8p
PyguKiknLCBwYXRoKQotICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAoMikKLSAgICAgICAgXywg
XywgaGFzaCA9IGF0dHJzLnNwbGl0KCcgJykKLSAgICAgICAgaGFzaGVzWyh0ZXN0LCBoYXNoKV0u
YWRkKHBhdGgpCi0gICAgcmV0dXJuIGhhc2hlcwotCi0KLWRlZiBjbHVzdGVyX2ZpbGVfaGFzaGVz
KGdsb2JfcGF0dGVybik6Ci0gICAgIiIiR2V0IHRoZSBoYXNoZXMgb2YgYWxsIHRoZSB0ZXN0IGV4
cGVjdGF0aW9ucyBpbiB0aGUgdHJlZS4KLSAgICBXZSBjaGVhdCBhbmQgdXNlIGdpdCdzIGhhc2hl
cy4KLSAgICBBcmdzOgotICAgICAgICBnbG9iX3BhdHRlcm46IGEgcGF0dGVybiB0byBmaWx0ZXIg
dGhlIGZpbGVzLgotICAgIFJldHVybnM6Ci0gICAgICAgIEEgZGljdGlvbmFyeSBtYXBwaW5nICh0
ZXN0IG5hbWUsIGhhc2ggb2YgY29udGVudCkgPT4gW3BhdGhzXQotICAgICIiIgotCi0gICAgIyBB
IG1hcCBvZiBmaWxlIGhhc2ggPT4gc2V0IG9mIGFsbCBmaWxlcyB3aXRoIHRoYXQgaGFzaC4KLSAg
ICBoYXNoZXMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCi0KLSAgICAjIEZpbGwgaW4g
dGhlIG1hcC4KLSAgICBjbWQgPSAoJ2dpdCcsICdscy10cmVlJywgJy1yJywgJ0hFQUQnLCAnTGF5
b3V0VGVzdHMnKQotICAgIHRyeToKLSAgICAgICAgZ2l0X291dHB1dCA9IGV4ZWN1dGl2ZS5FeGVj
dXRpdmUoKS5ydW5fY29tbWFuZChjbWQsCi0gICAgICAgICAgICBjd2Q9c2NtLmZpbmRfY2hlY2tv
dXRfcm9vdCgpKQotICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgotICAgICAgICBpZiBlLmVycm5vID09
IDI6ICAjIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCi0gICAgICAgICAgICBfbG9nLmVycm9y
KCJFcnJvcjogJ05vIHN1Y2ggZmlsZScgd2hlbiBydW5uaW5nIGdpdC4iKQotICAgICAgICAgICAg
X2xvZy5lcnJvcigiVGhpcyBzY3JpcHQgcmVxdWlyZXMgZ2l0LiIpCi0gICAgICAgICAgICBzeXMu
ZXhpdCgxKQotICAgICAgICByYWlzZSBlCi0gICAgcmV0dXJuIHBhcnNlX2dpdF9vdXRwdXQoZ2l0
X291dHB1dCwgZ2xvYl9wYXR0ZXJuKQotCi0KLWRlZiBkaXJuYW1lX3RvX3BsYXRmb3JtKGRpcm5h
bWUpOgotICAgIGlmIGRpcm5hbWUgPT0gJ2Nocm9taXVtLWxpbnV4JzoKLSAgICAgICAgcmV0dXJu
ICdjaHJvbWl1bS1saW51eC14ODZfNjQnCi0gICAgZWxpZiBkaXJuYW1lID09ICdjaHJvbWl1bS13
aW4nOgotICAgICAgICByZXR1cm4gJ2Nocm9taXVtLXdpbi13aW43JwotICAgIGVsaWYgZGlybmFt
ZSA9PSAnY2hyb21pdW0tbWFjJzoKLSAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1tYWMtc25vd2xl
b3BhcmQnCi0gICAgcmV0dXJuIGRpcm5hbWUKLQotZGVmIGV4dHJhY3RfcGxhdGZvcm1zKHBhdGhz
KToKLSAgICAiIiJFeHRyYWN0cyB0aGUgcGxhdGZvcm1zIGZyb20gYSBsaXN0IG9mIHBhdGhzIG1h
dGNoaW5nIF5wbGF0Zm9ybS8oLio/KS8uCi0gICAgQXJnczoKLSAgICAgICAgcGF0aHM6IGEgbGlz
dCBvZiBwYXRocy4KLSAgICBSZXR1cm5zOgotICAgICAgICBBIGRpY3Rpb25hcnkgY29udGFpbmlu
ZyBhbGwgcGxhdGZvcm1zIGZyb20gcGF0aHMuCi0gICAgIiIiCi0gICAgcGxhdGZvcm1zID0ge30K
LSAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJ15wbGF0
Zm9ybS8oLio/KS8nLCBwYXRoKQotICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIHBsYXRm
b3JtID0gZGlybmFtZV90b19wbGF0Zm9ybShtYXRjaC5ncm91cCgxKSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHBsYXRmb3JtID0gX0JBU0VfUExBVEZPUk0KLSAgICAgICAgcGxhdGZvcm1z
W3BsYXRmb3JtXSA9IHBhdGgKLSAgICByZXR1cm4gcGxhdGZvcm1zCi0KLQotZGVmIGhhc19pbnRl
cm1lZGlhdGVfcmVzdWx0cyh0ZXN0LCBmYWxsYmFja3MsIG1hdGNoaW5nX3BsYXRmb3JtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2V4aXN0cz1vcy5wYXRoLmV4aXN0cyk6Ci0g
ICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZXJlIGlzIGEgdGVzdCByZXN1bHQgdGhhdCBjYXVzZXMg
dXMgdG8gbm90IGRlbGV0ZQotICAgIHRoaXMgZHVwbGljYXRlLgotCi0gICAgRm9yIGV4YW1wbGUs
IGNocm9taXVtLWxpbnV4IG1heSBiZSBhIGR1cGxpY2F0ZSBvZiB0aGUgY2hlY2tlZCBpbiByZXN1
bHQsCi0gICAgYnV0IGNocm9taXVtLXdpbiBtYXkgaGF2ZSBhIGRpZmZlcmVudCByZXN1bHQgY2hl
Y2tlZCBpbi4gIEluIHRoaXMgY2FzZSwKLSAgICB3ZSBuZWVkIHRvIGtlZXAgdGhlIGR1cGxpY2F0
ZSByZXN1bHRzLgotCi0gICAgQXJnczoKLSAgICAgICAgdGVzdDogVGhlIHRlc3QgbmFtZS4KLSAg
ICAgICAgZmFsbGJhY2tzOiBBIGxpc3Qgb2YgcGxhdGZvcm1zIHdlIGZhbGwgYmFjayBvbi4KLSAg
ICAgICAgbWF0Y2hpbmdfcGxhdGZvcm06IFRoZSBwbGF0Zm9ybSB0aGF0IHdlIGZvdW5kIHRoZSBk
dXBsaWNhdGUgdGVzdAotICAgICAgICAgICAgcmVzdWx0LiAgV2UgY2FuIHN0b3AgY2hlY2tpbmcg
aGVyZS4KLSAgICAgICAgcGF0aF9leGlzdHM6IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGFsbG93
cyB1cyB0byBzdHViIG91dAotICAgICAgICAgICAgb3MucGF0aC5leGlzdHMgZm9yIHRlc3Rpbmcu
Ci0gICAgIiIiCi0gICAgZm9yIGRpcm5hbWUgaW4gZmFsbGJhY2tzOgotICAgICAgICBwbGF0Zm9y
bSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0g
bWF0Y2hpbmdfcGxhdGZvcm06Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgdGVz
dF9wYXRoID0gb3MucGF0aC5qb2luKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsIGRpcm5hbWUs
IHRlc3QpCi0gICAgICAgIGlmIHBhdGhfZXhpc3RzKHRlc3RfcGF0aCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBnZXRfcmVsYXRpdmVfdGVzdF9w
YXRoKGZpbGVuYW1lLCByZWxhdGl2ZV90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrb3V0X3Jvb3Q9c2NtLmZpbmRfY2hlY2tvdXRfcm9vdCgpKToKLSAgICAiIiJDb25zdHJ1Y3Rz
IGEgcmVsYXRpdmUgcGF0aCB0byB8ZmlsZW5hbWV8IGZyb20gfHJlbGF0aXZlX3RvfC4KLSAgICBB
cmdzOgotICAgICAgICBmaWxlbmFtZTogVGhlIHRlc3QgZmlsZSB3ZSdyZSB0cnlpbmcgdG8gZ2V0
IGEgcmVsYXRpdmUgcGF0aCB0by4KLSAgICAgICAgcmVsYXRpdmVfdG86IFRoZSBhYnNvbHV0ZSBw
YXRoIHdlJ3JlIHJlbGF0aXZlIHRvLgotICAgIFJldHVybnM6Ci0gICAgICAgIEEgcmVsYXRpdmUg
cGF0aCB0byBmaWxlbmFtZSBvciBOb25lIGlmIHxmaWxlbmFtZXwgaXMgbm90IGJlbG93Ci0gICAg
ICAgIHxyZWxhdGl2ZV90b3wuCi0gICAgIiIiCi0gICAgbGF5b3V0X3Rlc3RfZGlyID0gb3MucGF0
aC5qb2luKGNoZWNrb3V0X3Jvb3QsICdMYXlvdXRUZXN0cycpCi0gICAgYWJzX3BhdGggPSBvcy5w
YXRoLmpvaW4obGF5b3V0X3Rlc3RfZGlyLCBmaWxlbmFtZSkKLSAgICByZXR1cm4gb3NwYXRoLnJl
bHBhdGgoYWJzX3BhdGgsIHJlbGF0aXZlX3RvKQotCi0KLWRlZiBmaW5kX2R1cHMoaGFzaGVzLCBw
b3J0X2ZhbGxiYWNrcywgcmVsYXRpdmVfdG8pOgotICAgICIiIllpZWxkcyBpbmZvIGFib3V0IHJl
ZHVuZGFudCB0ZXN0IGV4cGVjdGF0aW9ucy4KLSAgICBBcmdzOgotICAgICAgICBoYXNoZXM6IGEg
bGlzdCBvZiBoYXNoZXMgYXMgcmV0dXJuZWQgYnkgY2x1c3Rlcl9maWxlX2hhc2hlcy4KLSAgICAg
ICAgcG9ydF9mYWxsYmFja3M6IGEgbGlzdCBvZiBmYWxsYmFjayBpbmZvcm1hdGlvbiBhcyByZXR1
cm5lZCBieQotICAgICAgICAgICAgZ2V0X3BvcnRfZmFsbGJhY2tzLgotICAgICAgICByZWxhdGl2
ZV90bzogdGhlIGRpcmVjdG9yeSB0aGF0IHdlIHdhbnQgdGhlIHJlc3VsdHMgcmVsYXRpdmUgdG8K
LSAgICBSZXR1cm5zOgotICAgICAgICBhIHR1cGxlIGNvbnRhaW5pbmcgKHRlc3QsIHBsYXRmb3Jt
LCBmYWxsYmFjaywgcGxhdGZvcm1zKQotICAgICIiIgotICAgIGZvciAodGVzdCwgaGFzaCksIGNs
dXN0ZXIgaW4gaGFzaGVzLml0ZW1zKCk6Ci0gICAgICAgIGlmIGxlbihjbHVzdGVyKSA8IDI6Ci0g
ICAgICAgICAgICBjb250aW51ZSAgIyBDb21tb24gY2FzZTogb25seSBvbmUgZmlsZSB3aXRoIHRo
YXQgaGFzaC4KLQotICAgICAgICAjIENvbXB1dGUgdGhlIGxpc3Qgb2YgcGxhdGZvcm1zIHdlIGhh
dmUgdGhpcyBwYXJ0aWN1bGFyIGhhc2ggZm9yLgotICAgICAgICBwbGF0Zm9ybXMgPSBleHRyYWN0
X3BsYXRmb3JtcyhjbHVzdGVyKQotICAgICAgICBpZiBsZW4ocGxhdGZvcm1zKSA9PSAxOgotICAg
ICAgICAgICAgY29udGludWUKLQotICAgICAgICAjIFNlZSBpZiBhbnkgb2YgdGhlIHBsYXRmb3Jt
cyBhcmUgcmVkdW5kYW50IHdpdGggZWFjaCBvdGhlci4KLSAgICAgICAgZm9yIHBsYXRmb3JtIGlu
IHBsYXRmb3Jtcy5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBwbGF0Zm9ybSBub3QgaW4gcG9ydF9m
YWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgIGZvciBkaXJuYW1lIGluIHBvcnRfZmFsbGJhY2tzW3BsYXRmb3JtXToKLSAgICAgICAg
ICAgICAgICBmYWxsYmFjayA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSkKLSAgICAgICAg
ICAgICAgICBpZiBmYWxsYmFjayBub3QgaW4gcGxhdGZvcm1zLmtleXMoKToKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIFdlIGhhdmUgdG8gdmVyaWZ5IHRo
YXQgdGhlcmUgaXNuJ3QgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdAotICAgICAgICAgICAgICAgICMg
dGhhdCBjYXVzZXMgdGhpcyBkdXBsaWNhdGUgaGFzaCB0byBleGlzdC4KLSAgICAgICAgICAgICAg
ICBpZiBoYXNfaW50ZXJtZWRpYXRlX3Jlc3VsdHModGVzdCwgcG9ydF9mYWxsYmFja3NbcGxhdGZv
cm1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFj
ayk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBXZSBw
cmludCB0aGUgcmVsYXRpdmUgcGF0aCBzbyBpdCdzIGVhc3kgdG8gcGlwZSB0aGUgcmVzdWx0cwot
ICAgICAgICAgICAgICAgICMgdG8geGFyZ3Mgcm0uCi0gICAgICAgICAgICAgICAgcGF0aCA9IGdl
dF9yZWxhdGl2ZV90ZXN0X3BhdGgocGxhdGZvcm1zW3BsYXRmb3JtXSwgcmVsYXRpdmVfdG8pCi0g
ICAgICAgICAgICAgICAgaWYgbm90IHBhdGg6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICAgICAgeWllbGQgewotICAgICAgICAgICAgICAgICAgICAndGVzdCc6IHRl
c3QsCi0gICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6IHBsYXRmb3JtLAotICAgICAgICAg
ICAgICAgICAgICAnZmFsbGJhY2snOiBkaXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAncGF0
aCc6IHBhdGgsCi0gICAgICAgICAgICAgICAgfQotCi0KLWRlZiBkZWR1cGxpY2F0ZShnbG9iX3Bh
dHRlcm4pOgotICAgICIiIlRyYXZlcnNlcyBMYXlvdXRUZXN0cyBhbmQgcmV0dXJucyBpbmZvcm1h
dGlvbiBhYm91dCBkdXBsaWNhdGVkIGZpbGVzLgotICAgIEFyZ3M6Ci0gICAgICAgIGdsb2IgcGF0
dGVybiB0byBmaWx0ZXIgdGhlIGZpbGVzIGluIExheW91dFRlc3RzLgotICAgIFJldHVybnM6Ci0g
ICAgICAgIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRlc3QsIHBhdGgsIHBsYXRmb3JtIGFuZCBm
YWxsYmFjay4KLSAgICAiIiIKLSAgICBmYWxsYmFja3MgPSBwb3J0X2ZhbGxiYWNrcygpCi0gICAg
aGFzaGVzID0gY2x1c3Rlcl9maWxlX2hhc2hlcyhnbG9iX3BhdHRlcm4pCi0gICAgcmV0dXJuIGxp
c3QoZmluZF9kdXBzKGhhc2hlcywgZmFsbGJhY2tzLCBvcy5nZXRjd2QoKSkpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9k
ZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQkocmV2aXNpb24gODk3ODUpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSwyMTAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3RzIGZvciBkZWR1
cGxpY2F0ZV90ZXN0cy5weS4iIiIKLQotaW1wb3J0IGRlZHVwbGljYXRlX3Rlc3RzCi1pbXBvcnQg
b3MKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20g
YXMgc2NtCi0KLQotY2xhc3MgTW9ja0V4ZWN1dGl2ZShvYmplY3QpOgotICAgIGxhc3RfcnVuX2Nv
bW1hbmQgPSBbXQotICAgIHJlc3BvbnNlID0gJycKLQotICAgIGNsYXNzIEV4ZWN1dGl2ZShvYmpl
Y3QpOgotICAgICAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBjd2Q9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9o
YW5kbGVyPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fZXhpdF9jb2RlPUZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1UcnVlKToKLSAgICAgICAgICAgIE1vY2tF
eGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZCArPSBbYXJnc10KLSAgICAgICAgICAgIHJldHVybiBN
b2NrRXhlY3V0aXZlLnJlc3BvbnNlCi0KLQotY2xhc3MgTGlzdER1cGxpY2F0ZXNUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIE1vY2tFeGVjdXRp
dmUubGFzdF9ydW5fY29tbWFuZCA9IFtdCi0gICAgICAgIE1vY2tFeGVjdXRpdmUucmVzcG9uc2Ug
PSAnJwotICAgICAgICBkZWR1cGxpY2F0ZV90ZXN0cy5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZl
Ci0gICAgICAgIHNlbGYuX29yaWdpbmFsX2N3ZCA9IG9zLmdldGN3ZCgpCi0gICAgICAgIGNoZWNr
b3V0X3Jvb3QgPSBzY20uZmluZF9jaGVja291dF9yb290KCkKLSAgICAgICAgc2VsZi5hc3NlcnRO
b3RFcXVhbChjaGVja291dF9yb290LCBOb25lKQotICAgICAgICBvcy5jaGRpcihjaGVja291dF9y
b290KQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBvcy5jaGRpcihzZWxmLl9v
cmlnaW5hbF9jd2QpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9naXRfb3V0cHV0KHNlbGYpOgotICAg
ICAgICBnaXRfb3V0cHV0ID0gKAotICAgICAgICAgICAgJzEwMDY0NCBibG9iIDUwNTMyNDBiMzM1
M2Y2ZWIzOWY3Y2IwMDI1OTc4NWYxNmQxMjFkZjJcdExheW91dFRlc3RzL21hYy9mb28tZXhwZWN0
ZWQudHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgYTAwNDU0OGQxMDdlY2M0ZTFlYTA4
MDE5ZGFmMGExNGU4NjM0YTFmZlx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZm9vLWV4
cGVjdGVkLnR4dFxuJwotICAgICAgICAgICAgJzEwMDY0NCBibG9iIGQ2YmIwYmM3NjJlM2FlYzVk
ZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxp
bnV4L2Zvby1leHBlY3RlZC50eHRcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiBhYmNkZWJj
NzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJjYjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1saW51eC9hbmltYWdlLnBuZ1xuJwotICAgICAgICAgICAgJzEwMDY0NCBibG9iIGQ2
YmIwYmM3NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLXdpbi9mb28tZXhwZWN0ZWQudHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0
IGJsb2IgYWJjZGViYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2FuaW1hZ2UucG5nXG4nCi0gICAgICAgICAgICAnMTAw
NjQ0IGJsb2IgNDMwM2RmNTM4OWNhODdjYWU4M2RkMzIzNmI4ZGQ4NGUxNjYwNjUxN1x0TGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zvby1leHBlY3RlZC50eHRcbicpCi0gICAgICAgIGhhc2hlcyA9
IGRlZHVwbGljYXRlX3Rlc3RzLnBhcnNlX2dpdF9vdXRwdXQoZ2l0X291dHB1dCwgJyonKQotICAg
ICAgICBleHBlY3RlZCA9IHsoJ21hYy9mb28tZXhwZWN0ZWQudHh0JywgJzUwNTMyNDBiMzM1M2Y2
ZWIzOWY3Y2IwMDI1OTc4NWYxNmQxMjFkZjInKTogc2V0KFsnbWFjL2Zvby1leHBlY3RlZC50eHQn
XSksCi0gICAgICAgICAgICAgICAgICAgICgnYW5pbWFnZS5wbmcnLCAnYWJjZGViYzc2MmUzYWVj
NWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMScpOiBzZXQoWydwbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9hbmltYWdlLnBuZycsICdwbGF0Zm9ybS9jaHJvbWl1bS13aW4vYW5pbWFnZS5wbmcnXSksCi0g
ICAgICAgICAgICAgICAgICAgICgnZm9vLWV4cGVjdGVkLnR4dCcsICc0MzAzZGY1Mzg5Y2E4N2Nh
ZTgzZGQzMjM2YjhkZDg0ZTE2NjA2NTE3Jyk6IHNldChbJ3BsYXRmb3JtL21hYy9mb28tZXhwZWN0
ZWQudHh0J10pLAotICAgICAgICAgICAgICAgICAgICAoJ2Zvby1leHBlY3RlZC50eHQnLCAnZDZi
YjBiYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMScpOiBzZXQoWydwbGF0Zm9ybS9j
aHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0JywgJ3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
b28tZXhwZWN0ZWQudHh0J10pLAotICAgICAgICAgICAgICAgICAgICAoJ2Zvby1leHBlY3RlZC50
eHQnLCAnYTAwNDU0OGQxMDdlY2M0ZTFlYTA4MDE5ZGFmMGExNGU4NjM0YTFmZicpOiBzZXQoWydw
bGF0Zm9ybS9jaHJvbWl1bS9mb28tZXhwZWN0ZWQudHh0J10pfQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhleHBlY3RlZCwgaGFzaGVzKQotCi0gICAgICAgIGhhc2hlcyA9IGRlZHVwbGljYXRl
X3Rlc3RzLnBhcnNlX2dpdF9vdXRwdXQoZ2l0X291dHB1dCwgJyoucG5nJykKLSAgICAgICAgZXhw
ZWN0ZWQgPSB7KCdhbmltYWdlLnBuZycsICdhYmNkZWJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJj
YjNiNjVmZmIxJyk6IHNldChbJ3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywg
J3BsYXRmb3JtL2Nocm9taXVtLXdpbi9hbmltYWdlLnBuZyddKX0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWQsIGhhc2hlcykKLQotICAgIGRlZiB0ZXN0X2V4dHJhY3RfcGxhdGZv
cm1zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J2Zvbyc6ICdwbGF0Zm9ybS9m
b28vYmFyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICd6b28nOiAncGxhdGZvcm0vem9v
L2NvbSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdXBsaWNhdGVfdGVzdHMuZXh0
cmFjdF9wbGF0Zm9ybXMoWydwbGF0Zm9ybS9mb28vYmFyJywgJ3BsYXRmb3JtL3pvby9jb20nXSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHsnZm9vJzogJ3BsYXRmb3JtL2Zvby9iYXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdXBsaWNhdGVfdGVzdHMuX0JBU0VfUExBVEZP
Uk06ICd3aGF0Lyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdXBsaWNhdGVfdGVz
dHMuZXh0cmFjdF9wbGF0Zm9ybXMoWydwbGF0Zm9ybS9mb28vYmFyJywgJ3doYXQvJ10pKQotCi0g
ICAgZGVmIHRlc3RfaGFzX2ludGVybWVkaWF0ZV9yZXN1bHRzKHNlbGYpOgotICAgICAgICB0ZXN0
X2Nhc2VzID0gKAotICAgICAgICAgICAgIyBJZiB3ZSBmb3VuZCBhIGR1cGxpY2F0ZSBpbiBvdXIg
Zmlyc3QgZmFsbGJhY2ssIHdlIGhhdmUgbm8KLSAgICAgICAgICAgICMgaW50ZXJtZWRpYXRlIHJl
c3VsdHMuCi0gICAgICAgICAgICAoRmFsc2UsICgnZmFzdC9mb28tZXhwZWN0ZWQudHh0JywKLSAg
ICAgICAgICAgICAgICAgICAgIFsnY2hyb21pdW0td2luJywgJ2Nocm9taXVtJywgJ2Jhc2UnXSwK
LSAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS13aW4td2luNycsCi0gICAgICAgICAgICAg
ICAgICAgICBsYW1iZGEgcGF0aDogVHJ1ZSkpLAotICAgICAgICAgICAgIyBTaW5jZSBjaHJvbWl1
bS13aW4gaGFzIGEgcmVzdWx0LCB3ZSBoYXZlIGFuIGludGVybWVkaWF0ZSByZXN1bHQuCi0gICAg
ICAgICAgICAoVHJ1ZSwgICgnZmFzdC9mb28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAgICAgICAg
ICAgICAgIFsnY2hyb21pdW0td2luJywgJ2Nocm9taXVtJywgJ2Jhc2UnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICdjaHJvbWl1bScsCi0gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgcGF0aDog
VHJ1ZSkpLAotICAgICAgICAgICAgIyBUaGVyZSBhcmUgbm8gaW50ZXJtZWRpYXRlIHJlc3VsdHMu
Ci0gICAgICAgICAgICAoRmFsc2UsICgnZmFzdC9mb28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAg
ICAgICAgICAgICAgIFsnY2hyb21pdW0td2luJywgJ2Nocm9taXVtJywgJ2Jhc2UnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICdjaHJvbWl1bScsCi0gICAgICAgICAgICAgICAgICAgICBsYW1iZGEg
cGF0aDogRmFsc2UpKSwKLSAgICAgICAgICAgICMgVGhlcmUgYXJlIG5vIGludGVybWVkaWF0ZSBy
ZXN1bHRzIHNpbmNlIGEgcmVzdWx0IGZvciBjaHJvbWl1bSBpcwotICAgICAgICAgICAgIyBvdXIg
ZHVwbGljYXRlIGZpbGUuCi0gICAgICAgICAgICAoRmFsc2UsICgnZmFzdC9mb28tZXhwZWN0ZWQu
dHh0JywKLSAgICAgICAgICAgICAgICAgICAgIFsnY2hyb21pdW0td2luJywgJ2Nocm9taXVtJywg
J2Jhc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bScsCi0gICAgICAgICAgICAg
ICAgICAgICBsYW1iZGEgcGF0aDogcGF0aCA9PSAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9mb28tZXhwZWN0ZWQudHh0JykpLAotICAgICAgICAgICAgIyBXZSBoYXZlIGFuIGlu
dGVybWVkaWF0ZSByZXN1bHQgaW4gJ2Nocm9taXVtJyBldmVuIHRob3VnaCBvdXIKLSAgICAgICAg
ICAgICMgZHVwbGljYXRlIGlzIHdpdGggdGhlIGZpbGUgaW4gJ2Jhc2UnLgotICAgICAgICAgICAg
KFRydWUsICAoJ2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCi0gICAgICAgICAgICAgICAgICAgICBb
J2Nocm9taXVtLXdpbicsICdjaHJvbWl1bScsICdiYXNlJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAnYmFzZScsCi0gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgcGF0aDogcGF0aCA9PSAnTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb28tZXhwZWN0ZWQudHh0JykpLAotICAg
ICAgICAgICAgIyBXZSBoYXZlIGFuIGludGVybWVkaWF0ZSByZXN1bHQgaW4gJ2Nocm9taXVtLXdp
bicgZXZlbiB0aG91Z2ggb3VyCi0gICAgICAgICAgICAjIGR1cGxpY2F0ZSBpcyBpbiAnYmFzZScu
Ci0gICAgICAgICAgICAoVHJ1ZSwgICgnZmFzdC9mb28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAg
ICAgICAgICAgICAgIFsnY2hyb21pdW0td2luJywgJ2Nocm9taXVtJywgJ2Jhc2UnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICdiYXNlJywKLSAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBwYXRo
OiBwYXRoID09ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9mb28tZXhw
ZWN0ZWQudHh0JykpLAotICAgICAgICApCi0gICAgICAgIGZvciBleHBlY3RlZCwgaW5wdXRzIGlu
IHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICBkZWR1cGxpY2F0ZV90ZXN0cy5oYXNfaW50ZXJtZWRpYXRlX3Jlc3VsdHMo
KmlucHV0cykpCi0KLSAgICBkZWYgdGVzdF91bmlxdWUoc2VsZik6Ci0gICAgICAgIE1vY2tFeGVj
dXRpdmUucmVzcG9uc2UgPSAoCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgNTA1MzI0MGIzMzUz
ZjZlYjM5ZjdjYjAwMjU5Nzg1ZjE2ZDEyMWRmMlx0TGF5b3V0VGVzdHMvbWFjL2Zvby1leHBlY3Rl
ZC50eHRcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiBhMDA0NTQ4ZDEwN2VjYzRlMWVhMDgw
MTlkYWYwYTE0ZTg2MzRhMWZmXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mb28tZXhw
ZWN0ZWQudHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgYWJjZDBiYzc2MmUzYWVjNWRm
MDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvZm9vLWV4cGVjdGVkLnR4dFxuJwotICAgICAgICAgICAgJzEwMDY0NCBibG9iIGQ2YmIwYmM3
NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9mb28tZXhwZWN0ZWQudHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2Ig
NDMwM2RmNTM4OWNhODdjYWU4M2RkMzIzNmI4ZGQ4NGUxNjYwNjUxN1x0TGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zvby1leHBlY3RlZC50eHRcbicpCi0gICAgICAgIHJlc3VsdCA9IGRlZHVwbGlj
YXRlX3Rlc3RzLmRlZHVwbGljYXRlKCcqJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwg
bGVuKE1vY2tFeGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKCgnZ2l0JywgJ2xzLXRyZWUnLCAnLXInLCAnSEVBRCcsICdMYXlvdXRUZXN0cycpLCBN
b2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1hbmRbLTFdKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygwLCBsZW4ocmVzdWx0KSkKLQotICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6Ci0g
ICAgICAgIE1vY2tFeGVjdXRpdmUucmVzcG9uc2UgPSAoCi0gICAgICAgICAgICAnMTAwNjQ0IGJs
b2IgNTA1MzI0MGIzMzUzZjZlYjM5ZjdjYjAwMjU5Nzg1ZjE2ZDEyMWRmMlx0TGF5b3V0VGVzdHMv
bWFjL2Zvby1leHBlY3RlZC50eHRcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiBhMDA0NTQ4
ZDEwN2VjYzRlMWVhMDgwMTlkYWYwYTE0ZTg2MzRhMWZmXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mb28tZXhwZWN0ZWQudHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgZDZi
YjBiYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvZm9vLWV4cGVjdGVkLnR4dFxuJwotICAgICAgICAgICAgJzEwMDY0
NCBibG9iIGFiY2RlYmM3NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nXG4nCi0gICAgICAgICAgICAn
MTAwNjQ0IGJsb2IgZDZiYjBiYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zvby1leHBlY3RlZC50eHRcbicKLSAgICAg
ICAgICAgICcxMDA2NDQgYmxvYiBhYmNkZWJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJjYjNiNjVm
ZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vYW5pbWFnZS5wbmdcbicKLSAg
ICAgICAgICAgICcxMDA2NDQgYmxvYiA0MzAzZGY1Mzg5Y2E4N2NhZTgzZGQzMjM2YjhkZDg0ZTE2
NjA2NTE3XHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9vLWV4cGVjdGVkLnR4dFxuJykKLQot
ICAgICAgICByZXN1bHQgPSBkZWR1cGxpY2F0ZV90ZXN0cy5kZWR1cGxpY2F0ZSgnKicpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihNb2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1h
bmQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoJ2dpdCcsICdscy10cmVlJywgJy1yJywg
J0hFQUQnLCAnTGF5b3V0VGVzdHMnKSwgTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9jb21tYW5kWy0x
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwgbGVuKHJlc3VsdCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHsndGVzdCc6ICdhbmltYWdlLnBuZycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAncGF0aCc6ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9h
bmltYWdlLnBuZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiAnY2hy
b21pdW0td2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdjaHJv
bWl1bS1saW51eC14ODZfNjQnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBd
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnZm9vLWV4cGVjdGVkLnR4dCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCd9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRbMV0pCi0KLSAgICAgICAgcmVzdWx0ID0gZGVkdXBsaWNhdGVf
dGVzdHMuZGVkdXBsaWNhdGUoJyoudHh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwg
bGVuKE1vY2tFeGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKCgnZ2l0JywgJ2xzLXRyZWUnLCAnLXInLCAnSEVBRCcsICdMYXlvdXRUZXN0cycpLCBN
b2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1hbmRbLTFdKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygxLCBsZW4ocmVzdWx0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoeyd0ZXN0Jzog
J2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAn
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZm9vLWV4cGVjdGVkLnR4dCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiAnY2hyb21pdW0td2luJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdjaHJvbWl1bS1saW51eC14ODZf
NjQnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBdKQotCi0gICAgICAgIHJl
c3VsdCA9IGRlZHVwbGljYXRlX3Rlc3RzLmRlZHVwbGljYXRlKCcqLnBuZycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDMsIGxlbihNb2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1hbmQpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoJ2dpdCcsICdscy10cmVlJywgJy1yJywgJ0hFQUQn
LCAnTGF5b3V0VGVzdHMnKSwgTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9jb21tYW5kWy0xXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgbGVuKHJlc3VsdCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHsndGVzdCc6ICdhbmltYWdlLnBuZycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGF0aCc6ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9hbmltYWdl
LnBuZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiAnY2hyb21pdW0t
d2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdjaHJvbWl1bS1s
aW51eC14ODZfNjQnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBdKQotCi0g
ICAgZGVmIHRlc3RfZ2V0X3JlbGF0aXZlX3Rlc3RfcGF0aChzZWxmKToKLSAgICAgICAgY2hlY2tv
dXRfcm9vdCA9IHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKQotICAgICAgICBsYXlvdXRfdGVzdF9k
aXIgPSBvcy5wYXRoLmpvaW4oY2hlY2tvdXRfcm9vdCwgJ0xheW91dFRlc3RzJykKLSAgICAgICAg
dGVzdF9jYXNlcyA9ICgKLSAgICAgICAgICAgICgncGxhdGZvcm0vbWFjL3Rlc3QuaHRtbCcsCi0g
ICAgICAgICAgICAgKCdwbGF0Zm9ybS9tYWMvdGVzdC5odG1sJywgbGF5b3V0X3Rlc3RfZGlyKSks
Ci0gICAgICAgICAgICAoJ0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0Lmh0bWwnLAotICAg
ICAgICAgICAgICgncGxhdGZvcm0vbWFjL3Rlc3QuaHRtbCcsIGNoZWNrb3V0X3Jvb3QpKSwKLSAg
ICAgICAgICAgIChOb25lLAotICAgICAgICAgICAgICgncGxhdGZvcm0vbWFjL3Rlc3QuaHRtbCcs
IG9zLnBhdGguam9pbihjaGVja291dF9yb290LCAnU291cmNlJywgJ1dlYkNvcmUnKSkpLAotICAg
ICAgICAgICAgKCd0ZXN0Lmh0bWwnLAotICAgICAgICAgICAgICgncGxhdGZvcm0vbWFjL3Rlc3Qu
aHRtbCcsIG9zLnBhdGguam9pbihsYXlvdXRfdGVzdF9kaXIsICdwbGF0Zm9ybS9tYWMnKSkpLAot
ICAgICAgICAgICAgKE5vbmUsCi0gICAgICAgICAgICAgKCdwbGF0Zm9ybS9tYWMvdGVzdC5odG1s
Jywgb3MucGF0aC5qb2luKGxheW91dF90ZXN0X2RpciwgJ3BsYXRmb3JtL3dpbicpKSksCi0gICAg
ICAgICkKLSAgICAgICAgZm9yIGV4cGVjdGVkLCBpbnB1dHMgaW4gdGVzdF9jYXNlczoKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVkdXBsaWNhdGVfdGVzdHMuZ2V0X3JlbGF0aXZlX3Rlc3RfcGF0aCgqaW5wdXRz
KSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CShyZXZpc2lvbiA4OTc4NSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MCw3
ICs5MCw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBtb2R1bGVf
cGF0aCBub3QgaW4gWwogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBmaWxlIGFsc28gcmVxdWly
ZXMgY29tbW9uLmNoZWNrb3V0IHRvIHdvcmsKLSAgICAgICAgICAgICd3ZWJraXRweS5sYXlvdXRf
dGVzdHMuZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QnLAorICAgICAgICAgICAgJ3dlYmtpdHB5
LnRvX2JlX21vdmVkLmRlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0JywKICAgICAgICAgXQogCiAg
ICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBzeXNfYXJndiwgZXh0ZXJuYWxfcGFja2FnZV9wYXRocz1O
b25lKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvX19pbml0X18u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9fX2lu
aXRfXy5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92
ZWQvX19pbml0X18ucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorIyBSZXF1aXJlZCBm
b3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCisjIFRo
aXMgZGlyZWN0b3J5IGhvdXNlcyBQeXRob24gbW9kdWxlcyB0aGF0IGRvIG5vdCB5ZXQgaGF2ZSBh
IHByb3BlciBob21lLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9k
ZWR1cGxpY2F0ZV90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RvX2JlX21vdmVkL2RlZHVwbGljYXRlX3Rlc3RzLnB5CShyZXZpc2lvbiA4OTc4NSkJKGZyb20g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHMucHk6
ODk3ODUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL2RlZHVwbGljYXRl
X3Rlc3RzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQ0IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiImRlZHVwbGljYXRl
X3Rlc3RzIC0tIGxpc3RzIGR1cGxpY2F0ZWQgYmV0d2VlbiBwbGF0Zm9ybXMuCisKK0lmIHBsYXRm
b3JtL21hYy1sZW9wYXJkIGlzIG1pc3NpbmcgYW4gZXhwZWN0ZWQgdGVzdCBvdXRwdXQsIHdlIGZh
bGwgYmFjayBvbgorcGxhdGZvcm0vbWFjLiAgVGhpcyBtZWFucyBpdCdzIHBvc3NpYmxlIHRvIGdy
b3cgcmVkdW5kYW50IHRlc3Qgb3V0cHV0cywKK3doZXJlIHdlIGhhdmUgdGhlIHNhbWUgZXhwZWN0
ZWQgZGF0YSBpbiBib3RoIGEgcGxhdGZvcm0gZGlyZWN0b3J5IGFuZCBhbm90aGVyCitwbGF0Zm9y
bSBpdCBmYWxscyBiYWNrIG9uLgorIiIiCisKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGZu
bWF0Y2gKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBy
ZQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgc2NtCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBsb2d1dGlscworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9y
dCBvc3BhdGgKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3Rvcnkg
YXMgcG9ydF9mYWN0b3J5CisKK19sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmlsZV9fKQor
CitfQkFTRV9QTEFURk9STSA9ICdiYXNlJworCisKK2RlZiBwb3J0X2ZhbGxiYWNrcygpOgorICAg
ICIiIkdldCB0aGUgcG9ydCBmYWxsYmFjayBpbmZvcm1hdGlvbi4KKyAgICBSZXR1cm5zOgorICAg
ICAgICBBIGRpY3Rpb25hcnkgbWFwcGluZyBwbGF0Zm9ybSBuYW1lIHRvIGEgbGlzdCBvZiBvdGhl
ciBwbGF0Zm9ybXMgdG8gZmFsbAorICAgICAgICBiYWNrIG9uLiAgQWxsIHBsYXRmb3JtcyBmYWxs
IGJhY2sgb24gJ2Jhc2UnLgorICAgICIiIgorICAgIGZhbGxiYWNrcyA9IHtfQkFTRV9QTEFURk9S
TTogW119CisgICAgZm9yIHBvcnRfbmFtZSBpbiBwb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMo
KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGxhdGZvcm1zID0gcG9ydF9mYWN0b3J5Lmdl
dChwb3J0X25hbWUpLmJhc2VsaW5lX3NlYXJjaF9wYXRoKCkKKyAgICAgICAgZXhjZXB0IE5vdElt
cGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBfbG9nLmVycm9yKCInJXMnIGxhY2tzIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoKCksIHBsZWFzZSBmaXguIgorICAgICAgICAgICAgICAgICAgICAgICAl
IHBvcnRfbmFtZSkKKyAgICAgICAgICAgIGZhbGxiYWNrc1twb3J0X25hbWVdID0gW19CQVNFX1BM
QVRGT1JNXQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZmFsbGJhY2tzW3BvcnRfbmFt
ZV0gPSBbb3MucGF0aC5iYXNlbmFtZShwKSBmb3IgcCBpbiBwbGF0Zm9ybXNdWzE6XQorICAgICAg
ICBmYWxsYmFja3NbcG9ydF9uYW1lXS5hcHBlbmQoX0JBU0VfUExBVEZPUk0pCisKKyAgICByZXR1
cm4gZmFsbGJhY2tzCisKKworZGVmIHBhcnNlX2dpdF9vdXRwdXQoZ2l0X291dHB1dCwgZ2xvYl9w
YXR0ZXJuKToKKyAgICAiIiJQYXJzZXMgdGhlIG91dHB1dCBvZiBnaXQgbHMtdHJlZSBhbmQgZmls
dGVycyBiYXNlZCBvbiBnbG9iX3BhdHRlcm4uCisgICAgQXJnczoKKyAgICAgICAgZ2l0X291dHB1
dDogcmVzdWx0IG9mIGdpdCBscy10cmVlIC1yIEhFQUQgTGF5b3V0VGVzdHMuCisgICAgICAgIGds
b2JfcGF0dGVybjogYSBwYXR0ZXJuIHRvIGZpbHRlciB0aGUgZmlsZXMuCisgICAgUmV0dXJuczoK
KyAgICAgICAgQSBkaWN0aW9uYXJ5IG1hcHBpbmcgKHRlc3QgbmFtZSwgaGFzaCBvZiBjb250ZW50
KSA9PiBbcGF0aHNdCisgICAgIiIiCisgICAgaGFzaGVzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRp
Y3Qoc2V0KQorICAgIGZvciBsaW5lIGluIGdpdF9vdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAg
IGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgYXR0cnMsIHBhdGggPSBs
aW5lLnN0cmlwKCkuc3BsaXQoJ1x0JykKKyAgICAgICAgaWYgbm90IGZubWF0Y2guZm5tYXRjaChw
YXRoLCBnbG9iX3BhdHRlcm4pOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGF0aCA9
IHBhdGhbbGVuKCdMYXlvdXRUZXN0cy8nKTpdCisgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocide
KHBsYXRmb3JtLy4qPy8pPyguKiknLCBwYXRoKQorICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAo
MikKKyAgICAgICAgXywgXywgaGFzaCA9IGF0dHJzLnNwbGl0KCcgJykKKyAgICAgICAgaGFzaGVz
Wyh0ZXN0LCBoYXNoKV0uYWRkKHBhdGgpCisgICAgcmV0dXJuIGhhc2hlcworCisKK2RlZiBjbHVz
dGVyX2ZpbGVfaGFzaGVzKGdsb2JfcGF0dGVybik6CisgICAgIiIiR2V0IHRoZSBoYXNoZXMgb2Yg
YWxsIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBpbiB0aGUgdHJlZS4KKyAgICBXZSBjaGVhdCBhbmQg
dXNlIGdpdCdzIGhhc2hlcy4KKyAgICBBcmdzOgorICAgICAgICBnbG9iX3BhdHRlcm46IGEgcGF0
dGVybiB0byBmaWx0ZXIgdGhlIGZpbGVzLgorICAgIFJldHVybnM6CisgICAgICAgIEEgZGljdGlv
bmFyeSBtYXBwaW5nICh0ZXN0IG5hbWUsIGhhc2ggb2YgY29udGVudCkgPT4gW3BhdGhzXQorICAg
ICIiIgorCisgICAgIyBBIG1hcCBvZiBmaWxlIGhhc2ggPT4gc2V0IG9mIGFsbCBmaWxlcyB3aXRo
IHRoYXQgaGFzaC4KKyAgICBoYXNoZXMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCisK
KyAgICAjIEZpbGwgaW4gdGhlIG1hcC4KKyAgICBjbWQgPSAoJ2dpdCcsICdscy10cmVlJywgJy1y
JywgJ0hFQUQnLCAnTGF5b3V0VGVzdHMnKQorICAgIHRyeToKKyAgICAgICAgZ2l0X291dHB1dCA9
IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKS5ydW5fY29tbWFuZChjbWQsCisgICAgICAgICAgICBjd2Q9
c2NtLmZpbmRfY2hlY2tvdXRfcm9vdCgpKQorICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgorICAgICAg
ICBpZiBlLmVycm5vID09IDI6ICAjIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCisgICAgICAg
ICAgICBfbG9nLmVycm9yKCJFcnJvcjogJ05vIHN1Y2ggZmlsZScgd2hlbiBydW5uaW5nIGdpdC4i
KQorICAgICAgICAgICAgX2xvZy5lcnJvcigiVGhpcyBzY3JpcHQgcmVxdWlyZXMgZ2l0LiIpCisg
ICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICByYWlzZSBlCisgICAgcmV0dXJuIHBhcnNl
X2dpdF9vdXRwdXQoZ2l0X291dHB1dCwgZ2xvYl9wYXR0ZXJuKQorCisKK2RlZiBkaXJuYW1lX3Rv
X3BsYXRmb3JtKGRpcm5hbWUpOgorICAgIGlmIGRpcm5hbWUgPT0gJ2Nocm9taXVtLWxpbnV4JzoK
KyAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1saW51eC14ODZfNjQnCisgICAgZWxpZiBkaXJuYW1l
ID09ICdjaHJvbWl1bS13aW4nOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLXdpbi13aW43Jwor
ICAgIGVsaWYgZGlybmFtZSA9PSAnY2hyb21pdW0tbWFjJzoKKyAgICAgICAgcmV0dXJuICdjaHJv
bWl1bS1tYWMtc25vd2xlb3BhcmQnCisgICAgcmV0dXJuIGRpcm5hbWUKKworZGVmIGV4dHJhY3Rf
cGxhdGZvcm1zKHBhdGhzKToKKyAgICAiIiJFeHRyYWN0cyB0aGUgcGxhdGZvcm1zIGZyb20gYSBs
aXN0IG9mIHBhdGhzIG1hdGNoaW5nIF5wbGF0Zm9ybS8oLio/KS8uCisgICAgQXJnczoKKyAgICAg
ICAgcGF0aHM6IGEgbGlzdCBvZiBwYXRocy4KKyAgICBSZXR1cm5zOgorICAgICAgICBBIGRpY3Rp
b25hcnkgY29udGFpbmluZyBhbGwgcGxhdGZvcm1zIGZyb20gcGF0aHMuCisgICAgIiIiCisgICAg
cGxhdGZvcm1zID0ge30KKyAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgbWF0Y2ggPSBy
ZS5tYXRjaChyJ15wbGF0Zm9ybS8oLio/KS8nLCBwYXRoKQorICAgICAgICBpZiBtYXRjaDoKKyAg
ICAgICAgICAgIHBsYXRmb3JtID0gZGlybmFtZV90b19wbGF0Zm9ybShtYXRjaC5ncm91cCgxKSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBsYXRmb3JtID0gX0JBU0VfUExBVEZPUk0KKyAg
ICAgICAgcGxhdGZvcm1zW3BsYXRmb3JtXSA9IHBhdGgKKyAgICByZXR1cm4gcGxhdGZvcm1zCisK
KworZGVmIGhhc19pbnRlcm1lZGlhdGVfcmVzdWx0cyh0ZXN0LCBmYWxsYmFja3MsIG1hdGNoaW5n
X3BsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2V4aXN0cz1vcy5w
YXRoLmV4aXN0cyk6CisgICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZXJlIGlzIGEgdGVzdCByZXN1
bHQgdGhhdCBjYXVzZXMgdXMgdG8gbm90IGRlbGV0ZQorICAgIHRoaXMgZHVwbGljYXRlLgorCisg
ICAgRm9yIGV4YW1wbGUsIGNocm9taXVtLWxpbnV4IG1heSBiZSBhIGR1cGxpY2F0ZSBvZiB0aGUg
Y2hlY2tlZCBpbiByZXN1bHQsCisgICAgYnV0IGNocm9taXVtLXdpbiBtYXkgaGF2ZSBhIGRpZmZl
cmVudCByZXN1bHQgY2hlY2tlZCBpbi4gIEluIHRoaXMgY2FzZSwKKyAgICB3ZSBuZWVkIHRvIGtl
ZXAgdGhlIGR1cGxpY2F0ZSByZXN1bHRzLgorCisgICAgQXJnczoKKyAgICAgICAgdGVzdDogVGhl
IHRlc3QgbmFtZS4KKyAgICAgICAgZmFsbGJhY2tzOiBBIGxpc3Qgb2YgcGxhdGZvcm1zIHdlIGZh
bGwgYmFjayBvbi4KKyAgICAgICAgbWF0Y2hpbmdfcGxhdGZvcm06IFRoZSBwbGF0Zm9ybSB0aGF0
IHdlIGZvdW5kIHRoZSBkdXBsaWNhdGUgdGVzdAorICAgICAgICAgICAgcmVzdWx0LiAgV2UgY2Fu
IHN0b3AgY2hlY2tpbmcgaGVyZS4KKyAgICAgICAgcGF0aF9leGlzdHM6IE9wdGlvbmFsIHBhcmFt
ZXRlciB0aGF0IGFsbG93cyB1cyB0byBzdHViIG91dAorICAgICAgICAgICAgb3MucGF0aC5leGlz
dHMgZm9yIHRlc3RpbmcuCisgICAgIiIiCisgICAgZm9yIGRpcm5hbWUgaW4gZmFsbGJhY2tzOgor
ICAgICAgICBwbGF0Zm9ybSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSkKKyAgICAgICAg
aWYgcGxhdGZvcm0gPT0gbWF0Y2hpbmdfcGxhdGZvcm06CisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKCdMYXlvdXRUZXN0cycsICdwbGF0
Zm9ybScsIGRpcm5hbWUsIHRlc3QpCisgICAgICAgIGlmIHBhdGhfZXhpc3RzKHRlc3RfcGF0aCk6
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBnZXRf
cmVsYXRpdmVfdGVzdF9wYXRoKGZpbGVuYW1lLCByZWxhdGl2ZV90bywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrb3V0X3Jvb3Q9c2NtLmZpbmRfY2hlY2tvdXRfcm9vdCgpKToKKyAg
ICAiIiJDb25zdHJ1Y3RzIGEgcmVsYXRpdmUgcGF0aCB0byB8ZmlsZW5hbWV8IGZyb20gfHJlbGF0
aXZlX3RvfC4KKyAgICBBcmdzOgorICAgICAgICBmaWxlbmFtZTogVGhlIHRlc3QgZmlsZSB3ZSdy
ZSB0cnlpbmcgdG8gZ2V0IGEgcmVsYXRpdmUgcGF0aCB0by4KKyAgICAgICAgcmVsYXRpdmVfdG86
IFRoZSBhYnNvbHV0ZSBwYXRoIHdlJ3JlIHJlbGF0aXZlIHRvLgorICAgIFJldHVybnM6CisgICAg
ICAgIEEgcmVsYXRpdmUgcGF0aCB0byBmaWxlbmFtZSBvciBOb25lIGlmIHxmaWxlbmFtZXwgaXMg
bm90IGJlbG93CisgICAgICAgIHxyZWxhdGl2ZV90b3wuCisgICAgIiIiCisgICAgbGF5b3V0X3Rl
c3RfZGlyID0gb3MucGF0aC5qb2luKGNoZWNrb3V0X3Jvb3QsICdMYXlvdXRUZXN0cycpCisgICAg
YWJzX3BhdGggPSBvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RfZGlyLCBmaWxlbmFtZSkKKyAgICBy
ZXR1cm4gb3NwYXRoLnJlbHBhdGgoYWJzX3BhdGgsIHJlbGF0aXZlX3RvKQorCisKK2RlZiBmaW5k
X2R1cHMoaGFzaGVzLCBwb3J0X2ZhbGxiYWNrcywgcmVsYXRpdmVfdG8pOgorICAgICIiIllpZWxk
cyBpbmZvIGFib3V0IHJlZHVuZGFudCB0ZXN0IGV4cGVjdGF0aW9ucy4KKyAgICBBcmdzOgorICAg
ICAgICBoYXNoZXM6IGEgbGlzdCBvZiBoYXNoZXMgYXMgcmV0dXJuZWQgYnkgY2x1c3Rlcl9maWxl
X2hhc2hlcy4KKyAgICAgICAgcG9ydF9mYWxsYmFja3M6IGEgbGlzdCBvZiBmYWxsYmFjayBpbmZv
cm1hdGlvbiBhcyByZXR1cm5lZCBieQorICAgICAgICAgICAgZ2V0X3BvcnRfZmFsbGJhY2tzLgor
ICAgICAgICByZWxhdGl2ZV90bzogdGhlIGRpcmVjdG9yeSB0aGF0IHdlIHdhbnQgdGhlIHJlc3Vs
dHMgcmVsYXRpdmUgdG8KKyAgICBSZXR1cm5zOgorICAgICAgICBhIHR1cGxlIGNvbnRhaW5pbmcg
KHRlc3QsIHBsYXRmb3JtLCBmYWxsYmFjaywgcGxhdGZvcm1zKQorICAgICIiIgorICAgIGZvciAo
dGVzdCwgaGFzaCksIGNsdXN0ZXIgaW4gaGFzaGVzLml0ZW1zKCk6CisgICAgICAgIGlmIGxlbihj
bHVzdGVyKSA8IDI6CisgICAgICAgICAgICBjb250aW51ZSAgIyBDb21tb24gY2FzZTogb25seSBv
bmUgZmlsZSB3aXRoIHRoYXQgaGFzaC4KKworICAgICAgICAjIENvbXB1dGUgdGhlIGxpc3Qgb2Yg
cGxhdGZvcm1zIHdlIGhhdmUgdGhpcyBwYXJ0aWN1bGFyIGhhc2ggZm9yLgorICAgICAgICBwbGF0
Zm9ybXMgPSBleHRyYWN0X3BsYXRmb3JtcyhjbHVzdGVyKQorICAgICAgICBpZiBsZW4ocGxhdGZv
cm1zKSA9PSAxOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIFNlZSBpZiBhbnkg
b2YgdGhlIHBsYXRmb3JtcyBhcmUgcmVkdW5kYW50IHdpdGggZWFjaCBvdGhlci4KKyAgICAgICAg
Zm9yIHBsYXRmb3JtIGluIHBsYXRmb3Jtcy5rZXlzKCk6CisgICAgICAgICAgICBpZiBwbGF0Zm9y
bSBub3QgaW4gcG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6CisgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgIGZvciBkaXJuYW1lIGluIHBvcnRfZmFsbGJhY2tzW3BsYXRm
b3JtXToKKyAgICAgICAgICAgICAgICBmYWxsYmFjayA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGly
bmFtZSkKKyAgICAgICAgICAgICAgICBpZiBmYWxsYmFjayBub3QgaW4gcGxhdGZvcm1zLmtleXMo
KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAjIFdlIGhh
dmUgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgaXNuJ3QgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdAorICAg
ICAgICAgICAgICAgICMgdGhhdCBjYXVzZXMgdGhpcyBkdXBsaWNhdGUgaGFzaCB0byBleGlzdC4K
KyAgICAgICAgICAgICAgICBpZiBoYXNfaW50ZXJtZWRpYXRlX3Jlc3VsdHModGVzdCwgcG9ydF9m
YWxsYmFja3NbcGxhdGZvcm1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxsYmFjayk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICAgICAgIyBXZSBwcmludCB0aGUgcmVsYXRpdmUgcGF0aCBzbyBpdCdzIGVhc3kgdG8gcGlw
ZSB0aGUgcmVzdWx0cworICAgICAgICAgICAgICAgICMgdG8geGFyZ3Mgcm0uCisgICAgICAgICAg
ICAgICAgcGF0aCA9IGdldF9yZWxhdGl2ZV90ZXN0X3BhdGgocGxhdGZvcm1zW3BsYXRmb3JtXSwg
cmVsYXRpdmVfdG8pCisgICAgICAgICAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgeWllbGQgeworICAgICAgICAgICAgICAg
ICAgICAndGVzdCc6IHRlc3QsCisgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6IHBsYXRm
b3JtLAorICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiBkaXJuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAncGF0aCc6IHBhdGgsCisgICAgICAgICAgICAgICAgfQorCisKK2RlZiBkZWR1
cGxpY2F0ZShnbG9iX3BhdHRlcm4pOgorICAgICIiIlRyYXZlcnNlcyBMYXlvdXRUZXN0cyBhbmQg
cmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBkdXBsaWNhdGVkIGZpbGVzLgorICAgIEFyZ3M6Cisg
ICAgICAgIGdsb2IgcGF0dGVybiB0byBmaWx0ZXIgdGhlIGZpbGVzIGluIExheW91dFRlc3RzLgor
ICAgIFJldHVybnM6CisgICAgICAgIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRlc3QsIHBhdGgs
IHBsYXRmb3JtIGFuZCBmYWxsYmFjay4KKyAgICAiIiIKKyAgICBmYWxsYmFja3MgPSBwb3J0X2Zh
bGxiYWNrcygpCisgICAgaGFzaGVzID0gY2x1c3Rlcl9maWxlX2hhc2hlcyhnbG9iX3BhdHRlcm4p
CisgICAgcmV0dXJuIGxpc3QoZmluZF9kdXBzKGhhc2hlcywgZmFsbGJhY2tzLCBvcy5nZXRjd2Qo
KSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL2RlZHVwbGljYXRl
X3Rlc3RzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9fYmVfbW92ZWQvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDg5Nzg1
KQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90
ZXN0c191bml0dGVzdC5weTo4OTc4NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVf
bW92ZWQvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgZGVkdXBsaWNhdGVfdGVzdHMucHkuIiIiCisK
K2ltcG9ydCBkZWR1cGxpY2F0ZV90ZXN0cworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2lt
cG9ydCB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGFzIHNjbQorCisKK2NsYXNzIE1vY2tF
eGVjdXRpdmUob2JqZWN0KToKKyAgICBsYXN0X3J1bl9jb21tYW5kID0gW10KKyAgICByZXNwb25z
ZSA9ICcnCisKKyAgICBjbGFzcyBFeGVjdXRpdmUob2JqZWN0KToKKyAgICAgICAgZGVmIHJ1bl9j
b21tYW5kKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY3dkPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1Ob25l
LAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlcj1Ob25lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybl9zdGRlcnI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY29k
ZV9vdXRwdXQ9VHJ1ZSk6CisgICAgICAgICAgICBNb2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1h
bmQgKz0gW2FyZ3NdCisgICAgICAgICAgICByZXR1cm4gTW9ja0V4ZWN1dGl2ZS5yZXNwb25zZQor
CisKK2NsYXNzIExpc3REdXBsaWNhdGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVm
IHNldFVwKHNlbGYpOgorICAgICAgICBNb2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1hbmQgPSBb
XQorICAgICAgICBNb2NrRXhlY3V0aXZlLnJlc3BvbnNlID0gJycKKyAgICAgICAgZGVkdXBsaWNh
dGVfdGVzdHMuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZQorICAgICAgICBzZWxmLl9vcmlnaW5h
bF9jd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICBjaGVja291dF9yb290ID0gc2NtLmZpbmRfY2hl
Y2tvdXRfcm9vdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hlY2tvdXRfcm9vdCwg
Tm9uZSkKKyAgICAgICAgb3MuY2hkaXIoY2hlY2tvdXRfcm9vdCkKKworICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKKyAgICAgICAgb3MuY2hkaXIoc2VsZi5fb3JpZ2luYWxfY3dkKQorCisgICAgZGVm
IHRlc3RfcGFyc2VfZ2l0X291dHB1dChzZWxmKToKKyAgICAgICAgZ2l0X291dHB1dCA9ICgKKyAg
ICAgICAgICAgICcxMDA2NDQgYmxvYiA1MDUzMjQwYjMzNTNmNmViMzlmN2NiMDAyNTk3ODVmMTZk
MTIxZGYyXHRMYXlvdXRUZXN0cy9tYWMvZm9vLWV4cGVjdGVkLnR4dFxuJworICAgICAgICAgICAg
JzEwMDY0NCBibG9iIGEwMDQ1NDhkMTA3ZWNjNGUxZWEwODAxOWRhZjBhMTRlODYzNGExZmZcdExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zvby1leHBlY3RlZC50eHRcbicKKyAgICAgICAg
ICAgICcxMDA2NDQgYmxvYiBkNmJiMGJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJjYjNiNjVmZmIx
XHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0XG4n
CisgICAgICAgICAgICAnMTAwNjQ0IGJsb2IgYWJjZGViYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIy
Y2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWFnZS5w
bmdcbicKKyAgICAgICAgICAgICcxMDA2NDQgYmxvYiBkNmJiMGJjNzYyZTNhZWM1ZGYwM2I1YzA0
NDg1YjJjYjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZm9vLWV4
cGVjdGVkLnR4dFxuJworICAgICAgICAgICAgJzEwMDY0NCBibG9iIGFiY2RlYmM3NjJlM2FlYzVk
ZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdp
bi9hbmltYWdlLnBuZ1xuJworICAgICAgICAgICAgJzEwMDY0NCBibG9iIDQzMDNkZjUzODljYTg3
Y2FlODNkZDMyMzZiOGRkODRlMTY2MDY1MTdcdExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb28t
ZXhwZWN0ZWQudHh0XG4nKQorICAgICAgICBoYXNoZXMgPSBkZWR1cGxpY2F0ZV90ZXN0cy5wYXJz
ZV9naXRfb3V0cHV0KGdpdF9vdXRwdXQsICcqJykKKyAgICAgICAgZXhwZWN0ZWQgPSB7KCdtYWMv
Zm9vLWV4cGVjdGVkLnR4dCcsICc1MDUzMjQwYjMzNTNmNmViMzlmN2NiMDAyNTk3ODVmMTZkMTIx
ZGYyJyk6IHNldChbJ21hYy9mb28tZXhwZWN0ZWQudHh0J10pLAorICAgICAgICAgICAgICAgICAg
ICAoJ2FuaW1hZ2UucG5nJywgJ2FiY2RlYmM3NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZm
YjEnKTogc2V0KFsncGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWFnZS5wbmcnLCAncGxhdGZv
cm0vY2hyb21pdW0td2luL2FuaW1hZ2UucG5nJ10pLAorICAgICAgICAgICAgICAgICAgICAoJ2Zv
by1leHBlY3RlZC50eHQnLCAnNDMwM2RmNTM4OWNhODdjYWU4M2RkMzIzNmI4ZGQ4NGUxNjYwNjUx
NycpOiBzZXQoWydwbGF0Zm9ybS9tYWMvZm9vLWV4cGVjdGVkLnR4dCddKSwKKyAgICAgICAgICAg
ICAgICAgICAgKCdmb28tZXhwZWN0ZWQudHh0JywgJ2Q2YmIwYmM3NjJlM2FlYzVkZjAzYjVjMDQ0
ODViMmNiM2I2NWZmYjEnKTogc2V0KFsncGxhdGZvcm0vY2hyb21pdW0tbGludXgvZm9vLWV4cGVj
dGVkLnR4dCcsICdwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZm9vLWV4cGVjdGVkLnR4dCddKSwKKyAg
ICAgICAgICAgICAgICAgICAgKCdmb28tZXhwZWN0ZWQudHh0JywgJ2EwMDQ1NDhkMTA3ZWNjNGUx
ZWEwODAxOWRhZjBhMTRlODYzNGExZmYnKTogc2V0KFsncGxhdGZvcm0vY2hyb21pdW0vZm9vLWV4
cGVjdGVkLnR4dCddKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGhhc2hl
cykKKworICAgICAgICBoYXNoZXMgPSBkZWR1cGxpY2F0ZV90ZXN0cy5wYXJzZV9naXRfb3V0cHV0
KGdpdF9vdXRwdXQsICcqLnBuZycpCisgICAgICAgIGV4cGVjdGVkID0geygnYW5pbWFnZS5wbmcn
LCAnYWJjZGViYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMScpOiBzZXQoWydwbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9hbmltYWdlLnBuZycsICdwbGF0Zm9ybS9jaHJvbWl1bS13aW4v
YW5pbWFnZS5wbmcnXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBoYXNo
ZXMpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3BsYXRmb3JtcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoeydmb28nOiAncGxhdGZvcm0vZm9vL2JhcicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnem9vJzogJ3BsYXRmb3JtL3pvby9jb20nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZHVwbGljYXRlX3Rlc3RzLmV4dHJhY3RfcGxhdGZvcm1zKFsncGxhdGZv
cm0vZm9vL2JhcicsICdwbGF0Zm9ybS96b28vY29tJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyh7J2Zvbyc6ICdwbGF0Zm9ybS9mb28vYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZHVwbGljYXRlX3Rlc3RzLl9CQVNFX1BMQVRGT1JNOiAnd2hhdC8nfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZHVwbGljYXRlX3Rlc3RzLmV4dHJhY3RfcGxhdGZvcm1zKFsn
cGxhdGZvcm0vZm9vL2JhcicsICd3aGF0LyddKSkKKworICAgIGRlZiB0ZXN0X2hhc19pbnRlcm1l
ZGlhdGVfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgdGVzdF9jYXNlcyA9ICgKKyAgICAgICAgICAg
ICMgSWYgd2UgZm91bmQgYSBkdXBsaWNhdGUgaW4gb3VyIGZpcnN0IGZhbGxiYWNrLCB3ZSBoYXZl
IG5vCisgICAgICAgICAgICAjIGludGVybWVkaWF0ZSByZXN1bHRzLgorICAgICAgICAgICAgKEZh
bHNlLCAoJ2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCisgICAgICAgICAgICAgICAgICAgICBbJ2No
cm9taXVtLXdpbicsICdjaHJvbWl1bScsICdiYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAn
Y2hyb21pdW0td2luLXdpbjcnLAorICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHBhdGg6IFRy
dWUpKSwKKyAgICAgICAgICAgICMgU2luY2UgY2hyb21pdW0td2luIGhhcyBhIHJlc3VsdCwgd2Ug
aGF2ZSBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0LgorICAgICAgICAgICAgKFRydWUsICAoJ2Zhc3Qv
Zm9vLWV4cGVjdGVkLnR4dCcsCisgICAgICAgICAgICAgICAgICAgICBbJ2Nocm9taXVtLXdpbics
ICdjaHJvbWl1bScsICdiYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0nLAor
ICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHBhdGg6IFRydWUpKSwKKyAgICAgICAgICAgICMg
VGhlcmUgYXJlIG5vIGludGVybWVkaWF0ZSByZXN1bHRzLgorICAgICAgICAgICAgKEZhbHNlLCAo
J2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCisgICAgICAgICAgICAgICAgICAgICBbJ2Nocm9taXVt
LXdpbicsICdjaHJvbWl1bScsICdiYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAnY2hyb21p
dW0nLAorICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHBhdGg6IEZhbHNlKSksCisgICAgICAg
ICAgICAjIFRoZXJlIGFyZSBubyBpbnRlcm1lZGlhdGUgcmVzdWx0cyBzaW5jZSBhIHJlc3VsdCBm
b3IgY2hyb21pdW0gaXMKKyAgICAgICAgICAgICMgb3VyIGR1cGxpY2F0ZSBmaWxlLgorICAgICAg
ICAgICAgKEZhbHNlLCAoJ2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCisgICAgICAgICAgICAgICAg
ICAgICBbJ2Nocm9taXVtLXdpbicsICdjaHJvbWl1bScsICdiYXNlJ10sCisgICAgICAgICAgICAg
ICAgICAgICAnY2hyb21pdW0nLAorICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHBhdGg6IHBh
dGggPT0gJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9vLWV4cGVjdGVkLnR4
dCcpKSwKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0IGluICdj
aHJvbWl1bScgZXZlbiB0aG91Z2ggb3VyCisgICAgICAgICAgICAjIGR1cGxpY2F0ZSBpcyB3aXRo
IHRoZSBmaWxlIGluICdiYXNlJy4KKyAgICAgICAgICAgIChUcnVlLCAgKCdmYXN0L2Zvby1leHBl
Y3RlZC50eHQnLAorICAgICAgICAgICAgICAgICAgICAgWydjaHJvbWl1bS13aW4nLCAnY2hyb21p
dW0nLCAnYmFzZSddLAorICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UnLAorICAgICAgICAgICAg
ICAgICAgICAgbGFtYmRhIHBhdGg6IHBhdGggPT0gJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcpKSwKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhbiBp
bnRlcm1lZGlhdGUgcmVzdWx0IGluICdjaHJvbWl1bS13aW4nIGV2ZW4gdGhvdWdoIG91cgorICAg
ICAgICAgICAgIyBkdXBsaWNhdGUgaXMgaW4gJ2Jhc2UnLgorICAgICAgICAgICAgKFRydWUsICAo
J2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCisgICAgICAgICAgICAgICAgICAgICBbJ2Nocm9taXVt
LXdpbicsICdjaHJvbWl1bScsICdiYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAnYmFzZScs
CisgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgcGF0aDogcGF0aCA9PSAnTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcpKSwKKyAgICAgICAg
KQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGlucHV0cyBpbiB0ZXN0X2Nhc2VzOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgZGVkdXBsaWNh
dGVfdGVzdHMuaGFzX2ludGVybWVkaWF0ZV9yZXN1bHRzKCppbnB1dHMpKQorCisgICAgZGVmIHRl
c3RfdW5pcXVlKHNlbGYpOgorICAgICAgICBNb2NrRXhlY3V0aXZlLnJlc3BvbnNlID0gKAorICAg
ICAgICAgICAgJzEwMDY0NCBibG9iIDUwNTMyNDBiMzM1M2Y2ZWIzOWY3Y2IwMDI1OTc4NWYxNmQx
MjFkZjJcdExheW91dFRlc3RzL21hYy9mb28tZXhwZWN0ZWQudHh0XG4nCisgICAgICAgICAgICAn
MTAwNjQ0IGJsb2IgYTAwNDU0OGQxMDdlY2M0ZTFlYTA4MDE5ZGFmMGExNGU4NjM0YTFmZlx0TGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZm9vLWV4cGVjdGVkLnR4dFxuJworICAgICAgICAg
ICAgJzEwMDY0NCBibG9iIGFiY2QwYmM3NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFc
dExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zvby1leHBlY3RlZC50eHRcbicK
KyAgICAgICAgICAgICcxMDA2NDQgYmxvYiBkNmJiMGJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJj
YjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZm9vLWV4cGVjdGVk
LnR4dFxuJworICAgICAgICAgICAgJzEwMDY0NCBibG9iIDQzMDNkZjUzODljYTg3Y2FlODNkZDMy
MzZiOGRkODRlMTY2MDY1MTdcdExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb28tZXhwZWN0ZWQu
dHh0XG4nKQorICAgICAgICByZXN1bHQgPSBkZWR1cGxpY2F0ZV90ZXN0cy5kZWR1cGxpY2F0ZSgn
KicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihNb2NrRXhlY3V0aXZlLmxhc3Rf
cnVuX2NvbW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoJ2dpdCcsICdscy10cmVl
JywgJy1yJywgJ0hFQUQnLCAnTGF5b3V0VGVzdHMnKSwgTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9j
b21tYW5kWy0xXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgbGVuKHJlc3VsdCkpCisK
KyAgICBkZWYgdGVzdF9kdXBsaWNhdGVzKHNlbGYpOgorICAgICAgICBNb2NrRXhlY3V0aXZlLnJl
c3BvbnNlID0gKAorICAgICAgICAgICAgJzEwMDY0NCBibG9iIDUwNTMyNDBiMzM1M2Y2ZWIzOWY3
Y2IwMDI1OTc4NWYxNmQxMjFkZjJcdExheW91dFRlc3RzL21hYy9mb28tZXhwZWN0ZWQudHh0XG4n
CisgICAgICAgICAgICAnMTAwNjQ0IGJsb2IgYTAwNDU0OGQxMDdlY2M0ZTFlYTA4MDE5ZGFmMGEx
NGU4NjM0YTFmZlx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZm9vLWV4cGVjdGVkLnR4
dFxuJworICAgICAgICAgICAgJzEwMDY0NCBibG9iIGQ2YmIwYmM3NjJlM2FlYzVkZjAzYjVjMDQ0
ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zvby1l
eHBlY3RlZC50eHRcbicKKyAgICAgICAgICAgICcxMDA2NDQgYmxvYiBhYmNkZWJjNzYyZTNhZWM1
ZGYwM2I1YzA0NDg1YjJjYjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1s
aW51eC9hbmltYWdlLnBuZ1xuJworICAgICAgICAgICAgJzEwMDY0NCBibG9iIGQ2YmIwYmM3NjJl
M2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLXdpbi9mb28tZXhwZWN0ZWQudHh0XG4nCisgICAgICAgICAgICAnMTAwNjQ0IGJsb2IgYWJj
ZGViYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL2FuaW1hZ2UucG5nXG4nCisgICAgICAgICAgICAnMTAwNjQ0IGJsb2Ig
NDMwM2RmNTM4OWNhODdjYWU4M2RkMzIzNmI4ZGQ4NGUxNjYwNjUxN1x0TGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zvby1leHBlY3RlZC50eHRcbicpCisKKyAgICAgICAgcmVzdWx0ID0gZGVkdXBs
aWNhdGVfdGVzdHMuZGVkdXBsaWNhdGUoJyonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygx
LCBsZW4oTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9jb21tYW5kKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoKCdnaXQnLCAnbHMtdHJlZScsICctcicsICdIRUFEJywgJ0xheW91dFRlc3RzJyks
IE1vY2tFeGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZFstMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKDIsIGxlbihyZXN1bHQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3Qn
OiAnYW5pbWFnZS5wbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWFnZS5wbmcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogJ2Nocm9taXVtLXdpbicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2XzY0J30sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoeyd0ZXN0JzogJ2Zvby1leHBlY3RlZC50eHQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BhdGgnOiAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZm9vLWV4
cGVjdGVkLnR4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiAnY2hy
b21pdW0td2luJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdjaHJv
bWl1bS1saW51eC14ODZfNjQnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzFd
KQorCisgICAgICAgIHJlc3VsdCA9IGRlZHVwbGljYXRlX3Rlc3RzLmRlZHVwbGljYXRlKCcqLnR4
dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGxlbihNb2NrRXhlY3V0aXZlLmxhc3Rf
cnVuX2NvbW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoJ2dpdCcsICdscy10cmVl
JywgJy1yJywgJ0hFQUQnLCAnTGF5b3V0VGVzdHMnKSwgTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9j
b21tYW5kWy0xXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgbGVuKHJlc3VsdCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHsndGVzdCc6ICdmb28tZXhwZWN0ZWQudHh0JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWxpbnV4L2Zvby1leHBlY3RlZC50eHQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2ZhbGxiYWNrJzogJ2Nocm9taXVtLXdpbicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2XzY0J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdFswXSkKKworICAgICAgICByZXN1bHQgPSBkZWR1cGxpY2F0ZV90ZXN0
cy5kZWR1cGxpY2F0ZSgnKi5wbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygzLCBsZW4o
TW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9jb21tYW5kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoKCdnaXQnLCAnbHMtdHJlZScsICctcicsICdIRUFEJywgJ0xheW91dFRlc3RzJyksIE1vY2tF
eGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZFstMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDEsIGxlbihyZXN1bHQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnYW5p
bWFnZS5wbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWFnZS5wbmcnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2ZhbGxiYWNrJzogJ2Nocm9taXVtLXdpbicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2XzY0J30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFswXSkKKworICAgIGRlZiB0ZXN0X2dldF9yZWxhdGl2
ZV90ZXN0X3BhdGgoc2VsZik6CisgICAgICAgIGNoZWNrb3V0X3Jvb3QgPSBzY20uZmluZF9jaGVj
a291dF9yb290KCkKKyAgICAgICAgbGF5b3V0X3Rlc3RfZGlyID0gb3MucGF0aC5qb2luKGNoZWNr
b3V0X3Jvb3QsICdMYXlvdXRUZXN0cycpCisgICAgICAgIHRlc3RfY2FzZXMgPSAoCisgICAgICAg
ICAgICAoJ3BsYXRmb3JtL21hYy90ZXN0Lmh0bWwnLAorICAgICAgICAgICAgICgncGxhdGZvcm0v
bWFjL3Rlc3QuaHRtbCcsIGxheW91dF90ZXN0X2RpcikpLAorICAgICAgICAgICAgKCdMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdC5odG1sJywKKyAgICAgICAgICAgICAoJ3BsYXRmb3JtL21h
Yy90ZXN0Lmh0bWwnLCBjaGVja291dF9yb290KSksCisgICAgICAgICAgICAoTm9uZSwKKyAgICAg
ICAgICAgICAoJ3BsYXRmb3JtL21hYy90ZXN0Lmh0bWwnLCBvcy5wYXRoLmpvaW4oY2hlY2tvdXRf
cm9vdCwgJ1NvdXJjZScsICdXZWJDb3JlJykpKSwKKyAgICAgICAgICAgICgndGVzdC5odG1sJywK
KyAgICAgICAgICAgICAoJ3BsYXRmb3JtL21hYy90ZXN0Lmh0bWwnLCBvcy5wYXRoLmpvaW4obGF5
b3V0X3Rlc3RfZGlyLCAncGxhdGZvcm0vbWFjJykpKSwKKyAgICAgICAgICAgIChOb25lLAorICAg
ICAgICAgICAgICgncGxhdGZvcm0vbWFjL3Rlc3QuaHRtbCcsIG9zLnBhdGguam9pbihsYXlvdXRf
dGVzdF9kaXIsICdwbGF0Zm9ybS93aW4nKSkpLAorICAgICAgICApCisgICAgICAgIGZvciBleHBl
Y3RlZCwgaW5wdXRzIGluIHRlc3RfY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZHVwbGljYXRlX3Rl
c3RzLmdldF9yZWxhdGl2ZV90ZXN0X3BhdGgoKmlucHV0cykpCisKK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCg==
</data>
<flag name="review"
          id="92940"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>