<?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>100793</bug_id>
          
          <creation_ts>2012-10-30 15:13:00 -0700</creation_ts>
          <short_desc>clean up tests for webkit-patch rebaseline* commands</short_desc>
          <delta_ts>2012-10-30 16:22:25 -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>100562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754700</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:13:00 -0700</bug_when>
    <thetext>clean up tests for webkit-patch rebaseline* commands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754702</commentid>
    <comment_count>1</comment_count>
      <attachid>171526</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:15:31 -0700</bug_when>
    <thetext>Created attachment 171526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754709</commentid>
    <comment_count>2</comment_count>
      <attachid>171526</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-30 15:19:50 -0700</bug_when>
    <thetext>Comment on attachment 171526
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py:41
&gt; +    klass = None

klass?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754714</commentid>
    <comment_count>3</comment_count>
      <attachid>171526</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-30 15:22:06 -0700</bug_when>
    <thetext>Comment on attachment 171526
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py:41
&gt;&gt; +    klass = None
&gt; 
&gt; klass?

Sorry, I understand why not &quot;class&quot;, but why not a descriptive name, e.g. commandConstructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754716</commentid>
    <comment_count>4</comment_count>
      <attachid>171529</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:23:47 -0700</bug_when>
    <thetext>Created attachment 171529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754720</commentid>
    <comment_count>5</comment_count>
      <attachid>171529</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:26:08 -0700</bug_when>
    <thetext>Comment on attachment 171529
Patch

wrong bug, ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754722</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:27:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 171526 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171526&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py:41
&gt; &gt;&gt; +    klass = None
&gt; &gt; 
&gt; &gt; klass?
&gt; 
&gt; Sorry, I understand why not &quot;class&quot;, but why not a descriptive name, e.g. commandConstructor?

&quot;klass&quot; is a pretty common python name for a variable that points to a class object, but I can change it to commandConstructor if you think that&apos;s better ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754737</commentid>
    <comment_count>7</comment_count>
      <attachid>171538</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:44:30 -0700</bug_when>
    <thetext>Created attachment 171538
rename klass to command_constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754743</commentid>
    <comment_count>8</comment_count>
      <attachid>171538</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-30 15:52:05 -0700</bug_when>
    <thetext>Comment on attachment 171538
rename klass to command_constructor

FWIW, tony was happy with klass. I&apos;m happier now though. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754772</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 16:22:25 -0700</bug_when>
    <thetext>Committed r132957: &lt;http://trac.webkit.org/changeset/132957&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171526</attachid>
            <date>2012-10-30 15:15:31 -0700</date>
            <delta_ts>2012-10-30 15:44:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100793-20121030151355.patch</filename>
            <type>text/plain</type>
            <size>57223</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjY1YWEzZTQxYjUwNzJhNjMxN2EyYzdlZmM5Y2YyMTM2
