<?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>115682</bug_id>
          
          <creation_ts>2013-05-06 16:52:04 -0700</creation_ts>
          <short_desc>REGRESSION(r149547): Added unittests that fail on bots and spits out text into stdout (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2013-05-06 16:54:26 -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>
          
          <blocked>111513</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>dpranke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885508</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 16:52:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/149547 broke the build:
Added unittests that fail on bots and spits out text into stdout (Requested by rniwa on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885509</commentid>
    <comment_count>1</comment_count>
      <attachid>200855</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 16:52:30 -0700</bug_when>
    <thetext>Created attachment 200855
ROLLOUT of r149547

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885511</commentid>
    <comment_count>2</comment_count>
      <attachid>200855</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 16:54:25 -0700</bug_when>
    <thetext>Comment on attachment 200855
ROLLOUT of r149547

Clearing flags on attachment: 200855

Committed r149650: &lt;http://trac.webkit.org/changeset/149650&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885512</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 16:54:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200855</attachid>
            <date>2013-05-06 16:52:30 -0700</date>
            <delta_ts>2013-05-06 16:54:25 -0700</delta_ts>
            <desc>ROLLOUT of r149547</desc>
            <filename>bug-115682-20130506165137.patch</filename>
            <type>text/plain</type>
            <size>70299</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NjQ4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2MwNWI3MDQyZThmMTE1MTM3MjM4MTVjYjQ4OTk5NWJm
YmQ1MTQyZi4uNzZjYTc2ZWZjMDQxZmU5NTE3MmE5Y2ViZTU4MWM0ZjM4YTM3YWYyMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTA1LTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
KworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ5NTQ3LgorICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDk1NDcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTY4MgorCisgICAgICAgIEFkZGVkIHVuaXR0
ZXN0cyB0aGF0IGZhaWwgb24gYm90cyBhbmQgc3BpdHMgb3V0IHRleHQgaW50bworICAgICAgICBz
dGRvdXQgKFJlcXVlc3RlZCBieSBybml3YSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFNjcmlw
dHMvaW1wb3J0LXczYy10ZXN0czogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3czYy9fX2luaXRfXy5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2NvbnZlcnRlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHk6IFJl
bW92ZWQuCisKIDIwMTMtMDUtMDMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5v
cmc+CiAKICAgICAgICAgW2poYnVpbGRdIGJ1bXAgamhidWlsZCB2ZXJzaW9uIHRvIHRha2UgYWR2
YW50YWdlIG9mIG5ldyBpbXByb3ZlbWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggYmI3MjA5NmMwNjE1NmIzZWU1MTg0MmVjZTljN2M5OWQ0Mjkx
ZjgyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotIyAgICBkaXNjbGFpbWVyLgot
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCi0jICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscwotIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFT
IElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotIyBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksCi0jIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSMgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0jIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgotIyBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwotCi1mcm9tIHdlYmtpdHB5LnczYyBpbXBv
cnQgdGVzdF9pbXBvcnRlcgotCi0KLXN5cy5leGl0KHRlc3RfaW1wb3J0ZXIubWFpbihzeXMuYXJn
dlsxOl0sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9f
X2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2NWJlZTViYjc3ZTk2
ZWJjN2NkOWM0NzY0MDY5MGZiZGE4YWMxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9fX2luaXRfXy5weQor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDE4ZmEyMWYzYjcwODhiMTgyOTIzMmU4YWY0Y2JkY2EyNzRlMzM5Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2NvbnZlcnRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQotIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotIyAgICBkaXNjbGFpbWVyLgotIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCi0jICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscwotIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotIyBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0j
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0jIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBT
VUNIIERBTUFHRS4KLWltcG9ydCByZQotaW1wb3J0IG9zCi0KLWZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBUYWcKLQotU09VUkNFX1NV
QkRJUiA9ICdTb3VyY2UnCi1XRUJDT1JFX1NVQkRJUiA9ICdXZWJDb3JlJwotQ1NTX1NVQkRJUiA9
ICdjc3MnCi1DU1NfUFJPUEVSVFlfTkFNRVNfSU4gPSAnQ1NTUHJvcGVydHlOYW1lcy5pbicKLUxB
WU9VVF9URVNUU19ESVJFQ1RPUlkgPSAnTGF5b3V0VGVzdHMnCi1SRVNPVVJDRVNfRElSRUNUT1JZ
ID0gJ3Jlc291cmNlcycKLVdFQktJVF9ST09UID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXAg
KyAnVG9vbHMnKVswXQotCi0KLWNsYXNzIFRlc3RDb252ZXJ0ZXIob2JqZWN0KToKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0aWVzID0gc2Vs
Zi5sb2FkX3ByZWZpeGVkX3Byb3BfbGlzdCgpCi0KLSAgICBkZWYgbG9hZF9wcmVmaXhlZF9wcm9w
X2xpc3Qoc2VsZik6Ci0gICAgICAgICIiIiBSZWFkcyB0aGUgY3VycmVudCBsaXN0IG9mIENTUyBw
cm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGZyb20gU291cmNlL1dlYkNv
cmUvQ1NTL0NTU1Byb3BlcnR5TmFtZXMuaW4gYW5kIHN0b3JlcyB0aGVtIGluIGFuIGluc3RhbmNl
IHZhcmlhYmxlICIiIgotCi0gICAgICAgIHByZWZpeGVkX3Byb3BfbGlzdCA9IFtdCi0KLSAgICAg
ICAgIyBPcGVuIENTU1Byb3BlcnR5TmFtZXMuaW4gdG8gZ2V0IHRoZSBjdXJyZW50IGxpc3Qgb2Yg
dGhpbmdzIHJlcXVpcmluZyBwcmVmaXhlcwotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4o
b3MucGF0aC5zZXAsIFdFQktJVF9ST09ULCBTT1VSQ0VfU1VCRElSLCBXRUJDT1JFX1NVQkRJUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfU1VCRElSLCBD
U1NfUFJPUEVSVFlfTkFNRVNfSU4pKQotICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAg
ICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICAjIExvb2sgZm9yIGFueXRoaW5n
IHdpdGggdGhlIC13ZWJraXQtIHByZWZpeAotICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2go
J14td2Via2l0LVtcd3wtXSonLCBsaW5lKQotICAgICAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgIyBJZ25vcmUgdGhlIG9uZXMgd2hlcmUgYm90aCB0aGUgcHJl
Zml4ZWQgYW5kIG5vbi1wcmVmaXhlZCBwcm9wZXJ0eQotICAgICAgICAgICAgICAgICMgYXJlIHN1
cHBvcnRlZCAtIGRlbm90ZWQgYnkgLXdlYmtpdC1zb21lLXByb3BlcnR5ID0gc29tZS1wcm9wZXJ0
eQotICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lLnNwbGl0KCc9JykpID09IDIgYW5kIFwKLSAg
ICAgICAgICAgICAgICAgICBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKSBpbiBsaW5lLnNwbGl0
KCc9JylbMF0uc3RyaXAoKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wX2xpc3QuYXBw
ZW5kKG1hdGNoLmdyb3VwKDApKQotCi0gICAgICAgIHJldHVybiBwcmVmaXhlZF9wcm9wX2xpc3QK
LQotICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiIgT3BlbnMg
dGhlIHRlc3QgZmlsZSB8ZmlsZW5hbWV8IHRvIGNvbnZlcnQgIiIiCi0KLSAgICAgICAgZiA9IG9w
ZW4oZmlsZW5hbWUpCi0gICAgICAgIGNvbnRlbnRzID0gZi5yZWFkKCkKLSAgICAgICAgZi5jbG9z
ZSgpCi0KLSAgICAgICAgcmV0dXJuIGNvbnRlbnRzCi0KLSAgICBkZWYgY29udmVydF9mb3Jfd2Vi
a2l0KHNlbGYsIG5ld19wYXRoLCBjb250ZW50cz1Ob25lLCBmaWxlbmFtZT1Ob25lKToKLSAgICAg
ICAgIiIiIENvbnZlcnRzIGEgZmlsZSdzIHxjb250ZW50c3wgc28gaXQgd2lsbCBmdW5jdGlvbiBj
b3JyZWN0bHkgaW4gaXRzIHxuZXdfcGF0aHwgaW4gV2Via2l0LiBSZXR1cm5zIHRoZSBsaXN0IG9m
IHByZWZpeGVkIENTUyBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQgY29udGVudHMuIiIiCi0K
LSAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZSBhbmQgZmlsZW5hbWUgaXMgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZToKLSAgICAg
ICAgICAgIGNvbnRlbnRzID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCi0KLSAgICAgICAgIyBI
YW5kbGUgcGxhaW4gb2xkIENTUyBmaWxlcwotICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgn
LmNzcycpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NydWJfdW5wcmVmaXhlZF9wcm9wcyhj
b250ZW50cykKLQotICAgICAgICAjIE90aGVyd2lzZSwgcGFyc2UgaXQgYXMgaWYgSFRNTAotICAg
ICAgICBkb2MgPSBCZWF1dGlmdWxTb3VwKGNvbnRlbnRzKQotICAgICAgICBqc3Rlc3QgPSBzZWxm
LmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoZG9jLCBuZXdfcGF0aCkKLSAgICAgICAgY29udmVy
dGVkID0gc2VsZi5jb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoZG9jKQotCi0gICAgICAgIGlm
IGxlbihjb252ZXJ0ZWRbMF0pID4gMCBvciBqc3Rlc3QgaXMgVHJ1ZToKLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0ZWQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0K
LSAgICBkZWYgY29udmVydF90ZXN0aGFybmVzc19wYXRocyhzZWxmLCBkb2MsIG5ld19wYXRoKToK
LSAgICAgICAgIiIiIFVwZGF0ZSBsaW5rcyB0byB0ZXN0aGFybmVzcy5qcyBpbiB0aGUgQmVhdXRp
ZnVsU291cCB8ZG9jfCB0byBwb2ludCB0byB0aGUgY29weSBpbiB8bmV3X3BhdGh8LiBSZXR1cm5z
IHdoZXRoZXIgdGhlIGRvY3VtZW50IHdhcyBtb2RpZmllZC4iIiIKLQotICAgICAgICAjIExvb2sg
Zm9yIHRoZSBXM0Mtc3R5bGUgcGF0aCB0byBhbnkgdGVzdGhhcm5lc3MgZmlsZXMgLSBzY3JpcHRz
ICguanMpIG9yIGxpbmtzICguY3NzKQotICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgnL3Jl
c291cmNlcy90ZXN0aGFybmVzcycpCi0gICAgICAgIHNjcmlwdF90YWdzID0gZG9jLmZpbmRBbGwo
c3JjPXBhdHRlcm4pCi0gICAgICAgIGxpbmtfdGFncyA9IGRvYy5maW5kQWxsKGhyZWY9cGF0dGVy
bikKLSAgICAgICAgdGVzdGhhcm5lc3NfdGFncyA9IHNjcmlwdF90YWdzICsgbGlua190YWdzCi0K
LSAgICAgICAgaWYgbGVuKHRlc3RoYXJuZXNzX3RhZ3MpICE9IDA6Ci0KLSAgICAgICAgICAgICMg
Q29uc3RydWN0IHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIG5ldyBkaXJlY3RvcnkgdG8gTGF5
b3V0VGVzdHMvcmVzb3VyY2VzCi0gICAgICAgICAgICByZXNvdXJjZXNfcGF0aCA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLnNlcCwgV0VCS0lUX1JPT1QsIExBWU9VVF9URVNUU19ESVJFQ1RPUlksIFJF
U09VUkNFU19ESVJFQ1RPUlkpCi0gICAgICAgICAgICByZXNvdXJjZXNfcmVscGF0aCA9IG9zLnBh
dGgucmVscGF0aChyZXNvdXJjZXNfcGF0aCwgbmV3X3BhdGgpCi0KLSAgICAgICAgICAgIGZvciB0
YWcgaW4gdGVzdGhhcm5lc3NfdGFnczoKLSAgICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRh
ZyB3aXRoIHRoZSBjb3JyZWN0IHBhdGgKLSAgICAgICAgICAgICAgICBhdHRyID0gJ3NyYycKLSAg
ICAgICAgICAgICAgICBpZiB0YWcubmFtZSAhPSAnc2NyaXB0JzoKLSAgICAgICAgICAgICAgICAg
ICAgYXR0ciA9ICdocmVmJwotCi0gICAgICAgICAgICAgICAgIyBCdWlsZCBhIG5ldyB0YWcgd2l0
aCB0aGUgY29ycmVjdCByZWxhdGl2ZSBwYXRoCi0gICAgICAgICAgICAgICAgb2xkX3BhdGggPSB0
YWdbYXR0cl0KLSAgICAgICAgICAgICAgICBuZXdfdGFnID0gVGFnKGRvYywgdGFnLm5hbWUsIHRh
Zy5hdHRycykKLSAgICAgICAgICAgICAgICBuZXdfdGFnW2F0dHJdID0gcmUuc3ViKHBhdHRlcm4s
IHJlc291cmNlc19yZWxwYXRoICsgJy90ZXN0aGFybmVzcycsIG9sZF9wYXRoKQotCi0gICAgICAg
ICAgICAgICAgIyBVcGRhdGUgdGhlIGRvYyB3aXRoIHRoZSBuZXcgdGFnCi0gICAgICAgICAgICAg
ICAgc2VsZi5yZXBsYWNlX3RhZyhkb2MsIHRhZywgbmV3X3RhZykKLQotICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
ZGVmIGNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhzZWxmLCBkb2MpOgotICAgICAgICAiIiIg
U2VhcmNoZXMgYSBCZWF1dGlmdWxTb3VwIHxkb2N8IGZvciBhbnkgQ1NTIHByb3BlcnRpZXMgcmVx
dWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggYW5kIGNvbnZlcnRzIHRoZW0uIFJldHVybnMgdGhl
IGxpc3Qgb2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBkb2N1bWVudCBh
cyBhIHN0cmluZyAiIiIKLQotICAgICAgICBjb252ZXJ0ZWRfcHJvcHMgPSBbXQotCi0gICAgICAg
ICMgTG9vayBmb3IgaW5saW5lIGFuZCBkb2N1bWVudCBzdHlsZXMKLSAgICAgICAgaW5saW5lX3N0
eWxlcyA9IGRvYy5maW5kQWxsKHN0eWxlPXJlLmNvbXBpbGUoJy4qJykpCi0gICAgICAgIHN0eWxl
X3RhZ3MgPSBkb2MuZmluZEFsbCgnc3R5bGUnKQotICAgICAgICBhbGxfc3R5bGVzID0gaW5saW5l
X3N0eWxlcyArIHN0eWxlX3RhZ3MKLQotICAgICAgICBmb3IgdGFnIGluIGFsbF9zdHlsZXM6Ci0K
LSAgICAgICAgICAgICMgR2V0IHRoZSB0ZXh0IHdoZXRoZXIgaW4gYSBzdHlsZSB0YWcgb3Igc3R5
bGUgYXR0cmlidXRlCi0gICAgICAgICAgICBzdHlsZV90ZXh0ID0gJycKLSAgICAgICAgICAgIGlm
IHRhZy5uYW1lID09ICdzdHlsZSc6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHRhZy5jb250ZW50
cykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICBzdHlsZV90ZXh0ID0gdGFnLmNvbnRlbnRzWzBdCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0eWxlX3RleHQgPSB0YWdbJ3N0eWxl
J10KLQotICAgICAgICAgICAgIyBTY3J1YiBpdCBmb3IgcHJvcHMgcmVxdWlyaW5nIHByZWZpeGVz
Ci0gICAgICAgICAgICBzY3J1YmJlZF9zdHlsZSA9IHNlbGYuc2NydWJfdW5wcmVmaXhlZF9wcm9w
cyhzdHlsZV90ZXh0KQotCi0gICAgICAgICAgICAjIFJld3JpdGUgdGFnIG9ubHkgaWYgY2hhbmdl
cyB3ZXJlIG1hZGUKLSAgICAgICAgICAgIGlmIGxlbihzY3J1YmJlZF9zdHlsZVswXSkgPiAwOgot
ICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9wcy5leHRlbmQoc2NydWJiZWRfc3R5bGVbMF0p
Ci0KLSAgICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBtb2RpZmllZCB0
ZXh0Ci0gICAgICAgICAgICAgICAgbmV3X3RhZyA9IFRhZyhkb2MsIHRhZy5uYW1lLCB0YWcuYXR0
cnMpCi0gICAgICAgICAgICAgICAgbmV3X3RhZy5pbnNlcnQoMCwgc2NydWJiZWRfc3R5bGVbMV0p
Ci0KLSAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcKLSAg
ICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRvYywgdGFnLCBuZXdfdGFnKQotCi0gICAg
ICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCBkb2MucHJldHRpZnkoKSkKLQotICAgIGRlZiBz
Y3J1Yl91bnByZWZpeGVkX3Byb3BzKHNlbGYsIHRleHQpOgotICAgICAgICAiIiIgU2VhcmNoZXMg
fHRleHR8IGZvciBpbnN0YW5jZXMgb2YgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQt
IHByZWZpeCBhbmQgYWRkcyB0aGUgcHJlZml4LiBSZXR1cm5zIHRoZSBsaXN0IG9mIGNvbnZlcnRl
ZCBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQgc3RyaW5nICIiIgotCi0gICAgICAgIGNvbnZl
cnRlZF9wcm9wcyA9IFtdCi0KLSAgICAgICAgIyBTcGluIHRocm91Z2ggdGhlIHdob2xlIGxpc3Qg
b2YgcHJlZml4ZWQgcHJvcGVydGllcwotICAgICAgICBmb3IgcHJlZml4ZWRfcHJvcCBpbiBzZWxm
LnByZWZpeGVkX3Byb3BlcnRpZXM6Ci0KLSAgICAgICAgICAgICMgUHVsbCB0aGUgcHJlZml4IG9m
ZgotICAgICAgICAgICAgdW5wcmVmaXhlZF9wcm9wID0gcHJlZml4ZWRfcHJvcC5yZXBsYWNlKCct
d2Via2l0LScsICcnKQotCi0gICAgICAgICAgICAjIExvb2sgZm9yIHRoZSB2YXJpb3VzIHdheXMg
aXQgbWlnaHQgYmUgaW4gdGhlIENTUwotICAgICAgICAgICAgIyBNYXRjaCB0aGUgdGhlIHByb3Bl
cnR5IHByZWNlZGVkIGJ5IGVpdGhlciB3aGl0ZXNwYWNlIG9yIGxlZnQgY3VybHkgYnJhY2UKLSAg
ICAgICAgICAgICMgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIChmb3IgaW5saW5l
IHN0eWxlIGF0dHJpYnV0ZSkKLSAgICAgICAgICAgIHBhdHRlcm4gPSAnKFtcc3tdfF4pJyArIHVu
cHJlZml4ZWRfcHJvcCArICcoXHMrOnw6KScKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChwYXR0
ZXJuLCB0ZXh0KToKLSAgICAgICAgICAgICAgICBwcmludCAnY29udmVydGluZyAnICsgdW5wcmVm
aXhlZF9wcm9wICsgJyAtPiAnICsgcHJlZml4ZWRfcHJvcAotICAgICAgICAgICAgICAgIGNvbnZl
cnRlZF9wcm9wcy5hcHBlbmQocHJlZml4ZWRfcHJvcCkKLSAgICAgICAgICAgICAgICB0ZXh0ID0g
cmUuc3ViKHBhdHRlcm4sIHByZWZpeGVkX3Byb3AgKyAnOicsIHRleHQpCi0KLSAgICAgICAgIyBU
T0RPOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3BlcnRpZXMsIHRvby4KLQot
ICAgICAgICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wcywgdGV4dCkKLQotICAgIGRlZiByZXBsYWNl
X3RhZyhzZWxmLCBkb2MsIG9sZF90YWcsIG5ld190YWcpOgotICAgICAgICAiIiIgSW5zZXJ0cyBh
IHxuZXdfdGFnfCBpbnRvIGEgQmVhdXRpZnVsU291cCB8ZG9jfCBhbmQgcmVtb3ZlcyB0aGUgfG9s
ZF90YWd8ICIiIgotCi0gICAgICAgICMgUmVwbGFjZSB0aGUgcHJldmlvdXMgdGFnIHdpdGggdGhl
IG5ldyBvbmUKLSAgICAgICAgaW5kZXggPSBvbGRfdGFnLnBhcmVudC5jb250ZW50cy5pbmRleChv
bGRfdGFnKQotICAgICAgICBvbGRfdGFnLnBhcmVudC5pbnNlcnQoaW5kZXgsIG5ld190YWcpCi0g
ICAgICAgIG9sZF90YWcuZXh0cmFjdCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiOTg4M2IwMzg0OGYwODk4ODU3MTBlY2M0MmI5Y2U4YWU3ZDhlNTU3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MzYxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAx
MyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0jICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0jICAgIGRp
c2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0jICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IEJFCi0jIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwKLSMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotIyBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKLSMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgotaW1wb3J0IG9zCi1mcm9tIHJhbmRvbSBpbXBv
cnQgcmFuZGludAotaW1wb3J0IHJlCi1pbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0Ci0KLWZy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3Vw
Ci0KLWZyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBUZXN0Q29udmVydGVy
Ci1mcm9tIHdlYmtpdHB5LnczYyBpbXBvcnQgdGVzdF9jb252ZXJ0ZXIKLQotCi1jbGFzcyBUZXN0
Q29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdExvYWRQcmVm
aXhlZFByb3BMaXN0KHNlbGYpOgotICAgICAgICAiIiIgVGVzdHMgdGhhdCB0aGUgY3VycmVudCBs
aXN0IG9mIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggbG9hZCBjb3Jy
ZWN0bHkgIiIiCi0KLSAgICAgICAgIyBHZXQgdGhlIGZ1bGwgbGlzdCBvZiBwcmVmaXhlZCBwcm9w
ZXJ0aWVzCi0gICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQotICAgICAgICBwcm9w
X2xpc3QgPSBjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcwotCi0gICAgICAgICMgVmVyaWZ5
IHdlIGdvdCBwcm9wZXJ0aWVzIGJhY2sKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihw
cm9wX2xpc3QpLCAwLCAnTm8gcHJlZml4ZWQgcHJvcGVydGllcyBmb3VuZCcpCi0KLSAgICAgICAg
IyBWZXJpZnkgdGhleSdyZSBhbGwgcHJlZml4ZWQKLSAgICAgICAgZm9yIHByb3AgaW4gcHJvcF9s
aXN0OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb3Auc3RhcnRzd2l0aCgnLXdlYmtp
dC0nKSkKLQotICAgIGRlZiB0ZXN0X2NvbnZlcnRGb3JXZWJraXROb3RoaW5nVG9Db252ZXJ0KHNl
bGYpOgotICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkgdXNpbmcgYSBiYXNp
YyB0ZXN0IHRoYXQgaGFzIG5vdGhpbmcgdG8gY29udmVydCAiIiIKLQotICAgICAgICB0ZXN0X2h0
bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJp
Y3QvL0VOIgotImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5k
dGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+
Ci08dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgotPGxpbmsgcmVs
PSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIKLWhyZWY9Im1haWx0bzpFTUFJTCBPUiBo
dHRwOi8vQ09OVEFDVF9QQUdFIi8+Ci08bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQ
RUNfU0VDVElPTiIvPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElP
TiIvPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKLUNTUyBGT1IgVEVTVAotXV0+
PC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5PgotQ09OVEVOVCBPRiBURVNUCi08L2JvZHk+Ci08L2h0
bWw+Ci0iIiIKLSAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCi0KLSAgICAgICAg
IyBUcnkgdG8gY29udmVydCB0aGUgaHRtbAotICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIu
Y29udmVydF9mb3Jfd2Via2l0KCcvbm90aGluZy90by9jb252ZXJ0JywgY29udGVudHM9dGVzdF9o
dG1sLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCi0KLSAgICAgICAgIyBWZXJpZnkgbm90aGlu
ZyB3YXMgY29udmVydGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udmVydGVkLCBOb25l
LCAndGVzdCB3YXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29udmVydGVkJykKLQotICAgIGRlZiB0
ZXN0X2NvbnZlcnRGb3JXZWJraXRIYXJuZXNzT25seShzZWxmKToKLSAgICAgICAgIiIiIFRlc3Rz
IGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgSlMgdGVzdCB0aGF0IHVzZXMgdGVz
dGhhcm5lc3MuanMgb25seSBhbmQgaGFzIG5vIHByZWZpeGVkIHByb3BlcnRpZXMgIiIiCi0KLSAg
ICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Ci08bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci0iIiIKLSAg
ICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCi0KLSAgICAgICAgIyBDcmVhdGUgcGF0
aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKLSAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5q
b2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5MQVlPVVRf
VEVTVFNfRElSRUNUT1JZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJESVIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3Nvbmx5JykKLQotICAgICAgICAjIENvbnZl
cnQgdGhlIGh0bWwKLSAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dl
YmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfaHRtbCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0
bWwnKQotCi0gICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAotICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIG5vdCBjb252ZXJ0
ZWQnKQotCi0gICAgICAgICMgVmVyaWZ5IHRoYXQgYm90aCB0aGUgaGFybmVzcyBwYXRocyB3ZXJl
IGNvbnZlcnRlZCBjb3JyZWN0bHkKLSAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1BhdGhz
KGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQotCi0gICAgICAgICMgVmVyaWZ5IG5vIHBy
b3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQKLSAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3Bl
cnRpZXMoY29udmVydGVkLCBbXSkKLQotICAgIGRlZiB0ZXN0X2NvbnZlcnRGb3JXZWJraXRQcm9w
c09ubHkoc2VsZik6Ci0gICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2lu
ZyBhIHRlc3QgdGhhdCBoYXMgMiBwcmVmaXhlZCBwcm9wZXJ0aWVzOiAxIGluIGEgc3R5bGUgYmxv
Y2sgKyAxIGlubGluZSBzdHlsZSAiIiIKLQotICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4K
LTxoZWFkPgotPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLQotI2Jsb2NrMSB7
IEB0ZXN0MEA6IHByb3B2YWx1ZTsgfQotCi08L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2
IGlkPSJlbGVtMSIgc3R5bGU9IkB0ZXN0MUA6IHByb3B2YWx1ZTsiPjwvZGl2PgotPC9ib2R5Pgot
PC9odG1sPgotIiIiCi0KLSAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCi0KLSAg
ICAgICAgIyBDcmVhdGUgcGF0aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKLSAgICAgICAgdGVz
dF9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRf
Uk9PVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2NvbnZlcnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJESVIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3NhbmRwcm9w
cycpCi0KLSAgICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGlu
dG8gdGhlIHRlc3RfaHRtbAotICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVz
dENvbnRlbnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIsIHRlc3RfaHRtbCkKLQot
ICAgICAgICAjIENvbnZlcnQgdGhlIGh0bWwKLSAgICAgICAgY29udmVydGVkID0gY29udmVydGVy
LmNvbnZlcnRfZm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwg
ZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQotCi0gICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lv
biBoYXBwZW5lZAotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwg
J3Rlc3Qgd2FzIG5vdCBjb252ZXJ0ZWQnKQotCi0gICAgICAgICMgVmVyaWZ5IHRoYXQgYm90aCB0
aGUgaGFybmVzcyBwYXRocyBhbmQgcHJvcGVydGllcyB3ZXJlIGFsbCBjb252ZXJ0ZWQgY29ycmVj
dGx5Ci0gICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZWRbMV0sIHRl
c3RfcGF0aCwgMSwgMSkKLSAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoY29u
dmVydGVkLCB0ZXN0X2NvbnRlbnRbMF0pCi0KLSAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0
SGFybmVzc0FuZFByb3BzKHNlbGYpOgotICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Vi
a2l0KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcyB0ZXN0aGFybmVzcy5qcyBhbmQg
dGVzdGhhcm5lc3MuY3NzIGFuZCBoYXMgNCBwcmVmaXhlZCBwcm9wZXJ0aWVzOiAzIGluIGEgc3R5
bGUgYmxvY2sgKyAxIGlubGluZSBzdHlsZSAiIiIKLQotICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8
aHRtbD4KLTxoZWFkPgotPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLQotI2Js
b2NrMSB7IEB0ZXN0MEA6IHByb3B2YWx1ZTsgfQotI2Jsb2NrMiB7IEB0ZXN0MUA6IHByb3B2YWx1
ZTsgfQotI2Jsb2NrMyB7IEB0ZXN0MkA6IHByb3B2YWx1ZTsgfQotCi08L3N0eWxlPgotPC9oZWFk
PgotPGJvZHk+Ci08ZGl2IGlkPSJlbGVtMSIgc3R5bGU9IkB0ZXN0M0A6IHByb3B2YWx1ZTsiPjwv
ZGl2PgotPC9ib2R5PgotPC9odG1sPgotIiIiCi0gICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252
ZXJ0ZXIoKQotCi0gICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5
Ci0gICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252
ZXJ0ZXIuV0VCS0lUX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1Nf
U1VCRElSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdo
YXJuZXNzYW5kcHJvcHMnKQotCi0gICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3Qg
cHJvcGVydGllcyBpbnRvIHRoZSB0ZXN0X2h0bWwKLSAgICAgICAgdGVzdF9jb250ZW50ID0gc2Vs
Zi5nZW5lcmF0ZVRlc3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCA0LCB0
ZXN0X2h0bWwpCi0KLSAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCi0gICAgICAgIGNvbnZlcnRl
ZCA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJraXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0
X2NvbnRlbnRbMV0sIGZpbGVuYW1lPSdzb21lZmlsZS5odG1sJykKLQotICAgICAgICAjIFZlcmlm
eSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb252
ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKLQotICAgICAgICAjIFZlcmlm
eSB0aGF0IGJvdGggdGhlIGhhcm5lc3MgcGF0aHMgYW5kIHByb3BlcnRpZXMgd2VyZSBhbGwgY29u
dmVydGVkIGNvcnJlY3RseQotICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoY29u
dmVydGVkWzFdLCB0ZXN0X3BhdGgsIDEsIDEpCi0gICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQ
cm9wZXJ0aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQotCi0gICAgZGVmIHRlc3RfY29u
dmVydFRlc3RIYXJuZXNzUGF0aHMoc2VsZik6Ci0gICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X3Rl
c3RoYXJuZXNzX3BhdGhzKCkgd2l0aCBhIHRlc3QgdGhhdCB1c2VzIGFsbCB0aHJlZSB0ZXN0aGFy
bmVzcyBmaWxlcyAiIiIKLQotICAgICAgICAjIEJhc2ljIHRlc3QgY29udGVudCB1c2luZyBhbGwg
dGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMKLSAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Ci08
bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci0iIiIKLSAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRl
cigpCi0KLSAgICAgICAgIyBDcmVhdGUgcGF0aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKLSAg
ICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRl
ci5XRUJLSVRfUk9PVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2NvbnZlcnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJE
SVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Ro
YXJuZXNzcGF0aHMnKQotCi0gICAgICAgICMgQ29udmVydCB0aGUgaHRtbAotICAgICAgICBkb2Mg
PSBCZWF1dGlmdWxTb3VwKHRlc3RfaHRtbCkKLSAgICAgICAgY29udmVydGVkID0gY29udmVydGVy
LmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoZG9jLCB0ZXN0X3BhdGgpCi0KLSAgICAgICAgIyBW
ZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb252
ZXJ0ZWQsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKLQotICAgICAgICAjIFZlcmlmeSBhbGwg
Z290IGNvbnZlcnRlZCBjb3JyZWN0bHkKLSAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1Bh
dGhzKGRvYywgdGVzdF9wYXRoLCAyLCAxKQotCi0gICAgZGVmIHRlc3RfY29udmVydFByZWZpeGVk
UHJvcGVydGllcyhzZWxmKToKLSAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfcHJlZml4ZWRfcHJv
cGVydGllcygpIGZpbGUgdGhhdCBoYXMgMjAgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJr
aXQtIHByZWZpeDoKLSAgICAgICAgMTAgaW4gb25lIHN0eWxlIGJsb2NrICsgNSBpbiBhbm90aGVy
IHN0eWxlCi0gICAgICAgIGJsb2NrICsgNSBpbmxpbmUgc3R5bGVzLCBpbmNsdWRpbmcgb25lIHdp
dGggbXVsdGlwbGUgcHJlZml4ZWQgcHJvcGVydGllcy4KLSAgICAgICAgVGhlIHByb3BlcnRpZXMg
aW4gdGhlIHRlc3QgY29udGVudCBhcmUgaW4gYWxsIHNvcnRzIG9mIHdhY2sgZm9ybWF0dGluZy4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Ci08c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPjwhW0NEQVRBWwotCi0uYmxvY2sxIHsKLSAgICB3aWR0aDogMzAwcHg7Ci0g
ICAgaGVpZ2h0OiAzMDBweAotfQotCi0uYmxvY2syIHsKLSAgICBAdGVzdDBAOiBwcm9wdmFsdWU7
Ci19Ci0KLS5ibG9jazN7QHRlc3QxQDogcHJvcHZhbHVlO30KLQotLmJsb2NrNCB7IEB0ZXN0MkA6
cHJvcHZhbHVlOyB9Ci0KLS5ibG9jazV7IEB0ZXN0M0AgOnByb3B2YWx1ZTsgfQotCi0jYmxvY2s2
IHsgICAgQHRlc3Q0QCAgIDogICBwcm9wdmFsdWU7ICB9Ci0KLSNibG9jazcKLXsKLSAgICBAdGVz
dDVAOiBwcm9wdmFsdWU7Ci19Ci0KLSNibG9jazggeyBAdGVzdDZAOiBwcm9wdmFsdWU7IH0KLQot
I2Jsb2NrOTpwc2V1ZG8KLXsKLQotICAgIEB0ZXN0N0A6IHByb3B2YWx1ZTsKLSAgICBAdGVzdDhA
OiAgcHJvcHZhbHVlIHByb3B2YWx1ZSBwcm9wdmFsdWU7OwotfQotCi1dXT48L3N0eWxlPgotPC9o
ZWFkPgotPGJvZHk+Ci0gICAgPGRpdiBpZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDlAOiBwcm9wdmFs
dWU7Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJlbGVtMiIgc3R5bGU9InByb3BuYW1lOiBwcm9wdmFs
dWU7IEB0ZXN0MTBAIDogcHJvcHZhbHVlOyBwcm9wbmFtZTpwcm9wdmFsdWU7Ij48L2Rpdj4KLSAg
ICA8ZGl2IGlkPSJlbGVtMiIgc3R5bGU9IkB0ZXN0MTFAOiBwcm9wdmFsdWU7IEB0ZXN0MTJAIDog
cHJvcHZhbHVlOyBAdGVzdDEzQCAgIDpwcm9wdmFsdWU7Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJl
bGVtMyIgc3R5bGU9IkB0ZXN0MTRAOnByb3B2YWx1ZSI+PC9kaXY+Ci08L2JvZHk+Ci08c3R5bGUg
dHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwotCi0uYmxvY2sxMHsgQHRlc3QxNUA6IHByb3B2YWx1
ZTsgfQotLmJsb2NrMTF7IEB0ZXN0MTZAOiBwcm9wdmFsdWU7IH0KLS5ibG9jazEyeyBAdGVzdDE3
QDogcHJvcHZhbHVlOyB9Ci0jYmxvY2sxMzpwc2V1ZG8KLXsKLSAgICBAdGVzdDE4QDogcHJvcHZh
bHVlOwotICAgIEB0ZXN0MTlAOiBwcm9wdmFsdWU7Ci19Ci0KLV1dPjwvc3R5bGU+Ci08L2h0bWw+
Ci0iIiIKLSAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCi0KLSAgICAgICAgIyBH
ZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGludG8gdGhlIHRlc3RfaHRtbAot
ICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVzdENvbnRlbnQoY29udmVydGVy
LnByZWZpeGVkX3Byb3BlcnRpZXMsIDIwLCB0ZXN0X2h0bWwpCi0KLSAgICAgICAgIyBDb252ZXJ0
IHRoZSBodG1sCi0gICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X3ByZWZpeGVk
X3Byb3BlcnRpZXMoQmVhdXRpZnVsU291cCh0ZXN0X2NvbnRlbnRbMV0pKQotCi0gICAgICAgICMg
VmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIG5vdCBjb252ZXJ0ZWQnKQotCi0gICAgICAgICMg
VmVyaWZ5IGFsbCB0aGUgZ2VuZXJhdGVkIHRlc3QgcHJvcGVydGllcyB3ZXJlIGNvbnZlcnRlZCBj
b3JyZWN0bHkKLSAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoY29udmVydGVk
LCB0ZXN0X2NvbnRlbnRbMF0pCi0KLSAgICBkZWYgdmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhzZWxm
LCBjb252ZXJ0ZWQsIHRlc3RfcGF0aCwgbnVtX3NyY19wYXRocywgbnVtX2hyZWZfcGF0aHMpOgot
ICAgICAgICAiIiIgVmVyaWZpZXMgYWxsIFczQy1zdHlsZSBwYXRocyB0byB0ZXN0IGhhcm5lc3Mg
ZmlsZXMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5ICIiIgotCi0gICAgICAgICMgTWFrZSBzb3Vw
IGlmIHdlIG5lZWQgdG8KLSAgICAgICAgaWYgaXNpbnN0YW5jZShjb252ZXJ0ZWQsIGJhc2VzdHJp
bmcpOgotICAgICAgICAgICAgY29udmVydGVkID0gQmVhdXRpZnVsU291cChjb252ZXJ0ZWQpCi0K
LSAgICAgICAgIyBCdWlsZCB0aGUgcGF0aCB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKLSAgICAg
ICAgcmVzb3VyY2VzX2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0
ZXIuV0VCS0lUX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVy
LlJFU09VUkNFU19ESVJFQ1RPUlkpCi0KLSAgICAgICAgIyBWZXJpZnkgdGhlIG9yaWdpbmFsIHBh
dGhzIGFyZSBubyBsb25nZXIgdGhlcmUKLSAgICAgICAgb3JpZ19wYXRoX3BhdHRlcm4gPSByZS5j
b21waWxlKCdcIi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhsZW4oY29udmVydGVkLmZpbmRBbGwoc3JjPW9yaWdfcGF0aF9wYXR0ZXJuKSksIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcGF0aCB3YXMgbm90IGNv
bnZlcnRlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFs
bChocmVmPW9yaWdfcGF0aF9wYXR0ZXJuKSksIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0aGFybmVzcyBocmVmIHBhdGggd2FzIG5vdCBjb252ZXJ0ZWQnKQotCi0gICAgICAgICMg
R2V0IHRoZSBuZXcgcmVscGF0aCBmcm9tIHRoZSB0ZXN0ZXIgZGlyCi0gICAgICAgIG5ld19yZWxw
YXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19kaXIsIHRlc3RfcGF0aCkKLQotICAgICAg
ICAjIFZlcmlmeSBpdCdzIGluIGFsbCB0aGUgcmlnaHQgcGxhY2VzCi0gICAgICAgIHJlbHBhdGhf
cGF0dGVybiA9IHJlLmNvbXBpbGUobmV3X3JlbHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFsbChzcmM9cmVscGF0aF9wYXR0ZXJuKSksIG51bV9zcmNf
cGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcmVsYXRp
dmUgcGF0aCBub3QgY29ycmVjdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252
ZXJ0ZWQuZmluZEFsbChocmVmPXJlbHBhdGhfcGF0dGVybikpLCBudW1faHJlZl9wYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhyZWYgcmVsYXRpdmUgcGF0aCBu
b3QgY29ycmVjdCcpCi0KLSAgICBkZWYgdmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYsIGNv
bnZlcnRlZCwgdGVzdF9wcm9wZXJ0aWVzKToKLSAgICAgICAgIiIiIFZlcmlmaWVzIGEgbGlzdCBv
ZiB0ZXN0X3Byb3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5ICIiIgotCi0gICAgICAg
ICMgVmVyaWZ5IHRoYXQgdGhlIG51bWJlciBvZiB0ZXN0IHByb3BlcnRpZXMgZXF1YWxzIHRoZSBu
dW1iZXIgdGhhdCB3ZXJlIGNvbnZlcnRlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
b252ZXJ0ZWRbMF0pLCBsZW4odGVzdF9wcm9wZXJ0aWVzKSwgJ0luY29ycmVjdCBudW1iZXIgb2Yg
cHJvcGVydGllcyBjb252ZXJ0ZWQnKQotCi0gICAgICAgICMgVmVyaWZ5IHRoZXkncmUgYWxsIGlu
IHRoZSBjb252ZXJ0ZWQgZG9jdW1lbnQKLSAgICAgICAgZm9yIHRlc3RfcHJvcCBpbiB0ZXN0X3By
b3BlcnRpZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoKHRlc3RfcHJvcCBpbiBjb252
ZXJ0ZWRbMV0pLCAnUHJvcGVydHkgJyArIHRlc3RfcHJvcCArICcgbm90IGZvdW5kIGluIGNvbnZl
cnRlZCBkb2MnKQotCi0gICAgZGVmIGdlbmVyYXRlVGVzdENvbnRlbnQoc2VsZiwgZnVsbF9wcm9w
X2xpc3QsIG51bV90ZXN0X3Byb3BlcnRpZXMsIGh0bWwpOgotICAgICAgICAiIiIgR2VuZXJhdGVz
IGEgcmFuZG9tIGxpc3Qgb2YgdW5pcXVlIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0
LSBwcmVmaXggYW5kIGluc2VydHMgdGhlbSBpbnRvIGh0bWwgY29udGVudCB0aGF0J3MgYmVlbiB0
b2tlbml6ZWQgdXNpbmcgXCdAdGVzdFhYQFwnIHN5bnRheCAiIiIKLQotICAgICAgICB0ZXN0X3By
b3BlcnRpZXMgPSBbXQotCi0gICAgICAgICMgR3JhYiBhIHJhbmRvbSBidW5jaCBvZiAyMCB1bmlx
dWUgcHJvcGVydGllcyByZXF1aXJpbmcgcHJlZml4ZXMgdG8gdGVzdCB3aXRoCi0gICAgICAgIGNv
dW50ID0gMAotICAgICAgICB3aGlsZSBjb3VudCA8IG51bV90ZXN0X3Byb3BlcnRpZXM6Ci0gICAg
ICAgICAgICBpZHggPSByYW5kaW50KDAsIGxlbihmdWxsX3Byb3BfbGlzdCkgLSAxKQotICAgICAg
ICAgICAgaWYgbm90KGZ1bGxfcHJvcF9saXN0W2lkeF0gaW4gdGVzdF9wcm9wZXJ0aWVzKToKLSAg
ICAgICAgICAgICAgICB0ZXN0X3Byb3BlcnRpZXMuYXBwZW5kKGZ1bGxfcHJvcF9saXN0W2lkeF0p
Ci0gICAgICAgICAgICAgICAgY291bnQgKz0gMQotCi0gICAgICAgICMgUmVwbGFjZSB0aGUgdG9r
ZW5zIGluIHRoZSB0ZXN0aHRtbCB3aXRoIHRoZSB0ZXN0IHByb3BlcnRpZXMuIFdhbGsgYmFja3dh
cmQKLSAgICAgICAgIyB0aHJvdWdoIHRoZSBsaXN0IHRvIHJlcGxhY2UgdGhlIGRvdWJsZS1kaWdp
dCB0b2tlbnMgZmlyc3QKLSAgICAgICAgaWR4ID0gbGVuKHRlc3RfcHJvcGVydGllcykgLSAxCi0g
ICAgICAgIHdoaWxlIGlkeCA+PSAwOgotICAgICAgICAgICAgIyBVc2UgdGhlIHVucHJlZml4ZWQg
dmVyc2lvbgotICAgICAgICAgICAgdGVzdF9wcm9wID0gdGVzdF9wcm9wZXJ0aWVzW2lkeF0ucmVw
bGFjZSgnLXdlYmtpdC0nLCAnJykKLSAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW4KLSAg
ICAgICAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoJ0B0ZXN0JyArIHN0cihpZHgpICsgJ0AnLCB0
ZXN0X3Byb3ApCi0gICAgICAgICAgICBpZHggLT0gMQotCi0gICAgICAgIHJldHVybiAodGVzdF9w
cm9wZXJ0aWVzLCBodG1sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NDE3MjIwZjIxYzIxNjIxMjg3
OWI3NGMzNjVjODk4NDZiMzE4ODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQor
KysgL2Rldi9udWxsCkBAIC0xLDQ3NyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLQot
IyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMK
LSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQotIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZwotIyAgICBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0jICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotIyAgICBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0j
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQotIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0jIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKLSMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCi0jIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KLQotIiIiCi0g
VGhpcyBzY3JpcHQgaW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0MgQ1NTIHRlc3RzIGludG8gV2Vi
S2l0LgotCi0gWW91IG11c3QgaGF2ZSBjaGVja2VkIG91dCB0aGUgVzNDIHJlcG9zaXRvcnkgdG8g
eW91ciBsb2NhbCBkcml2ZS4KLQotIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRoZSB0ZXN0cyBp
bnRvIFdlYktpdCBmb2xsb3dpbmcgdGhlc2UgcnVsZXM6Ci0KLSAgICAtIE9ubHkgdGVzdHMgdGhh
dCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcgcmV2aWV3IGFy
ZSBpbXBvcnRlZAotCi0gICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVkIGludG8gTGF5b3V0VGVz
dHMvY3Nzd2cKLQotICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBhcHByb3ZlZCwgdGhleSdsbCBiZSBp
bXBvcnRlZCBpbnRvIGEgZGlyZWN0b3J5IHRyZWUgdGhhdAotICAgICAgbWlycm9ycyB0aGUgQ1NT
IE1lcmN1cmlhbCByZXBvLiBGb3IgZXhhbXBsZSwgPGNzc3dnX3JlcG9fcm9vdD4vYXBwcm92ZWQv
Y3NzMi4xIGlzIGJyb3VnaHQgaW4KLSAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVk
L2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVy
IHRoYXQKLQotICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXknbGwgYmUgYnJv
dWdodCBpbiBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwgYWxzbwotICAg
ICAgbWFpbnRhaW4gdGhlaXIgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0LiBGb3IgZXhh
bXBsZSwgZXZlcnl0aGluZyB1bmRlcgotICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0
b3JzL2Fkb2JlL3N1Ym1pdHRlZCBpcyBicm91Z2h0IGludG8gc3VibWl0dGVkLCBtaXJyb3Jpbmcg
aXRzCi0gICAgICBkaXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBvCi0KLSAgICAt
IElmIHRoZSBpbXBvcnQgZGlyZWN0b3J5IHNwZWNpZmllZCBpcyBqdXN0IGEgY29udHJpYnV0b3Ig
Zm9sZGVyLCBvbmx5IHRoZSBzdWJtaXR0ZWQgZm9sZGVyCi0gICAgICBmb3IgdGhhdCBjb250cmli
dXRvciBpcyBicm91Z2h0IGluLiBGb3IgZXhhbXBsZSwgdG8gaW1wb3J0IGFsbCBvZiBNb3ppbGxh
J3MgdGVzdHMsIGVpdGhlcgotICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21v
emlsbGEgb3IgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEvc3VibWl0dGVk
Ci0gICAgICB3aWxsIHdvcmsgYW5kIGFyZSBlcXVpdmFsZW50Ci0KLSAgICAtIEZvciB0aGUgdGlt
ZSBiZWluZywgdGhpcyBzY3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGltcG9ydCB0aGUg
ZnVsbCBzZXQgb2Ygc3VibWl0dGVkCi0gICAgICB0ZXN0cyB1bmRlciBjb250cmlidXRvcnMvKi9z
dWJtaXR0ZWQuIFNpbmNlIHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMgaXMganVzdCBh
IHNtYWxsCi0gICAgICBjb250cm9sIG1lY2hhbmlzbSB0byBlbmZvcmNlIGNhcmVmdWxseSBzZWxl
Y3Rpbmcgd2hhdCBub24tYXBwcm92ZWQgdGVzdHMgYXJlIGltcG9ydGVkLgotICAgICAgSXQgY2Fu
IG9idmlvdXNseSBhbmQgZWFzaWx5IGJlIGNoYW5nZWQuCi0KLSAgICAtIEJ5IGRlZmF1bHQsIG9u
bHkgcmVmdGVzdHMgYW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92ZXJyaWRk
ZW4gd2l0aCBhIC1hIG9yIC0tYWxsCi0gICAgICBhcmd1bWVudAotCi0gICAgLSBBbHNvIGJ5IGRl
ZmF1bHQsIGlmIHRlc3QgZmlsZXMgYnkgdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0IGluIHRo
ZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnksCi0gICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRo
IHRoZSBpZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBl
cmlvZGljYWxseS4KLSAgICAgIFRoaXMgY2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBieSBhIC1uIG9y
IC0tbm8tb3ZlcndyaXRlIGZsYWcKLQotICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8g
d29yayBpbiBXZWJLaXQ6Ci0gICAgICAgICAxLiAueGh0IGV4dGVuc2lvbnMgYXJlIGNoYW5nZWQg
dG8gLnhodG1sIHRvIG1ha2UgbmV3LXJ1bi13ZWJraXQtdGVzdHMgaGFwcHkKLSAgICAgICAgIDIu
IFBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzIGFyZSBtb2RpZmllZCBwb2ludCB0byBXZWJr
aXQncyBjb3B5IG9mIHRoZW0gaW4KLSAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywg
dXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KLSAg
ICAgICAgIDMuIEFsbCBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9y
IHByZWZpeCBhcmUgcHJlZml4ZWQgLSB0aGlzIGN1cnJlbnQKLSAgICAgICAgICAgIGxpc3Qgb2Yg
d2hhdCBuZWVkcyBwcmVmaXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1By
b3BlcnRpZXMuaW4KLSAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9m
IGl0cyByZWZlcmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucwotICAg
ICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMgZXhwZWN0cwotICAgICAgICAgNS4gSWYgYSBh
IHJlZmVyZW5jZSBmaWxlcyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRlc3Qg
dGhhdCB1c2VzIGl0LCBpdCBpcyBjaGVja2VkCi0gICAgICAgICAgICBmb3IgcGF0aHMgdG8gc3Vw
cG9ydCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQgcmVsYXRp
dmUgcG9zaXRpb24gdG8gdGhlCi0gICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRoZSBzYW1lIGRp
cmVjdG9yeSkKLQotICAgICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1dHMgdGhlIHRv
dGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0eXBlCi0KLSAg
ICAgLSBBbHNvIHVwb24gY29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkgd2hlcmUgZmlsZXMgYXJl
IGltcG9ydGVkIHdpbGwgaGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVuCi0gICAgICAgd2l0aCBh
IHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2YWlsYWJsZSwgdGhl
IGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0Ci0gICAgICAgcmVxdWlyZSBwcmVmaXhl
cywgdGhlIGxpc3Qgb2YgaW1wb3J0ZWQgZmlsZXMsIGFuZCBndWlkYW5jZSBmb3IgZnV0dXJlIHRl
c3QgbW9kaWZpY2F0aW9uIGFuZAotICAgICAgIG1haW50ZW5hbmNlLgotCi0gICAgIC0gT24gc3Vi
c2VxdWVudCBpbXBvcnRzLCB0aGlzIGZpbGUgaXMgcmVhZCB0byBkZXRlcm1pbmUgaWYgZmlsZXMg
aGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5ld2VyIGNoYW5nZXNldHMuCi0gICAgICAgVGhlIHNj
cmlwdCByZW1vdmVzIHRoZXNlIGZpbGVzIGFjY29yZGluZ2x5LgotIiIiCi1pbXBvcnQgZGF0ZXRp
bWUKLWltcG9ydCBtaW1ldHlwZXMKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgot
aW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwot
Ci1mcm9tIHdlYmtpdHB5LnczYy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgotZnJvbSB3
ZWJraXRweS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IFRlc3RDb252ZXJ0ZXIKLQotTEFZT1VU
X1RFU1RTX0RJUkVDVE9SWSA9ICdMYXlvdXRUZXN0cycKLUNTU1dHX0RJUkVDVE9SWSA9ICdjc3N3
ZycKLVJFU09VUkNFU19ESVJFQ1RPUlkgPSAncmVzb3VyY2VzJwotQVBQUk9WRUQgPSAnYXBwcm92
ZWQnCi1TVUJNSVRURUQgPSAnc3VibWl0dGVkJwotVU5LTk9XTiA9ICd1bmtub3duJwotTk9UX0FW
QUlMQUJMRSA9ICdOb3QgQXZhaWxhYmxlJwotCi0KLWRlZiBtYWluKGFyZ3YsIF8sIHN0ZGVycik6
Ci0KLSAgICBwYXJzZV9hcmdzKCkKLSAgICBpbXBvcnRfZGlyID0gdmFsaWRhdGVfaW1wb3J0X2Rp
cmVjdG9yeSgpCi0gICAgdGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihpbXBvcnRfZGlyLCBv
cHRpb25zKQotICAgIHRlc3RfaW1wb3J0ZXIuZG9faW1wb3J0KCkKLQotCi1kZWYgcGFyc2VfYXJn
cygpOgotCi0gICAgZ2xvYmFsIG9wdGlvbnMKLSAgICBnbG9iYWwgYXJncwotCi0gICAgcGFyc2Vy
ID0gT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIHczY190ZXN0X2Rp
cmVjdG9yeScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3ZlcndyaXRlJywK
LSAgICAgICAgICAgICAgICAgICAgICAjYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0Zs
YWcgdG8gcHJldmVudCBkdXBsaWNhdGUgdGVzdCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIGV4aXN0
aW5nIHRlc3RzLiBCeSBkZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4nKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctYScsICctLWFsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0
aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ltcG9ydCBhbGwgdGVzdHMgaW5jbHVkaW5nIHJl
ZnRlc3RzLCBKUyB0ZXN0cywgYW5kIG1hbnVhbC9waXhlbCB0ZXN0cy4gQnkgZGVmYXVsdCwgb25s
eSByZWZ0ZXN0cyBhbmQgSlMgdGVzdHMgYXJlIGltcG9ydGVkJykKLQotICAgIChvcHRpb25zLCBh
cmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAg
ICAgICBwYXJzZXIuZXJyb3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzJykKLQotCi1k
ZWYgdmFsaWRhdGVfaW1wb3J0X2RpcmVjdG9yeSgpOgotCi0gICAgaW1wb3J0X2RpciA9IGFyZ3Nb
MF0KLQotICAgICMgTWFrZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXJlY3RvcnkgZXhpc3RzCi0gICAg
aWYgbm90IG9zLnBhdGguZXhpc3RzKGltcG9ydF9kaXIpOgotICAgICAgICBzeXMuZXhpdCgnU291
cmNlIGRpcmVjdG9yeSAlcyBub3QgZm91bmQhJyAlIGltcG9ydF9kaXIpCi0KLSAgICAjIE1ha2Ug
c3VyZSB0aGUgdGVzdHMgYXJlIG9mZmljaWFsbHkgc3VibWl0dGVkIHRvIHRoZSBXM0MsIGVpdGhl
ciBhcHByb3ZlZCBvcgotICAgICMgc3VibWl0dGVkIGZvbGxvd2luZyB0aGVpciBkaXJlY3Rvcnkg
bmFtaW5nIGNvbnZlbnRpb25zCi0gICAgaWYgaW1wb3J0X2Rpci5maW5kKEFQUFJPVkVEKSA9PSAt
MSBhbmQgXAotICAgICAgIGltcG9ydF9kaXIuZmluZChTVUJNSVRURUQpID09IC0xOgotICAgICAg
ICAjIElmIG5vdCBwb2ludGVkIGRpcmVjdGx5IHRvIHRoZSBhcHByb3ZlZCBkaXJlY3Rvcnkgb3Ig
dG8gYW55IHN1Ym1pdHRlZAotICAgICAgICAjIGRpcmVjdG9yeSwgY2hlY2sgZm9yIGEgc3VibWl0
dGVkIHN1YmRpcmVjdG9yeSBhbmQgZ28gd2l0aCB0aGF0Ci0gICAgICAgIGltcG9ydF9kaXIgPSBv
cy5wYXRoLmpvaW4oaW1wb3J0X2RpciwgJ3N1Ym1pdHRlZCcpCi0gICAgICAgIGlmIG5vdCBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcikpOgotICAgICAgICAgICAgc3lzLmV4
aXQoJ1VuYWJsZSB0byBpbXBvcnQgdGVzdHMgdGhhdCBhcmVuXCd0IGFwcHJvdmVkIG9yIHN1Ym1p
dHRlZCB0byB0aGUgVzNDJykKLQotICAgIHJldHVybiBpbXBvcnRfZGlyCi0KLQotY2xhc3MgVGVz
dEltcG9ydGVyKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlX2RpcmVj
dG9yeSwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKLQotICAgICAg
ICBzZWxmLnNvdXJjZV9kaXJlY3RvcnkgPSBzb3VyY2VfZGlyZWN0b3J5Ci0gICAgICAgIHNlbGYu
d2Via2l0X3Jvb3QgPSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCi0g
ICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
c2VwLCBzZWxmLndlYmtpdF9yb290LCBMQVlPVVRfVEVTVFNfRElSRUNUT1JZLCBDU1NXR19ESVJF
Q1RPUlkpCi0KLSAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBOT1RfQVZBSUxBQkxFCi0gICAgICAg
IHNlbGYudGVzdF9zdGF0dXMgPSBVTktOT1dOCi0KLSAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9
IFtdCi0KLSAgICBkZWYgZG9faW1wb3J0KHNlbGYpOgotICAgICAgICBzZWxmLnNjYW5fc291cmNl
X2RpcmVjdG9yeShzZWxmLnNvdXJjZV9kaXJlY3RvcnkpCi0gICAgICAgIHNlbGYuZ2V0X2NoYW5n
ZXNldCgpCi0gICAgICAgIHNlbGYuaW1wb3J0X3Rlc3RzKCkKLQotICAgIGRlZiBnZXRfY2hhbmdl
c2V0KHNlbGYpOgotICAgICAgICAiIiIgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNo
YW5nZXNldCBhbmQgcGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZSBjaGFuZ2VzZXQuIElmIHRo
YXQgZG9lc24ndCB3b3Jrb3V0IGZvciBzb21lIHJlYXNvbiwgaXQganVzdCBiZWNvbWVzICdOb3Qg
QXZhaWxhYmxlJyAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEFzc3VtaW5nIE1l
cmN1cmlhbCBpcyBzZXQgdXAgb24gdGhlIHN5c3RlbSwgdHJ5IHRvIGdyYWIgdGhlIGNoYW5nZXNl
dCB3ZSdyZSBpbXBvcnRpbmcKLSAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFsn
aGcnLCAndGlwJ10sIGVudj1vcy5lbnZpcm9uLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBjd2Q9
c2VsZi5zb3VyY2VfZGlyZWN0b3J5KQotICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBwcm9j
LnN0ZG91dC5yZWFkbGluZXMoKVswXQotICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBzZWxm
LmNoYW5nZXNldC5zcGxpdCgnY2hhbmdlc2V0OicpWzFdCi0gICAgICAgIGV4Y2VwdDoKLSAgICAg
ICAgICAgICMgT2ggd2VsbCwgd2UgdHJpZWQKLSAgICAgICAgICAgIHNlbGYuY2hhbmdlc2V0ID0g
J05vdCBBdmFpbGFibGUnCi0KLSAgICBkZWYgc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYsIGRp
cmVjdG9yeSk6Ci0gICAgICAgICIiIiBXYWxrcyB0aGUgfGRpcmVjdG9yeXwgbG9va2luZyBmb3Ig
SFRNTCBmaWxlcyB0aGF0IGFyZSBpbXBvcnRhYmxlIHRlc3RzLiAiIiIKLQotICAgICAgICBmb3Ig
cm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgotCi0gICAgICAgICAgICBw
cmludCAnU2Nhbm5pbmcgJyArIHJvb3QgKyAnLi4uJwotICAgICAgICAgICAgdG90YWxfdGVzdHMg
PSAwCi0gICAgICAgICAgICByZWZ0ZXN0cyA9IDAKLSAgICAgICAgICAgIGpzdGVzdHMgPSAwCi0K
LSAgICAgICAgICAgICMgSWdub3JlIGFueSByZXBvIHN0dWZmCi0gICAgICAgICAgICBpZiAnLmdp
dCcgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCi0gICAgICAg
ICAgICBpZiAnLmhnJyBpbiBkaXJzOgotICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuaGcn
KQotICAgICAgICAgICAgIyBhcmNoaXZlIGFuZCBkYXRhIGRpcnMgYXJlIGludGVybmFsIGNzc3dn
IHRoaW5ncyB0aGF0IGxpdmUgaW4gZXZlcnkgYXBwcm92ZWQgZGlyZWN0b3J5Ci0gICAgICAgICAg
ICBpZiAnZGF0YScgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnZGF0YScp
Ci0gICAgICAgICAgICBpZiAnYXJjaGl2ZScgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBkaXJz
LnJlbW92ZSgnYXJjaGl2ZScpCi0KLSAgICAgICAgICAgIGNvcHlfbGlzdCA9IFtdCi0KLSAgICAg
ICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLQotICAgICAgICAgICAgICAgIGZ1bGxwYXRo
ID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKQotCi0gICAgICAgICAgICAgICAgIyBPbmx5
IGh0bWwgb3IgeG1sIGFyZSBjb25zaWRlcmVkIHRlc3RzCi0gICAgICAgICAgICAgICAgbWltZXR5
cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmdWxscGF0aCkKLSAgICAgICAgICAgICAgICBpZiAn
aHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciAneG1sJyBpbiBzdHIobWltZXR5cGVbMF0pOgot
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyc2VyID0gVGVzdFBhcnNlcih2YXJzKG9wdGlv
bnMpLCBmaWxlbmFtZT1mdWxscGF0aCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvID0g
dGVzdF9wYXJzZXIuYW5hbHl6ZV90ZXN0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0
X2luZm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKToKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICAg
ICAgdG90YWxfdGVzdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFt
ZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdF9pbmZvWyd0ZXN0J10pCi0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICMgQWRkIHRoZSByZWYgZmlsZSwgcmVuYW1pbmcgaXQgdG8gV2Via2l0J3Mgd2F5
Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGU6IFRoZSBwcmVmZXJhYmxlIHdheSB0byBo
YW5kbGUgdGhpcyB3b3VsZCBiZSB0byBqdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjICAg
ICAgIGFkZCBzdXBwb3J0IGluIFdlYmtpdCdzIGhhcm5lc3MgdG8gcmVhZCBtZXRhZGF0YQotICAg
ICAgICAgICAgICAgICAgICAgICAgIyAgICAgICByYXRoZXIgdGhhbiByZWx5IG9uIGEgZmlsZSBu
YW1pbmcgY29udmVudGlvbi4gU2luY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAg
dGhlIENTU1dHIHRlc3RzIHN1cHBvcnQgbWFueTpvbmUgdGVzdHM6cmVmZXJlbmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIyAgICAgICBlbmFibGluZyBtZXRhZGF0YSBwYXJzaW5nIGluIG91
ciBoYXJuZXNzIHdvdWxkIGFsc28KLSAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgcmVk
dWNlIHRoZSBudW1iZXIgb2YgZmlsZXMgY29waWVkIGluLiBBcyB0aGlzIGlzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAjICAgICAgIGltcGxlbWVudGVkIGhlcmUsIHdlIGFyZSBrbm93aW5nbHkg
aW1wb3J0aW5nIG11bHRpcGxlCi0gICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGNvcGll
cyBvZiB0aGUgc2FtZSByZWYgZmlsZXMgdG8gYWRoZXJlIHRvIFdlYmtpdCdzIHdheQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5h
bWUpWzBdICsgJy1leHBlY3RlZCcKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlICs9
IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMV0KLQotICAgICAgICAgICAgICAgICAg
ICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdk
ZXN0JzogcmVmX2ZpbGV9KQotICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVu
ZCh7J3NyYyc6IHRlc3RfaW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBhcmUgcmVmIHN1cHBvcnQgZmlsZXMsIHRoZSBk
ZXN0aW5hdGlvbiBpcyBzaG91bGQgbm93IGJlIHJlbGF0aXZlIHRvIHRoZQotICAgICAgICAgICAg
ICAgICAgICAgICAgIyB0ZXN0IGZpbGUgYW5kIG5ldyBsb2NhdGlvbiBvZiB0aGUgcmVmIGZpbGUK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5
cygpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVz
dF9pbmZvWydyZWZzdXBwb3J0J106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
QnVpbGQgdGhlIGNvcnJlY3Qgc291cmNlIHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfaW5m
b1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5ub3JtcGF0aChzb3VyY2VfZmlsZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdhcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19jb3B5ID0geydzcmMnOiBzb3VyY2VfZmls
ZSwgJ2Rlc3QnOiBzdXBwb3J0X2ZpbGV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgT25seSBhZGQgaXQgb25jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBu
b3QodG9fY29weSBpbiBjb3B5X2xpc3QpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29weV9saXN0LmFwcGVuZCh0b19jb3B5KQotCi0gICAgICAgICAgICAgICAgICAgIGVs
aWYgJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAg
IGpzdGVzdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRo
LCAnZGVzdCc6IGZpbGVuYW1lfSkKLQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICAg
ICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkK
LQotICAgICAgICAgICAgICAgICMgSWdub3JlIGRvdGZpbGVzIGFuZCByYW5kb20gcGVybCBzY3Jp
cHRzIHRoYXQgYXJlIGluIHNvbWUgZGlycwotICAgICAgICAgICAgICAgIGVsaWYgbm90KGZpbGVu
YW1lLnN0YXJ0c3dpdGgoJy4nKSkgYW5kIG5vdChmaWxlbmFtZS5lbmRzd2l0aCgnLnBsJykpOgot
ICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdk
ZXN0JzogZmlsZW5hbWV9KQotCi0gICAgICAgICAgICBpZiB0b3RhbF90ZXN0cyA9PSAwOgotICAg
ICAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlIG5vIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5LCBz
a2lwIHRoZSBzdXBwb3J0IGRpciB0aGF0IGxpdmVzIGluIGFsbAotICAgICAgICAgICAgICAgICMg
b2YgdGhlICdhcHByb3ZlZCcgZm9sZGVycyBhcyBwYXJ0IG9mIHRoZSBhdXRvbWF0ZWQgYnVpbGQg
c3lzdGVtCi0gICAgICAgICAgICAgICAgaWYgJ3N1cHBvcnQnIGluIGRpcnM6Ci0gICAgICAgICAg
ICAgICAgICAgIGRpcnMucmVtb3ZlKCdzdXBwb3J0JykKLQotICAgICAgICAgICAgICAgIGlmIGxl
bihjb3B5X2xpc3QpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlzIGRp
cmVjdG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfbGlzdC5hcHBlbmQoeydkaXJuYW1lJzogcm9vdCwg
J2NvcHlfbGlzdCc6IGNvcHlfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3JlZnRlc3RzJzogcmVmdGVzdHMsICdqc3Rlc3RzJzoganN0ZXN0cywgJ3Rv
dGFsX3Rlc3RzJzogdG90YWxfdGVzdHN9KQotCi0gICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToK
LSAgICAgICAgIiIiIENvcGllcyBhbmQgY29udmVydHMgdGhlIGZ1bGwgbGlzdCBvZiBpbXBvcnRh
YmxlIHRlc3RzIGludG8gV2Via2l0IGFuZCBsb2dzIHdoYXQgd2FzIGltcG9ydGVkIGluIGVhY2gg
ZGlyZWN0b3J5ICIiIgotCi0gICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3RpbmF0aW9uIGRp
cmVjdG9yeSBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKLSAgICAgICAgaWYgbGVuKHNl
bGYuaW1wb3J0X2xpc3QpID4gMDoKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVzdGluYXRpb25f
ZGlyZWN0b3J5KCkKLQotICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKLSAgICAg
ICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgPSAwCi0gICAgICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRl
c3RzID0gMAotICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAotCi0gICAgICAgIGZv
ciBkaXJfdG9fY29weSBpbiBzZWxmLmltcG9ydF9saXN0OgotCi0gICAgICAgICAgICB0b3RhbF9p
bXBvcnRlZF90ZXN0cyArPSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQotICAgICAgICAgICAg
dG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3RzJ10KLSAgICAg
ICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pzdGVzdHMnXQot
Ci0gICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KLQotICAgICAgICAgICAgaWYg
bGVuKGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXSkgPiAwOgotCi0gICAgICAgICAgICAgICAgIyBC
dWlsZCB0aGUgc3VicGF0aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJtaXR0ZWQgZGly
ZWN0b3J5Ci0gICAgICAgICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlbJ2Rpcm5hbWUn
XQotICAgICAgICAgICAgICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50ZXN0X3N0YXR1
cykKLSAgICAgICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFydDpsZW4ob3Jp
Z19wYXRoKV0KLQotICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3VicGF0aCB0byB0
aGUgZGVzdGluYXRpb25fZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgbmV3X3BhdGggPSBvcy5w
YXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQotCi0gICAg
ICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9yaWVzIGlmIG5v
dCB0aGVyZQotICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhuZXdfcGF0aCkp
OgotICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKLQotICAgICAgICAg
ICAgICAgIGNvcGllZF9maWxlcyA9IFtdCi0KLSAgICAgICAgICAgICAgICBmb3IgZmlsZV90b19j
b3B5IGluIGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXToKLQotICAgICAgICAgICAgICAgICAgICBv
cmlnX2ZpbGVwYXRoID0gb3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3NyYyddKQotCi0g
ICAgICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3RvcmllcyBvbiB0aGUg
bGlzdCwgYnV0IGNoZWNrIHRvIGJlIHNhZmUKLSAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0
aC5pc2RpcihvcmlnX2ZpbGVwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0KLSAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmlsZSBjYW4ndCBi
ZSBmb3VuZAotICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3JpZ19m
aWxlcGF0aCkpOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6ICcgKyBv
cmlnX2ZpbGVwYXRoICsgJyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRoZSB0ZXN0LicK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAg
IyBBcHBlbmQgdGhlIGNvcnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKLSAgICAgICAgICAgICAg
ICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlb
J2Rlc3QnXSkKLQotICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNpb24gdG8gd29y
ayBpbiB0aGUgV2ViS2l0IGhhcm5lc3MKLSAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRo
ID0gbmV3X2ZpbGVwYXRoLnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKLQotICAgICAgICAgICAg
ICAgICAgICAjIE1ha2UgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZAotICAgICAgICAgICAgICAgICAg
ICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpKToK
LSAgICAgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShuZXdf
ZmlsZXBhdGgpKQotCi0gICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0
aW5nIHRlc3RzIGlmIHNwZWNpZmllZAotICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25zLm5v
X292ZXJ3cml0ZSBpcyBUcnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBhdGgpOgotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBm
aWxlICcgKyBuZXdfZmlsZXBhdGgKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYgaXMgaW4gb3Jk
ZXIgaGVyZSBmb3IgZXhpc3RpbmcgZmlsZXM/Ci0gICAgICAgICAgICAgICAgICAgICAgICAjICAg
ICAgIEluIG90aGVyIHdvcmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0aW5nIGlkZW50
aWNhbCBmaWxlcywgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZXJlJ3Mg
bm8gaGFybSBpbiBjb3B5aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcmludCAnSW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAotICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAotCi0gICAgICAg
ICAgICAgICAgICAgICMgT25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUgY29udmVydGVk
Ci0gICAgICAgICAgICAgICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hvdWxkIGpzIHdo
ZW4gc3VwcG9ydCBpcyBhZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24KLSAgICAgICAg
ICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRo
KQotICAgICAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkgIG9yIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdChu
ZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgY29udmVydGVkX2ZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIFN0cmFpZ2h0IGNvcHkgaWYgbm90aGluZydzIGNoYW5nZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIFdyaXRlIG91dCB0aGUgY29udmVydGVkIHRlc3QKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2ZpbGVbMF0pIC0g
c2V0KHByZWZpeGVkX3Byb3BlcnRpZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0aCwgJ3cnKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dGZpbGUud3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0ZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2Zp
bGVwYXRoKQotCi0gICAgICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBlbmQobmV3X2Zp
bGVwYXRoLnJlcGxhY2Uoc2VsZi53ZWJraXRfcm9vdCwgJycpKQotCi0gICAgICAgICAgICAgICAg
IyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2Ug
dGhlIGxhc3QgaW1wb3J0Ci0gICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVsZXRlZF9maWxl
cyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzKQotCi0gICAgICAgICAgICAgICAgIyBEcm9wIHNvbWUg
aW5mbyBhYm91dCB3aGF0IGp1c3QgaGFwcGVuZWQgaGVyZQotICAgICAgICAgICAgICAgIHNlbGYu
d3JpdGVfaW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0
aWVzKQotCi0gICAgICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCi0KLSAgICAgICAgcHJpbnQg
J0lNUE9SVEVEICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RBTCBURVNUUycK
LSAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMp
ICsgJyByZWZ0ZXN0cycKLSAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1w
b3J0ZWRfanN0ZXN0cykgKyAnIEpTIHRlc3RzJwotICAgICAgICBwcmludCAnSW1wb3J0ZWQgJyAr
IHN0cih0b3RhbF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgLSB0b3Rh
bF9pbXBvcnRlZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKLQotICAgIGRlZiBz
ZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgICIiIiBDcmVhdGVzIGEg
ZGVzdGluYXRpb24gZGlyZWN0b3J5IHRoYXQgbWlycm9ycyB0aGF0IG9mIHRoZSBzb3VyY2UgYXBw
cm92ZWQgb3Igc3VibWl0dGVkIGRpcmVjdG9yeSAiIiIKLQotICAgICAgICAjIFRoZSB0ZXN0IHN0
YXR1cyBpcyBpbiB0aGUgcGF0aCwgc28gZ3JhYiBpdAotICAgICAgICBzZWxmLmdldF90ZXN0X3N0
YXR1cygpCi0KLSAgICAgICAgIyBNaXJyb3IgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhl
IGNzc3dnIHJlcG8gdW5kZXIgYXBwcm92ZWQvIG9yIHN1Ym1pdHRlZC8KLSAgICAgICAgc3RhcnQg
PSBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChzZWxmLnRlc3Rfc3RhdHVzKQotICAgICAgICBu
ZXdfc3VicGF0aCA9IHNlbGYuc291cmNlX2RpcmVjdG9yeVtzdGFydDpsZW4oc2VsZi5zb3VyY2Vf
ZGlyZWN0b3J5KV0KLQotICAgICAgICBkZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSBvcy5wYXRoLmpv
aW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQotCi0gICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbl9kaXJlY3RvcnkpOgotICAgICAgICAgICAg
b3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyZWN0b3J5KQotCi0gICAgICAgIHByaW50ICdUZXN0
cyB3aWxsIGJlIGltcG9ydGVkIGludG86ICcgKyBkZXN0aW5hdGlvbl9kaXJlY3RvcnkKLQotICAg
IGRlZiBnZXRfdGVzdF9zdGF0dXMoc2VsZik6Ci0gICAgICAgICIiIiBTZXRzIHRoZSB0ZXN0IHN0
YXR1cyB0byBlaXRoZXIgJ2FwcHJvdmVkJyBvciAnc3VibWl0dGVkJyAiIiIKLQotICAgICAgICBz
dGF0dXMgPSBVTktOT1dOCi0KLSAgICAgICAgaWYgc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQo
QVBQUk9WRUQpICE9IC0xOgotICAgICAgICAgICAgc3RhdHVzID0gQVBQUk9WRUQKLSAgICAgICAg
ZWxpZiBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChTVUJNSVRURUQpICE9IC0xOgotICAgICAg
ICAgICAgc3RhdHVzID0gU1VCTUlUVEVECi0KLSAgICAgICAgc2VsZi50ZXN0X3N0YXR1cyA9IHN0
YXR1cwotCi0gICAgZGVmIHJlbW92ZV9kZWxldGVkX2ZpbGVzKHNlbGYsIGltcG9ydF9kaXJlY3Rv
cnksIG5ld19maWxlX2xpc3QpOgotICAgICAgICAiIiIgUmVhZHMgYW4gaW1wb3J0IGxvZyBpbiB8
aW1wb3J0X2RpcmVjdG9yeXwgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSB8bmV3X2ZpbGVfbGlzdHwg
YW5kIHJlbW92ZXMgZmlsZXMgdGhhdCBhcmUgbm90IGluIHRoZSBuZXcgbGlzdCAiIiIKLQotICAg
ICAgICBwcmV2aW91c19maWxlX2xpc3QgPSBbXQotCi0gICAgICAgICMgRmlyc3QgY2hlY2sgaWYg
dGhlcmUgd2FzIGEgcHJldmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVyZSBzaG91bGQgYmUgYSBsb2cK
LSAgICAgICAgaW1wb3J0X2xvZ19maWxlID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3Rvcnks
ICd3M2MtaW1wb3J0LmxvZycpCi0gICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhpbXBvcnRf
bG9nX2ZpbGUpKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGltcG9ydF9sb2cgPSBv
cGVuKGltcG9ydF9sb2dfZmlsZSwgJ3InKQotICAgICAgICBjb250ZW50cyA9IGltcG9ydF9sb2cu
cmVhZGxpbmVzKCkKLQotICAgICAgICAjIFB1bGwgbG9nIHRoZSBsaXN0IG9mIGZpbGVzIGZyb20g
dGhlIHByZXZpb3VzIGltcG9ydAotICAgICAgICBpZiAnTGlzdCBvZiBmaWxlc1xuJyBpbiBjb250
ZW50czoKLSAgICAgICAgICAgIGxpc3RfaWR4ID0gY29udGVudHMuaW5kZXgoJ0xpc3Qgb2YgZmls
ZXM6XG4nKSArIDEKLSAgICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IGNvbnRlbnRzW2xp
c3RfaWR4Ol0KLSAgICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IG1hcChsYW1iZGEgczog
cy5zdHJpcCgpLCBwcmV2aW91c19maWxlX2xpc3QpCi0KLSAgICAgICAgZGVsZXRlZF9maWxlcyA9
IHNldChwcmV2aW91c19maWxlX2xpc3QpIC0gc2V0KG5ld19maWxlX2xpc3QpCi0KLSAgICAgICAg
IyBMb29wIHRocm91Z2ggYW5kIHJlbW92ZSB0aGVtIGFsbAotICAgICAgICBmb3IgZGVsZXRlZF9m
aWxlIGluIGRlbGV0ZWRfZmlsZXM6Ci0gICAgICAgICAgICBwcmludCAnRGVsZXRpbmcgZmlsZSBy
ZW1vdmVkIGZyb20gdGhlIFczQyByZXBvOicgKyBkZWxldGVkX2ZpbGUKLSAgICAgICAgICAgIGRl
bGV0ZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndlYmtpdF9yb290LCBkZWxldGVkX2ZpbGUp
Ci0gICAgICAgICAgICBvcy5yZW1vdmUoZGVsZXRlZF9maWxlKQotCi0gICAgICAgIGltcG9ydF9s
b2cuY2xvc2UoKQotCi0gICAgZGVmIHdyaXRlX2ltcG9ydF9sb2coc2VsZiwgaW1wb3J0X2RpcmVj
dG9yeSwgZmlsZV9saXN0LCBwcm9wX2xpc3QpOgotICAgICAgICAiIiIgV3JpdGVzIGEgdzNjLWlt
cG9ydC5sb2cgZmlsZSBpbiBlYWNoIGRpcmVjdG9yeSB3aXRoIGltcG9ydGVkIGZpbGVzLiAiIiIK
LQotICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQotCi0gICAgICAgICMgQ3Jl
YXRlIGEgbG9nIG9mIHRoaXMgaW1wb3J0IHdpdGggYWxsIHNvcnRzIG9mIGdvb2QgaW5mb3JtYXRp
b24KLSAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4ob3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3Rv
cnksICd3M2MtaW1wb3J0LmxvZycpLCAndycpCi0gICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1Ro
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LlxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJraXQuIEluc3RlYWQsIHB1c2ggY2hhbmdlcyB0byB0aGUg
VzNDIENTUyByZXBvOlxuXG4nKQotICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdodHRwOi8vaGcu
Y3Nzd2cub3JnL3Rlc3RcblxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRc
blxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlXG5cbicpCi0gICAgICAgIGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcgKyBub3cuc3Ry
ZnRpbWUoJyVZLSVtLSVkICVIOiVNJykgKyAnXG4nKQotICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KCdXM0MgTWVyY3VyaWFsIGNoYW5nZXNldDogJyArIHNlbGYuY2hhbmdlc2V0ICsgJ1xuJykKLSAg
ICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGVzdCBzdGF0dXMgYXQgdGltZSBvZiBpbXBvcnQ6ICcg
KyBzZWxmLnRlc3Rfc3RhdHVzICsgJ1xuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tXG4nKQotICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdQcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6XG4nKQotICAgICAgICBpZiBsZW4ocHJvcF9saXN0KSA9
PSAwOgotICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnTm9uZVxuJykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKLSAgICAgICAgICAgICAgICBp
bXBvcnRfbG9nLndyaXRlKHByb3AgKyAnXG4nKQotICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCct
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbicpCi0gICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xpc3Qgb2YgZmls
ZXM6XG4nKQotICAgICAgICBmb3IgaXRlbSBpbiBmaWxlX2xpc3Q6Ci0gICAgICAgICAgICBpbXBv
cnRfbG9nLndyaXRlKGl0ZW0gKyAnXG4nKQotCi0gICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODA5ZWQ0YzhlMjNmNzIzODQ0
YjZhMzMxYjUzY2I2OTJhNGQwNjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0
dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCi0jICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCi0jICAgIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSMgICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0j
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0jIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSMgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgotIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgot
aW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHku
dzNjIGltcG9ydCB0ZXN0X2NvbnZlcnRlcgotZnJvbSB3ZWJraXRweS53M2MudGVzdF9pbXBvcnRl
ciBpbXBvcnQgVGVzdEltcG9ydGVyCi0KLVdFQktJVF9ST09UID0gX19maWxlX18uc3BsaXQob3Mu
cGF0aC5zZXAgKyAnVG9vbHMnKVswXQotCi0KLWNsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfSW1wb3J0RGlyV2l0aE5vVGVzdHMoc2VsZik6
Ci0gICAgICAgICIiIiBUZXN0cyBkb19pbXBvcnQoKSB3aXRoIGEgZGlyZWN0b3J5IHRoYXQgY29u
dGFpbnMgbm8gdGVzdHMgIiIiCi0gICAgICAgIGRpcl93aXRoX25vX3Rlc3RzID0gb3MucGF0aC5q
b2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVy
LlNPVVJDRV9TVUJESVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5XRUJDT1JFX1NVQkRJUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVy
LkNTU19TVUJESVIpCi0KLSAgICAgICAgaW1wb3J0ZXIgPSBUZXN0SW1wb3J0ZXIoZGlyX3dpdGhf
bm9fdGVzdHMsIE5vbmUpCi0gICAgICAgIGltcG9ydGVyLmRvX2ltcG9ydCgpCi0KLQotICAgICMg
VE9ETzogTmVlZCBtb3JlIHRlc3RzLCBidXQgd2hhdCB0byB1c2UgZm9yIHZhbGlkIHNvdXJjZSBk
aXJlY3Rvcnk/IE1ha2UgaXQgb24gdGhlIGZseQotICAgICMgICAgICAgYW5kIGNsZWFuIGl0IHVw
IGFmdGVyd2FyZD8KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
cGFyc2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMzI1NThiZTk5OTFlZjBhODNiODU2MjA0YmIw
ZWQzZDI0YjgwYjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwxNjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0KLSMgQ29weXJpZ2h0
IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSMgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
LSMgICAgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotIyAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSMgICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKLSMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0j
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRgotIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCi1pbXBvcnQgb3MKLWltcG9ydCBy
ZQotCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRp
ZnVsU291cCBhcyBQYXJzZXIKLQotCi1jbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6Ci0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmlsZW5hbWUpOgotICAgICAgICBzZWxmLm9wdGlv
bnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBz
ZWxmLnRlc3RfZG9jID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCi0gICAgICAgIHNlbGYucmVm
X2RvYyA9IE5vbmUKLQotICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgZmlsZV90b19wYXJzZSk6Ci0g
ICAgICAgICIiIiBPcGVucyBhbmQgcmVhZCB0aGUgfGZpbGVfdG9fcGFyc2V8ICIiIgotICAgICAg
ICBkb2MgPSBOb25lCi0KLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZV90b19wYXJzZSk6
Ci0gICAgICAgICAgICBmID0gb3BlbihmaWxlX3RvX3BhcnNlKQotICAgICAgICAgICAgaHRtbCA9
IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICAgICAgZG9jID0gUGFy
c2VyKGh0bWwpCi0KLSAgICAgICAgcmV0dXJuIGRvYwotCi0gICAgZGVmIGFuYWx5emVfdGVzdChz
ZWxmLCB0ZXN0X2NvbnRlbnRzPU5vbmUsIHJlZl9jb250ZW50cz1Ob25lKToKLSAgICAgICAgIiIi
IEFuYWx5emVzIGEgZmlsZSB0byBkZXRlcm1pbmUgaWYgaXQncyBhIHRlc3QsIHdoYXQgdHlwZSBv
ZiB0ZXN0LCBhbmQgd2hhdCByZWZlcmVuY2Ugb3Igc3VwcG9ydCBmaWxlcyBpdCByZXF1aXJlcy4g
UmV0dXJucyBhbGwgb2YgdGhlIHRlc3QgaW5mbyAiIiIKLQotICAgICAgICB0ZXN0X2luZm8gPSBO
b25lCi0KLSAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBOb25lIGFuZCBzZWxmLnRlc3RfZG9j
IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gdGVzdF9pbmZvCi0KLSAgICAgICAgaWYgdGVz
dF9jb250ZW50cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGVzdF9kb2MgPSBQYXJz
ZXIodGVzdF9jb250ZW50cykKLQotICAgICAgICBpZiByZWZfY29udGVudHMgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQYXJzZXIocmVmX2NvbnRlbnRzKQotCi0gICAg
ICAgICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJlZnRlc3QKLSAgICAgICAgbWF0Y2hlcyA9IHNl
bGYuZ2V0X3JlZnRlc3RzKFRydWUpCi0gICAgICAgIGlmIGxlbihtYXRjaGVzKSAhPSAwOgotCi0g
ICAgICAgICAgICBpZiBsZW4obWF0Y2hlcykgPiAxOgotICAgICAgICAgICAgICAgIHByaW50ICdX
YXJuaW5nOiBXZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSByZWZlcmVuY2VzLiBJbXBv
cnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGluICcgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYu
ZmlsZW5hbWUpCi0KLSAgICAgICAgICAgIHJlZl9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShzZWxmLmZpbGVuYW1lKSwgbWF0Y2hlc1swXVsnaHJlZiddKQotICAgICAgICAgICAg
aWYgc2VsZi5yZWZfZG9jIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0g
c2VsZi5sb2FkX2ZpbGUocmVmX2ZpbGUpCi0KLSAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVz
dCc6IHNlbGYuZmlsZW5hbWUsICdyZWZlcmVuY2UnOiByZWZfZmlsZX0KLQotICAgICAgICAgICAg
IyBJZiB0aGUgcmVmIGZpbGUgcGF0aCBpcyByZWxhdGl2ZSwgd2UgbmVlZCB0byBjaGVjayBpdCBm
b3IgcmVsYXRpdmUgcGF0aHMKLSAgICAgICAgICAgICMgYmVjYXVzZSB3aGVuIGl0IGxhbmRzIGlu
IFdlYmtpdCwgaXQgd2lsbCBiZSBtb3ZlZCBkb3duIGludG8gdGhlIHRlc3QgZGlyCi0gICAgICAg
ICAgICAjIE5vdGU6IFRoZSB0ZXN0IGZpbGVzIHRoZW1zZWx2ZXMgYXJlIG5vdCBjaGVja2VkIGZv
ciBzdXBwb3J0IGZpbGVzCi0gICAgICAgICAgICAjIHRoYXQgbGl2ZSBvdXRzaWRlIHRoZWlyIGRp
cmVjdG9yaWVzIGFzIGl0J3MgdGhlIGNvbnZlbnRpb24gaW4gdGhlIENTU1dHCi0gICAgICAgICAg
ICAjIHRvIHB1dCBhbGwgc3VwcG9ydCBmaWxlcyBpbiB0aGUgc2FtZSBkaXIgb3Igc3ViZGlyIGFz
IHRoZSB0ZXN0LiBBbGwgbm9uLXRlc3QKLSAgICAgICAgICAgICMgZmlsZXMgaW4gdGhlIHRlc3Qn
cyBkaXJlY3RvcnkgdHJlZSBhcmUgYXV0b21hdGljYWxseSBjb3BpZWQgYXMgcGFydCBvZiB0aGUg
aW1wb3J0IGFzCi0gICAgICAgICAgICAjIHRoZXkgYXJlIGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQg
c3VwcG9ydCBmaWxlcyBUaGVyZSBpcyBleGFjdGx5IG9uZSBjYXNlIGluIHRoZSBlbnRpcmUKLSAg
ICAgICAgICAgICMgY3NzMi4xIHN1aXRlIHdoZXJlIGF0IHRlc3QgZGVwZW5kcyBvbiBhIGZpbGUg
dGhhdCBsaXZlcyBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnksIHdoaWNoCi0gICAgICAgICAgICAj
IGRlcGVuZHMgb24gYW5vdGhlciBmaWxlIHRoYXQgbGl2ZXMgb3V0c2lkZSBvZiBpdHMgZGlyZWN0
b3J5LiBUaGlzIGNvZGUgY292ZXJzIHRoYXQgY2FzZSA6KQotICAgICAgICAgICAgaWYgbWF0Y2hl
c1swXVsnaHJlZiddLnN0YXJ0c3dpdGgoJy4uJyk6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydEZp
bGVzID0gc2VsZi5nZXRfc3VwcG9ydF9maWxlcyhzZWxmLnJlZl9kb2MpCi0gICAgICAgICAgICAg
ICAgdGVzdF9pbmZvWydyZWZzdXBwb3J0J10gPSBzdXBwb3J0RmlsZXMKLQotICAgICAgICAjIE5l
eHQsIGlmIGl0J3MgYSBKUyB0ZXN0Ci0gICAgICAgIGVsaWYgc2VsZi5pc19qc3Rlc3QoKToKLSAg
ICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWUsICdqc3Rlc3QnOiBU
cnVlfQotCi0gICAgICAgICMgT3IgaWYgd2UgZXhwbGljaXRseSB3YW50IGV2ZXJ5dGhpbmcKLSAg
ICAgICAgZWxpZiBzZWxmLm9wdGlvbnNbJ2FsbCddIGlzIFRydWUgYW5kIFwKLSAgICAgICAgICAg
ICBub3QoJy1yZWYnIGluIHNlbGYuZmlsZW5hbWUpIGFuZCBcCi0gICAgICAgICAgICAgbm90KCdy
ZWZlcmVuY2UnIGluIHNlbGYuZmlsZW5hbWUpOgotICAgICAgICAgICAgdGVzdF9pbmZvID0geyd0
ZXN0Jzogc2VsZi5maWxlbmFtZX0KLQotICAgICAgICAjIENvdXJ0ZXN5IGNoZWNrIGFuZCB3YXJu
aW5nIGlmIHRoZXJlIGFyZSBhbnkgbWlzbWF0Y2hlcwotICAgICAgICBtaXNtYXRjaGVzID0gc2Vs
Zi5nZXRfcmVmdGVzdHMoRmFsc2UpCi0gICAgICAgIGlmIGxlbihtaXNtYXRjaGVzKSAhPSAwOgot
ICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6IFdlYmtpdCBkb2VzIG5vdCBzdXBwb3J0IG1pc21h
dGNoIHJlZmVyZW5jZXMuIElnbm9yaW5nIG1pc21hdGNoIGRlZmluZWQgaW4gIiArIG9zLnBhdGgu
YmFzZW5hbWUoc2VsZi5maWxlbmFtZSkKLQotICAgICAgICByZXR1cm4gdGVzdF9pbmZvCi0KLSAg
ICBkZWYgZ2V0X3JlZnRlc3RzKHNlbGYsIGZpbmRfbWF0Y2gpOgotICAgICAgICAiIiIgU2VhcmNo
ZXMgZm9yIGFsbCByZWZlcmVuY2UgbGlua3MgaW4gdGhlIGZpbGUuIElmIHxmaW5kX21hdGNofCBp
cyBzZWFyY2hlcyBmb3IgbWF0Y2hlcywgb3RoZXJ3aXNlIGZvciBtaXNtYXRjaGVzICIiIgotCi0g
ICAgICAgIGlmIGZpbmRfbWF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2RvYy5m
aW5kQWxsKHJlbD0nbWF0Y2gnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNl
bGYudGVzdF9kb2MuZmluZEFsbChyZWw9J21pc21hdGNoJykKLQotICAgIGRlZiBpc19qc3Rlc3Qo
c2VsZik6Ci0gICAgICAgICIiIiBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgdXNhZ2Ugb2YgVzNDLXN0
eWxlIHRlc3RoYXJuZXNzIHBhdGhzICIiIgotCi0gICAgICAgIGlmIHNlbGYudGVzdF9kb2MuZmlu
ZChzcmM9cmUuY29tcGlsZSgnW1wnXCIvXT8vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykpIGlzIE5v
bmU6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJldHVybiBUcnVlCi0KLSAgICBkZWYgZ2V0X3N1cHBvcnRfZmlsZXMoc2VsZiwgZG9jKToKLSAg
ICAgICAgIiIiIFNlYXJjaGVzIHRoZSBmaWxlIGZvciBhbGwgcGF0aHMgc3BlY2lmaWVkIGluIHVy
bCgpJ3MsIGhyZWYgb3Igc3JjIGF0dHJpYnV0ZXMgIiIiCi0KLSAgICAgICAgc3VwcG9ydF9maWxl
cyA9IFtdCi0KLSAgICAgICAgaWYgZG9jIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3Vw
cG9ydF9maWxlcwotCi0gICAgICAgICMgTG9vayBmb3IgdGFncyB3aXRoIHNyYyBvciBocmVmIGF0
dHJpYnV0ZXMKLSAgICAgICAgc3JjX2F0dHJzID0gZG9jLmZpbmRBbGwoc3JjPXJlLmNvbXBpbGUo
Jy4qJykpCi0gICAgICAgIGhyZWZfYXR0cnMgPSBkb2MuZmluZEFsbChocmVmPXJlLmNvbXBpbGUo
Jy4qJykpCi0KLSAgICAgICAgIyBMb29rIGZvciB1cmxzCi0gICAgICAgIHVybF9wYXR0ZXJuID0g
cmUuY29tcGlsZSgndXJsXCguKlwpJykKLSAgICAgICAgdXJscyA9IFtdCi0gICAgICAgIGZvciB1
cmwgaW4gZG9jLmZpbmRBbGwodGV4dD11cmxfcGF0dGVybik6Ci0gICAgICAgICAgICB1cmwgPSBy
ZS5zZWFyY2godXJsX3BhdHRlcm4sIHVybCkKLSAgICAgICAgICAgIHVybCA9IHJlLnN1YigndXJs
XChbXCdcIl0nLCAnJywgdXJsLmdyb3VwKDApKQotICAgICAgICAgICAgdXJsID0gcmUuc3ViKCdb
XCdcIl1cKScsICcnLCB1cmwpCi0gICAgICAgICAgICB1cmxzLmFwcGVuZCh1cmwpCi0KLSAgICAg
ICAgc3JjX3BhdGhzID0gW3NyY190YWdbJ3NyYyddIGZvciBzcmNfdGFnIGluIHNyY19hdHRyc10K
LSAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3RhZ1snaHJlZiddIGZvciBocmVmX3RhZyBpbiBo
cmVmX2F0dHJzXQotCi0gICAgICAgIHBhdGhzID0gc3JjX3BhdGhzICsgaHJlZl9wYXRocyArIHVy
bHMKLSAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICAgICAgICAjIElnbm9yZSBodHRw
IGFuZCBtYWlsdG8gbGlua3MKLSAgICAgICAgICAgIGlmIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ2h0
dHA6JykpIGFuZCBcCi0gICAgICAgICAgICAgICBub3QocGF0aC5zdGFydHN3aXRoKCdtYWlsdG86
JykpOgotICAgICAgICAgICAgICAgIHN1cHBvcnRfZmlsZXMuYXBwZW5kKHBhdGgpCi0KLSAgICAg
ICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg3NDRjZjRiNjI1NTNmZDhiZTc3YWZjZmJlYjU3MDQ0OTYxYTk3ZTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNTMgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0KLSMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSMgICAgZGlzY2xhaW1lci4K
LSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZwotIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMKLSMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSMgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAotIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0jIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotIyBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKLSMgU1VDSCBEQU1BR0UuCi1pbXBvcnQgb3MKLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IHN5
cwotaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LnczYy50ZXN0
X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgotCi0KLW9wdGlvbnMgPSB7J2FsbCc6IEZhbHNlLCAn
bm9fb3ZlcndyaXRlJzogRmFsc2V9Ci0KLQotY2xhc3MgVGVzdFBhcnNlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2goc2Vs
Zik6Ci0gICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGJhc2ljIHJlZnRl
c3Qgd2l0aCBvbmUgbWF0Y2ggbGluayBhbmQgbm8gbWlzbWF0Y2ggbGlua3MgIiIiCi0KLSAgICAg
ICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1i
b3gtcmVmLnhodCIgLz4KLTwvaGVhZD4KLSIiIgotICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUv
bWFkZXVwL3BhdGgvJwotICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3Rf
cGF0aCArICdzb21lZmlsZS5odG1sJykKLSAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5
emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKLQotICAgICAgICAjIFZlcmlmeSB0aGUg
Y29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwo
dGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3Qg
ZmlsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8u
a2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdy
ZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
J3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVm
c3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
anN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBh
bmFseXplZCBhcyBhIGpzdGVzdCcpCi0KLSAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RN
dWx0aXBsZU1hdGNoZXMoc2VsZik6Ci0gICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1
c2luZyBhIHJlZnRlc3Qgd2l0aCBtdWx0aXBsZSBtYXRjaCBsaW5rcyBhbmQgbm8gbWlzbWF0Y2gg
bGlua3MgIiIiCi0KLSAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Ci08bGluayByZWw9Im1h
dGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9
ImJsdWUtYm94LXJlZi54aHQiIC8+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJvcmFuZ2UtYm94
LXJlZi54aHQiIC8+Ci08L2hlYWQ+Ci0iIiIKLSAgICAgICAgIyBDYXB0dXJlIHN0ZG91dCBmb3Ig
dGhpcyB0ZXN0Ci0gICAgICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICAgICAgb3V0cHV0ID0g
U3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBzeXMuc3Rkb3V0ID0gb3V0cHV0Ci0KLSAgICAg
ICAgIyBBbmFseXplIHRoZSB0ZXN0Ci0gICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAv
cGF0aC8nCi0gICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsg
J3NvbWVmaWxlLmh0bWwnKQotICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0
KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQotCi0gICAgICAgICMgUmVzdG9yZSBzdGRvdXQKLSAg
ICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAotCi0gICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0
IHRlc3QgaW5mbyB3YXMgZm91bmQKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2lu
Zm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCks
ICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5j
ZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3Vw
cG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0
IGZpbGVzIGZvciB0aGlzIHRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3Qn
IGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVk
IGFzIGEganN0ZXN0JykKLQotICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgdGhlIHdhcm5pbmcgYWJv
dXQgbXVsdGlwbGUgbWF0Y2hlcwotICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmdldHZh
bHVlKCkuc3RhcnRzd2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBhYm91dCBtdWx0aXBsZSBt
YXRjaGVzJykKLQotICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE1hdGNoQW5kTWlzbWF0
Y2goc2VsZik6Ci0gICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHJlZnRl
c3Qgd2l0aCBhIG9uZSBtYXRjaCBsaW5rIGFuZCBvbmUgbWlzbWF0Y2ggbGluayAiIiIKLQotICAg
ICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVu
LWJveC1yZWYueGh0IiAvPgotPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmx1ZS1ib3gtcmVmLnho
dCIgLz4KLTxsaW5rIHJlbD0ibWlzbWF0Y2giIGhyZWY9Im9yYW5nZS1ib3gtbm90cmVmLnhodCIg
Lz4KLTwvaGVhZD4KLSIiIgotICAgICAgICAjIENhcHR1cmUgc3Rkb3V0IGZvciB0aGlzIHRlc3QK
LSAgICAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTy5T
dHJpbmdJTygpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBvdXRwdXQKLQotICAgICAgICAjIEFuYWx5
emUgdGhlIHRlc3QKLSAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKLSAg
ICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUu
aHRtbCcpCi0gICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250
ZW50cz10ZXN0X2h0bWwpCi0KLSAgICAgICAgIyBSZXN0b3JlIHN0ZG91dAotICAgICAgICBzeXMu
c3Rkb3V0ID0gc3Rkb3V0Ci0KLSAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZv
IHdhcyBmb3VuZAotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwg
J2RpZCBub3QgZmluZCBhIHRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGlu
IHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3Qg
ZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5m
b1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMg
bm90IGNvcnJlY3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0
ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9y
IHRoaXMgdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9p
bmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBqc3Rl
c3QnKQotCi0gICAgICAgICMgVmVyaWZ5IHdlIGdvdCBtdWx0aXBsZSB3YXJuaW5ncwotICAgICAg
ICB3YXJuaW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhsZW4od2FybmluZ3MpLCAyLCAnYWxsIHdhcm5pbmdzIHdlcmUgbm90IGRp
c3BsYXllZCcpCi0gICAgICAgICMgVmVyaWZ5IHRoZSBib3RoIHdhcm5pbmdzIG1lbnRpb24gdGhl
IGlzc3VlCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbXVsdGlwbGUgbWF0Y2hlcycsICdubyB3
YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
J21pc21hdGNoJywgJ25vIHdhcm5pbmcgYWJvdXQgbWlzbWF0Y2hlcycpCi0KLSAgICBkZWYgdGVz
dF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYpOgotICAgICAgICAi
IiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHRoYXQgaGFzIHJlZmVycyB0
byBhIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2YgdGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQgdGhl
IHJlZmVyZW5jZSBmaWxlIGhhcyBwYXRocyB0byBvdGhlciBzdXBwb3J0IGZpbGVzICIiIgotCi0g
ICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgotPGhlYWQ+Ci08bGluayByZWw9Im1hdGNoIiBo
cmVmPSIuLi9yZWZlcmVuY2UvZ3JlZW4tYm94LXJlZi54aHQiIC8+Ci08L2hlYWQ+Ci0iIiIKLSAg
ICAgICAgcmVmX2h0bWwgPSAiIiI8aGVhZD4KLTxsaW5rIGhyZWY9InN1cHBvcnQvY3NzL3JlZi1z
dHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vc3VwcG9y
dC9zb21lLWltYWdlLnBuZyIpCi08L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2PjxpbWcg
c3JjPSIuLi9zdXBwb3J0L2JsYWNrOTZ4OTYucG5nIiBhbHQ9IkltYWdlIGRvd25sb2FkIHN1cHBv
cnQgbXVzdCBiZSBlbmFibGVkIiAvPjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotIiIiCi0gICAg
ICAgICMgQW5hbHl6ZSB0aGUgdGVzdAotICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVw
L3BhdGgvJwotICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCAr
ICdzb21lZmlsZS5odG1sJykKLSAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVz
dCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCwgcmVmX2NvbnRlbnRzPXJlZl9odG1sKQotCi0gICAg
ICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKLSAgICAgICAgc2Vs
Zi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlk
IG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVu
Y2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dp
dGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUg
c2hvdWxkIGJlIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGxlbih0ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSksIDMsICd0aGVyZSBzaG91
bGQgYmUgMyBzdXBwb3J0IGZpbGVzIGluIHRoaXMgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90
IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCi0KLSAgICBkZWYgdGVzdF9hbmFseXpl
SlNUZXN0KHNlbGYpOgotICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSBq
c3Rlc3QgIiIiCi0KLSAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Ci08bGluayBocmVmPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci0iIiIKLSAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0Ci0gICAgICAgIHRlc3RfcGF0
aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCi0gICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0
aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQotICAgICAgICB0ZXN0X2luZm8gPSBw
YXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQotCi0gICAgICAgICMg
VmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKLSAgICAgICAgc2VsZi5hc3Nl
cnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmlu
ZCBhIHRlc3QgZmlsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4g
dGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUn
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5
cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
dGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQotCi0gICAgZGVmIHRlc3RfYW5hbHl6ZVBpeGVsVGVz
dEFsbFRydWUoc2VsZik6Ci0gICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBh
IHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3Qgd2l0aCBhbGw9RmFsc2Ug
IiIiCi0KLSAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5DU1Mg
VGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Ci08bGluayByZWw9ImF1dGhvciIgdGl0
bGU9Ik5BTUVfT0ZfQVVUSE9SIiAvPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsK
LUNTUyBGT1IgVEVTVAotXV0+PC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5PgotQ09OVEVOVCBPRiBU
RVNUCi08L2JvZHk+Ci08L2h0bWw+Ci0iIiIKLSAgICAgICAgIyBTZXQgb3B0aW9ucyB0byAnYWxs
JyBzbyB0aGlzIGdldHMgZm91bmQKLSAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBUcnVlCi0KLSAg
ICAgICAgIyBBbmFseXplIHRoZSB0ZXN0Ci0gICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRl
dXAvcGF0aC8nCi0gICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRo
ICsgJ3NvbWVmaWxlLmh0bWwnKQotICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90
ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQotCi0gICAgICAgICMgVmVyaWZ5IHRoZSBjb3Jy
ZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0
X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMo
KSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hv
dWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5v
dCBiZSBhIGpzdGVzdCcpCi0KLSAgICBkZWYgdGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsRmFsc2Uo
c2VsZik6Ci0gICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhh
dCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3QsIHdpdGggLWFsbD1GYWxzZSAiIiIKLQot
ICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4KLTxoZWFkPgotPHRpdGxlPkNTUyBUZXN0OiBE
RVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KLTxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFN
RV9PRl9BVVRIT1IiIC8+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwotQ1NTIEZP
UiBURVNUCi1dXT48L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci1DT05URU5UIE9GIFRFU1QKLTwv
Ym9keT4KLTwvaHRtbD4KLSIiIgotICAgICAgICAjIFNldCBhbGwgdG8gZmFsc2Ugc28gdGhpcyBn
ZXRzIHNraXBwZWQKLSAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBGYWxzZQotCi0gICAgICAgICMg
QW5hbHl6ZSB0aGUgdGVzdAotICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgv
JwotICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21l
ZmlsZS5odG1sJykKLSAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0
X2NvbnRlbnRzPXRlc3RfaHRtbCkKLQotICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0
IGluZm8gd2FzIGZvdW5kCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbmZvLCBOb25l
LCAndGVzdCBzaG91bGQgaGF2ZSBiZWVuIHNraXBwZWQnKQotCi0gICAgZGVmIHRlc3RfYW5hbHl6
ZU5vbkhUTUxGaWxlKHNlbGYpOgotICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgd2l0
aCBhIGZpbGUgdGhpcyBpc24ndCBodG1sICh0aGlzIG9uZSEpICIiIgotCi0gICAgICAgICMgVHJ5
IHRvIGFuYWx5emUgdGhlIHNjcmlwdCBmaWxlIHdlJ3JlIHRlc3RpbmcgKGhvdyBtZXRhKQotICAg
ICAgICB0ZXN0X3BhcnNlcl9weV9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICd0ZXN0X3BhcnNlci5weScpCi0KLSAgICAgICAgIyBBbmFseXplIHRoZSBmaWxl
Ci0gICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXJzZXJfcHlfZmls
ZSkKLSAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCgpCi0KLSAgICAgICAg
IyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ25vIHRlc3RzIHNob3VsZCBoYXZlIGJlZW4gZm91
bmQgaW4gdGhpcyBmaWxlJykK
</data>

          </attachment>
      

    </bug>

</bugzilla>