NmI0NzIzYy4uY2NkZTUxODJmMDM1YTNjM2RmN2JlZjYwODllZTc4MzBlYmU4NDJmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1
IEBACiAyMDEyLTEwLTMwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGNsZWFuIHVwIHRlc3RzIGZvciB3ZWJraXQtcGF0Y2ggcmViYXNlbGluZSogY29tbWFu
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0
ZXN0cyBpbiByZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGhhZCBhIGxvdCBvZiBjb2RlIGNsb25pbmcs
CisgICAgICAgIGFuZCBtYW55IG9mIHRoZSB0ZXN0cyB0ZXN0ZWQgd2hldGhlciB0aGluZ3MgcGFz
c2VkIG9yIGZhaWxlZCBieQorICAgICAgICBsb29raW5nIGF0IHdoYXQgd2FzIGxvZ2dlZCBpbnN0
ZWFkIG9mIHdoYXQgd2FzIGFjdHVhbGx5IGRvbmU7CisgICAgICAgIGFzIGEgcmVzdWx0IHRoZSB0
ZXN0cyB3ZXJlIGtpbmRhIGhhcmQgdG8gdW5kZXJzdGFuZCBhbmQgaGFyZGVyIHRvCisgICAgICAg
IG1haW50YWluLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBob29rcyB0byBNb2NrV2ViKCkg
YW5kIE1vY2tFeGVjdXRpdmUoKSBzbyB3ZSBjYW4KKyAgICAgICAgZGlyZWN0bHkgc2VlIHdoaWNo
IFVSTHMgd2VyZSBmZXRjaGVkIGFuZCBjYWxscyBpbnZva2VkLCBhbmQKKyAgICAgICAgdGhlbiBy
ZXdvcmtzIGFsbCBvZiB0aGUgdW5pdCB0ZXN0cyB0byBiZSBlYXNpZXIgdG8gZm9sbG93IGFuZAor
ICAgICAgICBtYWludGFpbiBhbmQgbm90IHNlbnNpdGl2ZSB0byB0aGUgbG9nZ2luZy4gQWxzbyB0
aGVyZSB3ZXJlIGEKKyAgICAgICAgY291cGxlIG9mIHRlc3RzIHRoYXQgd2VyZSByZWR1bmRhbnQu
CisKKyAgICAgICAgVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNo
LCBhbmQgSSB2ZXJpZmllZCB0aGF0CisgICAgICAgIHRoZSBjb3ZlcmFnZSByZW1haW5zIHRoZSBz
YW1lLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5
OgorICAgICAgICAoTW9ja1dlYi5fX2luaXRfXyk6CisgICAgICAgIChNb2NrV2ViLmdldF9iaW5h
cnkpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVf
bW9jay5weToKKyAgICAgICAgKE1vY2tFeGVjdXRpdmUuX19pbml0X18pOgorICAgICAgICAoTW9j
a0V4ZWN1dGl2ZS5ydW5fY29tbWFuZCk6CisgICAgICAgIChNb2NrRXhlY3V0aXZlLmtpbGxfYWxs
KToKKyAgICAgICAgKE1vY2tFeGVjdXRpdmUpOgorICAgICAgICAoTW9ja0V4ZWN1dGl2ZS5raWxs
X3Byb2Nlc3MpOgorICAgICAgICAoTW9ja0V4ZWN1dGl2ZS5wb3Blbik6CisgICAgICAgIChNb2Nr
RXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbCk6CisgICAgICAgIChNb2NrRXhlY3V0aXZlMik6Cisg
ICAgICAgIChNb2NrRXhlY3V0aXZlMi5fX2luaXRfXyk6CisgICAgICAgIChNb2NrRXhlY3V0aXZl
Mi5ydW5fY29tbWFuZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmVfdW5pdHRlc3QucHk6CisgICAgICAgIChfQmFzZVRlc3RDYXNlKToKKyAgICAg
ICAgKF9CYXNlVGVzdENhc2Uuc2V0VXApOgorICAgICAgICAoX0Jhc2VUZXN0Q2FzZS5fZXhwYW5k
KToKKyAgICAgICAgKF9CYXNlVGVzdENhc2UuX3JlYWQpOgorICAgICAgICAoX0Jhc2VUZXN0Q2Fz
ZS5fd3JpdGUpOgorICAgICAgICAoX0Jhc2VUZXN0Q2FzZS5femVyb19vdXRfdGVzdF9leHBlY3Rh
dGlvbnMpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVUZXN0KToKKyAgICAgICAgKFRlc3RSZWJh
c2VsaW5lVGVzdC50ZXN0X2Jhc2VsaW5lX2RpcmVjdG9yeSk6CisgICAgICAgIChUZXN0UmViYXNl
bGluZVRlc3QudGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGVfbm9vcCk6
CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdXBkYXRlc19leHBlY3RhdGlvbnNfZmlsZSk6Cisg
ICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfZG9lc19ub3RfaW5jbHVkZV9vdmVycmlkZXMpOgorICAg
ICAgICAodGVzdF9yZWJhc2VsaW5lX3Rlc3QpOgorICAgICAgICAodGVzdF9yZWJhc2VsaW5lX3Rl
c3RfYW5kX3ByaW50X3NjbV9jaGFuZ2VzKToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRf
Y29weV90ZXN0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0X25vX2V4
aXN0aW5nX3Jlc3VsdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF93
aXRoX2xpb25fcmVzdWx0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV9ub19v
dmVyd3JpdGVfdGVzdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdGVzdF9pbnRlcm5hbF93
aXRoX21vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvKToKKyAgICAgICAgKFRlc3RSZWJhc2Vs
aW5lSnNvbik6CisgICAgICAgIChUZXN0UmViYXNlbGluZUpzb24uc2V0VXApOgorICAgICAgICAo
VGVzdFJlYmFzZWxpbmVKc29uLnRlYXJEb3duKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNv
bi50ZXN0X3JlYmFzZWxpbmVfYWxsKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNvbi50ZXN0
X3JlYmFzZWxpbmVfZGVidWcpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmUpOgorICAgICAgICAo
VGVzdFJlYmFzZWxpbmUudGVzdF90ZXN0c190b191cGRhdGUpOgorICAgICAgICAoVGVzdFJlYmFz
ZWxpbmUudGVzdF9yZWJhc2VsaW5lKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lLnRlc3RfcmVi
YXNlbGluZS5yZWJhc2VsaW5lX3N0dWIpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3Rh
dGlvbnMpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMuc2V0VXApOgorICAg
ICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMudGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0
aW9ucyk6CisgICAgICAgIChUZXN0UmViYXNlbGluZUV4cGVjdGF0aW9ucy50ZXN0X3JlYmFzZWxp
bmVfZXhwZWN0YXRpb25zX25vb3ApOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlv
bnMuZGlzYWJsZWRfdGVzdF9vdmVycmlkZXNfYXJlX2luY2x1ZGVkX2NvcnJlY3RseSk6CisKKzIw
MTItMTAtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
dGVzdC13ZWJraXRweTogZml4IHJ1bm5pbmcgbW9kdWxlcyBhbmQgY2xhc3NlcyBvbiB0aGUgY29t
bWFuZCBsaW5lCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA3ODcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3dlYl9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2Nr
LnB5CmluZGV4IDU5NmRkMGE0MTkwYmI0ZGFmNTEwYTFhMWY3YTU1ZTU1NjMzMTFkYzMuLjQyMzU3
M2M2MGQ3YWIxZDI1NjEwZTg1ZWExNzQxMTgwMTVmYjZkYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkKQEAgLTMwLDcgKzMwLDExIEBAIGltcG9y
dCBTdHJpbmdJTwogCiAKIGNsYXNzIE1vY2tXZWIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZik6CisgICAgICAgIHNlbGYudXJsc19mZXRjaGVkID0gW10KKwogICAgIGRlZiBnZXRfYmlu
YXJ5KHNlbGYsIHVybCwgY29udmVydF80MDRfdG9fTm9uZT1GYWxzZSk6CisgICAgICAgIHNlbGYu
dXJsc19mZXRjaGVkLmFwcGVuZCh1cmwpCiAgICAgICAgIHJldHVybiAiTU9DSyBXZWIgcmVzdWx0
LCBjb252ZXJ0IDQwNCB0byBOb25lPSVzIiAlIGNvbnZlcnRfNDA0X3RvX05vbmUKIAogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkKaW5kZXggY2NlMjFiMjMzMzVhNDU5ODYyNjU3ZmRmZjBmMjhlYWM1YTc4YzFmYS4uYzI2
MTM1MzBiOTk5YWNkMWYxMzM4YmM5ODRjOWNhYzYxZTE2MmYwNiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQpAQCAt
NjAsNiArNjAsNyBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgICMgRklY
TUU6IE9uY2UgZXhlY3V0aXZlIHdyYXBzIG9zLmdldHBpZCgpIHdlIGNhbiBqdXN0IHVzZSBhIHN0
YXRpYyBwaWQgZm9yICJ0aGlzIiBwcm9jZXNzLgogICAgICAgICBzZWxmLl9ydW5uaW5nX3BpZHMg
PSB7J3Rlc3Qtd2Via2l0cHknOiBvcy5nZXRwaWQoKX0KICAgICAgICAgc2VsZi5fcHJvYyA9IE5v
bmUKKyAgICAgICAgc2VsZi5jYWxscyA9IFtdCiAKICAgICBkZWYgY2hlY2tfcnVubmluZ19waWQo
c2VsZiwgcGlkKToKICAgICAgICAgcmV0dXJuIHBpZCBpbiBzZWxmLl9ydW5uaW5nX3BpZHMudmFs
dWVzKCkKQEAgLTkyLDYgKzkzLDkgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2ZShvYmplY3QpOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUsCiAgICAgICAgICAgICAgICAgICAg
IGRlY29kZV9vdXRwdXQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIGVudj1Ob25lKToKKwor
ICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZChhcmdzKQorCiAgICAgICAgIGFzc2VydChpc2luc3Rh
bmNlKGFyZ3MsIGxpc3QpIG9yIGlzaW5zdGFuY2UoYXJncywgdHVwbGUpKQogICAgICAgICBpZiBz
ZWxmLl9zaG91bGRfbG9nOgogICAgICAgICAgICAgZW52X3N0cmluZyA9ICIiCkBAIC0xMDksNyAr
MTEzLDE0IEBAIGNsYXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKICAgICBkZWYgY3B1X2NvdW50
KHNlbGYpOgogICAgICAgICByZXR1cm4gMgogCisgICAgZGVmIGtpbGxfYWxsKHNlbGYsIHByb2Nl
c3NfbmFtZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBraWxsX3Byb2Nlc3Moc2VsZiwgcGlk
KToKKyAgICAgICAgcGFzcworCiAgICAgZGVmIHBvcGVuKHNlbGYsIGFyZ3MsIGN3ZD1Ob25lLCBl
bnY9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZChhcmdzKQogICAg
ICAgICBpZiBzZWxmLl9zaG91bGRfbG9nOgogICAgICAgICAgICAgY3dkX3N0cmluZyA9ICIiCiAg
ICAgICAgICAgICBpZiBjd2Q6CkBAIC0xMjMsMzIgKzEzNCwyNyBAQCBjbGFzcyBNb2NrRXhlY3V0
aXZlKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jCiAKICAgICBkZWYgcnVuX2lu
X3BhcmFsbGVsKHNlbGYsIGNvbW1hbmRzKToKKyAgICAgICAgbnVtX3ByZXZpb3VzX2NhbGxzID0g
bGVuKHNlbGYuY2FsbHMpCiAgICAgICAgIGNvbW1hbmRfb3V0cHV0cyA9IFtdCiAgICAgICAgIGZv
ciBjbWRfbGluZSwgY3dkIGluIGNvbW1hbmRzOgogICAgICAgICAgICAgY29tbWFuZF9vdXRwdXRz
LmFwcGVuZChbMCwgc2VsZi5ydW5fY29tbWFuZChjbWRfbGluZSwgY3dkPWN3ZCksICcnXSkKKwor
ICAgICAgICBuZXdfY2FsbHMgPSBzZWxmLmNhbGxzW251bV9wcmV2aW91c19jYWxsczpdCisgICAg
ICAgIHNlbGYuY2FsbHMgPSBzZWxmLmNhbGxzWzpudW1fcHJldmlvdXNfY2FsbHNdCisgICAgICAg
IHNlbGYuY2FsbHMuYXBwZW5kKG5ld19jYWxscykKICAgICAgICAgcmV0dXJuIGNvbW1hbmRfb3V0
cHV0cwogCi1jbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgotICAgIEBzdGF0aWNtZXRob2QK
LSAgICBkZWYgaWdub3JlX2Vycm9yKGVycm9yKToKLSAgICAgICAgcGFzcwogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG91dHB1dD0nJywgZXhpdF9jb2RlPTAsIGV4Y2VwdGlvbj1Ob25lLAotICAg
ICAgICAgICAgICAgICBydW5fY29tbWFuZF9mbj1Ob25lLCBzdGRlcnI9JycpOgorY2xhc3MgTW9j
a0V4ZWN1dGl2ZTIoTW9ja0V4ZWN1dGl2ZSk6CisgICAgIiIiTW9ja0V4ZWN1dGl2ZTIgaXMgbGlr
ZSBNb2NrRXhlY3V0aXZlIGV4Y2VwdCBpdCBkb2Vzbid0IGxvZyBhbnl0aGluZy4iIiIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXQ9JycsIGV4aXRfY29kZT0wLCBleGNlcHRpb249Tm9u
ZSwgcnVuX2NvbW1hbmRfZm49Tm9uZSwgc3RkZXJyPScnKToKICAgICAgICAgc2VsZi5fb3V0cHV0
ID0gb3V0cHV0CiAgICAgICAgIHNlbGYuX3N0ZGVyciA9IHN0ZGVycgogICAgICAgICBzZWxmLl9l
eGl0X2NvZGUgPSBleGl0X2NvZGUKICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gZXhjZXB0aW9u
CiAgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kX2ZuID0gcnVuX2NvbW1hbmRfZm4KLQotICAgIGRl
ZiBjcHVfY291bnQoc2VsZik6Ci0gICAgICAgIHJldHVybiAyCi0KLSAgICBkZWYga2lsbF9hbGwo
c2VsZiwgcHJvY2Vzc19uYW1lKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGtpbGxfcHJvY2Vz
cyhzZWxmLCBwaWQpOgotICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuY2FsbHMgPSBbXQogCiAg
ICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCkBAIC0x
NTksNiArMTY1LDcgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2ZTIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuX3N0ZGVycj1UcnVlLAogICAgICAgICAgICAgICAgICAgICBkZWNvZGVf
b3V0cHV0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICBlbnY9Tm9uZSk6CisgICAgICAgIHNl
bGYuY2FsbHMuYXBwZW5kKGFyZ3MpCiAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGFyZ3MsIGxp
c3QpIG9yIGlzaW5zdGFuY2UoYXJncywgdHVwbGUpKQogICAgICAgICBpZiBzZWxmLl9leGNlcHRp
b246CiAgICAgICAgICAgICByYWlzZSBzZWxmLl9leGNlcHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3Qu
cHkKaW5kZXggMzUzOTQyNDVmYzdkYmZiNGQyNDQ3ZDUzZDQ5YzcyNzU1Y2Q0YWJiZi4uMDg2MDJi
NzZhZGE5N2QzYTgxNDNmODgxYzljZDQyZmVkODVhNWQ2YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3Qu
cHkKQEAgLTMzLDIwICszMyw0OCBAQCBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBv
cnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmUgaW1wb3J0ICoK
IGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wsIE1vY2tPcHRpb25z
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QuYnVpbGRib3RfbW9jayBpbXBvcnQg
TW9ja0J1aWxkZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBp
bXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgogCiAKLWNsYXNzIFRlc3RSZWJhc2VsaW5lKHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF90ZXN0c190b191cGRhdGUoc2VsZik6Ci0g
ICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rv
b2woTW9ja1Rvb2woKSkKLSAgICAgICAgYnVpbGQgPSBNb2NrKCkKLSAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3Rlc3RzX3RvX3VwZGF0ZSwgW2J1
aWxkXSkKK2NsYXNzIF9CYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIE1PQ0tf
V0VCX1JFU1VMVCA9ICdNT0NLIFdlYiByZXN1bHQsIGNvbnZlcnQgNDA0IHRvIE5vbmU9VHJ1ZScK
KyAgICBrbGFzcyA9IE5vbmUKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50
b29sID0gTW9ja1Rvb2woKQorICAgICAgICBzZWxmLmNvbW1hbmQgPSBzZWxmLmtsYXNzKCkKKyAg
ICAgICAgc2VsZi5jb21tYW5kLmJpbmRfdG9fdG9vbChzZWxmLnRvb2wpCisgICAgICAgIHNlbGYu
bGlvbl9wb3J0ID0gc2VsZi50b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUo
IldlYktpdCBNYWMxMC43IikKKyAgICAgICAgc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoID0g
c2VsZi5saW9uX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKKworICAgICAg
ICAjIEZJWE1FOiB3ZSBzaG91bGQgb3ZlcnJpZGUgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgaGVy
ZSB0byBwb2ludCB0byBhIHNldAorICAgICAgICAjIG9mIHRlc3QgcG9ydHMgYW5kIHJlc3RvcmUg
dGhlIHZhbHVlIGluIHRlYXJEb3duKCksIGFuZCB0aGF0IHdheSB0aGUKKyAgICAgICAgIyBpbmRp
dmlkdWFsIHRlc3RzIHdvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgaXQuCisKKyAgICBkZWYg
X2V4cGFuZChzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi50b29sLmZpbGVzeXN0ZW0uaXNh
YnMocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgICAgICByZXR1cm4gc2VsZi50
b29sLmZpbGVzeXN0ZW0uam9pbihzZWxmLmxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBh
dGgpCisKKyAgICBkZWYgX3JlYWQoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLnRv
b2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShzZWxmLl9leHBhbmQocGF0aCkpCisKKyAgICBk
ZWYgX3dyaXRlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKKyAgICAgICAgc2VsZi50b29sLmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNlbGYuX2V4cGFuZChwYXRoKSwgY29udGVudHMpCisKKyAg
ICBkZWYgX3plcm9fb3V0X3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgorICAgICAgICBmb3IgcG9y
dF9uYW1lIGluIHNlbGYudG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKKyAgICAg
ICAgICAgIHBvcnQgPSBzZWxmLnRvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCisgICAg
ICAgICAgICBmb3IgcGF0aCBpbiBwb3J0LmV4cGVjdGF0aW9uc19maWxlcygpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3dyaXRlKHBhdGgsICcnKQorICAgICAgICBzZWxmLnRvb2wuZmlsZXN5c3Rl
bS53cml0dGVuX2ZpbGVzID0ge30KKworCitjbGFzcyBUZXN0UmViYXNlbGluZVRlc3QoX0Jhc2VU
ZXN0Q2FzZSk6CisgICAga2xhc3MgPSBSZWJhc2VsaW5lVGVzdCAgIyBBS0Egd2Via2l0LXBhdGNo
IHJlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbAogCiAgICAgZGVmIHRlc3RfYmFzZWxpbmVfZGlyZWN0
b3J5KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICB0
b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAg
ICAgICBjb21tYW5kID0gc2VsZi5jb21tYW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bWFuZC5fYmFzZWxpbmVfZGlyZWN0b3J5KCJBcHBsZSBXaW4gWFAgRGVidWcgKFRlc3RzKSIpLCAi
L21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXhwIikKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21tYW5kLl9iYXNlbGluZV9kaXJlY3RvcnkoIkFwcGxlIFdpbiA3IFJl
bGVhc2UgKFRlc3RzKSIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tYW5kLl9iYXNlbGluZV9kaXJlY3Rvcnko
IkFwcGxlIExpb24gUmVsZWFzZSBXSzEgKFRlc3RzKSIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24iKQpAQCAtNTgsNDU4ICs4NiwyNDQgQEAgY2xhc3MgVGVz
dFJlYmFzZWxpbmUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiV2ViS2l0IE1hYzEwLjYiKSwgIi9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCIpCiAK
ICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGVfbm9vcChz
ZWxmKToKLSAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9
IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLQotICAgICAg
ICBsaW9uX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoIldl
YktpdCBNYWMxMC43IikKLSAgICAgICAgZm9yIHBhdGggaW4gbGlvbl9wb3J0LmV4cGVjdGF0aW9u
c19maWxlcygpOgotICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShw
YXRoLCAnJykKLSAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShsaW9uX3Bv
cnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksICIiIkJ1ZyhCKSBbIE1hYyBMaW51
eCBYUCBEZWJ1ZyBdIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVh
bGx5LWRlZXAtYXJyYXkuaHRtbCBbIFBhc3MgXQorICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0
X2V4cGVjdGF0aW9ucygpCisgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlv
bnNfcGF0aCwgIiIiQnVnKEIpIFsgTWFjIExpbnV4IFhQIERlYnVnIF0gZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1yZWFsbHktZGVlcC1hcnJheS5odG1sIFsgUGFzcyBd
CiBCdWcoQSkgWyBEZWJ1ZyBdIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5o
dG1sIFsgRmFpbHVyZSBdCiAiIiIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJmYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLXJlYWxseS1kZWVwLWFycmF5Lmh0bWwi
KSwgIkR1bW15IHRlc3QgY29udGVudHMiKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVf
dGV4dF9maWxlKG9zLnBhdGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAiZmFz
dC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5odG1sIiksICJEdW1teSB0ZXN0IGNvbnRl
bnRzIikKLSAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvcy5wYXRoLmpv
aW4obGlvbl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIiksICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKKyAgICAgICAgc2VsZi5fd3JpdGUoImZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXku
aHRtbCIsICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKKyAgICAgICAgc2VsZi5fd3JpdGUoImZhc3Qv
Y3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jhc2guaHRtbCIsICJEdW1teSB0ZXN0IGNvbnRlbnRz
IikKKyAgICAgICAgc2VsZi5fd3JpdGUoInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwg
IkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJSZXRy
aWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBNYWMxMC43L3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBu
Zy4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEw
LjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1h
Y3R1YWwud2F2LgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJL
aXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0LWFjdHVhbC50eHQuCi0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0
aW9ucywgWyJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIs
IE5vbmVdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAgIHNlbGYuY29tbWFu
ZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKCJXZWJLaXQgTWFjMTAu
NyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUpCiAKLSAgICAgICAgbmV3
X2V4cGVjdGF0aW9ucyA9IHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShsaW9uX3BvcnQu
cGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAorICAgICAgICAgICAgWydodHRwOi8vZXhh
bXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcnLAorICAgICAgICAgICAg
ICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xh
eW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAor
ICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAu
Ny9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFj
dHVhbC50eHQnXSkKKyAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHNlbGYuX3JlYWQoc2VsZi5s
aW9uX2V4cGVjdGF0aW9uc19wYXRoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19leHBl
Y3RhdGlvbnMsICIiIkJ1ZyhCKSBbIE1hYyBMaW51eCBYUCBEZWJ1ZyBdIGZhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXkuaHRtbCBbIFBhc3Mg
XQogQnVnKEEpIFsgRGVidWcgXSA6IGZhc3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jhc2gu
aHRtbCBbIEZhaWx1cmUgXQogIiIiKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV91cGRhdGVz
X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRl
c3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9f
dG9vbCh0b29sKQorICAgICAgICBzZWxmLl93cml0ZShzZWxmLmxpb25fZXhwZWN0YXRpb25zX3Bh
dGgsICJCdWcoeCkgWyBNYWMgXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXVxuYnVnKHopIFsgTGludXggXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxuIikKKyAgICAgICAgc2VsZi5fd3JpdGUoInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgIkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAg
ICAgIGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgi
V2ViS2l0IE1hYzEwLjciKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KGxpb25fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgIkJ1Zyh4KSBbIE1h
YyBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG5i
dWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdXG4iKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKG9z
LnBhdGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiKSwgIkR1bW15IHRlc3QgY29udGVudHMiKQorICAgICAgICBzZWxmLmNv
bW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0IE1h
YzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lKQogCi0gICAgICAg
IGV4cGVjdGVkX2xvZ3MgPSAiIiJSZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxk
ZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBuZy4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29t
L2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3Vz
ZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2LgotUmV0cmlldmluZyBodHRwOi8vZXhh
bXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQuCi0iIiIKLSAgICAgICAg
T3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVf
dGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucywgWyJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmVdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xv
Z3MpCi0KLSAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHRvb2wuZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShsaW9uX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAorICAgICAg
ICAgICAgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1
bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5w
bmcnLAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQg
TWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0LWFjdHVhbC53YXYnLAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWls
ZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9
IHNlbGYuX3JlYWQoc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG5ld19leHBlY3RhdGlvbnMsICJCdWcoeCkgWyBNb3VudGFpbkxpb24gU25vd0xl
b3BhcmQgXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XVxuYnVnKHopIFsgTGludXggXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXVxuIikKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfZG9lc19ub3RfaW5j
bHVkZV9vdmVycmlkZXMoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lVGVzdCgp
Ci0gICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgIGNvbW1hbmQuYmluZF90b190b29s
KHRvb2wpCi0KLSAgICAgICAgbGlvbl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0X2Zyb21f
YnVpbGRlcl9uYW1lKCJXZWJLaXQgTWFjMTAuNyIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUobGlvbl9wb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgp
LCAiQnVnKHgpIFsgTWFjIF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF1cbkJ1Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbiIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0
ZV90ZXh0X2ZpbGUobGlvbl9wb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdza2lhJywgJ3Nr
aWFfdGVzdF9leHBlY3RhdGlvbnMudHh0JyksICJCdWcoeSkgWyBNYWMgXSBvdGhlci10ZXN0Lmh0
bWwgWyBGYWlsdXJlIF1cbiIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2Zp
bGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJ1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCIpLCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCi0KLSAgICAgICAg
ZXhwZWN0ZWRfbG9ncyA9ICIiIlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRl
cnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC1hY3R1YWwucG5nLgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFt
cGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC4KLSIiIgotICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmViYXNlbGluZV90
ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zLCBbIldlYktpdCBNYWMxMC43IiwgInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykKLQotICAgICAgICBuZXdfZXhwZWN0YXRpb25zID0gdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKGxpb25fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKKyAgICAg
ICAgc2VsZi5fd3JpdGUoc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoLCAiQnVnKHgpIFsgTWFj
IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbkJ1
Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF1cbiIpCisgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9wb3J0LnBhdGhfZnJv
bV9jaHJvbWl1bV9iYXNlKCdza2lhJywgJ3NraWFfdGVzdF9leHBlY3RhdGlvbnMudHh0JyksICJC
dWcoeSkgWyBNYWMgXSBvdGhlci10ZXN0Lmh0bWwgWyBGYWlsdXJlIF1cbiIpCisgICAgICAgIHNl
bGYuX3dyaXRlKCJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsICJEdW1teSB0ZXN0IGNv
bnRlbnRzIikKKworICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBk
YXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwiLCBOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53
ZWIudXJsc19mZXRjaGVkLAorICAgICAgICAgICAgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWls
ZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcnLAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBs
ZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3Vs
dHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAorICAgICAgICAgICAgICdo
dHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91
dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKwor
ICAgICAgICBuZXdfZXhwZWN0YXRpb25zID0gc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0YXRp
b25zX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2V4cGVjdGF0aW9ucywgIkJ1
Zyh4KSBbIE1vdW50YWluTGlvbiBTbm93TGVvcGFyZCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG5CdWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQogCiAgICAgZGVmIHRl
c3RfcmViYXNlbGluZV90ZXN0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRl
c3QoKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQotICAgICAgICBl
eHBlY3RlZF9sb2dzID0gIlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMv
V2ViS2l0IExpbnV4L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtYWN0dWFsLnR4dC5cbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCwgWyJXZWJLaXQgTGludXgiLCAi
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lLCAidHh0Il0sIGV4cGVjdGVkX2xv
Z3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3Qo
IldlYktpdCBMaW51eCIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUsICJ0
eHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hl
ZCwgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTGludXgvcmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0J10p
CiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3Rlc3RfYW5kX3ByaW50X3NjbV9jaGFuZ2VzKHNl
bGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICBjb21tYW5k
LmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIlJldHJp
ZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IExpbnV4L3Jlc3VsdHMv
bGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC5c
biIKLSAgICAgICAgY29tbWFuZC5fcHJpbnRfc2NtX2NoYW5nZXMgPSBUcnVlCi0gICAgICAgIGNv
bW1hbmQuX3NjbV9jaGFuZ2VzID0geydhZGQnOiBbXSwgJ2RlbGV0ZSc6IFtdfQotICAgICAgICBj
b21tYW5kLl90b29sLl9zY20uZXhpc3RzID0gbGFtYmRhIHg6IEZhbHNlCi0gICAgICAgIE91dHB1
dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3Qs
IFsiV2ViS2l0IExpbnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwg
InR4dCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGNvbW1hbmQuX3NjbV9jaGFuZ2VzLCB7J2FkZCc6IFsnL21vY2stY2hlY2tvdXQvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWV4cGVjdGVkLnR4dCddLCAnZGVsZXRlJzogW119KQorICAgICAgICBzZWxmLmNvbW1hbmQuX3By
aW50X3NjbV9jaGFuZ2VzID0gVHJ1ZQorICAgICAgICBzZWxmLmNvbW1hbmQuX3NjbV9jaGFuZ2Vz
ID0geydhZGQnOiBbXSwgJ2RlbGV0ZSc6IFtdfQorICAgICAgICBzZWxmLnRvb2wuX3NjbS5leGlz
dHMgPSBsYW1iZGEgeDogRmFsc2UKKworICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVf
dGVzdCgiV2ViS2l0IExpbnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9u
ZSwgInR4dCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5jb21tYW5kLl9zY21f
Y2hhbmdlcywgeydhZGQnOiBbJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWxpbnV4L3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQnXSwgJ2Rl
bGV0ZSc6IFtdfSkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdChzZWxm
KToKLSAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1v
Y2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgc2Vs
Zi5fd3JpdGUoInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiLCAiZ2VuZXJp
YyByZXN1bHQiKQogCi0gICAgICAgIGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9m
cm9tX2J1aWxkZXJfbmFtZSgiV2ViS2l0IE1hYzEwLjciKQotICAgICAgICB0b29sLmZpbGVzeXN0
ZW0ud3JpdGVfdGV4dF9maWxlKG9zLnBhdGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2Rp
cigpLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCAiRHVtbXkgZXhw
ZWN0ZWQgcmVzdWx0IikKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldl
YktpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1
bS1tYWMtc25vd2xlb3BhcmQiXSwgInR4dCIpCiAKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIi
IkNvcHlpbmcgYmFzZWxpbmUgZnJvbSAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy91c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IHRvIC9tb2NrLWNoZWNrb3V0L0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QtZXhwZWN0ZWQudHh0LgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWls
ZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQuCi0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgp
LmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCwgWyJXZWJLaXQg
TWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0tbWFj
LXNub3dsZW9wYXJkIl0sICJ0eHQiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFkKCdwbGF0Zm9ybS9jaHJvbWl1bS1tYWMt
bGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0JyksIHNlbGYuTU9DS19X
RUJfUkVTVUxUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFkKCdwbGF0Zm9y
bS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVj
dGVkLnR4dCcpLCAnZ2VuZXJpYyByZXN1bHQnKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9h
bmRfY29weV90ZXN0X25vX2V4aXN0aW5nX3Jlc3VsdChzZWxmKToKLSAgICAgICAgY29tbWFuZCA9
IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29t
bWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5l
X3Rlc3QoIldlYktpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwg
WyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiXSwgInR4dCIpCiAKLSAgICAgICAgZXhwZWN0ZWRf
bG9ncyA9ICIiIk5vIGV4aXN0aW5nIGJhc2VsaW5lIGZvciB1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbC4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0
IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC1hY3R1YWwudHh0LgotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2ViS2l0IE1hYzEwLjciLCAi
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFy
ZCJdLCAidHh0Il0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoc2VsZi5fcmVhZCgncGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNj
cmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCcpLCBzZWxmLk1PQ0tfV0VCX1JFU1VMVCkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnRvb2wuZmlsZXN5c3RlbS5leGlzdHMoc2Vs
Zi5fZXhwYW5kKCdwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCcpKSkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVf
YW5kX2NvcHlfdGVzdF93aXRoX2xpb25fcmVzdWx0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0g
UmViYXNlbGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21t
YW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBzZWxmLl93cml0ZSgicGxhdGZvcm0vY2hy
b21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIsICJv
cmlnaW5hbCBsaW9uIHJlc3VsdCIpCiAKLSAgICAgICAgbGlvbl9wb3J0ID0gdG9vbC5wb3J0X2Zh
Y3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKCJXZWJLaXQgTWFjMTAuNyIpCi0gICAgICAgIHRv
b2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5iYXNl
bGluZV9wYXRoKCksICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJE
dW1teSBleHBlY3RlZCByZXN1bHQiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVf
dGVzdCgiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBb
ImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0IikKIAotICAgICAgICBleHBlY3RlZF9s
b2dzID0gIkNvcHlpbmcgYmFzZWxpbmUgZnJvbSAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0
ZWQudHh0IHRvIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0LlxuUmV0
cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1
bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50
eHQuXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21t
YW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Il0sIGV4
cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vs
Zi50b29sLndlYi51cmxzX2ZldGNoZWQsIFsiaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMv
V2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC1hY3R1YWwudHh0Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYu
X3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJvcmlnaW5hbCBsaW9uIHJlc3VsdCIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1saW9u
L3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgc2VsZi5NT0NLX1dFQl9S
RVNVTFQpCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X25vX292ZXJ3cml0ZV90
ZXN0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICB0
b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAg
ICAgICBzZWxmLl93cml0ZSgicGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIsICJvcmlnaW5hbCBsaW9uIHJlc3VsdCIpCisgICAg
ICAgIHNlbGYuX3dyaXRlKCJwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNj
cmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIsICJvcmlnaW5hbCBzbm93bGVvcGFyZCBy
ZXN1bHQiKQogCi0gICAgICAgIGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9t
X2J1aWxkZXJfbmFtZSgiV2ViS2l0IE1hYzEwLjciKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0u
d3JpdGVfdGV4dF9maWxlKG9zLnBhdGguam9pbihsaW9uX3BvcnQuYmFzZWxpbmVfcGF0aCgpLCAi
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCAiRHVtbXkgZXhwZWN0ZWQg
cmVzdWx0IikKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBN
YWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMt
c25vd2xlb3BhcmQiXSwgInR4dCIpCiAKLSAgICAgICAgc25vd2xlb3BhcmRfcG9ydCA9IHRvb2wu
cG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgiV2ViS2l0IE1hYzEwLjYiKQotICAg
ICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKG9zLnBhdGguam9pbihzbm93bGVv
cGFyZF9wb3J0LmJhc2VsaW5lX3BhdGgoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBl
Y3RlZC50eHQiKSwgIkR1bW15IGV4cGVjdGVkIHJlc3VsdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJvcmlnaW5hbCBzbm93bGVvcGFy
ZCByZXN1bHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFkKCJwbGF0Zm9y
bS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0
IiksIHNlbGYuTU9DS19XRUJfUkVTVUxUKQogCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJF
eGlzdGluZyBiYXNlbGluZSBhdCAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVk
LnR4dCwgbm90IGNvcHlpbmcgb3ZlciBpdC4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29t
L2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3Vz
ZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0LgotIiIiCi0gICAgICAgIE91dHB1dENh
cHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsi
V2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9t
aXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Il0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykKLQotICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYWxsKHNlbGYpOgotICAgICAgICBvbGRfZXhh
Y3RfbWF0Y2hlcyA9IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzCi0gICAgICAgIGJ1aWxkZXJzLl9l
eGFjdF9tYXRjaGVzID0gewotICAgICAgICAgICAgIk1PQ0sgYnVpbGRlciI6IHsicG9ydF9uYW1l
IjogInRlc3QtbWFjLWxlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVy
Il0pfSwKLSAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6IHsicG9ydF9uYW1lIjog
InRlc3QtbWFjLWxlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyIiwg
ImRlYnVnIl0pfSwKLSAgICAgICAgfQotCi0gICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lSnNv
bigpCi0gICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucygpCi0gICAgICAgIG9wdGlvbnMub3B0aW1pemUgPSBUcnVlCi0gICAgICAgIGNvbW1hbmQu
YmluZF90b190b29sKHRvb2wpCi0gICAgICAgIHRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZShzaG91bGRfbG9nPVRydWUpCi0KLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiTU9DSyBy
dW5fY29tbWFuZDogWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZp
eGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRlc3QnLCAn
dXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAotTU9D
SyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVz
JywgJ3R4dCxwbmcnLCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sIGN3ZD0vbW9j
ay1jaGVja291dAotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhz
ZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lLCBbb3B0aW9ucywgeyJ1c2VyLXNjcmlwdHMvYW5vdGhl
ci10ZXN0Lmh0bWwiOnsiTU9DSyBidWlsZGVyIjogWyJ0eHQiLCAicG5nIl19fV0sIGV4cGVjdGVk
X3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCi0KLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIi
TU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICct
LXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlciAoRGVidWcp
JywgJy0tdGVzdCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgY3dkPS9tb2Nr
LWNoZWNrb3V0Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVz
JywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmUsIFtvcHRpb25zLCB7InVzZXIt
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6eyJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6IFsidHh0
IiwgInBuZyJdfX1dLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQotCi0gICAgICAg
IGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2Vs
aW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01P
Q0sgYnVpbGRlcicsICctLXRlc3QnLCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10s
IGN3ZD0vbW9jay1jaGVja291dAotTU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGltaXpl
LWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVy
ZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmUsIFtvcHRpb25zLCB7
InVzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6eyJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6
IFsidHh0IiwgInBuZyJdLCAiTU9DSyBidWlsZGVyIjogWyJ0eHQiXX19XSwgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikKLQotICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9
IG9sZF9leGFjdF9tYXRjaGVzCi0KLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9u
cyhzZWxmKToKLSAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoKQotICAg
ICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29s
KQotCi0gICAgICAgIGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxk
ZXJfbmFtZSgiV2ViS2l0IE1hYzEwLjciKQotICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHRvb2wu
cG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6Ci0gICAgICAgICAgICBwb3J0ID0gdG9vbC5w
b3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHBvcnQu
ZXhwZWN0YXRpb25zX2ZpbGVzKCk6Ci0gICAgICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZShwYXRoLCAnJykKLQotICAgICAgICAjIERvbid0IGVuYWJsZSBsb2dnaW5n
IHVudGlsIGFmdGVyIHdlIGNyZWF0ZSB0aGUgbW9jayBleHBlY3RhdGlvbiBmaWxlcyBhcyBzb21l
IFBvcnQuX19pbml0X18ncyBydW4gc3ViY29tbWFuZHMuCi0gICAgICAgIHRvb2wuZXhlY3V0aXZl
ID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCi0KLSAgICAgICAgZGVmIHJ1bl9pbl9w
YXJhbGxlbChjb21tYW5kcyk6Ci0gICAgICAgICAgICBwcmludCBjb21tYW5kcwotICAgICAgICAg
ICAgcmV0dXJuICIiCi0KLSAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2luX3BhcmFsbGVsID0g
cnVuX2luX3BhcmFsbGVsCi0KLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJSZXRyaWV2aW5nIHJl
c3VsdHMgZm9yIGNocm9taXVtLWxpbnV4LXg4NiBmcm9tIFdlYktpdCBMaW51eCAzMi5cbiAgICB1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCAodHh0KVxuICAgIHVzZXJzY3JpcHRzL2ltYWdl
cy5zdmcgKHBuZylcblJldHJpZXZpbmcgcmVzdWx0cyBmb3IgY2hyb21pdW0tbGludXgteDg2XzY0
IGZyb20gV2ViS2l0IExpbnV4LlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0
eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRz
IGZvciBjaHJvbWl1bS1tYWMtbGlvbiBmcm9tIFdlYktpdCBNYWMxMC43LlxuICAgIHVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAo
cG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBjaHJvbWl1bS1tYWMtbW91bnRhaW5saW9uIGZy
b20gV2ViS2l0IE1hYzEwLjguXG4gICAgdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgKHR4
dClcbiAgICB1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnIChwbmcpXG5SZXRyaWV2aW5nIHJlc3VsdHMg
Zm9yIGNocm9taXVtLW1hYy1zbm93bGVvcGFyZCBmcm9tIFdlYktpdCBNYWMxMC42LlxuICAgIHVz
ZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2Vz
LnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBjaHJvbWl1bS13aW4td2luNyBmcm9t
IFdlYktpdCBXaW43LlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4g
ICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBj
aHJvbWl1bS13aW4teHAgZnJvbSBXZWJLaXQgWFAuXG4gICAgdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwgKHR4dClcbiAgICB1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnIChwbmcpXG5SZXRyaWV2
aW5nIHJlc3VsdHMgZm9yIGVmbCBmcm9tIEVGTCBMaW51eCA2NC1iaXQgUmVsZWFzZS5cbiAgICB1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCAodHh0KVxuICAgIHVzZXJzY3JpcHRzL2ltYWdl
cy5zdmcgKHBuZylcblJldHJpZXZpbmcgcmVzdWx0cyBmb3IgZ3RrIGZyb20gR1RLIExpbnV4IDY0
LWJpdCBSZWxlYXNlLlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4g
ICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBt
YWMtbGlvbiBmcm9tIEFwcGxlIExpb24gUmVsZWFzZSBXSzEgKFRlc3RzKS5cbiAgICB1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCAodHh0KVxuICAgIHVzZXJzY3JpcHRzL2ltYWdlcy5zdmcg
KHBuZylcblJldHJpZXZpbmcgcmVzdWx0cyBmb3IgbWFjLW1vdW50YWlubGlvbiBmcm9tIEFwcGxl
IE1vdW50YWluTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpLlxuICAgIHVzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0
cmlldmluZyByZXN1bHRzIGZvciBxdC1saW51eCBmcm9tIFF0IExpbnV4IFJlbGVhc2UuXG4gICAg
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgKHR4dClcbiAgICB1c2Vyc2NyaXB0cy9pbWFn
ZXMuc3ZnIChwbmcpXG5SZXRyaWV2aW5nIHJlc3VsdHMgZm9yIHdpbi03c3AwIGZyb20gQXBwbGUg
V2luIDcgUmVsZWFzZSAoVGVzdHMpLlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
ICh0eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuIgotCi0gICAgICAgIGV4
cGVjdGVkX3N0ZG91dCA9ICJbKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAn
LS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBMaW51eCAzMicsICctLXRl
c3QnLCAndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgJy9tb2NrLWNoZWNrb3V0Jyks
IChbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0
JywgJy0tYnVpbGRlcicsICdXZWJLaXQgTGludXgnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxp
bmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnV2Vi
S2l0IE1hYzEwLjYnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10s
ICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcs
ICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnV2ViS2l0IE1hYzEwLjcnLCAnLS10
ZXN0JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcp
LCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4
dCcsICctLWJ1aWxkZXInLCAnV2ViS2l0IFdpbjcnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxp
bmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnQXBw
bGUgV2luIDcgUmVsZWFzZSAoVGVzdHMpJywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRl
c3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ0VGTCBMaW51
eCA2NC1iaXQgUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWwnXSwgJy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVy
bmFsJywgJy0tc3VmZml4ZXMnLCAndHh0JywgJy0tYnVpbGRlcicsICdXZWJLaXQgTWFjMTAuOCcs
ICctLXRlc3QnLCAndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgJy9tb2NrLWNoZWNr
b3V0JyksIChbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMn
LCAndHh0JywgJy0tYnVpbGRlcicsICdHVEsgTGludXggNjQtYml0IFJlbGVhc2UnLCAnLS10ZXN0
JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcpLCAo
WydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcs
ICctLWJ1aWxkZXInLCAnUXQgTGludXggUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwnXSwgJy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8nLCAncmViYXNl
bGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0JywgJy0tYnVpbGRlcicsICdB
cHBsZSBMaW9uIFJlbGVhc2UgV0sxIChUZXN0cyknLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxp
bmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnV2Vi
S2l0IFhQJywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddLCAnL21v
Y2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1z
dWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ0FwcGxlIE1vdW50YWluTGlvbiBSZWxlYXNl
IFdLMSAoVGVzdHMpJywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCdd
LCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwn
LCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBMaW51eCAzMicsICct
LXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsn
ZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAn
LS1idWlsZGVyJywgJ1dlYktpdCBMaW51eCcsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2Vz
LnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50
ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBNYWMxMC42
JywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcp
LCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3Bu
ZycsICctLWJ1aWxkZXInLCAnV2ViS2l0IE1hYzEwLjcnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRz
L2ltYWdlcy5zdmcnXSwgJy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8nLCAncmViYXNlbGluZS10
ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAncG5nJywgJy0tYnVpbGRlcicsICdXZWJLaXQg
V2luNycsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tv
dXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICdwbmcnLCAnLS1idWlsZGVyJywgJ0FwcGxlIFdpbiA3IFJlbGVhc2UgKFRlc3RzKScsICctLXRl
c3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNo
bycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1i
dWlsZGVyJywgJ0VGTCBMaW51eCA2NC1iaXQgUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlw
dHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5l
LXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktp
dCBNYWMxMC44JywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1j
aGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZp
eGVzJywgJ3BuZycsICctLWJ1aWxkZXInLCAnR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNlJywgJy0t
dGVzdCcsICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcpLCAoWydl
Y2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3BuZycsICct
LWJ1aWxkZXInLCAnUXQgTGludXggUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1h
Z2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3Qt
aW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ0FwcGxlIExpb24g
UmVsZWFzZSBXSzEgKFRlc3RzKScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2Zydd
LCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwn
LCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBYUCcsICctLXRlc3Qn
LCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycs
ICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWls
ZGVyJywgJ0FwcGxlIE1vdW50YWluTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpJywgJy0tdGVzdCcs
ICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcpXVxuIgotCi0gICAg
ICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYn
XSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUK
LU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2Nv
bW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1h
a2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwg
Y3dkPU5vbmUKLSIiIgotCi0gICAgICAgIGNvbW1hbmQuX3Rlc3RzX3RvX3JlYmFzZWxpbmUgPSBs
YW1iZGEgcG9ydDogeyd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCc6IHNldChbJ3R4dCdd
KSwgJ3VzZXJzY3JpcHRzL2ltYWdlcy5zdmcnOiBzZXQoWydwbmcnXSl9Ci0gICAgICAgIE91dHB1
dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLmV4ZWN1dGUsIFtNb2NrT3B0
aW9ucyhvcHRpbWl6ZT1GYWxzZSksIFtdLCB0b29sXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9s
b2dzLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQotCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVycl93aXRoX29wdGltaXplID0g
IiIiTU9DSyBydW5fY29tbWFuZDogWydxbWFrZScsICctdiddLCBjd2Q9Tm9uZQotTU9DSyBydW5f
Y29tbWFuZDogWydxbWFrZScsICctdiddLCBjd2Q9Tm9uZQotTU9DSyBydW5fY29tbWFuZDogWydx
bWFrZScsICctdiddLCBjd2Q9Tm9uZQotTU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGlt
aXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCcsICd1c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1h
a2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdvcHRpbWl6
ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2
ZyddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYn
XSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUK
LU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2Nv
bW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLSIiIgotCi0gICAgICAgIGNvbW1hbmQu
X3Rlc3RzX3RvX3JlYmFzZWxpbmUgPSBsYW1iZGEgcG9ydDogeyd1c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCc6IHNldChbJ3R4dCddKSwgJ3VzZXJzY3JpcHRzL2ltYWdlcy5zdmcnOiBzZXQo
WydwbmcnXSl9Ci0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBj
b21tYW5kLmV4ZWN1dGUsIFtNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlKSwgW10sIHRvb2xdLCBl
eHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MsIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRv
dXQsIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnJfd2l0aF9vcHRpbWl6ZSkKLQotICAg
IGRlZiBfYXNzZXJ0X2NvbW1hbmQoc2VsZiwgY29tbWFuZCwgb3B0aW9ucz1Ob25lLCBhcmdzPU5v
bmUsIGV4cGVjdGVkX3N0ZG91dD0nJywgZXhwZWN0ZWRfc3RkZXJyPScnLCBleHBlY3RlZF9sb2dz
PScnKToKLSAgICAgICAgIyBGSVhNRTogZ2VuZXJhbGl6ZSBzbyBtb3JlIHRlc3RzIHVzZSB0aGlz
IHRvIGdldCByaWQgb2YgYm9pbGVycGxhdGUuCi0gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9y
IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIGJ1aWxkZXJzPU5vbmUsIHN1ZmZpeGVzPVsndHh0
J10sIHZlcmJvc2U9RmFsc2UpCi0gICAgICAgIGFyZ3MgPSBhcmdzIG9yIFtdCi0KLSAgICAgICAg
dG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLQot
ICAgICAgICBwb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1tYWMtbGlvbicp
Ci0KLSAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiB0b29sLnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9u
YW1lcygpOgotICAgICAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25h
bWUpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBwb3J0LmV4cGVjdGF0aW9uc19maWxlcygpOgot
ICAgICAgICAgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgJycp
Ci0KLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQu
ZXhlY3V0ZSwgW29wdGlvbnMsIGFyZ3MsIHRvb2xdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPWV4
cGVjdGVkX2xvZ3MpCi0KLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9uc19ub29w
KHNlbGYpOgotICAgICAgICBzZWxmLl9hc3NlcnRfY29tbWFuZChSZWJhc2VsaW5lRXhwZWN0YXRp
b25zKCksIGV4cGVjdGVkX2xvZ3M9J0RpZCBub3QgZmluZCBhbnkgdGVzdHMgbWFya2VkIFJlYmFz
ZWxpbmUuXG4nKQotCi0gICAgZGVmIHRlc3Rfb3ZlcnJpZGVzX2FyZV9pbmNsdWRlZF9jb3JyZWN0
bHkoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lRXhwZWN0YXRpb25zKCkKLSAg
ICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9v
bCkKLSAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgnY2hyb21pdW0tbWFjLWxp
b24nKQotCi0gICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBhbnkgdGVzdHMgbWFya2VkIGFz
IFJFQkFTRUxJTkUgaW4gdGhlIG92ZXJyaWRlcyBhcmUgZm91bmQsIGJ1dAotICAgICAgICAjIHRo
YXQgdGhlIG92ZXJyaWRlcyBkbyBub3QgZ2V0IHdyaXR0ZW4gaW50byB0aGUgbWFpbiBmaWxlLgot
ICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKClbMF0K
LSAgICAgICAgZXhwZWN0YXRpb25zX2NvbnRlbnRzID0gJycKLSAgICAgICAgcG9ydC5fZmlsZXN5
c3RlbS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgsIGV4cGVjdGF0aW9uc19jb250
ZW50cykKLSAgICAgICAgcG9ydC5leHBlY3RhdGlvbnNfZGljdCA9IGxhbWJkYTogewotICAgICAg
ICAgICAgZXhwZWN0YXRpb25zX3BhdGg6IGV4cGVjdGF0aW9uc19jb250ZW50cywKLSAgICAgICAg
ICAgICdvdmVycmlkZXMnOiAoJ0J1Zyh4KSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBb
IEZhaWx1cmUgUmViYXNlbGluZSBdXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdCdWco
eSkgdXNlcnNjcmlwdHMvdGVzdC5odG1sIFsgQ3Jhc2ggXVxuJyl9CisgICAgZGVmIHRlc3RfcmVi
YXNlbGluZV90ZXN0X2ludGVybmFsX3dpdGhfbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8o
c2VsZik6CisgICAgICAgIHNlbGYudG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAK
LSAgICAgICAgZm9yIHBhdGggaW4gcG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKToKLSAgICAgICAg
ICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGgsICcnKQotICAgICAgICBw
b3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSAr
ICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoY29tbWFuZC5fdGVzdHNfdG9fcmViYXNlbGluZShwb3J0KSwgeyd1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCc6IHNldChbJ3BuZycsICd0eHQnLCAnd2F2J10pfSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShleHBl
Y3RhdGlvbnNfcGF0aCksIGV4cGVjdGF0aW9uc19jb250ZW50cykKKyAgICAgICAgIyBGSVhNRTog
aXQncyBjb25mdXNpbmcgdGhhdCB0aGlzIGlzIHRoZSB0ZXN0LSBwb3J0LCBhbmQgbm90IHRoZSBy
ZWd1bGFyIGxpb24gcG9ydC4gUmVhbGx5IGFsbCBvZiB0aGUgdGVzdHMgc2hvdWxkIGJlIHVzaW5n
IHRoZSB0ZXN0IHBvcnRzLgorICAgICAgICBwb3J0ID0gc2VsZi50b29sLnBvcnRfZmFjdG9yeS5n
ZXQoJ3Rlc3QtbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAgc2VsZi5fd3JpdGUocG9ydC5fZmls
ZXN5c3RlbS5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAncGxhdGZvcm0vdGVzdC1tYWMt
c25vd2xlb3BhcmQvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQudHh0JyksICdvcmln
aW5hbCBzbm93bGVvcGFyZCByZXN1bHQnKQogCi0gICAgZGVmIHRlc3RfcmViYXNlbGluZShzZWxm
KToKICAgICAgICAgb2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcwor
ICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBi
dWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVy
IjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsi
bW9jay1zcGVjaWZpZXIiXSl9LAorICAgICAgICAgICAgICAgICJNT0NLIExlb3BhcmQiOiB7InBv
cnRfbmFtZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNw
ZWNpZmllciJdKX0sCisgICAgICAgICAgICAgICAgIk1PQ0sgU25vd0xlb3BhcmQiOiB7InBvcnRf
bmFtZSI6ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1z
cGVjaWZpZXIiXSl9LAogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb21tYW5kID0gUmVi
YXNlbGluZSgpCi0gICAgICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICAgICAgY29t
bWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLQotICAgICAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiB0
b29sLnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpOgotICAgICAgICAgICAgICAgIHBvcnQg
PSB0b29sLnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQotICAgICAgICAgICAgICAgIGZvciBw
YXRoIGluIHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHRv
b2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgJycpCi0KLSAgICAgICAgICAgIHRv
b2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCi0KLSAgICAgICAg
ICAgIGRlZiBtb2NrX2J1aWxkZXJzX3RvX3B1bGxfZnJvbSgpOgotICAgICAgICAgICAgICAgIHJl
dHVybiBbTW9ja0J1aWxkZXIoJ01PQ0sgYnVpbGRlcicpXQotCi0gICAgICAgICAgICBkZWYgbW9j
a190ZXN0c190b191cGRhdGUoYnVpbGQpOgotICAgICAgICAgICAgICAgIHJldHVybiBbJ21vY2sv
cGF0aC90by90ZXN0Lmh0bWwnXQotCi0gICAgICAgICAgICBjb21tYW5kLl9idWlsZGVyc190b19w
dWxsX2Zyb20gPSBtb2NrX2J1aWxkZXJzX3RvX3B1bGxfZnJvbQotICAgICAgICAgICAgY29tbWFu
ZC5fdGVzdHNfdG9fdXBkYXRlID0gbW9ja190ZXN0c190b191cGRhdGUKLQotICAgICAgICAgICAg
ZXhwZWN0ZWRfc3Rkb3V0ID0gIiIicmViYXNlbGluZS1qc29uOiB7J21vY2svcGF0aC90by90ZXN0
Lmh0bWwnOiB7J01PQ0sgYnVpbGRlcic6IFsndHh0J119fQotIiIiCi0KLSAgICAgICAgICAgIGV4
cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5l
LXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01PQ0sg
YnVpbGRlcicsICctLXRlc3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2st
Y2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMn
LCAnLS1zdWZmaXhlcycsICd0eHQnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21v
Y2stY2hlY2tvdXQKLSIiIgotCi0gICAgICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291
dHB1dHMoc2VsZiwgY29tbWFuZC5leGVjdXRlLCBbTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwg
YnVpbGRlcnM9Tm9uZSwgc3VmZml4ZXM9WyJ0eHQiXSwgdmVyYm9zZT1UcnVlKSwgW10sIHRvb2xd
LCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQorICAgICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRy
dWUsIGJ1aWxkZXI9Ik1PQ0sgU25vd0xlb3BhcmQiLCBzdWZmaXhlcz0idHh0IiwKKyAgICAgICAg
ICAgICAgICBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bz1bInRlc3QtbWFjLWxlb3BhcmQi
XSwgdmVyYm9zZT1UcnVlLCB0ZXN0PSJmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sIikKIAor
ICAgICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICAgICAgc2VsZi5jb21tYW5k
LmV4ZWN1dGUob3B0aW9ucywgW10sIHNlbGYudG9vbCkKICAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIG91dCwgXywgXyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgICAgIGJ1aWxk
ZXJzLl9leGFjdF9tYXRjaGVzID0gb2xkX2V4YWN0X21hdGNoZXMKIAotICAgIGRlZiB0ZXN0X3Jl
YmFzZWxpbmVfY29tbWFuZF9saW5lX2ZsYWdzKHNlbGYpOgotICAgICAgICBvbGRfZXhhY3RfbWF0
Y2hlcyA9IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzID0gewotICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxk
ZXIiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQo
WyJtb2NrLXNwZWNpZmllciJdKX0sCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbW1h
bmQgPSBSZWJhc2VsaW5lKCkKLSAgICAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAg
ICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzZWxmLl9yZWFkKHNlbGYudG9vbC5maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCksICdwbGF0Zm9ybS90ZXN0LW1hYy1sZW9wYXJkL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
LWV4cGVjdGVkLnR4dCcpKSwgJ29yaWdpbmFsIHNub3dsZW9wYXJkIHJlc3VsdCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKG91dCwgJ3siYWRkIjogW119XG4nKQogCi0gICAgICAgICAgICBm
b3IgcG9ydF9uYW1lIGluIHRvb2wucG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6Ci0gICAg
ICAgICAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCi0gICAg
ICAgICAgICAgICAgZm9yIHBhdGggaW4gcG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKToKLSAgICAg
ICAgICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAnJykK
IAotICAgICAgICAgICAgdG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9
VHJ1ZSkKK2NsYXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKKyAgICBrbGFz
cyA9IFJlYmFzZWxpbmVKc29uCiAKLSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICIiInJl
YmFzZWxpbmUtanNvbjogeydtb2NrL3BhdGgvdG8vdGVzdC5odG1sJzogeydNT0NLIGJ1aWxkZXIn
OiBbJ3R4dCddfX0KLSIiIgotCi0gICAgICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJNT0NL
IHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3Vm
Zml4ZXMnLCAndHh0JywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXInLCAnLS10ZXN0JywgJ21v
Y2svcGF0aC90by90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci1NT0NLIHJ1bl9jb21t
YW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0Jywg
J21vY2svcGF0aC90by90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci0iIiIKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RSZWJhc2VsaW5lSnNvbiwgc2VsZiku
c2V0VXAoKQorICAgICAgICBzZWxmLnRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIoKQor
ICAgICAgICBzZWxmLm9sZF9leGFjdF9tYXRjaGVzID0gYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMK
KyAgICAgICAgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgPSB7CisgICAgICAgICAgICAiTU9DSyBi
dWlsZGVyIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjog
c2V0KFsibW9jay1zcGVjaWZpZXIiXSl9LAorICAgICAgICAgICAgIk1PQ0sgYnVpbGRlciAoRGVi
dWcpIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0
KFsibW9jay1zcGVjaWZpZXIiLCAiZGVidWciXSl9LAorICAgICAgICB9CiAKLSAgICAgICAgICAg
IGJ1aWxkZXIgPSAiTU9DSyBidWlsZGVyIgotICAgICAgICAgICAgdGVzdCA9ICJtb2NrL3BhdGgv
dG8vdGVzdC5odG1sIgotICAgICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRz
KHNlbGYsIGNvbW1hbmQuZXhlY3V0ZSwgW01vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIGJ1aWxk
ZXJzPVtidWlsZGVyXSwgc3VmZml4ZXM9WyJ0eHQiXSwgdmVyYm9zZT1UcnVlKSwgW3Rlc3RdLCB0
b29sXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4
cGVjdGVkX3N0ZGVycikKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGJ1aWxkZXJz
Ll9leGFjdF9tYXRjaGVzID0gc2VsZi5vbGRfZXhhY3RfbWF0Y2hlcworICAgICAgICBzdXBlcihU
ZXN0UmViYXNlbGluZUpzb24sIHNlbGYpLnRlYXJEb3duKCkKIAotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgPSBvbGRfZXhhY3RfbWF0Y2hlcwor
ICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYWxsKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gTW9j
a09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1UcnVlKQorICAgICAgICBzZWxmLmNvbW1h
bmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsidXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
IjogeyJNT0NLIGJ1aWxkZXIiOiBbInR4dCIsICJwbmciXX19KQogCi0gICAgZGVmIHRlc3RfcmVi
YXNlbGluZV9tdWx0aXBsZV9idWlsZGVycyhzZWxmKToKLSAgICAgICAgb2xkX2V4YWN0X21hdGNo
ZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBi
dWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVy
IjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsi
bW9jay1zcGVjaWZpZXIiXSl9LAotICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIyIjogeyJw
b3J0X25hbWUiOiAidGVzdC1tYWMtc25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1v
Y2stc3BlY2lmaWVyMiJdKX0sCi0gICAgICAgICAgICB9CisgICAgICAgICMgTm90ZSB0aGF0IHdl
IGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkgYSBydW5fY29tbWFu
ZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMs
CisgICAgICAgICAgICBbW1snZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1z
dWZmaXhlcycsICd0eHQscG5nJywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXInLCAnLS10ZXN0
JywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSwKKyAgICAgICAgICAgICBbJ2Vj
aG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICd1c2Vy
LXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXV0pCiAKLSAgICAgICAgICAgIGNvbW1hbmQgPSBS
ZWJhc2VsaW5lKCkKLSAgICAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgICAgICBj
b21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfZGVidWco
c2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJi
b3NlPVRydWUpCisgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZShvcHRpb25zLCAgeyJ1
c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sgYnVpbGRlciAoRGVidWcpIjog
WyJ0eHQiLCAicG5nIl19fSkKIAotICAgICAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiB0b29sLnBv
cnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpOgotICAgICAgICAgICAgICAgIHBvcnQgPSB0b29s
LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQotICAgICAgICAgICAgICAgIGZvciBwYXRoIGlu
IHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHRvb2wuZmls
ZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgJycpCisgICAgICAgICMgTm90ZSB0aGF0IHdl
IGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkgYSBydW5fY29tbWFu
ZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMs
CisgICAgICAgICAgICBbW1snZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1z
dWZmaXhlcycsICd0eHQscG5nJywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXIgKERlYnVnKScs
ICctLXRlc3QnLCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dLAorICAgICAgICAg
ICAgIFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0eHQscG5n
JywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKIAotICAgICAgICAgICAgdG9v
bC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKIAotICAgICAgICAg
ICAgZGVmIG1vY2tfYnVpbGRlcnNfdG9fcHVsbF9mcm9tKCk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFtNb2NrQnVpbGRlcignTU9DSyBidWlsZGVyJyksIE1vY2tCdWlsZGVyKCdNT0NLIGJ1aWxk
ZXIyJyldCitjbGFzcyBUZXN0UmViYXNlbGluZShfQmFzZVRlc3RDYXNlKToKKyAgICAjIFRoaXMg
Y29tbWFuZCBzaGFyZXMgbW9zdCBvZiBpdHMgbG9naWMgd2l0aCBSZWJhc2VsaW5lSnNvbiwgc28g
dGhlc2UgdGVzdHMganVzdCB0ZXN0IHdoYXQgaXMgZGlmZmVyZW50LgogCi0gICAgICAgICAgICBk
ZWYgbW9ja190ZXN0c190b191cGRhdGUoYnVpbGQpOgotICAgICAgICAgICAgICAgIHJldHVybiBb
J21vY2svcGF0aC90by90ZXN0Lmh0bWwnXQorICAgIGtsYXNzID0gUmViYXNlbGluZSAgIyBBS0Eg
d2Via2l0LXBhdGNoIHJlYmFzZWxpbmUtdGVzdAogCi0gICAgICAgICAgICBjb21tYW5kLl9idWls
ZGVyc190b19wdWxsX2Zyb20gPSBtb2NrX2J1aWxkZXJzX3RvX3B1bGxfZnJvbQotICAgICAgICAg
ICAgY29tbWFuZC5fdGVzdHNfdG9fdXBkYXRlID0gbW9ja190ZXN0c190b191cGRhdGUKKyAgICBk
ZWYgdGVzdF90ZXN0c190b191cGRhdGUoc2VsZik6CisgICAgICAgIGJ1aWxkID0gTW9jaygpCisg
ICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzZWxmLmNvbW1hbmQu
X3Rlc3RzX3RvX3VwZGF0ZSwgW2J1aWxkXSkKIAotICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0
ID0gIiIicmViYXNlbGluZS1qc29uOiB7J21vY2svcGF0aC90by90ZXN0Lmh0bWwnOiB7J01PQ0sg
YnVpbGRlcjInOiBbJ3R4dCddLCAnTU9DSyBidWlsZGVyJzogWyd0eHQnXX19Ci0iIiIKKyAgICBk
ZWYgdGVzdF9yZWJhc2VsaW5lKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBiYXNpY2FsbHkg
dGVzdHMgdGhlIHBhdGggZnJvbSBjb21tYW5kLmV4ZWN1dGUoKSB0byBjb21tYW5kLl9yZWJhc2Vs
aW5lKCk7CisgICAgICAgICMgaXQgZG9lc24ndCB0ZXN0IHRoYXQgX3JlYmFzZWxpbmUoKSBhY3R1
YWxseSBkb2VzIGFueXRoaW5nICh0aGF0IGlzIHRlc3RlZCBpbiBUZXN0UmViYXNlbGluZUpzb24u
CisgICAgICAgIHNlbGYudGVzdF9saXN0ID0ge30KIAotICAgICAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0gIiIiTU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRl
cm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyMics
ICctLXRlc3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQK
LU1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAn
LS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRlc3Qn
LCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVu
X2NvbW1hbmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0
eHQnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLSIiIgor
ICAgICAgICBkZWYgcmViYXNlbGluZV9zdHViKG9wdGlvbnMsIHRlc3RfbGlzdCk6CisgICAgICAg
ICAgICBzZWxmLnRlc3RfbGlzdCA9IHRlc3RfbGlzdAogCi0gICAgICAgICAgICBPdXRwdXRDYXB0
dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5leGVjdXRlLCBbTW9ja09wdGlvbnMo
b3B0aW1pemU9VHJ1ZSwgYnVpbGRlcnM9Tm9uZSwgc3VmZml4ZXM9WyJ0eHQiXSwgdmVyYm9zZT1U
cnVlKSwgW10sIHRvb2xdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBzZWxmLmNvbW1hbmQuX2J1aWxkZXJz
X3RvX3B1bGxfZnJvbSA9IGxhbWJkYTogW01vY2tCdWlsZGVyKCdNT0NLIGJ1aWxkZXInKV0KKyAg
ICAgICAgc2VsZi5jb21tYW5kLl90ZXN0c190b191cGRhdGUgPSBsYW1iZGEgYnVpbGRlcjogWydt
b2NrL3BhdGgvdG8vdGVzdC5odG1sJ10KKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5l
ID0gcmViYXNlbGluZV9zdHViCiAKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGJ1aWxk
ZXJzLl9leGFjdF9tYXRjaGVzID0gb2xkX2V4YWN0X21hdGNoZXMKKyAgICAgICAgc2VsZi5femVy
b19vdXRfdGVzdF9leHBlY3RhdGlvbnMoKQogCi0gICAgZGVmIHRlc3RfcmViYXNlbGluZV9tdWx0
aXBsZV9idWlsZGVyc19hbmRfdGVzdHNfY29tbWFuZF9saW5lKHNlbGYpOgogICAgICAgICBvbGRf
ZXhhY3RfbWF0Y2hlcyA9IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzCisgICAgICAgIG9jID0gT3V0
cHV0Q2FwdHVyZSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9t
YXRjaGVzID0gewogICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIiOiB7InBvcnRfbmFtZSI6
ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciJd
KX0sCi0gICAgICAgICAgICAgICAgIk1PQ0sgYnVpbGRlcjIiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0
LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1zcGVjaWZpZXIyIl0p
fSwKLSAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVyMyI6IHsicG9ydF9uYW1lIjogInRlc3Qt
bWFjLXNub3dsZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllcjIiXSl9
LAogICAgICAgICAgICAgfQorICAgICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAg
ICAgICAgc2VsZi5jb21tYW5kLmV4ZWN1dGUoTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgYnVp
bGRlcnM9Tm9uZSwgc3VmZml4ZXM9WyJ0eHQiXSwgdmVyYm9zZT1UcnVlKSwgW10sIHNlbGYudG9v
bCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAg
ICAgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzID0gb2xkX2V4YWN0X21hdGNoZXMKIAot
ICAgICAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmUoKQotICAgICAgICAgICAgdG9vbCA9IE1v
Y2tUb29sKCkKLSAgICAgICAgICAgIGNvbW1hbmQuYmluZF90b190b29sKHRvb2wpCi0KLSAgICAg
ICAgICAgIGZvciBwb3J0X25hbWUgaW4gdG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMo
KToKLSAgICAgICAgICAgICAgICBwb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFt
ZSkKLSAgICAgICAgICAgICAgICBmb3IgcGF0aCBpbiBwb3J0LmV4cGVjdGF0aW9uc19maWxlcygp
OgotICAgICAgICAgICAgICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBh
dGgsICcnKQotCi0gICAgICAgICAgICB0b29sLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hv
dWxkX2xvZz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRlc3RfbGlzdCwg
eydtb2NrL3BhdGgvdG8vdGVzdC5odG1sJzogeydNT0NLIGJ1aWxkZXInOiBbJ3R4dCddfX0pCiAK
LSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICIiInJlYmFzZWxpbmUtanNvbjogeydtb2Nr
L3BhdGgvdG8vdGVzdC5odG1sJzogeydNT0NLIGJ1aWxkZXIyJzogWyd3YXYnLCAndHh0JywgJ3Bu
ZyddLCAnTU9DSyBidWlsZGVyJzogWyd3YXYnLCAndHh0JywgJ3BuZyddLCAnTU9DSyBidWlsZGVy
Myc6IFsnd2F2JywgJ3R4dCcsICdwbmcnXX0sICdtb2NrL3BhdGgvdG8vdGVzdDIuaHRtbCc6IHsn
TU9DSyBidWlsZGVyMic6IFsnd2F2JywgJ3R4dCcsICdwbmcnXSwgJ01PQ0sgYnVpbGRlcic6IFsn
d2F2JywgJ3R4dCcsICdwbmcnXSwgJ01PQ0sgYnVpbGRlcjMnOiBbJ3dhdicsICd0eHQnLCAncG5n
J119fQotIiIiCiAKLSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICd3YXYsdHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyMicsICctLXRlc3QnLCAn
bW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICd3YXYsdHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyJywgJy0tdGVzdCcsICdt
b2NrL3BhdGgvdG8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAotTU9DSyBydW5fY29t
bWFuZDogWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywg
J3dhdix0eHQscG5nJywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXIyJywgJy0tdGVzdCcsICdt
b2NrL3BhdGgvdG8vdGVzdDIuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICd3YXYsdHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyJywgJy0tdGVzdCcsICdt
b2NrL3BhdGgvdG8vdGVzdDIuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd3YXYs
dHh0LHBuZycsICdtb2NrL3BhdGgvdG8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAot
TU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZp
eGVzJywgJ3dhdix0eHQscG5nJywgJ21vY2svcGF0aC90by90ZXN0Mi5odG1sJ10sIGN3ZD0vbW9j
ay1jaGVja291dAotIiIiCitjbGFzcyBUZXN0UmViYXNlbGluZUV4cGVjdGF0aW9ucyhfQmFzZVRl
c3RDYXNlKToKKyAgICBrbGFzcyA9IFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMKIAotICAgICAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuZXhlY3V0ZSwg
W01vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIGJ1aWxkZXJzPVsiTU9DSyBidWlsZGVyLE1PQ0sg
YnVpbGRlcjIiLCAiTU9DSyBidWlsZGVyMyJdLCBzdWZmaXhlcz1bInR4dCxwbmciLCAicG5nLHdh
dix0eHQiXSwgdmVyYm9zZT1UcnVlKSwgWyJtb2NrL3BhdGgvdG8vdGVzdC5odG1sIiwgIm1vY2sv
cGF0aC90by90ZXN0Mi5odG1sIl0sIHRvb2xdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rk
b3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgc3VwZXIoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMsIHNlbGYpLnNldFVw
KCkKKyAgICAgICAgc2VsZi5vcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgYnVp
bGRlcnM9Tm9uZSwgc3VmZml4ZXM9Wyd0eHQnXSwgdmVyYm9zZT1GYWxzZSkKIAotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgPSBvbGRfZXhhY3Rf
bWF0Y2hlcworICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfZXhwZWN0YXRpb25zKHNlbGYpOgorICAg
ICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVjdGF0aW9ucygpCiAKLSAgICBkZWYgdGVzdF9y
ZWJhc2VsaW5lX2pzb25fd2l0aF9tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byhzZWxmKToK
LSAgICAgICAgb2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcwotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAg
ICAgICAgICAgICAiTU9DSyBidWlsZGVyIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFy
ZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1zcGVjaWZpZXIiXSl9LAotICAgICAgICAgICAg
ICAgICJNT0NLIGJ1aWxkZXIyIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtc25vd2xlb3BhcmQi
LCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyMiJdKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8iOiBbInRl
c3QtbWFjLWxlb3BhcmQiXX0sCi0gICAgICAgICAgICB9CisgICAgICAgIHNlbGYudG9vbC5leGVj
dXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAKLSAgICAgICAgICAgIGNvbW1hbmQgPSBSZWJhc2Vs
aW5lKCkKLSAgICAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgICAgICB0b29sLmV4
ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQotICAgICAgICAgICAgY29t
bWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgc2VsZi5jb21tYW5kLl90ZXN0c190b19y
ZWJhc2VsaW5lID0gbGFtYmRhIHBvcnQ6IHsndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwn
OiBzZXQoWyd0eHQnXSksICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJzogc2V0KFsncG5nJ10pfQor
ICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0aW9ucyhvcHRpbWl6ZT1GYWxzZSwg
dmVyYm9zZT1GYWxzZSksIFtdLCBzZWxmLnRvb2wpCiAKLSAgICAgICAgICAgIGV4cGVjdGVkX3N0
ZG91dCA9ICIiInJlYmFzZWxpbmUtanNvbjogeydtb2NrL3BhdGgvdG8vdGVzdC5odG1sJzogeydN
T0NLIGJ1aWxkZXIyJzogWyd0eHQnLCAncG5nJ119fVxuIiIiCi0gICAgICAgICAgICBleHBlY3Rl
ZF9zdGRlcnIgPSAiIiJNT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0
LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBi
dWlsZGVyMicsICctLXRlc3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCcsICctLW1vdmUtb3Zl
cndyaXR0ZW4tYmFzZWxpbmVzLXRvJywgJ3Rlc3QtbWFjLWxlb3BhcmQnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywg
Jy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICdtb2NrL3BhdGgvdG8vdGVzdC5odG1sJ10sIGN3ZD0v
bW9jay1jaGVja291dAotIiIiCisgICAgICAgICMgRklYTUU6IGNoYW5nZSB0aGlzIHRvIHVzZSB0
aGUgdGVzdC0gcG9ydHMuCisgICAgICAgIGNhbGxzID0gZmlsdGVyKGxhbWJkYSB4OiB4ICE9IFsn
cW1ha2UnLCAnLXYnXSwgc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscykKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxlbihjYWxscykgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihj
YWxsc1swXSkgPT0gMjYpCiAKLSAgICAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRp
bWl6ZT1UcnVlLCBidWlsZGVycz1bIk1PQ0sgYnVpbGRlcjIiXSwgc3VmZml4ZXM9WyJ0eHQscG5n
Il0sIHZlcmJvc2U9VHJ1ZSkKLSAgICAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBjb21tYW5kLmV4ZWN1dGUsIFtvcHRpb25zLCBbIm1vY2svcGF0aC90by90ZXN0
Lmh0bWwiXSwgdG9vbF0sCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVk
X3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzID0gb2xkX2V4YWN0X21hdGNo
ZXMKKyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9uc19ub29wKHNlbGYpOgorICAg
ICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVjdGF0aW9ucygpCiAKLSAgICBkZWYgdGVzdF9y
ZWJhc2VsaW5lX3Rlc3RfaW50ZXJuYWxfd2l0aF9tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190
byhzZWxmKToKLSAgICAgICAgb2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0
Y2hlcworICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBM
ZW9wYXJkIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjog
c2V0KFsibW9jay1zcGVjaWZpZXIiXSl9LAotICAgICAgICAgICAgICAgICJNT0NLIFNub3dMZW9w
YXJkIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtc25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6
IHNldChbIm1vY2stc3BlY2lmaWVyIl0pfSwKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Y29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgp
Ci0gICAgICAgICAgICB0b29sLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1U
cnVlKQotICAgICAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgICAg
IG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZC5leGVjdXRlKHNl
bGYub3B0aW9ucywgW10sIHNlbGYudG9vbCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
IF8sIF8sIGxvZ3MgPSBvYy5yZXN0b3JlX291dHB1dCgpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZWxmLnRvb2wuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLCB7fSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxvZ3MsICdEaWQgbm90IGZpbmQgYW55IHRlc3RzIG1hcmtl
ZCBSZWJhc2VsaW5lLlxuJykKIAotICAgICAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5
LmdldCgndGVzdC1tYWMtc25vd2xlb3BhcmQnKQotICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVt
LndyaXRlX3RleHRfZmlsZSh0b29sLmZpbGVzeXN0ZW0uam9pbihwb3J0LmJhc2VsaW5lX3ZlcnNp
b25fZGlyKCksICdmYWlsdXJlcycsICdleHBlY3RlZCcsICdpbWFnZS1leHBlY3RlZC50eHQnKSwg
JycpCisgICAgZGVmIGRpc2FibGVkX3Rlc3Rfb3ZlcnJpZGVzX2FyZV9pbmNsdWRlZF9jb3JyZWN0
bHkoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBhbnkgdGVzdHMgbWFya2Vk
IGFzIFJFQkFTRUxJTkUgaW4gdGhlIG92ZXJyaWRlcyBhcmUgZm91bmQsIGJ1dAorICAgICAgICAj
IHRoYXQgdGhlIG92ZXJyaWRlcyBkbyBub3QgZ2V0IHdyaXR0ZW4gaW50byB0aGUgbWFpbiBmaWxl
LgorICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVjdGF0aW9ucygpCiAKLSAgICAgICAg
ICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCBidWlsZGVyPSJNT0NLIFNu
b3dMZW9wYXJkIiwgc3VmZml4ZXM9InR4dCIsCi0gICAgICAgICAgICAgICAgbW92ZV9vdmVyd3Jp
dHRlbl9iYXNlbGluZXNfdG89WyJ0ZXN0LW1hYy1sZW9wYXJkIl0sIHZlcmJvc2U9VHJ1ZSwgdGVz
dD0iZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCIpCisgICAgICAgIHNlbGYuX3dyaXRlKHNl
bGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCwgJycpCisgICAgICAgIHNlbGYubGlvbl9wb3J0LmV4
cGVjdGF0aW9uc19kaWN0ID0gbGFtYmRhOiB7CisgICAgICAgICAgICBzZWxmLmxpb25fZXhwZWN0
YXRpb25zX3BhdGg6ICcnLAorICAgICAgICAgICAgJ292ZXJyaWRlcyc6ICgnQnVnKHgpIHVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgRmFpbHVyZSBSZWJhc2VsaW5lIF1cbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0J1Zyh5KSB1c2Vyc2NyaXB0cy90ZXN0Lmh0bWwgWyBDcmFz
aCBdXG4nKX0KKyAgICAgICAgc2VsZi5fd3JpdGUoJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCcsICcnKQogCi0gICAgICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICAg
ICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IGxvZ3MgPSAnJwotICAgICAgICAgICAgICAgIGNvbW1hbmQuZXhlY3V0ZShvcHRpb25zLCBbXSwg
dG9vbCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgXywgXywgbG9ncyA9
IG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5jb21t
YW5kLl90ZXN0c190b19yZWJhc2VsaW5lKHNlbGYubGlvbl9wb3J0KSwgeyd1c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QuaHRtbCc6IHNldChbJ3BuZycsICd0eHQnLCAnd2F2J10pfSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGgp
LCAnJykKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJDb3B5aW5nIGJhc2VsaW5lIGZy
b20gL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC1tYWMtc25vd2xlb3Bh
cmQvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQudHh0IHRvIC90ZXN0LmNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QtbWFjLWxlb3BhcmQvZmFpbHVyZXMvZXhwZWN0ZWQv
aW1hZ2UtZXhwZWN0ZWQudHh0LlxuIiBpbiBsb2dzKQogCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IG9sZF9leGFjdF9tYXRjaGVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171529</attachid>
            <date>2012-10-30 15:23:47 -0700</date>
            <delta_ts>2012-10-30 15:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100793-20121030152211.patch</filename>
            <type>text/plain</type>
            <size>23026</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2NkZTUxODJmMDM1YTNjM2RmN2JlZjYwODllZTc4MzBl
YmU4NDJmYy4uMzU4MmZkN2Y3MDBiN2NiNjFjZDk4Y2UxYmQwMzdiNmRmNmE1MzAwZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMTEzLDYgKzEx
Myw0NSBAQAogCiAyMDEyLTEwLTI5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3Jn
PgogCisgICAgICAgIHdlYmtpdC1wYXRjaCByZWJhc2VsaW5lKjogYWRkIG1vcmUgaGVscGZ1bCBs
b2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDA1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSByZXdpcmVzIHRoZSBnYXJkZW4tby1tYXRpYyBhbmQgcmViYXNlbGluZSogY29t
bWFuZHMKKyAgICAgICAgaW4gd2Via2l0LXBhdGNoIHNvIHRoYXQgLS12ZXJib3NlIHByb3BhZ2F0
ZXMgdGhyb3VnaCBhbGwgdGhlCisgICAgICAgIHN1YmNvbW1hbmQgaW52b2NhdGlvbnMgcHJvcGVy
bHksIGFuZCBjbGVhbnMgdXAgdGhlIGxvZ2dpbmcgc28KKyAgICAgICAgdGhhdCB5b3UgY2FuIGFj
dHVhbGx5IHRlbGwgd2hhdCBpcyBoYXBwZW5pbmcuIEZvciBub3csIHdlCisgICAgICAgIGxlYXZl
IGFsbCBvZiB0aGUgbG9nZ2luZyBhdCB0aGUgbG9nZ2luZy5ERUJVRyBsZXZlbCwgd2hpY2gKKyAg
ICAgICAgbWVhbnMgdGhhdCBpdCBnZXRzIG1peGVkIGluIHdpbGwgYWxsIHRoZSBvdGhlciBkZWJ1
ZyBsb2dnaW5nIG5vaXNlCisgICAgICAgIGFuZCBpcyBoYXJkZXIgdG8gcmVhZCwgYnV0IHdlJ2xs
IGZpeCB0aGF0IGluIHN1YnNlcXVlbnQgcGF0Y2hlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5OgorICAgICAgICAoQmFz
ZWxpbmVPcHRpbWl6ZXIuX3BsYXRmb3JtKToKKyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyLl9t
b3ZlX2Jhc2VsaW5lcyk6CisgICAgICAgIChCYXNlbGluZU9wdGltaXplci5vcHRpbWl6ZSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weToK
KyAgICAgICAgKEdhcmRlbk9NYXRpYy5leGVjdXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0
Ll9jb3B5X2V4aXN0aW5nX2Jhc2VsaW5lKToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0Ll9yZWJh
c2VsaW5lX3Rlc3QpOgorICAgICAgICAoT3B0aW1pemVCYXNlbGluZXMuX29wdGltaXplX2Jhc2Vs
aW5lKToKKyAgICAgICAgKE9wdGltaXplQmFzZWxpbmVzLmV4ZWN1dGUpOgorICAgICAgICAoQWJz
dHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kLl9ydW5fd2Via2l0X3BhdGNoKToKKyAgICAg
ICAgKEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZC5fcmViYXNlbGluZV9jb21tYW5k
cyk6CisgICAgICAgIChBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQuX2ZpbGVzX3Rv
X2FkZCk6CisgICAgICAgIChBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQuX29wdGlt
aXplX2Jhc2VsaW5lcyk6CisgICAgICAgIChBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1h
bmQuX3JlYmFzZWxpbmUpOgorICAgICAgICAoUmViYXNlbGluZUV4cGVjdGF0aW9ucy5fYWRkX3Rl
c3RzX3RvX3JlYmFzZWxpbmVfZm9yX3BvcnQpOgorICAgICAgICAoUmViYXNlbGluZS5leGVjdXRl
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2
ZXIucHk6CisgICAgICAgIChHYXJkZW5pbmdIVFRQU2VydmVyLl9faW5pdF9fKToKKyAgICAgICAg
KEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlcik6CisgICAgICAgIChHYXJkZW5pbmdIVFRQUmVx
dWVzdEhhbmRsZXIuX3J1bl93ZWJraXRfcGF0Y2gpOgorICAgICAgICAoR2FyZGVuaW5nSFRUUFJl
cXVlc3RIYW5kbGVyLnJlYmFzZWxpbmVhbGwpOgorCisyMDEyLTEwLTI2ICBEaXJrIFByYW5rZSAg
PGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIHdlYmtpdHB5OiBjaGFuZ2Ugbm9uLXZl
cmJvc2UgbG9nIGZvcm1hdCBmb3Igd2Via2l0LXBhdGNoCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NjEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXIucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weQpp
bmRleCA2OGJlM2E4MzlhYmVhM2Y2Nzg3NDZmNWJhMGYyZDc3MTMyZGRmYTNlLi44M2RmODE1MDM2
OWZlNzc1YzhlMTAzOWUwMzBhMTM5MjlmNTQwZTYxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weQpA
QCAtMTk2LDYgKzE5NiwxNSBAQCBjbGFzcyBCYXNlbGluZU9wdGltaXplcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIGRlbCByZXN1bHRzX2J5X3BvcnRfbmFtZVtwb3J0X25hbWVdCiAgICAgICAg
IHJldHVybiByZXN1bHRzX2J5X3BvcnRfbmFtZQogCisgICAgZGVmIF9wbGF0Zm9ybShzZWxmLCBm
aWxlbmFtZSk6CisgICAgICAgIHBsYXRmb3JtX2RpciA9ICdMYXlvdXRUZXN0cycgKyBzZWxmLl9m
aWxlc3lzdGVtLnNlcCArICdwbGF0Zm9ybScgKyBzZWxmLl9maWxlc3lzdGVtLnNlcAorICAgICAg
ICBpZiBmaWxlbmFtZS5zdGFydHN3aXRoKHBsYXRmb3JtX2Rpcik6CisgICAgICAgICAgICByZXR1
cm4gZmlsZW5hbWUucmVwbGFjZShwbGF0Zm9ybV9kaXIsICcnKS5zcGxpdChzZWxmLl9maWxlc3lz
dGVtLnNlcClbMF0KKyAgICAgICAgcGxhdGZvcm1fZGlyID0gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX3NjbS5jaGVja291dF9yb290LCBwbGF0Zm9ybV9kaXIpCisgICAgICAgIGlmIGZpbGVu
YW1lLnN0YXJ0c3dpdGgocGxhdGZvcm1fZGlyKToKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFt
ZS5yZXBsYWNlKHBsYXRmb3JtX2RpciwgJycpLnNwbGl0KHNlbGYuX2ZpbGVzeXN0ZW0uc2VwKVsw
XQorICAgICAgICByZXR1cm4gJyhnZW5lcmljKScKKwogICAgIGRlZiBfbW92ZV9iYXNlbGluZXMo
c2VsZiwgYmFzZWxpbmVfbmFtZSwgcmVzdWx0c19ieV9kaXJlY3RvcnksIG5ld19yZXN1bHRzX2J5
X2RpcmVjdG9yeSk6CiAgICAgICAgIGRhdGFfZm9yX3Jlc3VsdCA9IHt9CiAgICAgICAgIGZvciBk
aXJlY3RvcnksIHJlc3VsdCBpbiByZXN1bHRzX2J5X2RpcmVjdG9yeS5pdGVtcygpOgpAQCAtMjA4
LDEyICsyMTcsMTIgQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXIob2JqZWN0KToKICAgICAgICAg
ICAgIGlmIG5ld19yZXN1bHRzX2J5X2RpcmVjdG9yeS5nZXQoZGlyZWN0b3J5KSAhPSByZXN1bHQ6
CiAgICAgICAgICAgICAgICAgZmlsZV9uYW1lcy5hcHBlbmQoc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX3NjbS5jaGVja291dF9yb290LCBkaXJlY3RvcnksIGJhc2VsaW5lX25hbWUpKQogICAg
ICAgICBpZiBmaWxlX25hbWVzOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiZGVsZXRpbmc6IikK
LSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlX25hbWVzOgotICAgICAgICAgICAgICAg
IF9sb2cuZGVidWcoIiAgIiArIHNlbGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChmaWxlbmFtZSwgc2Vs
Zi5fc2NtLmNoZWNrb3V0X3Jvb3QpLnJlcGxhY2UoYmFzZWxpbmVfbmFtZSwgJycpKQorICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygiICAgIERlbGV0aW5nOiIpCisgICAgICAgICAgICBmb3IgcGxhdGZv
cm1fZGlyIGluIHNvcnRlZChzZWxmLl9wbGF0Zm9ybShmaWxlbmFtZSkgZm9yIGZpbGVuYW1lIGlu
IGZpbGVfbmFtZXMpOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIiAgICAgICIgKyBwbGF0
Zm9ybV9kaXIpCiAgICAgICAgICAgICBzZWxmLl9zY20uZGVsZXRlX2xpc3QoZmlsZV9uYW1lcykK
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIm5vdGhpbmcgdG8gZGVsZXRl
IikKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiAgICAoTm90aGluZyB0byBkZWxldGUpIikKIAog
ICAgICAgICBmaWxlX25hbWVzID0gW10KICAgICAgICAgZm9yIGRpcmVjdG9yeSwgcmVzdWx0IGlu
IG5ld19yZXN1bHRzX2J5X2RpcmVjdG9yeS5pdGVtcygpOgpAQCAtMjIzLDEyICsyMzIsMTIgQEAg
Y2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKGRlc3RpbmF0aW9uLCBkYXRhX2Zvcl9yZXN1bHRb
cmVzdWx0XSkKICAgICAgICAgICAgICAgICBmaWxlX25hbWVzLmFwcGVuZChkZXN0aW5hdGlvbikK
ICAgICAgICAgaWYgZmlsZV9uYW1lczoKLSAgICAgICAgICAgIF9sb2cuZGVidWcoImFkZGluZzoi
KQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVfbmFtZXM6Ci0gICAgICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygiICAiICsgc2VsZi5fZmlsZXN5c3RlbS5yZWxwYXRoKGZpbGVuYW1lLCBz
ZWxmLl9zY20uY2hlY2tvdXRfcm9vdCkucmVwbGFjZShiYXNlbGluZV9uYW1lLCAnJykpCisgICAg
ICAgICAgICBfbG9nLmRlYnVnKCIgICAgQWRkaW5nOiIpCisgICAgICAgICAgICBmb3IgcGxhdGZv
cm1fZGlyIGluIHNvcnRlZChzZWxmLl9wbGF0Zm9ybShmaWxlbmFtZSkgZm9yIGZpbGVuYW1lIGlu
IGZpbGVfbmFtZXMpOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIiAgICAgICIgKyBwbGF0
Zm9ybV9kaXIpCiAgICAgICAgICAgICBzZWxmLl9zY20uYWRkX2xpc3QoZmlsZV9uYW1lcykKICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIm5vdGhpbmcgdG8gYWRkIikKKyAg
ICAgICAgICAgIF9sb2cuZGVidWcoIiAgICAoTm90aGluZyB0byBhZGQpIikKIAogICAgIGRlZiBk
aXJlY3Rvcmllc19ieV9yZXN1bHQoc2VsZiwgYmFzZWxpbmVfbmFtZSk6CiAgICAgICAgIHJlc3Vs
dHNfYnlfZGlyZWN0b3J5ID0gc2VsZi5fcmVhZF9yZXN1bHRzX2J5X2RpcmVjdG9yeShiYXNlbGlu
ZV9uYW1lKQpAQCAtMjQwLDIzICsyNDksMjYgQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5uZXdfcmVzdWx0c19ieV9kaXJlY3RvcnkgPSBuZXdfcmVzdWx0
c19ieV9kaXJlY3RvcnkKICAgICAgICAgaWYgbmV3X3Jlc3VsdHNfYnlfZGlyZWN0b3J5ID09IHJl
c3VsdHNfYnlfZGlyZWN0b3J5OgogICAgICAgICAgICAgaWYgbmV3X3Jlc3VsdHNfYnlfZGlyZWN0
b3J5OgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIk5vIG9wdGltaXphdGlvbiBmb3VuZCBm
b3IgJXMsIG9wdGltYWw/IiAlIGJhc2VuYW1lKQotICAgICAgICAgICAgICAgIGZvciBwYXRoLCBy
ZXN1bHQgaW4gcmVzdWx0c19ieV9kaXJlY3RvcnkuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygiICAlczogJXMiICUgKHNlbGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChwYXRo
LCBzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCkucmVwbGFjZShiYXNlbGluZV9uYW1lLCAnJyksIHJl
c3VsdFswOjZdKSkKKyAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIgICVzOiAoYWxyZWFkeSBv
cHRpbWFsKSIgJSBiYXNlbmFtZSkKKyAgICAgICAgICAgICAgICBmb3IgcGF0aCBpbiBzb3J0ZWQo
cmVzdWx0c19ieV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHRzX2J5X2RpcmVjdG9yeVtwYXRoXQorICAgICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIg
ICAgICAlczogJXMiICUgKHNlbGYuX3BsYXRmb3JtKHBhdGgpLCByZXN1bHRbMDo2XSkpCiAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIk5vIGJhc2VsaW5lcyBm
b3VuZCBmb3IgJXMiICUgYmFzZW5hbWUpCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICAl
czogKG5vIGJhc2VsaW5lcyBmb3VuZCkiICUgYmFzZW5hbWUpCiAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQogICAgICAgICBpZiBzZWxmLl9maWx0ZXJlZF9yZXN1bHRzX2J5X3BvcnRfbmFtZShyZXN1
bHRzX2J5X2RpcmVjdG9yeSkgIT0gc2VsZi5fZmlsdGVyZWRfcmVzdWx0c19ieV9wb3J0X25hbWUo
bmV3X3Jlc3VsdHNfYnlfZGlyZWN0b3J5KToKICAgICAgICAgICAgIF9sb2cud2FybmluZygiT3B0
aW1pemF0aW9uIGZhaWxlZCIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBf
bG9nLmRlYnVnKCJPcHRpbWl6aW5nICVzIiAlIGJhc2VuYW1lKQotICAgICAgICBfbG9nLmRlYnVn
KCJiZWZvcmU6ICIpCi0gICAgICAgIGZvciBwYXRoLCByZXN1bHQgaW4gcmVzdWx0c19ieV9kaXJl
Y3RvcnkuaXRlbXMoKToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiAgJXM6ICVzIiAlIChzZWxm
Ll9maWxlc3lzdGVtLnJlbHBhdGgocGF0aCwgc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QpLnJlcGxh
Y2UoYmFzZWxpbmVfbmFtZSwgJycpLCByZXN1bHRbMDo2XSkpCi0gICAgICAgIF9sb2cuZGVidWco
ImFmdGVyOiAiKQotICAgICAgICBmb3IgcGF0aCwgcmVzdWx0IGluIG5ld19yZXN1bHRzX2J5X2Rp
cmVjdG9yeS5pdGVtcygpOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICAlczogJXMiICUgKHNl
bGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChwYXRoLCBzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCkucmVw
bGFjZShiYXNlbGluZV9uYW1lLCAnJyksIHJlc3VsdFswOjZdKSkKKyAgICAgICAgX2xvZy5kZWJ1
ZygiICAlczoiICUgYmFzZW5hbWUpCisgICAgICAgIF9sb2cuZGVidWcoIiAgICBCZWZvcmU6ICIp
CisgICAgICAgIGZvciBwYXRoIGluIHNvcnRlZChyZXN1bHRzX2J5X2RpcmVjdG9yeSk6CisgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHRzX2J5X2RpcmVjdG9yeVtwYXRoXQorICAgICAgICAgICAg
X2xvZy5kZWJ1ZygiICAgICAgJXM6ICVzIiAlIChzZWxmLl9wbGF0Zm9ybShwYXRoKSwgcmVzdWx0
WzA6Nl0pKQorICAgICAgICBfbG9nLmRlYnVnKCIgICAgQWZ0ZXI6ICIpCisgICAgICAgIGZvciBw
YXRoIGluIHNvcnRlZChuZXdfcmVzdWx0c19ieV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgcmVz
dWx0ID0gbmV3X3Jlc3VsdHNfYnlfZGlyZWN0b3J5W3BhdGhdCisgICAgICAgICAgICBfbG9nLmRl
YnVnKCIgICAgICAlczogJXMiICUgKHNlbGYuX3BsYXRmb3JtKHBhdGgpLCByZXN1bHRbMDo2XSkp
CiAKICAgICAgICAgc2VsZi5fbW92ZV9iYXNlbGluZXMoYmFzZWxpbmVfbmFtZSwgcmVzdWx0c19i
eV9kaXJlY3RvcnksIG5ld19yZXN1bHRzX2J5X2RpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIFRy
dWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJk
ZW5vbWF0aWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVu
b21hdGljLnB5CmluZGV4IDdkYTk2ZTRiYzkwY2QyOGZhODUxOWUwZmVjZjQwZTliYjQzNjU4NWQu
LjY2YjlmYWVmOGIyNjYwMzAzZTc1MzI4OTUxZjE2YzhjNWIzYjBkNWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQpAQCAt
MzQsNyArMzQsNyBAQCBjbGFzcyBHYXJkZW5PTWF0aWMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1h
bmQpOgogICAgICAgICBwcmludCAiVGhpcyBjb21tYW5kIHJ1bnMgYSBsb2NhbCBIVFRQIHNlcnZl
ciB0aGF0IGNoYW5nZXMgeW91ciB3b3JraW5nIGNvcHkiCiAgICAgICAgIHByaW50ICJiYXNlZCBv
biB0aGUgYWN0aW9ucyB5b3UgdGFrZSBpbiB0aGUgd2ViLWJhc2VkIFVJLiIKIAotICAgICAgICBo
dHRwZCA9IEdhcmRlbmluZ0hUVFBTZXJ2ZXIoaHR0cGRfcG9ydD04MTI3LCBjb25maWc9eyd0b29s
JzogdG9vbH0pCisgICAgICAgIGh0dHBkID0gR2FyZGVuaW5nSFRUUFNlcnZlcihodHRwZF9wb3J0
PTgxMjcsIGNvbmZpZz17J3Rvb2wnOiB0b29sLCAnb3B0aW9ucyc6IG9wdGlvbnN9KQogICAgICAg
ICBzZWxmLl90b29sLnVzZXIub3Blbl91cmwoaHR0cGQudXJsKCkpCiAKICAgICAgICAgcHJpbnQg
IkxvY2FsIEhUVFAgc2VydmVyIHN0YXJ0ZWQuIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQppbmRleCA4NTk5NjMyNjFjZDFkMjIwZjAy
NjYwZDJjYmJjYzgwZjU4ZGMwMTE2Li40NDI2MGVhNWU0ZGMzY2I0Y2Q2YWQxMzhmODc2MmU4YTY2
ODJlZDVhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cmViYXNlbGluZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cmViYXNlbGluZS5weQpAQCAtMTAxLDEyICsxMDEsMTIgQEAgY2xhc3MgUmViYXNlbGluZVRlc3Qo
QWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAgIHBvcnQgPSBzZWxmLl90
b29sLnBvcnRfZmFjdG9yeS5nZXQocGxhdGZvcm0pCiAgICAgICAgICAgICBvbGRfYmFzZWxpbmUg
PSBwb3J0LmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgIi4iICsgc3VmZml4KQogICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5leGlzdHMob2xkX2Jhc2VsaW5lKToK
LSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIk5vIGV4aXN0aW5nIGJhc2VsaW5lIGZvciAlcy4i
ICUgdGVzdF9uYW1lKQorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIk5vIGV4aXN0aW5nIGJh
c2VsaW5lIGZvciAlcy4iICUgdGVzdF9uYW1lKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
ICAgICAgICAgICAgIG5ld19iYXNlbGluZSA9IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5qb2luKHBv
cnQuYmFzZWxpbmVfcGF0aCgpLCBzZWxmLl9maWxlX25hbWVfZm9yX2V4cGVjdGVkX3Jlc3VsdCh0
ZXN0X25hbWUsIHN1ZmZpeCkpCiAgICAgICAgICAgICBpZiBzZWxmLl90b29sLmZpbGVzeXN0ZW0u
ZXhpc3RzKG5ld19iYXNlbGluZSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGlzdGlu
ZyBiYXNlbGluZSBhdCAlcywgbm90IGNvcHlpbmcgb3ZlciBpdC4iICUgbmV3X2Jhc2VsaW5lKQor
ICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIkV4aXN0aW5nIGJhc2VsaW5lIGF0ICVzLCBub3Qg
Y29weWluZyBvdmVyIGl0LiIgJSBuZXdfYmFzZWxpbmUpCiAgICAgICAgICAgICAgICAgY29udGlu
dWUKIAogICAgICAgICAgICAgb2xkX2Jhc2VsaW5lcy5hcHBlbmQob2xkX2Jhc2VsaW5lKQpAQCAt
MTE2LDcgKzExNiw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3RyYWN0UmViYXNlbGluaW5n
Q29tbWFuZCk6CiAgICAgICAgICAgICBvbGRfYmFzZWxpbmUgPSBvbGRfYmFzZWxpbmVzW2ldCiAg
ICAgICAgICAgICBuZXdfYmFzZWxpbmUgPSBuZXdfYmFzZWxpbmVzW2ldCiAKLSAgICAgICAgICAg
IF9sb2cuaW5mbygiQ29weWluZyBiYXNlbGluZSBmcm9tICVzIHRvICVzLiIgJSAob2xkX2Jhc2Vs
aW5lLCBuZXdfYmFzZWxpbmUpKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiQ29weWluZyBiYXNl
bGluZSBmcm9tICVzIHRvICVzLiIgJSAob2xkX2Jhc2VsaW5lLCBuZXdfYmFzZWxpbmUpKQogICAg
ICAgICAgICAgc2VsZi5fdG9vbC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYu
X3Rvb2wuZmlsZXN5c3RlbS5kaXJuYW1lKG5ld19iYXNlbGluZSkpCiAgICAgICAgICAgICBzZWxm
Ll90b29sLmZpbGVzeXN0ZW0uY29weWZpbGUob2xkX2Jhc2VsaW5lLCBuZXdfYmFzZWxpbmUpCiAg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC5zY20oKS5leGlzdHMobmV3X2Jhc2VsaW5lKToK
QEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdChBYnN0cmFjdFJlYmFzZWxp
bmluZ0NvbW1hbmQpOgogICAgICAgICBpZiBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bzoK
ICAgICAgICAgICAgIHNlbGYuX2NvcHlfZXhpc3RpbmdfYmFzZWxpbmUobW92ZV9vdmVyd3JpdHRl
bl9iYXNlbGluZXNfdG8sIHRlc3RfbmFtZSwgc3VmZml4KQogCi0gICAgICAgIF9sb2cuaW5mbygi
UmV0cmlldmluZyAlcy4iICUgc291cmNlX2Jhc2VsaW5lKQorICAgICAgICBfbG9nLmRlYnVnKCJS
ZXRyaWV2aW5nICVzLiIgJSBzb3VyY2VfYmFzZWxpbmUpCiAgICAgICAgIHNlbGYuX3NhdmVfYmFz
ZWxpbmUoc2VsZi5fdG9vbC53ZWIuZ2V0X2JpbmFyeShzb3VyY2VfYmFzZWxpbmUsIGNvbnZlcnRf
NDA0X3RvX05vbmU9VHJ1ZSksIHRhcmdldF9iYXNlbGluZSkKIAogICAgIGRlZiBfcmViYXNlbGlu
ZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKHNlbGYsIGJ1aWxkZXJfbmFtZSwgdGVzdF9u
YW1lLCBwbGF0Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG8pOgpAQCAtMTg2LDcg
KzE4Niw3IEBAIGNsYXNzIE9wdGltaXplQmFzZWxpbmVzKEFic3RyYWN0UmViYXNlbGluaW5nQ29t
bWFuZCk6CiAgICAgICAgIGZvciBzdWZmaXggaW4gc2VsZi5fYmFzZWxpbmVfc3VmZml4X2xpc3Q6
CiAgICAgICAgICAgICBiYXNlbGluZV9uYW1lID0gX2Jhc2VsaW5lX25hbWUoc2VsZi5fdG9vbC5m
aWxlc3lzdGVtLCB0ZXN0X25hbWUsIHN1ZmZpeCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9i
YXNlbGluZV9vcHRpbWl6ZXIub3B0aW1pemUoYmFzZWxpbmVfbmFtZSk6Ci0gICAgICAgICAgICAg
ICAgcHJpbnQgIkh1ZXJpc3RpY3MgZmFpbGVkIHRvIG9wdGltaXplICVzIiAlIGJhc2VsaW5lX25h
bWUKKyAgICAgICAgICAgICAgICBwcmludCAiSGV1cmlzdGljcyBmYWlsZWQgdG8gb3B0aW1pemUg
JXMiICUgYmFzZWxpbmVfbmFtZQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6CiAgICAgICAgIHNlbGYuX2Jhc2VsaW5lX3N1ZmZpeF9saXN0ID0gb3B0aW9ucy5z
dWZmaXhlcy5zcGxpdCgnLCcpCkBAIC0xOTQsNyArMTk0LDcgQEAgY2xhc3MgT3B0aW1pemVCYXNl
bGluZXMoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgc2VsZi5fcG9ydCA9
IHRvb2wucG9ydF9mYWN0b3J5LmdldCgiY2hyb21pdW0td2luLXdpbjciKSAgIyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgc2VsZWN0YWJsZS4KIAogICAgICAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGYu
X3BvcnQudGVzdHMoYXJncyk6Ci0gICAgICAgICAgICBwcmludCAiT3B0aW1pemluZyAlcy4iICUg
dGVzdF9uYW1lCisgICAgICAgICAgICBfbG9nLmluZm8oIk9wdGltaXppbmcgJXMiICUgdGVzdF9u
YW1lKQogICAgICAgICAgICAgc2VsZi5fb3B0aW1pemVfYmFzZWxpbmUodGVzdF9uYW1lKQogCiAK
QEAgLTIzNSw5ICsyMzUsMTIgQEAgY2xhc3MgQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21t
YW5kKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgICAgICAgICAgICAgICAn
WW91IGNhbiB1c2UgIndlYmtpdC1wYXRjaCBvcHRpbWl6ZS1iYXNlbGluZXMiIHRvIG9wdGltaXpl
IHNlcGFyYXRlbHkuJykpXSkKICAgICAgICAgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQuX19p
bml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQogCi0gICAgZGVmIF9ydW5fd2Via2l0X3BhdGNo
KHNlbGYsIGFyZ3MpOgorICAgIGRlZiBfcnVuX3dlYmtpdF9wYXRjaChzZWxmLCBhcmdzLCB2ZXJi
b3NlKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVu
X2NvbW1hbmQoW3NlbGYuX3Rvb2wucGF0aCgpXSArIGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgp
LmNoZWNrb3V0X3Jvb3QpCisgICAgICAgICAgICB2ZXJib3NlX2FyZ3MgPSBbJy0tdmVyYm9zZSdd
IGlmIHZlcmJvc2UgZWxzZSBbXQorICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdG9vbC5leGVj
dXRpdmUucnVuX2NvbW1hbmQoW3NlbGYuX3Rvb2wucGF0aCgpXSArIHZlcmJvc2VfYXJncyArIGFy
Z3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QsIHJldHVybl9zdGRlcnI9VHJ1
ZSkKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHN0ZGVyci5zcGxpdGxpbmVzKCk6CisgICAgICAg
ICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgbGluZQogICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3IsIGU6CiAgICAgICAgICAgICBfbG9nLmVycm9yKGUpCiAKQEAgLTI2Miw3ICsyNjUsOCBA
QCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgICAgIGJ1aWxkZXJzX3RvX2ZhbGxiYWNrX3BhdGhz
W2J1aWxkZXJdID0gZmFsbGJhY2tfcGF0aAogICAgICAgICByZXR1cm4gYnVpbGRlcnNfdG9fZmFs
bGJhY2tfcGF0aHMua2V5cygpCiAKLSAgICBkZWYgX3JlYmFzZWxpbmVfY29tbWFuZHMoc2VsZiwg
dGVzdF9saXN0KToKKyAgICBkZWYgX3JlYmFzZWxpbmVfY29tbWFuZHMoc2VsZiwgdGVzdF9saXN0
LCB2ZXJib3NlPUZhbHNlKToKKwogICAgICAgICBwYXRoX3RvX3dlYmtpdF9wYXRjaCA9IHNlbGYu
X3Rvb2wucGF0aCgpCiAgICAgICAgIGN3ZCA9IHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9v
dAogICAgICAgICBjb21tYW5kcyA9IFtdCkBAIC0yNzMsNiArMjc3LDggQEAgY2xhc3MgQWJzdHJh
Y3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToK
ICAgICAgICAgICAgICAgICBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byA9IGJ1aWxkZXJz
Lm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvKGJ1aWxkZXIpCiAgICAgICAgICAgICAgICAg
Zm9yIHBsYXRmb3JtIGluIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvOgogICAgICAgICAg
ICAgICAgICAgICBjbWRfbGluZS5leHRlbmQoWyctLW1vdmUtb3ZlcndyaXR0ZW4tYmFzZWxpbmVz
LXRvJywgcGxhdGZvcm1dKQorICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAg
ICAgICAgICAgIGNtZF9saW5lLmFwcGVuZCgnLS12ZXJib3NlJykKICAgICAgICAgICAgICAgICBj
b21tYW5kcy5hcHBlbmQodHVwbGUoW2NtZF9saW5lLCBjd2RdKSkKICAgICAgICAgcmV0dXJuIGNv
bW1hbmRzCiAKQEAgLTI4Miw4ICsyODgsOSBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNl
bGluZUNvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgZmls
ZV9hZGRlZCA9IEZhbHNlCiAgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQ6CiAgICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmaWxlc190b19hZGQudXBkYXRlKGpz
b24ubG9hZHMobGluZSlbJ2FkZCddKQotICAgICAgICAgICAgICAgICAgICBmaWxlX2FkZGVkID0g
VHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsZXNfdG9fYWRkLnVwZGF0ZShqc29uLmxvYWRzKGxpbmUpWydhZGQnXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVfYWRkZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3IsIGU6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyIlcyIgaXMg
bm90IGEgSlNPTiBvYmplY3QsIGlnbm9yaW5nJyAlIGxpbmUpCiAKQEAgLTI5MywyNCArMzAwLDM0
IEBAIGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZChBYnN0cmFjdERlY2xh
cmF0aXZlQ29tbWFuZCk6CiAKICAgICAgICAgcmV0dXJuIGxpc3QoZmlsZXNfdG9fYWRkKQogCi0g
ICAgZGVmIF9vcHRpbWl6ZV9iYXNlbGluZXMoc2VsZiwgdGVzdF9saXN0KToKKyAgICBkZWYgX29w
dGltaXplX2Jhc2VsaW5lcyhzZWxmLCB0ZXN0X2xpc3QsIHZlcmJvc2U9RmFsc2UpOgogICAgICAg
ICAjIFdlIGRvbid0IHJ1biB0aGlzIGluIHBhcmFsbGVsIGJlY2F1c2UgbW9kaWZ5aW5nIHRoZSBT
Q00gaW4gcGFyYWxsZWwgaXMgdW5yZWxpYWJsZS4KICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9s
aXN0OgogICAgICAgICAgICAgYWxsX3N1ZmZpeGVzID0gc2V0KCkKICAgICAgICAgICAgIGZvciBi
dWlsZGVyIGluIHNlbGYuX2J1aWxkZXJzX3RvX2ZldGNoX2Zyb20odGVzdF9saXN0W3Rlc3RdKToK
ICAgICAgICAgICAgICAgICBhbGxfc3VmZml4ZXMudXBkYXRlKHRlc3RfbGlzdFt0ZXN0XVtidWls
ZGVyXSkKLSAgICAgICAgICAgIHNlbGYuX3J1bl93ZWJraXRfcGF0Y2goWydvcHRpbWl6ZS1iYXNl
bGluZXMnLCAnLS1zdWZmaXhlcycsICcsJy5qb2luKGFsbF9zdWZmaXhlcyksIHRlc3RdKQorICAg
ICAgICAgICAgc2VsZi5fcnVuX3dlYmtpdF9wYXRjaChbJ29wdGltaXplLWJhc2VsaW5lcycsICct
LXN1ZmZpeGVzJywgJywnLmpvaW4oYWxsX3N1ZmZpeGVzKSwgdGVzdF0sIHZlcmJvc2UpCiAKICAg
ICBkZWYgX3JlYmFzZWxpbmUoc2VsZiwgb3B0aW9ucywgdGVzdF9saXN0KToKLSAgICAgICAgY29t
bWFuZHMgPSBzZWxmLl9yZWJhc2VsaW5lX2NvbW1hbmRzKHRlc3RfbGlzdCkKKyAgICAgICAgZm9y
IHRlc3QsIGJ1aWxkZXJzIGluIHNvcnRlZCh0ZXN0X2xpc3QuaXRlbXMoKSk6CisgICAgICAgICAg
ICBfbG9nLmluZm8oIlJlYmFzZWxpbmluZyAlcyIgJSB0ZXN0KQorICAgICAgICAgICAgZm9yIGJ1
aWxkZXIsIHN1ZmZpeGVzIGluIHNvcnRlZChidWlsZGVycy5pdGVtcygpKToKKyAgICAgICAgICAg
ICAgICBfbG9nLmRlYnVnKCIgICVzOiAlcyIgJSAoYnVpbGRlciwgIiwiLmpvaW4oc3VmZml4ZXMp
KSkKKworICAgICAgICBjb21tYW5kcyA9IHNlbGYuX3JlYmFzZWxpbmVfY29tbWFuZHModGVzdF9s
aXN0LCBvcHRpb25zLnZlcmJvc2UpCiAgICAgICAgIGNvbW1hbmRfcmVzdWx0cyA9IHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbChjb21tYW5kcykKIAorICAgICAgICBsb2dfb3V0
cHV0ID0gJ1xuJy5qb2luKHJlc3VsdFsyXSBmb3IgcmVzdWx0IGluIGNvbW1hbmRfcmVzdWx0cyku
cmVwbGFjZSgnXG5cbicsICdcbicpCisgICAgICAgIGZvciBsaW5lIGluIGxvZ19vdXRwdXQuc3Bs
aXQoJ1xuJyk6CisgICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgICAgIHByaW50ID4+
IHN5cy5zdGRlcnIsIGxpbmUgICMgRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIGxvZyBwcm9wZXJs
eS4KKwogICAgICAgICBmaWxlc190b19hZGQgPSBzZWxmLl9maWxlc190b19hZGQoY29tbWFuZF9y
ZXN1bHRzKQogICAgICAgICBpZiBmaWxlc190b19hZGQ6CiAgICAgICAgICAgICBzZWxmLl90b29s
LnNjbSgpLmFkZF9saXN0KGxpc3QoZmlsZXNfdG9fYWRkKSkKIAogICAgICAgICBpZiBvcHRpb25z
Lm9wdGltaXplOgotICAgICAgICAgICAgc2VsZi5fb3B0aW1pemVfYmFzZWxpbmVzKHRlc3RfbGlz
dCkKKyAgICAgICAgICAgIHNlbGYuX29wdGltaXplX2Jhc2VsaW5lcyh0ZXN0X2xpc3QsIG9wdGlv
bnMudmVyYm9zZSkKIAogCiBjbGFzcyBSZWJhc2VsaW5lSnNvbihBYnN0cmFjdFBhcmFsbGVsUmVi
YXNlbGluZUNvbW1hbmQpOgpAQCAtMzQ3LDcgKzM2NCw3IEBAIGNsYXNzIFJlYmFzZWxpbmVFeHBl
Y3RhdGlvbnMoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKToKICAgICAgICAgdGVz
dHMgPSBzZWxmLl90ZXN0c190b19yZWJhc2VsaW5lKHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5Lmdl
dChwb3J0X25hbWUpKS5pdGVtcygpCiAKICAgICAgICAgaWYgdGVzdHM6Ci0gICAgICAgICAgICBf
bG9nLmluZm8oIlJldHJpZXZpbmcgcmVzdWx0cyBmb3IgJXMgZnJvbSAlcy4iICUgKHBvcnRfbmFt
ZSwgYnVpbGRlcl9uYW1lKSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIlJldHJpZXZpbmcgcmVz
dWx0cyBmb3IgJXMgZnJvbSAlcy4iICUgKHBvcnRfbmFtZSwgYnVpbGRlcl9uYW1lKSkKIAogICAg
ICAgICBmb3IgdGVzdF9uYW1lLCBzdWZmaXhlcyBpbiB0ZXN0czoKICAgICAgICAgICAgIF9sb2cu
aW5mbygiICAgICVzICglcykiICUgKHRlc3RfbmFtZSwgJywnLmpvaW4oc3VmZml4ZXMpKSkKQEAg
LTQyNyw2ICs0NDQsNiBAQCBjbGFzcyBSZWJhc2VsaW5lKEFic3RyYWN0UGFyYWxsZWxSZWJhc2Vs
aW5lQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAgdGVzdF9saXN0W3Rlc3RdW2J1aWxkZXIubmFt
ZSgpXSA9IHNlbGYuX3N1ZmZpeGVzX3RvX3VwZGF0ZShvcHRpb25zKQogCiAgICAgICAgIGlmIG9w
dGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50ICJyZWJhc2VsaW5lLWpzb246ICIgKyBz
dHIodGVzdF9saXN0KQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygicmViYXNlbGluZS1qc29uOiAi
ICsgc3RyKHRlc3RfbGlzdCkpCiAKICAgICAgICAgc2VsZi5fcmViYXNlbGluZShvcHRpb25zLCB0
ZXN0X2xpc3QpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcmViYXNlbGluZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CmluZGV4IDA4NjAyYjc2YWRhOTdkM2E4MTQz
Zjg4MWM5Y2Q0MmZlZDg1YTVkNmMuLjNhMDdmOWYxNDJlNDc5ZWZhMDVkYzlmNDc3MTFkMDliNjQ3
YjQ2NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9y
ZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CkBAIC0yMjgsOCArMjI4LDggQEAgY2xhc3Mg
VGVzdFJlYmFzZWxpbmVKc29uKF9CYXNlVGVzdENhc2UpOgogCiAgICAgICAgICMgTm90ZSB0aGF0
IHdlIGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkgYSBydW5fY29t
bWFuZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC5leGVjdXRpdmUuY2Fs
bHMsCi0gICAgICAgICAgICBbW1snZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAn
LS1zdWZmaXhlcycsICd0eHQscG5nJywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXInLCAnLS10
ZXN0JywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSwKLSAgICAgICAgICAgICBb
J2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICd1
c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXV0pCisgICAgICAgICAgICBbW1snZWNobycs
ICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJy0t
YnVpbGRlcicsICdNT0NLIGJ1aWxkZXInLCAnLS10ZXN0JywgJ3VzZXItc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCcsICctLXZlcmJvc2UnXV0sCisgICAgICAgICAgICAgWydlY2hvJywgJy0tdmVy
Ym9zZScsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJ3Vz
ZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxp
bmVfZGVidWcoc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1U
cnVlLCB2ZXJib3NlPVRydWUpCkBAIC0yMzcsOCArMjM3LDggQEAgY2xhc3MgVGVzdFJlYmFzZWxp
bmVKc29uKF9CYXNlVGVzdENhc2UpOgogCiAgICAgICAgICMgTm90ZSB0aGF0IHdlIGhhdmUgb25l
IHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkgYSBydW5fY29tbWFuZCgpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMsCi0gICAgICAg
ICAgICBbW1snZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICd0eHQscG5nJywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXIgKERlYnVnKScsICctLXRlc3Qn
LCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dLAotICAgICAgICAgICAgIFsnZWNo
bycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJ3VzZXIt
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKKyAgICAgICAgICAgIFtbWydlY2hvJywgJ3Jl
YmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAnLS1idWls
ZGVyJywgJ01PQ0sgYnVpbGRlciAoRGVidWcpJywgJy0tdGVzdCcsICd1c2VyLXNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwnLCAnLS12ZXJib3NlJ11dLAorICAgICAgICAgICAgIFsnZWNobycsICct
LXZlcmJvc2UnLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycs
ICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXV0pCiAKIAogY2xhc3MgVGVzdFJlYmFz
ZWxpbmUoX0Jhc2VUZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkKaW5kZXggODE3ZDkyMDU4OGE1ZjczODgw
YTA0ZDBhNTllMTA2N2RlZTk4ZWMyZC4uZGU2OTljZjdkOGYxNmViMzBkYjI3YTg5MDI4OGU2YTRi
M2JmMzgwNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMv
Z2FyZGVuaW5nc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2
ZXJzL2dhcmRlbmluZ3NlcnZlci5weQpAQCAtMjYsNiArMjYsNyBAQCBpbXBvcnQgQmFzZUhUVFBT
ZXJ2ZXIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCitpbXBvcnQgc3lz
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3
ZWJraXRweS50b29sLnNlcnZlcnMucmVmbGVjdGlvbmhhbmRsZXIgaW1wb3J0IFJlZmxlY3Rpb25I
YW5kbGVyCkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIEdhcmRlbmluZ0hUVFBTZXJ2ZXIoQmFzZUhU
VFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGh0dHBkX3BvcnQs
IGNvbmZpZyk6CiAgICAgICAgIHNlcnZlcl9uYW1lID0gJycKICAgICAgICAgc2VsZi50b29sID0g
Y29uZmlnWyd0b29sJ10KKyAgICAgICAgc2VsZi5vcHRpb25zID0gY29uZmlnWydvcHRpb25zJ10K
ICAgICAgICAgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlci5fX2luaXRfXyhzZWxmLCAoc2VydmVy
X25hbWUsIGh0dHBkX3BvcnQpLCBHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIpCiAKICAgICBk
ZWYgdXJsKHNlbGYpOgpAQCAtNzUsNiArNzcsNyBAQCBjbGFzcyBHYXJkZW5pbmdIVFRQUmVxdWVz
dEhhbmRsZXIoUmVmbGVjdGlvbkhhbmRsZXIpOgogICAgICAgICAnVGVzdEZhaWx1cmVzJykKIAog
ICAgIGFsbG93X2Nyb3NzX29yaWdpbl9yZXF1ZXN0cyA9IFRydWUKKyAgICBkZWJ1Z19vdXRwdXQg
PSAnJwogCiAgICAgZGVmIF9ydW5fd2Via2l0X3BhdGNoKHNlbGYsIGFyZ3MpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5zZXJ2ZXIudG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoW3NlbGYuc2VydmVy
LnRvb2wucGF0aCgpXSArIGFyZ3MsIGN3ZD1zZWxmLnNlcnZlci50b29sLnNjbSgpLmNoZWNrb3V0
X3Jvb3QpCkBAIC05NCwxMyArOTcsMjYgQEAgY2xhc3MgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5k
bGVyKFJlZmxlY3Rpb25IYW5kbGVyKToKICAgICBkZWYgcGluZyhzZWxmKToKICAgICAgICAgc2Vs
Zi5fc2VydmVfdGV4dCgncG9uZycpCiAKKyAgICBkZWYgX3J1bl93ZWJraXRfcGF0Y2goc2VsZiwg
Y29tbWFuZCwgaW5wdXRfc3RyaW5nKToKKyAgICAgICAgUElQRSA9IHNlbGYuc2VydmVyLnRvb2wu
ZXhlY3V0aXZlLlBJUEUKKyAgICAgICAgcHJvY2VzcyA9IHNlbGYuc2VydmVyLnRvb2wuZXhlY3V0
aXZlLnBvcGVuKFtzZWxmLnNlcnZlci50b29sLnBhdGgoKV0gKyBjb21tYW5kLCBjd2Q9c2VsZi5z
ZXJ2ZXIudG9vbC5zY20oKS5jaGVja291dF9yb290LCBzdGRpbj1QSVBFLCBzdGRvdXQ9UElQRSwg
c3RkZXJyPVBJUEUpCisgICAgICAgIHByb2Nlc3Muc3RkaW4ud3JpdGUoaW5wdXRfc3RyaW5nKQor
ICAgICAgICBvdXRwdXQsIGVycm9yID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJl
dHVybiAocHJvY2Vzcy5yZXR1cm5jb2RlLCBvdXRwdXQsIGVycm9yKQorCiAgICAgZGVmIHJlYmFz
ZWxpbmVhbGwoc2VsZik6CiAgICAgICAgIGNvbW1hbmQgPSBbJ3JlYmFzZWxpbmUtanNvbiddCisg
ICAgICAgIGlmIHNlbGYuc2VydmVyLm9wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgIGNvbW1h
bmQuYXBwZW5kKCctLXZlcmJvc2UnKQogICAgICAgICBqc29uX2lucHV0ID0gc2VsZi5yZWFkX2Vu
dGl0eV9ib2R5KCkKLSAgICAgICAgX2xvZy5kZWJ1ZygicmViYXNlbGluaW5nIHVzaW5nICclcyci
ICUganNvbl9pbnB1dCkKIAotICAgICAgICBkZWYgZXJyb3JfaGFuZGxlcihzY3JpcHRfZXJyb3Ip
OgotICAgICAgICAgICAgX2xvZy5lcnJvcigiZXJyb3IgZnJvbSByZWJhc2VsaW5lLWpzb246ICVz
LCBpbnB1dD0nJXMnLCBvdXRwdXQ9JyVzJyIgJSAoc3RyKHNjcmlwdF9lcnJvciksIGpzb25faW5w
dXQsIHNjcmlwdF9lcnJvci5vdXRwdXQpKQorICAgICAgICBfbG9nLmRlYnVnKCJjYWxsaW5nICVz
LCBpbnB1dD0nJXMnIiwgY29tbWFuZCwganNvbl9pbnB1dCkKKyAgICAgICAgcmV0dXJuX2NvZGUs
IG91dHB1dCwgZXJyb3IgPSBzZWxmLl9ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQsIGpzb25faW5w
dXQpCisgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIGVycm9yCisgICAgICAgIGlmIHJldHVy
bl9jb2RlOgorICAgICAgICAgICAgX2xvZy5lcnJvcigicmViYXNlbGluZS1qc29uIGZhaWxlZDog
JWQsIG91dHB1dD0nJXMnIiAlIChyZXR1cm5fY29kZSwgb3V0cHV0KSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIF9sb2cuZGVidWcoInJlYmFzZWxpbmUtanNvbiBzdWNjZWVkZWQiKQogCi0g
ICAgICAgIHNlbGYuc2VydmVyLnRvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtzZWxmLnNlcnZl
ci50b29sLnBhdGgoKV0gKyBjb21tYW5kLCBpbnB1dD1qc29uX2lucHV0LCBjd2Q9c2VsZi5zZXJ2
ZXIudG9vbC5zY20oKS5jaGVja291dF9yb290LCByZXR1cm5fc3RkZXJyPVRydWUsIGVycm9yX2hh
bmRsZXI9ZXJyb3JfaGFuZGxlcikKKyAgICAgICAgIyBGSVhNRTogcHJvcGFnYXRlIGVycm9yIGFu
ZC9vciBsb2cgbWVzc2FnZXMgYmFjayB0byB0aGUgVUkuCiAgICAgICAgIHNlbGYuX3NlcnZlX3Rl
eHQoJ3N1Y2Nlc3MnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3Nl
cnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0LnB5CmluZGV4IGEyZjNmYWJj
OGQ3N2MwYTBkYjZkY2FlOWY0OTZhZDdjNTI0ZmI5ZjcuLjk5NjE2NDhkZTM5MmNiOTdlYzcwZjBl
ZmU2OTlhOTRhMTk5YjM2MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5pdHRlc3QucHkKQEAgLTEw
MSwxMiArMTAxLDEyIEBAIGNsYXNzIEdhcmRlbmluZ1NlcnZlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBoYW5kbGVyLmJvZHkgPSBib2R5CiAgICAgICAgIE91dHB1dENhcHR1cmUo
KS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBoYW5kbGVyLmRvX1BPU1QsIGV4cGVjdGVkX3N0ZGVycj1l
eHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQpCiAKLSAgICBk
ZWYgdGVzdF9yb2xsb3V0KHNlbGYpOgorICAgIGRlZiBkaXNhYmxlZF90ZXN0X3JvbGxvdXQoc2Vs
Zik6CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8n
LCAncm9sbG91dCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm9uLWludGVyYWN0aXZlJywgJzIzMTQn
LCAnTU9DSyByb2xsb3V0IHJlYXNvbiddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIKICAgICAgICAg
ZXhwZWN0ZWRfc3Rkb3V0ID0gIj09IEJlZ2luIFJlc3BvbnNlID09XG5zdWNjZXNzXG49PSBFbmQg
UmVzcG9uc2UgPT1cbiIKICAgICAgICAgc2VsZi5fcG9zdF90b19wYXRoKCIvcm9sbG91dD9yZXZp
c2lvbj0yMzE0JnJlYXNvbj1NT0NLK3JvbGxvdXQrcmVhc29uIiwgZXhwZWN0ZWRfc3RkZXJyPWV4
cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKIAotICAgIGRl
ZiB0ZXN0X3JlYmFzZWxpbmVhbGwoc2VsZik6CisgICAgZGVmIGRpc2FibGVkX3Rlc3RfcmViYXNl
bGluZWFsbChzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1h
bmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLWpzb24nXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBpbnB1
dD17XCJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWxcIjp7XCIlc1wiOiBbJXNdfX1cbiIK
ICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIj09IEJlZ2luIFJlc3BvbnNlID09XG5zdWNjZXNz
XG49PSBFbmQgUmVzcG9uc2UgPT1cbiIKICAgICAgICAgc2VydmVyID0gTW9ja1NlcnZlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171538</attachid>
            <date>2012-10-30 15:44:30 -0700</date>
            <delta_ts>2012-10-30 15:52:04 -0700</delta_ts>
            <desc>rename klass to command_constructor</desc>
            <filename>bug-100793-20121030154255.patch</filename>
            <type>text/plain</type>
            <size>57307</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjY1YWEzZTQxYjUwNzJhNjMxN2EyYzdlZmM5Y2YyMTM2
NmI0NzIzYy4uY2NkZTUxODJmMDM1YTNjM2RmN2JlZjYwODllZTc4MzBlYmU4NDJmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1
IEBACiAyMDEyLTEwLTMwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGNsZWFuIHVwIHRlc3RzIGZvciB3ZWJraXQtcGF0Y2ggcmViYXNlbGluZSogY29tbWFu
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0
ZXN0cyBpbiByZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGhhZCBhIGxvdCBvZiBjb2RlIGNsb25pbmcs
CisgICAgICAgIGFuZCBtYW55IG9mIHRoZSB0ZXN0cyB0ZXN0ZWQgd2hldGhlciB0aGluZ3MgcGFz
c2VkIG9yIGZhaWxlZCBieQorICAgICAgICBsb29raW5nIGF0IHdoYXQgd2FzIGxvZ2dlZCBpbnN0
ZWFkIG9mIHdoYXQgd2FzIGFjdHVhbGx5IGRvbmU7CisgICAgICAgIGFzIGEgcmVzdWx0IHRoZSB0
ZXN0cyB3ZXJlIGtpbmRhIGhhcmQgdG8gdW5kZXJzdGFuZCBhbmQgaGFyZGVyIHRvCisgICAgICAg
IG1haW50YWluLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBob29rcyB0byBNb2NrV2ViKCkg
YW5kIE1vY2tFeGVjdXRpdmUoKSBzbyB3ZSBjYW4KKyAgICAgICAgZGlyZWN0bHkgc2VlIHdoaWNo
IFVSTHMgd2VyZSBmZXRjaGVkIGFuZCBjYWxscyBpbnZva2VkLCBhbmQKKyAgICAgICAgdGhlbiBy
ZXdvcmtzIGFsbCBvZiB0aGUgdW5pdCB0ZXN0cyB0byBiZSBlYXNpZXIgdG8gZm9sbG93IGFuZAor
ICAgICAgICBtYWludGFpbiBhbmQgbm90IHNlbnNpdGl2ZSB0byB0aGUgbG9nZ2luZy4gQWxzbyB0
aGVyZSB3ZXJlIGEKKyAgICAgICAgY291cGxlIG9mIHRlc3RzIHRoYXQgd2VyZSByZWR1bmRhbnQu
CisKKyAgICAgICAgVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNo
LCBhbmQgSSB2ZXJpZmllZCB0aGF0CisgICAgICAgIHRoZSBjb3ZlcmFnZSByZW1haW5zIHRoZSBz
YW1lLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5
OgorICAgICAgICAoTW9ja1dlYi5fX2luaXRfXyk6CisgICAgICAgIChNb2NrV2ViLmdldF9iaW5h
cnkpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVf
bW9jay5weToKKyAgICAgICAgKE1vY2tFeGVjdXRpdmUuX19pbml0X18pOgorICAgICAgICAoTW9j
a0V4ZWN1dGl2ZS5ydW5fY29tbWFuZCk6CisgICAgICAgIChNb2NrRXhlY3V0aXZlLmtpbGxfYWxs
KToKKyAgICAgICAgKE1vY2tFeGVjdXRpdmUpOgorICAgICAgICAoTW9ja0V4ZWN1dGl2ZS5raWxs
X3Byb2Nlc3MpOgorICAgICAgICAoTW9ja0V4ZWN1dGl2ZS5wb3Blbik6CisgICAgICAgIChNb2Nr
RXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbCk6CisgICAgICAgIChNb2NrRXhlY3V0aXZlMik6Cisg
ICAgICAgIChNb2NrRXhlY3V0aXZlMi5fX2luaXRfXyk6CisgICAgICAgIChNb2NrRXhlY3V0aXZl
Mi5ydW5fY29tbWFuZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmVfdW5pdHRlc3QucHk6CisgICAgICAgIChfQmFzZVRlc3RDYXNlKToKKyAgICAg
ICAgKF9CYXNlVGVzdENhc2Uuc2V0VXApOgorICAgICAgICAoX0Jhc2VUZXN0Q2FzZS5fZXhwYW5k
KToKKyAgICAgICAgKF9CYXNlVGVzdENhc2UuX3JlYWQpOgorICAgICAgICAoX0Jhc2VUZXN0Q2Fz
ZS5fd3JpdGUpOgorICAgICAgICAoX0Jhc2VUZXN0Q2FzZS5femVyb19vdXRfdGVzdF9leHBlY3Rh
dGlvbnMpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVUZXN0KToKKyAgICAgICAgKFRlc3RSZWJh
c2VsaW5lVGVzdC50ZXN0X2Jhc2VsaW5lX2RpcmVjdG9yeSk6CisgICAgICAgIChUZXN0UmViYXNl
bGluZVRlc3QudGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGVfbm9vcCk6
CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdXBkYXRlc19leHBlY3RhdGlvbnNfZmlsZSk6Cisg
ICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfZG9lc19ub3RfaW5jbHVkZV9vdmVycmlkZXMpOgorICAg
ICAgICAodGVzdF9yZWJhc2VsaW5lX3Rlc3QpOgorICAgICAgICAodGVzdF9yZWJhc2VsaW5lX3Rl
c3RfYW5kX3ByaW50X3NjbV9jaGFuZ2VzKToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRf
Y29weV90ZXN0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0X25vX2V4
aXN0aW5nX3Jlc3VsdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF93
aXRoX2xpb25fcmVzdWx0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV9ub19v
dmVyd3JpdGVfdGVzdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdGVzdF9pbnRlcm5hbF93
aXRoX21vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvKToKKyAgICAgICAgKFRlc3RSZWJhc2Vs
aW5lSnNvbik6CisgICAgICAgIChUZXN0UmViYXNlbGluZUpzb24uc2V0VXApOgorICAgICAgICAo
VGVzdFJlYmFzZWxpbmVKc29uLnRlYXJEb3duKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNv
bi50ZXN0X3JlYmFzZWxpbmVfYWxsKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNvbi50ZXN0
X3JlYmFzZWxpbmVfZGVidWcpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmUpOgorICAgICAgICAo
VGVzdFJlYmFzZWxpbmUudGVzdF90ZXN0c190b191cGRhdGUpOgorICAgICAgICAoVGVzdFJlYmFz
ZWxpbmUudGVzdF9yZWJhc2VsaW5lKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lLnRlc3RfcmVi
YXNlbGluZS5yZWJhc2VsaW5lX3N0dWIpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3Rh
dGlvbnMpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMuc2V0VXApOgorICAg
ICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMudGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0
aW9ucyk6CisgICAgICAgIChUZXN0UmViYXNlbGluZUV4cGVjdGF0aW9ucy50ZXN0X3JlYmFzZWxp
bmVfZXhwZWN0YXRpb25zX25vb3ApOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlv
bnMuZGlzYWJsZWRfdGVzdF9vdmVycmlkZXNfYXJlX2luY2x1ZGVkX2NvcnJlY3RseSk6CisKKzIw
MTItMTAtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
dGVzdC13ZWJraXRweTogZml4IHJ1bm5pbmcgbW9kdWxlcyBhbmQgY2xhc3NlcyBvbiB0aGUgY29t
bWFuZCBsaW5lCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA3ODcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3dlYl9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2Nr
LnB5CmluZGV4IDU5NmRkMGE0MTkwYmI0ZGFmNTEwYTFhMWY3YTU1ZTU1NjMzMTFkYzMuLjQyMzU3
M2M2MGQ3YWIxZDI1NjEwZTg1ZWExNzQxMTgwMTVmYjZkYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkKQEAgLTMwLDcgKzMwLDExIEBAIGltcG9y
dCBTdHJpbmdJTwogCiAKIGNsYXNzIE1vY2tXZWIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZik6CisgICAgICAgIHNlbGYudXJsc19mZXRjaGVkID0gW10KKwogICAgIGRlZiBnZXRfYmlu
YXJ5KHNlbGYsIHVybCwgY29udmVydF80MDRfdG9fTm9uZT1GYWxzZSk6CisgICAgICAgIHNlbGYu
dXJsc19mZXRjaGVkLmFwcGVuZCh1cmwpCiAgICAgICAgIHJldHVybiAiTU9DSyBXZWIgcmVzdWx0
LCBjb252ZXJ0IDQwNCB0byBOb25lPSVzIiAlIGNvbnZlcnRfNDA0X3RvX05vbmUKIAogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkKaW5kZXggY2NlMjFiMjMzMzVhNDU5ODYyNjU3ZmRmZjBmMjhlYWM1YTc4YzFmYS4uYzI2
MTM1MzBiOTk5YWNkMWYxMzM4YmM5ODRjOWNhYzYxZTE2MmYwNiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQpAQCAt
NjAsNiArNjAsNyBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgICMgRklY
TUU6IE9uY2UgZXhlY3V0aXZlIHdyYXBzIG9zLmdldHBpZCgpIHdlIGNhbiBqdXN0IHVzZSBhIHN0
YXRpYyBwaWQgZm9yICJ0aGlzIiBwcm9jZXNzLgogICAgICAgICBzZWxmLl9ydW5uaW5nX3BpZHMg
PSB7J3Rlc3Qtd2Via2l0cHknOiBvcy5nZXRwaWQoKX0KICAgICAgICAgc2VsZi5fcHJvYyA9IE5v
bmUKKyAgICAgICAgc2VsZi5jYWxscyA9IFtdCiAKICAgICBkZWYgY2hlY2tfcnVubmluZ19waWQo
c2VsZiwgcGlkKToKICAgICAgICAgcmV0dXJuIHBpZCBpbiBzZWxmLl9ydW5uaW5nX3BpZHMudmFs
dWVzKCkKQEAgLTkyLDYgKzkzLDkgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2ZShvYmplY3QpOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUsCiAgICAgICAgICAgICAgICAgICAg
IGRlY29kZV9vdXRwdXQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIGVudj1Ob25lKToKKwor
ICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZChhcmdzKQorCiAgICAgICAgIGFzc2VydChpc2luc3Rh
bmNlKGFyZ3MsIGxpc3QpIG9yIGlzaW5zdGFuY2UoYXJncywgdHVwbGUpKQogICAgICAgICBpZiBz
ZWxmLl9zaG91bGRfbG9nOgogICAgICAgICAgICAgZW52X3N0cmluZyA9ICIiCkBAIC0xMDksNyAr
MTEzLDE0IEBAIGNsYXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKICAgICBkZWYgY3B1X2NvdW50
KHNlbGYpOgogICAgICAgICByZXR1cm4gMgogCisgICAgZGVmIGtpbGxfYWxsKHNlbGYsIHByb2Nl
c3NfbmFtZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBraWxsX3Byb2Nlc3Moc2VsZiwgcGlk
KToKKyAgICAgICAgcGFzcworCiAgICAgZGVmIHBvcGVuKHNlbGYsIGFyZ3MsIGN3ZD1Ob25lLCBl
bnY9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZChhcmdzKQogICAg
ICAgICBpZiBzZWxmLl9zaG91bGRfbG9nOgogICAgICAgICAgICAgY3dkX3N0cmluZyA9ICIiCiAg
ICAgICAgICAgICBpZiBjd2Q6CkBAIC0xMjMsMzIgKzEzNCwyNyBAQCBjbGFzcyBNb2NrRXhlY3V0
aXZlKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jCiAKICAgICBkZWYgcnVuX2lu
X3BhcmFsbGVsKHNlbGYsIGNvbW1hbmRzKToKKyAgICAgICAgbnVtX3ByZXZpb3VzX2NhbGxzID0g
bGVuKHNlbGYuY2FsbHMpCiAgICAgICAgIGNvbW1hbmRfb3V0cHV0cyA9IFtdCiAgICAgICAgIGZv
ciBjbWRfbGluZSwgY3dkIGluIGNvbW1hbmRzOgogICAgICAgICAgICAgY29tbWFuZF9vdXRwdXRz
LmFwcGVuZChbMCwgc2VsZi5ydW5fY29tbWFuZChjbWRfbGluZSwgY3dkPWN3ZCksICcnXSkKKwor
ICAgICAgICBuZXdfY2FsbHMgPSBzZWxmLmNhbGxzW251bV9wcmV2aW91c19jYWxsczpdCisgICAg
ICAgIHNlbGYuY2FsbHMgPSBzZWxmLmNhbGxzWzpudW1fcHJldmlvdXNfY2FsbHNdCisgICAgICAg
IHNlbGYuY2FsbHMuYXBwZW5kKG5ld19jYWxscykKICAgICAgICAgcmV0dXJuIGNvbW1hbmRfb3V0
cHV0cwogCi1jbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgotICAgIEBzdGF0aWNtZXRob2QK
LSAgICBkZWYgaWdub3JlX2Vycm9yKGVycm9yKToKLSAgICAgICAgcGFzcwogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG91dHB1dD0nJywgZXhpdF9jb2RlPTAsIGV4Y2VwdGlvbj1Ob25lLAotICAg
ICAgICAgICAgICAgICBydW5fY29tbWFuZF9mbj1Ob25lLCBzdGRlcnI9JycpOgorY2xhc3MgTW9j
a0V4ZWN1dGl2ZTIoTW9ja0V4ZWN1dGl2ZSk6CisgICAgIiIiTW9ja0V4ZWN1dGl2ZTIgaXMgbGlr
ZSBNb2NrRXhlY3V0aXZlIGV4Y2VwdCBpdCBkb2Vzbid0IGxvZyBhbnl0aGluZy4iIiIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXQ9JycsIGV4aXRfY29kZT0wLCBleGNlcHRpb249Tm9u
ZSwgcnVuX2NvbW1hbmRfZm49Tm9uZSwgc3RkZXJyPScnKToKICAgICAgICAgc2VsZi5fb3V0cHV0
ID0gb3V0cHV0CiAgICAgICAgIHNlbGYuX3N0ZGVyciA9IHN0ZGVycgogICAgICAgICBzZWxmLl9l
eGl0X2NvZGUgPSBleGl0X2NvZGUKICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gZXhjZXB0aW9u
CiAgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kX2ZuID0gcnVuX2NvbW1hbmRfZm4KLQotICAgIGRl
ZiBjcHVfY291bnQoc2VsZik6Ci0gICAgICAgIHJldHVybiAyCi0KLSAgICBkZWYga2lsbF9hbGwo
c2VsZiwgcHJvY2Vzc19uYW1lKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGtpbGxfcHJvY2Vz
cyhzZWxmLCBwaWQpOgotICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuY2FsbHMgPSBbXQogCiAg
ICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCkBAIC0x
NTksNiArMTY1LDcgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2ZTIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuX3N0ZGVycj1UcnVlLAogICAgICAgICAgICAgICAgICAgICBkZWNvZGVf
b3V0cHV0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICBlbnY9Tm9uZSk6CisgICAgICAgIHNl
bGYuY2FsbHMuYXBwZW5kKGFyZ3MpCiAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKGFyZ3MsIGxp
c3QpIG9yIGlzaW5zdGFuY2UoYXJncywgdHVwbGUpKQogICAgICAgICBpZiBzZWxmLl9leGNlcHRp
b246CiAgICAgICAgICAgICByYWlzZSBzZWxmLl9leGNlcHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3Qu
cHkKaW5kZXggMzUzOTQyNDVmYzdkYmZiNGQyNDQ3ZDUzZDQ5YzcyNzU1Y2Q0YWJiZi4uYzgwOTI5
MzIxZWYwMGRiMTI4ZmM1ZjQyYmY2MDNlYTJlODA5MDQ4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3Qu
cHkKQEAgLTMzLDIwICszMyw0OCBAQCBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBv
cnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmUgaW1wb3J0ICoK
IGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wsIE1vY2tPcHRpb25z
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QuYnVpbGRib3RfbW9jayBpbXBvcnQg
TW9ja0J1aWxkZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBp
bXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgogCiAKLWNsYXNzIFRlc3RSZWJhc2VsaW5lKHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF90ZXN0c190b191cGRhdGUoc2VsZik6Ci0g
ICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rv
b2woTW9ja1Rvb2woKSkKLSAgICAgICAgYnVpbGQgPSBNb2NrKCkKLSAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3Rlc3RzX3RvX3VwZGF0ZSwgW2J1
aWxkXSkKK2NsYXNzIF9CYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIE1PQ0tf
V0VCX1JFU1VMVCA9ICdNT0NLIFdlYiByZXN1bHQsIGNvbnZlcnQgNDA0IHRvIE5vbmU9VHJ1ZScK
KyAgICBjb21tYW5kX2NvbnN0cnVjdG9yID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor
ICAgICAgICBzZWxmLnRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHNlbGYuY29tbWFuZCA9IHNl
bGYuY29tbWFuZF9jb25zdHJ1Y3RvcigpCisgICAgICAgIHNlbGYuY29tbWFuZC5iaW5kX3RvX3Rv
b2woc2VsZi50b29sKQorICAgICAgICBzZWxmLmxpb25fcG9ydCA9IHNlbGYudG9vbC5wb3J0X2Zh
Y3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKCJXZWJLaXQgTWFjMTAuNyIpCisgICAgICAgIHNl
bGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYubGlvbl9wb3J0LnBhdGhfdG9fdGVzdF9l
eHBlY3RhdGlvbnNfZmlsZSgpCisKKyAgICAgICAgIyBGSVhNRTogd2Ugc2hvdWxkIG92ZXJyaWRl
IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzIGhlcmUgdG8gcG9pbnQgdG8gYSBzZXQKKyAgICAgICAg
IyBvZiB0ZXN0IHBvcnRzIGFuZCByZXN0b3JlIHRoZSB2YWx1ZSBpbiB0ZWFyRG93bigpLCBhbmQg
dGhhdCB3YXkgdGhlCisgICAgICAgICMgaW5kaXZpZHVhbCB0ZXN0cyB3b3VsZG4ndCBoYXZlIHRv
IHdvcnJ5IGFib3V0IGl0LgorCisgICAgZGVmIF9leHBhbmQoc2VsZiwgcGF0aCk6CisgICAgICAg
IGlmIHNlbGYudG9vbC5maWxlc3lzdGVtLmlzYWJzKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJu
IHBhdGgKKyAgICAgICAgcmV0dXJuIHNlbGYudG9vbC5maWxlc3lzdGVtLmpvaW4oc2VsZi5saW9u
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCBwYXRoKQorCisgICAgZGVmIF9yZWFkKHNlbGYsIHBh
dGgpOgorICAgICAgICByZXR1cm4gc2VsZi50b29sLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUo
c2VsZi5fZXhwYW5kKHBhdGgpKQorCisgICAgZGVmIF93cml0ZShzZWxmLCBwYXRoLCBjb250ZW50
cyk6CisgICAgICAgIHNlbGYudG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShzZWxmLl9l
eHBhbmQocGF0aCksIGNvbnRlbnRzKQorCisgICAgZGVmIF96ZXJvX291dF90ZXN0X2V4cGVjdGF0
aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiBzZWxmLnRvb2wucG9ydF9mYWN0
b3J5LmFsbF9wb3J0X25hbWVzKCk6CisgICAgICAgICAgICBwb3J0ID0gc2VsZi50b29sLnBvcnRf
ZmFjdG9yeS5nZXQocG9ydF9uYW1lKQorICAgICAgICAgICAgZm9yIHBhdGggaW4gcG9ydC5leHBl
Y3RhdGlvbnNfZmlsZXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZShwYXRoLCAnJykK
KyAgICAgICAgc2VsZi50b29sLmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcyA9IHt9CisKKworY2xh
c3MgVGVzdFJlYmFzZWxpbmVUZXN0KF9CYXNlVGVzdENhc2UpOgorICAgIGNvbW1hbmRfY29uc3Ry
dWN0b3IgPSBSZWJhc2VsaW5lVGVzdCAgIyBBS0Egd2Via2l0LXBhdGNoIHJlYmFzZWxpbmUtdGVz
dC1pbnRlcm5hbAogCiAgICAgZGVmIHRlc3RfYmFzZWxpbmVfZGlyZWN0b3J5KHNlbGYpOgotICAg
ICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2wo
KQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBjb21tYW5kID0g
c2VsZi5jb21tYW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWFuZC5fYmFzZWxpbmVf
ZGlyZWN0b3J5KCJBcHBsZSBXaW4gWFAgRGVidWcgKFRlc3RzKSIpLCAiL21vY2stY2hlY2tvdXQv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXhwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tYW5kLl9iYXNlbGluZV9kaXJlY3RvcnkoIkFwcGxlIFdpbiA3IFJlbGVhc2UgKFRlc3RzKSIp
LCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luIikKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21tYW5kLl9iYXNlbGluZV9kaXJlY3RvcnkoIkFwcGxlIExpb24gUmVs
ZWFzZSBXSzEgKFRlc3RzKSIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLWxpb24iKQpAQCAtNTgsNDU4ICs4NiwyNDQgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmUodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1hbmQuX2Jhc2Vs
aW5lX2RpcmVjdG9yeSgiV2ViS2l0IE1hYzEwLjYiKSwgIi9tb2NrLWNoZWNrb3V0L0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCIpCiAKICAgICBkZWYgdGVzdF9y
ZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGVfbm9vcChzZWxmKToKLSAgICAgICAg
Y29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAg
ICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLQotICAgICAgICBsaW9uX3BvcnQgPSB0
b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoIldlYktpdCBNYWMxMC43IikK
LSAgICAgICAgZm9yIHBhdGggaW4gbGlvbl9wb3J0LmV4cGVjdGF0aW9uc19maWxlcygpOgotICAg
ICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAnJykKLSAgICAg
ICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShsaW9uX3BvcnQucGF0aF90b190ZXN0
X2V4cGVjdGF0aW9uc19maWxlKCksICIiIkJ1ZyhCKSBbIE1hYyBMaW51eCBYUCBEZWJ1ZyBdIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXku
aHRtbCBbIFBhc3MgXQorICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVjdGF0aW9ucygp
CisgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCwgIiIiQnVn
KEIpIFsgTWFjIExpbnV4IFhQIERlYnVnIF0gZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1jbG9uZS1yZWFsbHktZGVlcC1hcnJheS5odG1sIFsgUGFzcyBdCiBCdWcoQSkgWyBEZWJ1
ZyBdIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5odG1sIFsgRmFpbHVyZSBd
CiAiIiIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5q
b2luKGxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJmYXN0L2RvbS9XaW5kb3cvd2luZG93
LXBvc3RtZXNzYWdlLWNsb25lLXJlYWxseS1kZWVwLWFycmF5Lmh0bWwiKSwgIkR1bW15IHRlc3Qg
Y29udGVudHMiKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKG9zLnBh
dGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAiZmFzdC9jc3MvbGFyZ2UtbGlz
dC1vZi1ydWxlcy1jcmFzaC5odG1sIiksICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKLSAgICAgICAg
dG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvcy5wYXRoLmpvaW4obGlvbl9wb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiksICJEdW1t
eSB0ZXN0IGNvbnRlbnRzIikKKyAgICAgICAgc2VsZi5fd3JpdGUoImZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXkuaHRtbCIsICJEdW1teSB0
ZXN0IGNvbnRlbnRzIikKKyAgICAgICAgc2VsZi5fd3JpdGUoImZhc3QvY3NzL2xhcmdlLWxpc3Qt
b2YtcnVsZXMtY3Jhc2guaHRtbCIsICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKKyAgICAgICAgc2Vs
Zi5fd3JpdGUoInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgIkR1bW15IHRlc3QgY29u
dGVudHMiKQogCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJSZXRyaWV2aW5nIGh0dHA6Ly9l
eGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3Qt
cmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBuZy4KLVJldHJpZXZpbmcg
aHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlv
dXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2LgotUmV0
cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1
bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50
eHQuCi0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNv
bW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucywgWyJXZWJLaXQg
TWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmVdLCBleHBlY3Rl
ZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90
ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKCJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUpCiAKLSAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9
IHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShsaW9uX3BvcnQucGF0aF90b190ZXN0X2V4
cGVjdGF0aW9uc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53
ZWIudXJsc19mZXRjaGVkLAorICAgICAgICAgICAgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWls
ZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcnLAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBs
ZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3Vs
dHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAorICAgICAgICAgICAgICdo
dHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91
dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAg
ICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHNlbGYuX3JlYWQoc2VsZi5saW9uX2V4cGVjdGF0aW9u
c19wYXRoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19leHBlY3RhdGlvbnMsICIiIkJ1
ZyhCKSBbIE1hYyBMaW51eCBYUCBEZWJ1ZyBdIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1l
c3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXkuaHRtbCBbIFBhc3MgXQogQnVnKEEpIFsgRGVi
dWcgXSA6IGZhc3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jhc2guaHRtbCBbIEZhaWx1cmUg
XQogIiIiKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV91cGRhdGVzX2V4cGVjdGF0aW9uc19m
aWxlKHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICB0
b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAg
ICAgICBzZWxmLl93cml0ZShzZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGgsICJCdWcoeCkgWyBN
YWMgXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxu
YnVnKHopIFsgTGludXggXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXVxuIikKKyAgICAgICAgc2VsZi5fd3JpdGUoInVzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC5odG1sIiwgIkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAgICAgIGxpb25fcG9ydCA9
IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgiV2ViS2l0IE1hYzEwLjci
KQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGxpb25fcG9ydC5wYXRo
X3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgIkJ1Zyh4KSBbIE1hYyBdIHVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG5idWcoeikgWyBMaW51eCBd
IHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQot
ICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKG9zLnBhdGguam9pbihsaW9u
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
KSwgIkR1bW15IHRlc3QgY29udGVudHMiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxp
bmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNj
cmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lKQogCi0gICAgICAgIGV4cGVjdGVkX2xvZ3Mg
PSAiIiJSZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBNYWMx
MC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qt
YWN0dWFsLnBuZy4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Vi
S2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1hY3R1YWwud2F2LgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWls
ZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQuCi0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgp
LmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRl
X2V4cGVjdGF0aW9ucywgWyJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCIsIE5vbmVdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0KLSAgICAgICAg
bmV3X2V4cGVjdGF0aW9ucyA9IHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShsaW9uX3Bv
cnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAorICAgICAgICAgICAgWydodHRwOi8v
ZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0
LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcnLAorICAgICAgICAg
ICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRz
L2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYn
LAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFj
MTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWFjdHVhbC50eHQnXSkKKyAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHNlbGYuX3JlYWQoc2Vs
Zi5saW9uX2V4cGVjdGF0aW9uc19wYXRoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19l
eHBlY3RhdGlvbnMsICJCdWcoeCkgWyBNb3VudGFpbkxpb24gU25vd0xlb3BhcmQgXSB1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxuYnVnKHopIFsgTGlu
dXggXSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXVxu
IikKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfZG9lc19ub3RfaW5jbHVkZV9vdmVycmlkZXMo
c2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lVGVzdCgpCi0gICAgICAgIHRvb2wg
PSBNb2NrVG9vbCgpCi0gICAgICAgIGNvbW1hbmQuYmluZF90b190b29sKHRvb2wpCi0KLSAgICAg
ICAgbGlvbl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKCJX
ZWJLaXQgTWFjMTAuNyIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
bGlvbl9wb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAiQnVnKHgpIFsgTWFj
IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbkJ1
Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF1cbiIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUobGlv
bl9wb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdza2lhJywgJ3NraWFfdGVzdF9leHBlY3Rh
dGlvbnMudHh0JyksICJCdWcoeSkgWyBNYWMgXSBvdGhlci10ZXN0Lmh0bWwgWyBGYWlsdXJlIF1c
biIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2lu
KGxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCIpLCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCi0KLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9
ICIiIlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEw
LjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1h
Y3R1YWwucG5nLgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJL
aXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0LWFjdHVhbC53YXYuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxk
ZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC4KLSIiIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCku
YXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVf
ZXhwZWN0YXRpb25zLCBbIldlYktpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIiwgTm9uZV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKLQotICAgICAgICBu
ZXdfZXhwZWN0YXRpb25zID0gdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGxpb25fcG9y
dC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKKyAgICAgICAgc2VsZi5fd3JpdGUo
c2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoLCAiQnVnKHgpIFsgTWFjIF0gdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbkJ1Zyh6KSBbIExpbnV4IF0g
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbiIpCisg
ICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9wb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCdza2lhJywgJ3NraWFfdGVzdF9leHBlY3RhdGlvbnMudHh0JyksICJCdWcoeSkgWyBNYWMgXSBv
dGhlci10ZXN0Lmh0bWwgWyBGYWlsdXJlIF1cbiIpCisgICAgICAgIHNlbGYuX3dyaXRlKCJ1c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKKworICAg
ICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9u
cygiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25l
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVk
LAorICAgICAgICAgICAgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFj
MTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWFjdHVhbC5wbmcnLAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVy
cy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAorICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5j
b20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMv
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKworICAgICAgICBuZXdfZXhw
ZWN0YXRpb25zID0gc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGgpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2V4cGVjdGF0aW9ucywgIkJ1Zyh4KSBbIE1vdW50YWlu
TGlvbiBTbm93TGVvcGFyZCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdXG5CdWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV90
ZXN0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICBj
b21tYW5kLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQotICAgICAgICBleHBlY3RlZF9sb2dzID0g
IlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IExpbnV4L3Jl
c3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFs
LnR4dC5cbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNv
bW1hbmQuX3JlYmFzZWxpbmVfdGVzdCwgWyJXZWJLaXQgTGludXgiLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiLCBOb25lLCAidHh0Il0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBMaW51eCIs
ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUsICJ0eHQiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwgWydodHRwOi8vZXhh
bXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTGludXgvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1
bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0J10pCiAKICAgICBkZWYgdGVz
dF9yZWJhc2VsaW5lX3Rlc3RfYW5kX3ByaW50X3NjbV9jaGFuZ2VzKHNlbGYpOgotICAgICAgICBj
b21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbChN
b2NrVG9vbCgpKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIlJldHJpZXZpbmcgaHR0cDovL2V4
YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IExpbnV4L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC5cbiIKLSAgICAgICAgY29t
bWFuZC5fcHJpbnRfc2NtX2NoYW5nZXMgPSBUcnVlCi0gICAgICAgIGNvbW1hbmQuX3NjbV9jaGFu
Z2VzID0geydhZGQnOiBbXSwgJ2RlbGV0ZSc6IFtdfQotICAgICAgICBjb21tYW5kLl90b29sLl9z
Y20uZXhpc3RzID0gbGFtYmRhIHg6IEZhbHNlCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2ViS2l0IExpbnV4
IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwgInR4dCJdLCBleHBlY3Rl
ZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbW1hbmQu
X3NjbV9jaGFuZ2VzLCB7J2FkZCc6IFsnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCdd
LCAnZGVsZXRlJzogW119KQorICAgICAgICBzZWxmLmNvbW1hbmQuX3ByaW50X3NjbV9jaGFuZ2Vz
ID0gVHJ1ZQorICAgICAgICBzZWxmLmNvbW1hbmQuX3NjbV9jaGFuZ2VzID0geydhZGQnOiBbXSwg
J2RlbGV0ZSc6IFtdfQorICAgICAgICBzZWxmLnRvb2wuX3NjbS5leGlzdHMgPSBsYW1iZGEgeDog
RmFsc2UKKworICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0IExp
bnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwgInR4dCIpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5jb21tYW5kLl9zY21fY2hhbmdlcywgeydhZGQn
OiBbJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3Vz
ZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQnXSwgJ2RlbGV0ZSc6IFtdfSkKIAog
ICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdChzZWxmKToKLSAgICAgICAgY29t
bWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAg
ICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgc2VsZi5fd3JpdGUoInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiLCAiZ2VuZXJpYyByZXN1bHQiKQogCi0g
ICAgICAgIGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFt
ZSgiV2ViS2l0IE1hYzEwLjciKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKG9zLnBhdGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAidXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCAiRHVtbXkgZXhwZWN0ZWQgcmVzdWx0IikK
KyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBNYWMxMC43Iiwg
InVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3Bh
cmQiXSwgInR4dCIpCiAKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkNvcHlpbmcgYmFzZWxp
bmUgZnJvbSAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QtZXhwZWN0ZWQudHh0IHRvIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQu
dHh0LgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFj
MTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWFjdHVhbC50eHQuCi0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRz
KHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCwgWyJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkIl0s
ICJ0eHQiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZWxmLl9yZWFkKCdwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0JyksIHNlbGYuTU9DS19XRUJfUkVTVUxUKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFkKCdwbGF0Zm9ybS9jaHJvbWl1bS1tYWMt
c25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCcpLCAnZ2Vu
ZXJpYyByZXN1bHQnKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0X25v
X2V4aXN0aW5nX3Jlc3VsdChzZWxmKToKLSAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0
KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rv
b2wodG9vbCkKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBN
YWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMt
c25vd2xlb3BhcmQiXSwgInR4dCIpCiAKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIk5vIGV4
aXN0aW5nIGJhc2VsaW5lIGZvciB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbC4KLVJldHJp
ZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0
cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0
LgotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21t
YW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Il0sIGV4
cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vs
Zi5fcmVhZCgncGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0LWV4cGVjdGVkLnR4dCcpLCBzZWxmLk1PQ0tfV0VCX1JFU1VMVCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZWxmLnRvb2wuZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fZXhwYW5kKCdwbGF0
Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4
cGVjdGVkLnR4dCcpKSkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF93
aXRoX2xpb25fcmVzdWx0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3Qo
KQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9v
bCh0b29sKQorICAgICAgICBzZWxmLl93cml0ZSgicGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24v
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIsICJvcmlnaW5hbCBsaW9uIHJl
c3VsdCIpCiAKLSAgICAgICAgbGlvbl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0X2Zyb21f
YnVpbGRlcl9uYW1lKCJXZWJLaXQgTWFjMTAuNyIpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5iYXNlbGluZV9wYXRoKCksICJ1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJEdW1teSBleHBlY3RlZCBy
ZXN1bHQiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0IE1h
YzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1z
bm93bGVvcGFyZCJdLCAidHh0IikKIAotICAgICAgICBleHBlY3RlZF9sb2dzID0gIkNvcHlpbmcg
YmFzZWxpbmUgZnJvbSAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1tYWMtbGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IHRvIC9tb2Nr
LWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0LlxuUmV0cmlldmluZyBodHRwOi8v
ZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0
LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQuXG4iCi0gICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5l
X3Rlc3QsIFsiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
LCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Il0sIGV4cGVjdGVkX2xvZ3M9ZXhw
ZWN0ZWRfbG9ncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLndlYi51cmxz
X2ZldGNoZWQsIFsiaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcv
cmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1
YWwudHh0Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3Jt
L2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0
ZWQudHh0IiksICJvcmlnaW5hbCBsaW9uIHJlc3VsdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1saW9uL3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgc2VsZi5NT0NLX1dFQl9SRVNVTFQpCiAKICAgICBk
ZWYgdGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X25vX292ZXJ3cml0ZV90ZXN0KHNlbGYpOgotICAg
ICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2wo
KQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBzZWxmLl93cml0
ZSgicGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4
cGVjdGVkLnR4dCIsICJvcmlnaW5hbCBsaW9uIHJlc3VsdCIpCisgICAgICAgIHNlbGYuX3dyaXRl
KCJwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0LWV4cGVjdGVkLnR4dCIsICJvcmlnaW5hbCBzbm93bGVvcGFyZCByZXN1bHQiKQogCi0gICAg
ICAgIGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgi
V2ViS2l0IE1hYzEwLjciKQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KG9zLnBhdGguam9pbihsaW9uX3BvcnQuYmFzZWxpbmVfcGF0aCgpLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCAiRHVtbXkgZXhwZWN0ZWQgcmVzdWx0IikKKyAgICAg
ICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBNYWMxMC43IiwgInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiXSwg
InR4dCIpCiAKLSAgICAgICAgc25vd2xlb3BhcmRfcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5Lmdl
dF9mcm9tX2J1aWxkZXJfbmFtZSgiV2ViS2l0IE1hYzEwLjYiKQotICAgICAgICB0b29sLmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKG9zLnBhdGguam9pbihzbm93bGVvcGFyZF9wb3J0LmJhc2Vs
aW5lX3BhdGgoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgIkR1
bW15IGV4cGVjdGVkIHJlc3VsdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX3Jl
YWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QtZXhwZWN0ZWQudHh0IiksICJvcmlnaW5hbCBzbm93bGVvcGFyZCByZXN1bHQiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFkKCJwbGF0Zm9ybS9jaHJvbWl1bS1tYWMt
bGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksIHNlbGYuTU9DS19X
RUJfUkVTVUxUKQogCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJFeGlzdGluZyBiYXNlbGlu
ZSBhdCAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25v
d2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCwgbm90IGNvcHlp
bmcgb3ZlciBpdC4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Vi
S2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1hY3R1YWwudHh0LgotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2ViS2l0IE1hYzEwLjci
LCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVv
cGFyZCJdLCAidHh0Il0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKLQotICAgIGRlZiB0
ZXN0X3JlYmFzZWxpbmVfYWxsKHNlbGYpOgotICAgICAgICBvbGRfZXhhY3RfbWF0Y2hlcyA9IGJ1
aWxkZXJzLl9leGFjdF9tYXRjaGVzCi0gICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzID0g
ewotICAgICAgICAgICAgIk1PQ0sgYnVpbGRlciI6IHsicG9ydF9uYW1lIjogInRlc3QtbWFjLWxl
b3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyIl0pfSwKLSAgICAgICAg
ICAgICJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6IHsicG9ydF9uYW1lIjogInRlc3QtbWFjLWxlb3Bh
cmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyIiwgImRlYnVnIl0pfSwKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lSnNvbigpCi0gICAgICAgIHRv
b2wgPSBNb2NrVG9vbCgpCi0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygpCi0gICAgICAg
IG9wdGlvbnMub3B0aW1pemUgPSBUcnVlCi0gICAgICAgIGNvbW1hbmQuYmluZF90b190b29sKHRv
b2wpCi0gICAgICAgIHRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRy
dWUpCi0KLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiTU9DSyBydW5fY29tbWFuZDogWydl
Y2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcn
LCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRlc3QnLCAndXNlci1zY3JpcHRzL2Fu
b3RoZXItdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAotTU9DSyBydW5fY29tbWFuZDog
WydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAn
dXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAotIiIi
Ci0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9y
ZWJhc2VsaW5lLCBbb3B0aW9ucywgeyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOnsi
TU9DSyBidWlsZGVyIjogWyJ0eHQiLCAicG5nIl19fV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3Rl
ZF9zdGRlcnIpCi0KLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiTU9DSyBydW5fY29tbWFu
ZDogWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4
dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlciAoRGVidWcpJywgJy0tdGVzdCcsICd1
c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci1NT0NL
IHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMn
LCAndHh0LHBuZycsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgY3dkPS9tb2Nr
LWNoZWNrb3V0Ci0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNl
bGYsIGNvbW1hbmQuX3JlYmFzZWxpbmUsIFtvcHRpb25zLCB7InVzZXItc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCI6eyJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6IFsidHh0IiwgInBuZyJdfX1dLCBl
eHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQotCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVy
ciA9ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJu
YWwnLCAnLS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICct
LXRlc3QnLCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVj
a291dAotTU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICct
LXN1ZmZpeGVzJywgJ3R4dCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgY3dk
PS9tb2NrLWNoZWNrb3V0Ci0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRw
dXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmUsIFtvcHRpb25zLCB7InVzZXItc2NyaXB0cy9h
bm90aGVyLXRlc3QuaHRtbCI6eyJNT0NLIGJ1aWxkZXIgKERlYnVnKSI6IFsidHh0IiwgInBuZyJd
LCAiTU9DSyBidWlsZGVyIjogWyJ0eHQiXX19XSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0
ZGVycikKLQotICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IG9sZF9leGFjdF9tYXRj
aGVzCi0KLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9ucyhzZWxmKToKLSAgICAg
ICAgY29tbWFuZCA9IFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoKQotICAgICAgICB0b29sID0gTW9j
a1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQotCi0gICAgICAgIGxp
b25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgiV2ViS2l0
IE1hYzEwLjciKQotICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHRvb2wucG9ydF9mYWN0b3J5LmFs
bF9wb3J0X25hbWVzKCk6Ci0gICAgICAgICAgICBwb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0
KHBvcnRfbmFtZSkKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHBvcnQuZXhwZWN0YXRpb25zX2Zp
bGVzKCk6Ci0gICAgICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShw
YXRoLCAnJykKLQotICAgICAgICAjIERvbid0IGVuYWJsZSBsb2dnaW5nIHVudGlsIGFmdGVyIHdl
IGNyZWF0ZSB0aGUgbW9jayBleHBlY3RhdGlvbiBmaWxlcyBhcyBzb21lIFBvcnQuX19pbml0X18n
cyBydW4gc3ViY29tbWFuZHMuCi0gICAgICAgIHRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZShzaG91bGRfbG9nPVRydWUpCi0KLSAgICAgICAgZGVmIHJ1bl9pbl9wYXJhbGxlbChjb21tYW5k
cyk6Ci0gICAgICAgICAgICBwcmludCBjb21tYW5kcwotICAgICAgICAgICAgcmV0dXJuICIiCi0K
LSAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2luX3BhcmFsbGVsID0gcnVuX2luX3BhcmFsbGVs
Ci0KLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJSZXRyaWV2aW5nIHJlc3VsdHMgZm9yIGNocm9t
aXVtLWxpbnV4LXg4NiBmcm9tIFdlYktpdCBMaW51eCAzMi5cbiAgICB1c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QuaHRtbCAodHh0KVxuICAgIHVzZXJzY3JpcHRzL2ltYWdlcy5zdmcgKHBuZylcblJl
dHJpZXZpbmcgcmVzdWx0cyBmb3IgY2hyb21pdW0tbGludXgteDg2XzY0IGZyb20gV2ViS2l0IExp
bnV4LlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNj
cmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBjaHJvbWl1bS1t
YWMtbGlvbiBmcm9tIFdlYktpdCBNYWMxMC43LlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmlu
ZyByZXN1bHRzIGZvciBjaHJvbWl1bS1tYWMtbW91bnRhaW5saW9uIGZyb20gV2ViS2l0IE1hYzEw
LjguXG4gICAgdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgKHR4dClcbiAgICB1c2Vyc2Ny
aXB0cy9pbWFnZXMuc3ZnIChwbmcpXG5SZXRyaWV2aW5nIHJlc3VsdHMgZm9yIGNocm9taXVtLW1h
Yy1zbm93bGVvcGFyZCBmcm9tIFdlYktpdCBNYWMxMC42LlxuICAgIHVzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0
cmlldmluZyByZXN1bHRzIGZvciBjaHJvbWl1bS13aW4td2luNyBmcm9tIFdlYktpdCBXaW43Llxu
ICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMv
aW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBjaHJvbWl1bS13aW4teHAg
ZnJvbSBXZWJLaXQgWFAuXG4gICAgdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgKHR4dClc
biAgICB1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnIChwbmcpXG5SZXRyaWV2aW5nIHJlc3VsdHMgZm9y
IGVmbCBmcm9tIEVGTCBMaW51eCA2NC1iaXQgUmVsZWFzZS5cbiAgICB1c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QuaHRtbCAodHh0KVxuICAgIHVzZXJzY3JpcHRzL2ltYWdlcy5zdmcgKHBuZylcblJl
dHJpZXZpbmcgcmVzdWx0cyBmb3IgZ3RrIGZyb20gR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNlLlxu
ICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNlcnNjcmlwdHMv
aW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRzIGZvciBtYWMtbGlvbiBmcm9tIEFw
cGxlIExpb24gUmVsZWFzZSBXSzEgKFRlc3RzKS5cbiAgICB1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCAodHh0KVxuICAgIHVzZXJzY3JpcHRzL2ltYWdlcy5zdmcgKHBuZylcblJldHJpZXZp
bmcgcmVzdWx0cyBmb3IgbWFjLW1vdW50YWlubGlvbiBmcm9tIEFwcGxlIE1vdW50YWluTGlvbiBS
ZWxlYXNlIFdLMSAoVGVzdHMpLlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0
eHQpXG4gICAgdXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuUmV0cmlldmluZyByZXN1bHRz
IGZvciBxdC1saW51eCBmcm9tIFF0IExpbnV4IFJlbGVhc2UuXG4gICAgdXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwgKHR4dClcbiAgICB1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnIChwbmcpXG5S
ZXRyaWV2aW5nIHJlc3VsdHMgZm9yIHdpbi03c3AwIGZyb20gQXBwbGUgV2luIDcgUmVsZWFzZSAo
VGVzdHMpLlxuICAgIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sICh0eHQpXG4gICAgdXNl
cnNjcmlwdHMvaW1hZ2VzLnN2ZyAocG5nKVxuIgotCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9
ICJbKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0
eHQnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBMaW51eCAzMicsICctLXRlc3QnLCAndXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgJy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8nLCAncmVi
YXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0JywgJy0tYnVpbGRlcics
ICdXZWJLaXQgTGludXgnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
J10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5h
bCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnV2ViS2l0IE1hYzEwLjYnLCAn
LS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291
dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywg
J3R4dCcsICctLWJ1aWxkZXInLCAnV2ViS2l0IE1hYzEwLjcnLCAnLS10ZXN0JywgJ3VzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3Jl
YmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXIn
LCAnV2ViS2l0IFdpbjcnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
J10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5h
bCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnQXBwbGUgV2luIDcgUmVsZWFz
ZSAoVGVzdHMpJywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddLCAn
L21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAn
LS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ0VGTCBMaW51eCA2NC1iaXQgUmVsZWFz
ZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgJy9tb2NrLWNo
ZWNrb3V0JyksIChbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4
ZXMnLCAndHh0JywgJy0tYnVpbGRlcicsICdXZWJLaXQgTWFjMTAuOCcsICctLXRlc3QnLCAndXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXSwgJy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8n
LCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0JywgJy0tYnVp
bGRlcicsICdHVEsgTGludXggNjQtYml0IFJlbGVhc2UnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFz
ZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAn
UXQgTGludXggUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWwnXSwgJy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVy
bmFsJywgJy0tc3VmZml4ZXMnLCAndHh0JywgJy0tYnVpbGRlcicsICdBcHBsZSBMaW9uIFJlbGVh
c2UgV0sxIChUZXN0cyknLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
J10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5h
bCcsICctLXN1ZmZpeGVzJywgJ3R4dCcsICctLWJ1aWxkZXInLCAnV2ViS2l0IFhQJywgJy0tdGVz
dCcsICd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddLCAnL21vY2stY2hlY2tvdXQnKSwg
KFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQn
LCAnLS1idWlsZGVyJywgJ0FwcGxlIE1vdW50YWluTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpJywg
Jy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddLCAnL21vY2stY2hlY2tv
dXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBMaW51eCAzMicsICctLXRlc3QnLCAndXNlcnNj
cmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2Vs
aW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dl
YktpdCBMaW51eCcsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2st
Y2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZm
aXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBNYWMxMC42JywgJy0tdGVzdCcsICd1
c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3Jl
YmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3BuZycsICctLWJ1aWxkZXIn
LCAnV2ViS2l0IE1hYzEwLjcnLCAnLS10ZXN0JywgJ3VzZXJzY3JpcHRzL2ltYWdlcy5zdmcnXSwg
Jy9tb2NrLWNoZWNrb3V0JyksIChbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywg
Jy0tc3VmZml4ZXMnLCAncG5nJywgJy0tYnVpbGRlcicsICdXZWJLaXQgV2luNycsICctLXRlc3Qn
LCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycs
ICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWls
ZGVyJywgJ0FwcGxlIFdpbiA3IFJlbGVhc2UgKFRlc3RzKScsICctLXRlc3QnLCAndXNlcnNjcmlw
dHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5l
LXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ0VGTCBM
aW51eCA2NC1iaXQgUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2Zydd
LCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwn
LCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBNYWMxMC44JywgJy0t
dGVzdCcsICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcpLCAoWydl
Y2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3BuZycsICct
LWJ1aWxkZXInLCAnR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNlJywgJy0tdGVzdCcsICd1c2Vyc2Ny
aXB0cy9pbWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcpLCAoWydlY2hvJywgJ3JlYmFzZWxp
bmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3BuZycsICctLWJ1aWxkZXInLCAnUXQg
TGludXggUmVsZWFzZScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21v
Y2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1z
dWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ0FwcGxlIExpb24gUmVsZWFzZSBXSzEgKFRl
c3RzKScsICctLXRlc3QnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tv
dXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
ICdwbmcnLCAnLS1idWlsZGVyJywgJ1dlYktpdCBYUCcsICctLXRlc3QnLCAndXNlcnNjcmlwdHMv
aW1hZ2VzLnN2ZyddLCAnL21vY2stY2hlY2tvdXQnKSwgKFsnZWNobycsICdyZWJhc2VsaW5lLXRl
c3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICdwbmcnLCAnLS1idWlsZGVyJywgJ0FwcGxlIE1v
dW50YWluTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpJywgJy0tdGVzdCcsICd1c2Vyc2NyaXB0cy9p
bWFnZXMuc3ZnJ10sICcvbW9jay1jaGVja291dCcpXVxuIgotCi0gICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1P
Q0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1h
bmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2Un
LCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dk
PU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLSIiIgot
Ci0gICAgICAgIGNvbW1hbmQuX3Rlc3RzX3RvX3JlYmFzZWxpbmUgPSBsYW1iZGEgcG9ydDogeyd1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCc6IHNldChbJ3R4dCddKSwgJ3VzZXJzY3JpcHRz
L2ltYWdlcy5zdmcnOiBzZXQoWydwbmcnXSl9Ci0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLmV4ZWN1dGUsIFtNb2NrT3B0aW9ucyhvcHRpbWl6ZT1G
YWxzZSksIFtdLCB0b29sXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzLCBleHBlY3RlZF9z
dGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQot
Ci0gICAgICAgIGV4cGVjdGVkX3N0ZGVycl93aXRoX29wdGltaXplID0gIiIiTU9DSyBydW5fY29t
bWFuZDogWydxbWFrZScsICctdiddLCBjd2Q9Tm9uZQotTU9DSyBydW5fY29tbWFuZDogWydxbWFr
ZScsICctdiddLCBjd2Q9Tm9uZQotTU9DSyBydW5fY29tbWFuZDogWydxbWFrZScsICctdiddLCBj
d2Q9Tm9uZQotTU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycs
ICctLXN1ZmZpeGVzJywgJ3R4dCcsICd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddLCBj
d2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dk
PU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAn
LS1zdWZmaXhlcycsICdwbmcnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCBjd2Q9L21vY2st
Y2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1P
Q0sgcnVuX2NvbW1hbmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1h
bmQ6IFsncW1ha2UnLCAnLXYnXSwgY3dkPU5vbmUKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsncW1ha2Un
LCAnLXYnXSwgY3dkPU5vbmUKLSIiIgotCi0gICAgICAgIGNvbW1hbmQuX3Rlc3RzX3RvX3JlYmFz
ZWxpbmUgPSBsYW1iZGEgcG9ydDogeyd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCc6IHNl
dChbJ3R4dCddKSwgJ3VzZXJzY3JpcHRzL2ltYWdlcy5zdmcnOiBzZXQoWydwbmcnXSl9Ci0gICAg
ICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLmV4ZWN1dGUs
IFtNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlKSwgW10sIHRvb2xdLCBleHBlY3RlZF9sb2dzPWV4
cGVjdGVkX2xvZ3MsIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIGV4cGVjdGVkX3N0
ZGVycj1leHBlY3RlZF9zdGRlcnJfd2l0aF9vcHRpbWl6ZSkKLQotICAgIGRlZiBfYXNzZXJ0X2Nv
bW1hbmQoc2VsZiwgY29tbWFuZCwgb3B0aW9ucz1Ob25lLCBhcmdzPU5vbmUsIGV4cGVjdGVkX3N0
ZG91dD0nJywgZXhwZWN0ZWRfc3RkZXJyPScnLCBleHBlY3RlZF9sb2dzPScnKToKLSAgICAgICAg
IyBGSVhNRTogZ2VuZXJhbGl6ZSBzbyBtb3JlIHRlc3RzIHVzZSB0aGlzIHRvIGdldCByaWQgb2Yg
Ym9pbGVycGxhdGUuCi0gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIE1vY2tPcHRpb25zKG9w
dGltaXplPVRydWUsIGJ1aWxkZXJzPU5vbmUsIHN1ZmZpeGVzPVsndHh0J10sIHZlcmJvc2U9RmFs
c2UpCi0gICAgICAgIGFyZ3MgPSBhcmdzIG9yIFtdCi0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29s
KCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLQotICAgICAgICBwb3J0ID0g
dG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1tYWMtbGlvbicpCi0KLSAgICAgICAgZm9y
IHBvcnRfbmFtZSBpbiB0b29sLnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpOgotICAgICAg
ICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCi0gICAgICAgICAg
ICBmb3IgcGF0aCBpbiBwb3J0LmV4cGVjdGF0aW9uc19maWxlcygpOgotICAgICAgICAgICAgICAg
IHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgJycpCi0KLSAgICAgICAgT3V0
cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuZXhlY3V0ZSwgW29wdGlv
bnMsIGFyZ3MsIHRvb2xdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0K
LSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9uc19ub29wKHNlbGYpOgotICAgICAg
ICBzZWxmLl9hc3NlcnRfY29tbWFuZChSZWJhc2VsaW5lRXhwZWN0YXRpb25zKCksIGV4cGVjdGVk
X2xvZ3M9J0RpZCBub3QgZmluZCBhbnkgdGVzdHMgbWFya2VkIFJlYmFzZWxpbmUuXG4nKQotCi0g
ICAgZGVmIHRlc3Rfb3ZlcnJpZGVzX2FyZV9pbmNsdWRlZF9jb3JyZWN0bHkoc2VsZik6Ci0gICAg
ICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lRXhwZWN0YXRpb25zKCkKLSAgICAgICAgdG9vbCA9IE1v
Y2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLSAgICAgICAgcG9y
dCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgnY2hyb21pdW0tbWFjLWxpb24nKQotCi0gICAgICAg
ICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBhbnkgdGVzdHMgbWFya2VkIGFzIFJFQkFTRUxJTkUgaW4g
dGhlIG92ZXJyaWRlcyBhcmUgZm91bmQsIGJ1dAotICAgICAgICAjIHRoYXQgdGhlIG92ZXJyaWRl
cyBkbyBub3QgZ2V0IHdyaXR0ZW4gaW50byB0aGUgbWFpbiBmaWxlLgotICAgICAgICBleHBlY3Rh
dGlvbnNfcGF0aCA9IHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKClbMF0KLSAgICAgICAgZXhwZWN0
YXRpb25zX2NvbnRlbnRzID0gJycKLSAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgsIGV4cGVjdGF0aW9uc19jb250ZW50cykKLSAgICAgICAg
cG9ydC5leHBlY3RhdGlvbnNfZGljdCA9IGxhbWJkYTogewotICAgICAgICAgICAgZXhwZWN0YXRp
b25zX3BhdGg6IGV4cGVjdGF0aW9uc19jb250ZW50cywKLSAgICAgICAgICAgICdvdmVycmlkZXMn
OiAoJ0J1Zyh4KSB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCBbIEZhaWx1cmUgUmViYXNl
bGluZSBdXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdCdWcoeSkgdXNlcnNjcmlwdHMv
dGVzdC5odG1sIFsgQ3Jhc2ggXVxuJyl9CisgICAgZGVmIHRlc3RfcmViYXNlbGluZV90ZXN0X2lu
dGVybmFsX3dpdGhfbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8oc2VsZik6CisgICAgICAg
IHNlbGYudG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAKLSAgICAgICAgZm9yIHBh
dGggaW4gcG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKToKLSAgICAgICAgICAgIHBvcnQuX2ZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGgsICcnKQotICAgICAgICBwb3J0Ll9maWxlc3lzdGVt
LndyaXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tbWFu
ZC5fdGVzdHNfdG9fcmViYXNlbGluZShwb3J0KSwgeyd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCc6IHNldChbJ3BuZycsICd0eHQnLCAnd2F2J10pfSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocG9ydC5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCks
IGV4cGVjdGF0aW9uc19jb250ZW50cykKKyAgICAgICAgIyBGSVhNRTogaXQncyBjb25mdXNpbmcg
dGhhdCB0aGlzIGlzIHRoZSB0ZXN0LSBwb3J0LCBhbmQgbm90IHRoZSByZWd1bGFyIGxpb24gcG9y
dC4gUmVhbGx5IGFsbCBvZiB0aGUgdGVzdHMgc2hvdWxkIGJlIHVzaW5nIHRoZSB0ZXN0IHBvcnRz
LgorICAgICAgICBwb3J0ID0gc2VsZi50b29sLnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QtbWFjLXNu
b3dsZW9wYXJkJykKKyAgICAgICAgc2VsZi5fd3JpdGUocG9ydC5fZmlsZXN5c3RlbS5qb2luKHBv
cnQubGF5b3V0X3Rlc3RzX2RpcigpLCAncGxhdGZvcm0vdGVzdC1tYWMtc25vd2xlb3BhcmQvZmFp
bHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQudHh0JyksICdvcmlnaW5hbCBzbm93bGVvcGFy
ZCByZXN1bHQnKQogCi0gICAgZGVmIHRlc3RfcmViYXNlbGluZShzZWxmKToKICAgICAgICAgb2xk
X2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcworICAgICAgICBvYyA9IE91
dHB1dENhcHR1cmUoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBidWlsZGVycy5fZXhhY3Rf
bWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVyIjogeyJwb3J0X25hbWUi
OiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1zcGVjaWZpZXIi
XSl9LAorICAgICAgICAgICAgICAgICJNT0NLIExlb3BhcmQiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0
LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciJdKX0sCisg
ICAgICAgICAgICAgICAgIk1PQ0sgU25vd0xlb3BhcmQiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1h
Yy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1zcGVjaWZpZXIiXSl9LAog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZSgpCi0gICAg
ICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rv
b2wodG9vbCkKLQotICAgICAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiB0b29sLnBvcnRfZmFjdG9y
eS5hbGxfcG9ydF9uYW1lcygpOgotICAgICAgICAgICAgICAgIHBvcnQgPSB0b29sLnBvcnRfZmFj
dG9yeS5nZXQocG9ydF9uYW1lKQotICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIHBvcnQuZXhw
ZWN0YXRpb25zX2ZpbGVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUocGF0aCwgJycpCi0KLSAgICAgICAgICAgIHRvb2wuZXhlY3V0aXZlID0g
TW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCi0KLSAgICAgICAgICAgIGRlZiBtb2NrX2J1
aWxkZXJzX3RvX3B1bGxfZnJvbSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBbTW9ja0J1aWxk
ZXIoJ01PQ0sgYnVpbGRlcicpXQotCi0gICAgICAgICAgICBkZWYgbW9ja190ZXN0c190b191cGRh
dGUoYnVpbGQpOgotICAgICAgICAgICAgICAgIHJldHVybiBbJ21vY2svcGF0aC90by90ZXN0Lmh0
bWwnXQotCi0gICAgICAgICAgICBjb21tYW5kLl9idWlsZGVyc190b19wdWxsX2Zyb20gPSBtb2Nr
X2J1aWxkZXJzX3RvX3B1bGxfZnJvbQotICAgICAgICAgICAgY29tbWFuZC5fdGVzdHNfdG9fdXBk
YXRlID0gbW9ja190ZXN0c190b191cGRhdGUKLQotICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0
ID0gIiIicmViYXNlbGluZS1qc29uOiB7J21vY2svcGF0aC90by90ZXN0Lmh0bWwnOiB7J01PQ0sg
YnVpbGRlcic6IFsndHh0J119fQotIiIiCi0KLSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9
ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwn
LCAnLS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRl
c3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sg
cnVuX2NvbW1hbmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycs
ICd0eHQnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLSIi
IgotCi0gICAgICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29t
bWFuZC5leGVjdXRlLCBbTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgYnVpbGRlcnM9Tm9uZSwg
c3VmZml4ZXM9WyJ0eHQiXSwgdmVyYm9zZT1UcnVlKSwgW10sIHRvb2xdLCBleHBlY3RlZF9zdGRv
dXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAg
ICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIGJ1aWxkZXI9Ik1P
Q0sgU25vd0xlb3BhcmQiLCBzdWZmaXhlcz0idHh0IiwKKyAgICAgICAgICAgICAgICBtb3ZlX292
ZXJ3cml0dGVuX2Jhc2VsaW5lc190bz1bInRlc3QtbWFjLWxlb3BhcmQiXSwgdmVyYm9zZT1UcnVl
LCB0ZXN0PSJmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sIikKIAorICAgICAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQorICAgICAgICAgICAgc2VsZi5jb21tYW5kLmV4ZWN1dGUob3B0aW9u
cywgW10sIHNlbGYudG9vbCkKICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dCwgXywg
XyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRj
aGVzID0gb2xkX2V4YWN0X21hdGNoZXMKIAotICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfY29tbWFu
ZF9saW5lX2ZsYWdzKHNlbGYpOgotICAgICAgICBvbGRfZXhhY3RfbWF0Y2hlcyA9IGJ1aWxkZXJz
Ll9leGFjdF9tYXRjaGVzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJ1aWxkZXJzLl9leGFj
dF9tYXRjaGVzID0gewotICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIiOiB7InBvcnRfbmFt
ZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmll
ciJdKX0sCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5l
KCkKLSAgICAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgICAgICBjb21tYW5kLmJp
bmRfdG9fdG9vbCh0b29sKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFkKHNl
bGYudG9vbC5maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICdwbGF0Zm9y
bS90ZXN0LW1hYy1sZW9wYXJkL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLnR4dCcp
KSwgJ29yaWdpbmFsIHNub3dsZW9wYXJkIHJlc3VsdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG91dCwgJ3siYWRkIjogW119XG4nKQogCi0gICAgICAgICAgICBmb3IgcG9ydF9uYW1lIGlu
IHRvb2wucG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgcG9y
dCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCi0gICAgICAgICAgICAgICAgZm9y
IHBhdGggaW4gcG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKToKLSAgICAgICAgICAgICAgICAgICAg
dG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAnJykKIAotICAgICAgICAgICAg
dG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKK2NsYXNzIFRl
c3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKKyAgICBjb21tYW5kX2NvbnN0cnVjdG9y
ID0gUmViYXNlbGluZUpzb24KIAotICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIiIicmVi
YXNlbGluZS1qc29uOiB7J21vY2svcGF0aC90by90ZXN0Lmh0bWwnOiB7J01PQ0sgYnVpbGRlcic6
IFsndHh0J119fQotIiIiCi0KLSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sg
cnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZm
aXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRlc3QnLCAnbW9j
ay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1h
bmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0eHQnLCAn
bW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLSIiIgorICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoVGVzdFJlYmFzZWxpbmVKc29uLCBzZWxmKS5z
ZXRVcCgpCisgICAgICAgIHNlbGYudG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCisg
ICAgICAgIHNlbGYub2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcwor
ICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKKyAgICAgICAgICAgICJNT0NLIGJ1
aWxkZXIiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBz
ZXQoWyJtb2NrLXNwZWNpZmllciJdKX0sCisgICAgICAgICAgICAiTU9DSyBidWlsZGVyIChEZWJ1
ZykiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQo
WyJtb2NrLXNwZWNpZmllciIsICJkZWJ1ZyJdKX0sCisgICAgICAgIH0KIAotICAgICAgICAgICAg
YnVpbGRlciA9ICJNT0NLIGJ1aWxkZXIiCi0gICAgICAgICAgICB0ZXN0ID0gIm1vY2svcGF0aC90
by90ZXN0Lmh0bWwiCi0gICAgICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgY29tbWFuZC5leGVjdXRlLCBbTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgYnVpbGRl
cnM9W2J1aWxkZXJdLCBzdWZmaXhlcz1bInR4dCJdLCB2ZXJib3NlPVRydWUpLCBbdGVzdF0sIHRv
b2xdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYnVpbGRlcnMu
X2V4YWN0X21hdGNoZXMgPSBzZWxmLm9sZF9leGFjdF9tYXRjaGVzCisgICAgICAgIHN1cGVyKFRl
c3RSZWJhc2VsaW5lSnNvbiwgc2VsZikudGVhckRvd24oKQogCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IG9sZF9leGFjdF9tYXRjaGVzCisg
ICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbGwoc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUpCisgICAgICAgIHNlbGYuY29tbWFu
ZC5fcmViYXNlbGluZShvcHRpb25zLCAgeyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
OiB7Ik1PQ0sgYnVpbGRlciI6IFsidHh0IiwgInBuZyJdfX0pCiAKLSAgICBkZWYgdGVzdF9yZWJh
c2VsaW5lX211bHRpcGxlX2J1aWxkZXJzKHNlbGYpOgotICAgICAgICBvbGRfZXhhY3RfbWF0Y2hl
cyA9IGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJ1
aWxkZXJzLl9leGFjdF9tYXRjaGVzID0gewotICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIi
OiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJt
b2NrLXNwZWNpZmllciJdKX0sCi0gICAgICAgICAgICAgICAgIk1PQ0sgYnVpbGRlcjIiOiB7InBv
cnRfbmFtZSI6ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9j
ay1zcGVjaWZpZXIyIl0pfSwKLSAgICAgICAgICAgIH0KKyAgICAgICAgIyBOb3RlIHRoYXQgd2Ug
aGF2ZSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbCBmb2xsb3dlZCBieSBhIHJ1bl9jb21tYW5k
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscywK
KyAgICAgICAgICAgIFtbWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1
ZmZpeGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRlc3Qn
LCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dLAorICAgICAgICAgICAgIFsnZWNo
bycsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJ3VzZXIt
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKIAotICAgICAgICAgICAgY29tbWFuZCA9IFJl
YmFzZWxpbmUoKQotICAgICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgICAgIGNv
bW1hbmQuYmluZF90b190b29sKHRvb2wpCisgICAgZGVmIHRlc3RfcmViYXNlbGluZV9kZWJ1Zyhz
ZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIHZlcmJv
c2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lKG9wdGlvbnMsICB7InVz
ZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsiTU9DSyBidWlsZGVyIChEZWJ1ZykiOiBb
InR4dCIsICJwbmciXX19KQogCi0gICAgICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHRvb2wucG9y
dF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgcG9ydCA9IHRvb2wu
cG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCi0gICAgICAgICAgICAgICAgZm9yIHBhdGggaW4g
cG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKToKLSAgICAgICAgICAgICAgICAgICAgdG9vbC5maWxl
c3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAnJykKKyAgICAgICAgIyBOb3RlIHRoYXQgd2Ug
aGF2ZSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbCBmb2xsb3dlZCBieSBhIHJ1bl9jb21tYW5k
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscywK
KyAgICAgICAgICAgIFtbWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1
ZmZpeGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlciAoRGVidWcpJywg
Jy0tdGVzdCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXV0sCisgICAgICAgICAg
ICAgWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcn
LCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dKQogCi0gICAgICAgICAgICB0b29s
LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQogCi0gICAgICAgICAg
ICBkZWYgbW9ja19idWlsZGVyc190b19wdWxsX2Zyb20oKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gW01vY2tCdWlsZGVyKCdNT0NLIGJ1aWxkZXInKSwgTW9ja0J1aWxkZXIoJ01PQ0sgYnVpbGRl
cjInKV0KK2NsYXNzIFRlc3RSZWJhc2VsaW5lKF9CYXNlVGVzdENhc2UpOgorICAgICMgVGhpcyBj
b21tYW5kIHNoYXJlcyBtb3N0IG9mIGl0cyBsb2dpYyB3aXRoIFJlYmFzZWxpbmVKc29uLCBzbyB0
aGVzZSB0ZXN0cyBqdXN0IHRlc3Qgd2hhdCBpcyBkaWZmZXJlbnQuCiAKLSAgICAgICAgICAgIGRl
ZiBtb2NrX3Rlc3RzX3RvX3VwZGF0ZShidWlsZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsn
bW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddCisgICAgY29tbWFuZF9jb25zdHJ1Y3RvciA9IFJlYmFz
ZWxpbmUgICMgQUtBIHdlYmtpdC1wYXRjaCByZWJhc2VsaW5lLXRlc3QKIAotICAgICAgICAgICAg
Y29tbWFuZC5fYnVpbGRlcnNfdG9fcHVsbF9mcm9tID0gbW9ja19idWlsZGVyc190b19wdWxsX2Zy
b20KLSAgICAgICAgICAgIGNvbW1hbmQuX3Rlc3RzX3RvX3VwZGF0ZSA9IG1vY2tfdGVzdHNfdG9f
dXBkYXRlCisgICAgZGVmIHRlc3RfdGVzdHNfdG9fdXBkYXRlKHNlbGYpOgorICAgICAgICBidWls
ZCA9IE1vY2soKQorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwg
c2VsZi5jb21tYW5kLl90ZXN0c190b191cGRhdGUsIFtidWlsZF0pCiAKLSAgICAgICAgICAgIGV4
cGVjdGVkX3N0ZG91dCA9ICIiInJlYmFzZWxpbmUtanNvbjogeydtb2NrL3BhdGgvdG8vdGVzdC5o
dG1sJzogeydNT0NLIGJ1aWxkZXIyJzogWyd0eHQnXSwgJ01PQ0sgYnVpbGRlcic6IFsndHh0J119
fQotIiIiCisgICAgZGVmIHRlc3RfcmViYXNlbGluZShzZWxmKToKKyAgICAgICAgIyBUaGlzIHRl
c3QgYmFzaWNhbGx5IHRlc3RzIHRoZSBwYXRoIGZyb20gY29tbWFuZC5leGVjdXRlKCkgdG8gY29t
bWFuZC5fcmViYXNlbGluZSgpOworICAgICAgICAjIGl0IGRvZXNuJ3QgdGVzdCB0aGF0IF9yZWJh
c2VsaW5lKCkgYWN0dWFsbHkgZG9lcyBhbnl0aGluZyAodGhhdCBpcyB0ZXN0ZWQgaW4gVGVzdFJl
YmFzZWxpbmVKc29uLgorICAgICAgICBzZWxmLnRlc3RfbGlzdCA9IHt9CiAKLSAgICAgICAgICAg
IGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2Vs
aW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQnLCAnLS1idWlsZGVyJywgJ01P
Q0sgYnVpbGRlcjInLCAnLS10ZXN0JywgJ21vY2svcGF0aC90by90ZXN0Lmh0bWwnXSwgY3dkPS9t
b2NrLWNoZWNrb3V0Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0
LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0JywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxk
ZXInLCAnLS10ZXN0JywgJ21vY2svcGF0aC90by90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNr
b3V0Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0t
c3VmZml4ZXMnLCAndHh0JywgJ21vY2svcGF0aC90by90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0Ci0iIiIKKyAgICAgICAgZGVmIHJlYmFzZWxpbmVfc3R1YihvcHRpb25zLCB0ZXN0X2xp
c3QpOgorICAgICAgICAgICAgc2VsZi50ZXN0X2xpc3QgPSB0ZXN0X2xpc3QKIAotICAgICAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuZXhlY3V0ZSwg
W01vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIGJ1aWxkZXJzPU5vbmUsIHN1ZmZpeGVzPVsidHh0
Il0sIHZlcmJvc2U9VHJ1ZSksIFtdLCB0b29sXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0
ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgc2VsZi5jb21t
YW5kLl9idWlsZGVyc190b19wdWxsX2Zyb20gPSBsYW1iZGE6IFtNb2NrQnVpbGRlcignTU9DSyBi
dWlsZGVyJyldCisgICAgICAgIHNlbGYuY29tbWFuZC5fdGVzdHNfdG9fdXBkYXRlID0gbGFtYmRh
IGJ1aWxkZXI6IFsnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddCisgICAgICAgIHNlbGYuY29tbWFu
ZC5fcmViYXNlbGluZSA9IHJlYmFzZWxpbmVfc3R1YgogCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IG9sZF9leGFjdF9tYXRjaGVzCisgICAg
ICAgIHNlbGYuX3plcm9fb3V0X3Rlc3RfZXhwZWN0YXRpb25zKCkKIAotICAgIGRlZiB0ZXN0X3Jl
YmFzZWxpbmVfbXVsdGlwbGVfYnVpbGRlcnNfYW5kX3Rlc3RzX2NvbW1hbmRfbGluZShzZWxmKToK
ICAgICAgICAgb2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcworICAg
ICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBidWls
ZGVycy5fZXhhY3RfbWF0Y2hlcyA9IHsKICAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVyIjog
eyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9j
ay1zcGVjaWZpZXIiXSl9LAotICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIyIjogeyJwb3J0
X25hbWUiOiAidGVzdC1tYWMtc25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2st
c3BlY2lmaWVyMiJdKX0sCi0gICAgICAgICAgICAgICAgIk1PQ0sgYnVpbGRlcjMiOiB7InBvcnRf
bmFtZSI6ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1z
cGVjaWZpZXIyIl0pfSwKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9jLmNhcHR1cmVfb3V0
cHV0KCkKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKG9wdGlt
aXplPVRydWUsIGJ1aWxkZXJzPU5vbmUsIHN1ZmZpeGVzPVsidHh0Il0sIHZlcmJvc2U9VHJ1ZSks
IFtdLCBzZWxmLnRvb2wpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0b3Jl
X291dHB1dCgpCisgICAgICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9IG9sZF9leGFj
dF9tYXRjaGVzCiAKLSAgICAgICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lKCkKLSAgICAgICAg
ICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0
b29sKQotCi0gICAgICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHRvb2wucG9ydF9mYWN0b3J5LmFs
bF9wb3J0X25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5
LmdldChwb3J0X25hbWUpCi0gICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gcG9ydC5leHBlY3Rh
dGlvbnNfZmlsZXMoKToKLSAgICAgICAgICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZShwYXRoLCAnJykKLQotICAgICAgICAgICAgdG9vbC5leGVjdXRpdmUgPSBNb2Nr
RXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vs
Zi50ZXN0X2xpc3QsIHsnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCc6IHsnTU9DSyBidWlsZGVyJzog
Wyd0eHQnXX19KQogCi0gICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiIiJyZWJhc2VsaW5l
LWpzb246IHsnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCc6IHsnTU9DSyBidWlsZGVyMic6IFsnd2F2
JywgJ3R4dCcsICdwbmcnXSwgJ01PQ0sgYnVpbGRlcic6IFsnd2F2JywgJ3R4dCcsICdwbmcnXSwg
J01PQ0sgYnVpbGRlcjMnOiBbJ3dhdicsICd0eHQnLCAncG5nJ119LCAnbW9jay9wYXRoL3RvL3Rl
c3QyLmh0bWwnOiB7J01PQ0sgYnVpbGRlcjInOiBbJ3dhdicsICd0eHQnLCAncG5nJ10sICdNT0NL
IGJ1aWxkZXInOiBbJ3dhdicsICd0eHQnLCAncG5nJ10sICdNT0NLIGJ1aWxkZXIzJzogWyd3YXYn
LCAndHh0JywgJ3BuZyddfX0KLSIiIgogCi0gICAgICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAi
IiJNT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywg
Jy0tc3VmZml4ZXMnLCAnd2F2LHR4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcjIn
LCAnLS10ZXN0JywgJ21vY2svcGF0aC90by90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0
Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywg
Jy0tc3VmZml4ZXMnLCAnd2F2LHR4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcics
ICctLXRlc3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQK
LU1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAn
LS1zdWZmaXhlcycsICd3YXYsdHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyMics
ICctLXRlc3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QyLmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0
Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywg
Jy0tc3VmZml4ZXMnLCAnd2F2LHR4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcics
ICctLXRlc3QnLCAnbW9jay9wYXRoL3RvL3Rlc3QyLmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0
Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3Vm
Zml4ZXMnLCAnd2F2LHR4dCxwbmcnLCAnbW9jay9wYXRoL3RvL3Rlc3QuaHRtbCddLCBjd2Q9L21v
Y2stY2hlY2tvdXQKLU1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdvcHRpbWl6ZS1iYXNlbGlu
ZXMnLCAnLS1zdWZmaXhlcycsICd3YXYsdHh0LHBuZycsICdtb2NrL3BhdGgvdG8vdGVzdDIuaHRt
bCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLSIiIgorY2xhc3MgVGVzdFJlYmFzZWxpbmVFeHBlY3Rh
dGlvbnMoX0Jhc2VUZXN0Q2FzZSk6CisgICAgY29tbWFuZF9jb25zdHJ1Y3RvciA9IFJlYmFzZWxp
bmVFeHBlY3RhdGlvbnMKIAotICAgICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRw
dXRzKHNlbGYsIGNvbW1hbmQuZXhlY3V0ZSwgW01vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIGJ1
aWxkZXJzPVsiTU9DSyBidWlsZGVyLE1PQ0sgYnVpbGRlcjIiLCAiTU9DSyBidWlsZGVyMyJdLCBz
dWZmaXhlcz1bInR4dCxwbmciLCAicG5nLHdhdix0eHQiXSwgdmVyYm9zZT1UcnVlKSwgWyJtb2Nr
L3BhdGgvdG8vdGVzdC5odG1sIiwgIm1vY2svcGF0aC90by90ZXN0Mi5odG1sIl0sIHRvb2xdLCBl
eHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRf
c3RkZXJyKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoVGVzdFJlYmFzZWxp
bmVFeHBlY3RhdGlvbnMsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5vcHRpb25zID0gTW9j
a09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgYnVpbGRlcnM9Tm9uZSwgc3VmZml4ZXM9Wyd0eHQnXSwg
dmVyYm9zZT1GYWxzZSkKIAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYnVpbGRlcnMu
X2V4YWN0X21hdGNoZXMgPSBvbGRfZXhhY3RfbWF0Y2hlcworICAgIGRlZiB0ZXN0X3JlYmFzZWxp
bmVfZXhwZWN0YXRpb25zKHNlbGYpOgorICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVj
dGF0aW9ucygpCiAKLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2pzb25fd2l0aF9tb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lc190byhzZWxmKToKLSAgICAgICAgb2xkX2V4YWN0X21hdGNoZXMgPSBi
dWlsZGVycy5fZXhhY3RfbWF0Y2hlcwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBidWlsZGVy
cy5fZXhhY3RfbWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBidWlsZGVyIjogeyJw
b3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1z
cGVjaWZpZXIiXSl9LAotICAgICAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIyIjogeyJwb3J0X25h
bWUiOiAidGVzdC1tYWMtc25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3Bl
Y2lmaWVyMiJdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW92ZV9vdmVy
d3JpdHRlbl9iYXNlbGluZXNfdG8iOiBbInRlc3QtbWFjLWxlb3BhcmQiXX0sCi0gICAgICAgICAg
ICB9CisgICAgICAgIHNlbGYudG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAKLSAg
ICAgICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lKCkKLSAgICAgICAgICAgIHRvb2wgPSBNb2Nr
VG9vbCgpCi0gICAgICAgICAgICB0b29sLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxk
X2xvZz1UcnVlKQotICAgICAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAg
ICAgc2VsZi5jb21tYW5kLl90ZXN0c190b19yZWJhc2VsaW5lID0gbGFtYmRhIHBvcnQ6IHsndXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnOiBzZXQoWyd0eHQnXSksICd1c2Vyc2NyaXB0cy9p
bWFnZXMuc3ZnJzogc2V0KFsncG5nJ10pfQorICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShN
b2NrT3B0aW9ucyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1GYWxzZSksIFtdLCBzZWxmLnRvb2wp
CiAKLSAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICIiInJlYmFzZWxpbmUtanNvbjogeydt
b2NrL3BhdGgvdG8vdGVzdC5odG1sJzogeydNT0NLIGJ1aWxkZXIyJzogWyd0eHQnLCAncG5nJ119
fVxuIiIiCi0gICAgICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJNT0NLIHJ1bl9jb21tYW5k
OiBbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0
LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyMicsICctLXRlc3QnLCAnbW9jay9wYXRo
L3RvL3Rlc3QuaHRtbCcsICctLW1vdmUtb3ZlcndyaXR0ZW4tYmFzZWxpbmVzLXRvJywgJ3Rlc3Qt
bWFjLWxlb3BhcmQnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci1NT0NLIHJ1bl9jb21tYW5kOiBbJ2Vj
aG8nLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICdtb2Nr
L3BhdGgvdG8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAotIiIiCisgICAgICAgICMg
RklYTUU6IGNoYW5nZSB0aGlzIHRvIHVzZSB0aGUgdGVzdC0gcG9ydHMuCisgICAgICAgIGNhbGxz
ID0gZmlsdGVyKGxhbWJkYSB4OiB4ICE9IFsncW1ha2UnLCAnLXYnXSwgc2VsZi50b29sLmV4ZWN1
dGl2ZS5jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjYWxscykgPT0gMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjYWxsc1swXSkgPT0gMjYpCiAKLSAgICAgICAgICAg
IG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCBidWlsZGVycz1bIk1PQ0sgYnVp
bGRlcjIiXSwgc3VmZml4ZXM9WyJ0eHQscG5nIl0sIHZlcmJvc2U9VHJ1ZSkKLSAgICAgICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLmV4ZWN1dGUsIFtv
cHRpb25zLCBbIm1vY2svcGF0aC90by90ZXN0Lmh0bWwiXSwgdG9vbF0sCi0gICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVycikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGJ1aWxkZXJzLl9leGFj
dF9tYXRjaGVzID0gb2xkX2V4YWN0X21hdGNoZXMKKyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4
cGVjdGF0aW9uc19ub29wKHNlbGYpOgorICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVj
dGF0aW9ucygpCiAKLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3Rlc3RfaW50ZXJuYWxfd2l0aF9t
b3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byhzZWxmKToKLSAgICAgICAgb2xkX2V4YWN0X21h
dGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcworICAgICAgICBvYyA9IE91dHB1dENhcHR1
cmUoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcyA9
IHsKLSAgICAgICAgICAgICAgICAiTU9DSyBMZW9wYXJkIjogeyJwb3J0X25hbWUiOiAidGVzdC1t
YWMtbGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsibW9jay1zcGVjaWZpZXIiXSl9LAotICAg
ICAgICAgICAgICAgICJNT0NLIFNub3dMZW9wYXJkIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMt
c25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyIl0pfSwKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAg
ICAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgICAgICB0b29sLmV4ZWN1dGl2ZSA9
IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQotICAgICAgICAgICAgY29tbWFuZC5iaW5k
X3RvX3Rvb2wodG9vbCkKKyAgICAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAg
ICAgIHNlbGYuY29tbWFuZC5leGVjdXRlKHNlbGYub3B0aW9ucywgW10sIHNlbGYudG9vbCkKKyAg
ICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF8sIF8sIGxvZ3MgPSBvYy5yZXN0b3JlX291dHB1
dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wuZmlsZXN5c3RlbS53
cml0dGVuX2ZpbGVzLCB7fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxvZ3MsICdE
aWQgbm90IGZpbmQgYW55IHRlc3RzIG1hcmtlZCBSZWJhc2VsaW5lLlxuJykKIAotICAgICAgICAg
ICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgndGVzdC1tYWMtc25vd2xlb3BhcmQnKQot
ICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSh0b29sLmZpbGVzeXN0
ZW0uam9pbihwb3J0LmJhc2VsaW5lX3ZlcnNpb25fZGlyKCksICdmYWlsdXJlcycsICdleHBlY3Rl
ZCcsICdpbWFnZS1leHBlY3RlZC50eHQnKSwgJycpCisgICAgZGVmIGRpc2FibGVkX3Rlc3Rfb3Zl
cnJpZGVzX2FyZV9pbmNsdWRlZF9jb3JyZWN0bHkoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0
cyB0aGF0IHRoZSBhbnkgdGVzdHMgbWFya2VkIGFzIFJFQkFTRUxJTkUgaW4gdGhlIG92ZXJyaWRl
cyBhcmUgZm91bmQsIGJ1dAorICAgICAgICAjIHRoYXQgdGhlIG92ZXJyaWRlcyBkbyBub3QgZ2V0
IHdyaXR0ZW4gaW50byB0aGUgbWFpbiBmaWxlLgorICAgICAgICBzZWxmLl96ZXJvX291dF90ZXN0
X2V4cGVjdGF0aW9ucygpCiAKLSAgICAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRp
bWl6ZT1UcnVlLCBidWlsZGVyPSJNT0NLIFNub3dMZW9wYXJkIiwgc3VmZml4ZXM9InR4dCIsCi0g
ICAgICAgICAgICAgICAgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG89WyJ0ZXN0LW1hYy1s
ZW9wYXJkIl0sIHZlcmJvc2U9VHJ1ZSwgdGVzdD0iZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRt
bCIpCisgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCwgJycp
CisgICAgICAgIHNlbGYubGlvbl9wb3J0LmV4cGVjdGF0aW9uc19kaWN0ID0gbGFtYmRhOiB7Cisg
ICAgICAgICAgICBzZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGg6ICcnLAorICAgICAgICAgICAg
J292ZXJyaWRlcyc6ICgnQnVnKHgpIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgRmFp
bHVyZSBSZWJhc2VsaW5lIF1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0J1Zyh5KSB1
c2Vyc2NyaXB0cy90ZXN0Lmh0bWwgWyBDcmFzaCBdXG4nKX0KKyAgICAgICAgc2VsZi5fd3JpdGUo
Jy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCcsICcnKQogCi0gICAgICAgICAgICBvYyA9
IE91dHB1dENhcHR1cmUoKQotICAgICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxvZ3MgPSAnJwotICAgICAgICAgICAgICAgIGNv
bW1hbmQuZXhlY3V0ZShvcHRpb25zLCBbXSwgdG9vbCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICAgICAgXywgXywgbG9ncyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5jb21tYW5kLl90ZXN0c190b19yZWJhc2VsaW5lKHNlbGYu
bGlvbl9wb3J0KSwgeyd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCc6IHNldChbJ3BuZycs
ICd0eHQnLCAnd2F2J10pfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fcmVhZChz
ZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGgpLCAnJykKIAotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCJDb3B5aW5nIGJhc2VsaW5lIGZyb20gL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vdGVzdC1tYWMtc25vd2xlb3BhcmQvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhw
ZWN0ZWQudHh0IHRvIC90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QtbWFj
LWxlb3BhcmQvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQudHh0LlxuIiBpbiBsb2dz
KQogCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBidWlsZGVycy5fZXhhY3RfbWF0Y2hl
cyA9IG9sZF9leGFjdF9tYXRjaGVzCg==
</data>
<flag name="review"
          id="185499"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>