<?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>175216</bug_id>
          
          <creation_ts>2017-08-04 15:28:39 -0700</creation_ts>
          <short_desc>Separate jsc stress test script writer from run-jsc-stress-tests</short_desc>
          <delta_ts>2017-08-08 17:18:55 -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>Tools / Tests</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174985</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephan Szabo">stephan.szabo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lforschler</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pvollan</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1335534</commentid>
    <comment_count>0</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-08-04 15:28:39 -0700</bug_when>
    <thetext>For running JSC tests on windows without a unix shell, in https://lists.webkit.org/pipermail/webkit-dev/2017-August/029370.html we proposed a multiple step process for that with the first being splitting off the test script writing and related code from the other code in run-jsc-stress-tests to eventually allow an alternate implementation that doesn&apos;t require shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336244</commentid>
    <comment_count>1</comment_count>
      <attachid>317504</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-08-07 16:46:00 -0700</bug_when>
    <thetext>Created attachment 317504
Separate out script building/running from other parts of run-jsc-stress-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336660</commentid>
    <comment_count>2</comment_count>
      <attachid>317504</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-08 14:50:09 -0700</bug_when>
    <thetext>Comment on attachment 317504
Separate out script building/running from other parts of run-jsc-stress-tests

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

r- because parseRunCommands is duplicated.

&gt; Tools/Scripts/webkitruby/jsc-stress-test-writer-default.rb:217
&gt; +#$runCommandOptions = {}

Why have this here?n  This looks like a copy-paste that hasn&apos;t been cleaned up.

&gt; Tools/Scripts/webkitruby/jsc-stress-test-writer-default.rb:320
&gt; +# Returns true if there were run commands found in the file ($benchmarkDirectory +
&gt; +# $benchmark), in which case those run commands have already been executed. Otherwise
&gt; +# returns false, in which case you&apos;re supposed to add your own run commands.
&gt; +def parseRunCommands
&gt; +    oldDidAddRunCommand = $didAddRunCommand
&gt; +    $didAddRunCommand = false
&gt; +
&gt; +    Dir.chdir($outputDir) {
&gt; +        File.open($benchmarkDirectory + $benchmark) {
&gt; +            | inp |
&gt; +            inp.each_line {
&gt; +                | line |
&gt; +                begin
&gt; +                    doesMatch = line =~ /^\/\/@/
&gt; +                rescue Exception =&gt; e
&gt; +                    # Apparently this happens in the case of some UTF8 stuff in some files, where
&gt; +                    # Ruby tries to be strict and throw exceptions.
&gt; +                    next
&gt; +                end
&gt; +                next unless doesMatch
&gt; +                eval $~.post_match
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +
&gt; +    result = $didAddRunCommand
&gt; +    $didAddRunCommand = result or oldDidAddRunCommand
&gt; +    result
&gt; +end

There&apos;s still a copy of this function in run-jsc-stress-tests.  Is there a reason for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336687</commentid>
    <comment_count>3</comment_count>
      <attachid>317628</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-08-08 15:21:33 -0700</bug_when>
    <thetext>Created attachment 317628
Separate out script building/running from other parts of run-jsc-stress-tests

Thanks, for parseRunCommands I hadn&apos;t intended to move it and missed clearing it out of the writer file with it back in run-jsc-stress-tests. 

The other line was inside a block of things that was moving so I went back and forth but thought it made more sense in the main script. I was swapping which was commented out and forgot to remove the commented out one at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336705</commentid>
    <comment_count>4</comment_count>
      <attachid>317628</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-08 15:46:21 -0700</bug_when>
    <thetext>Comment on attachment 317628
Separate out script building/running from other parts of run-jsc-stress-tests

r=me if EWS is green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336784</commentid>
    <comment_count>5</comment_count>
      <attachid>317628</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-08 17:18:11 -0700</bug_when>
    <thetext>Comment on attachment 317628
Separate out script building/running from other parts of run-jsc-stress-tests

Clearing flags on attachment: 317628

Committed r220431: &lt;http://trac.webkit.org/changeset/220431&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336785</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-08 17:18:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336788</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-08 17:18:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/33788991&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317504</attachid>
            <date>2017-08-07 16:46:00 -0700</date>
            <delta_ts>2017-08-08 15:21:33 -0700</delta_ts>
            <desc>Separate out script building/running from other parts of run-jsc-stress-tests</desc>
            <filename>175216-1.diff</filename>
            <type>text/plain</type>
            <size>32419</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhYmMz
ZTQ2OWIzNS4uMTVkMTRkNWY4MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wOC0wNCAgU3RlcGhhbiBTemFi
byAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CisKKyAgICAgICAgU2VwYXJhdGUganNjIHN0cmVz
cyB0ZXN0IHNjcmlwdCB3cml0ZXIgZnJvbSBydW4tanNjLXN0cmVzcy10ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLWRlZmF1bHQucmI6IEFkZGVkLgorCiAyMDE3LTA4LTA0ICBBYWthc2ggSmFpbiAg
PGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXNoYm9hcmQgYnViYmxlcyBzb21l
dGltZXMgc2hvdyBmYWlsdXJlIGNvdW50IGluc3RlYWQgb2YgY3Jhc2ggY291bnQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGM2MDgzOWRlYWVkLi5lNjEwYzk3ZDg1ZCAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC00MzQsNiArNDM0LDggQEAgTk9fQ0pJVF9PUFRJ
T05TID0gWyItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiLCAiLS10aHJlc2hvbGRGb3JKSVRBZnRl
cldhcm1VcD0xMDAKIEIzTzFfT1BUSU9OUyA9IFsiLS1kZWZhdWx0QjNPcHRMZXZlbD0xIl0KIEZU
TF9PUFRJT05TID0gWyItLXVzZUZUTEpJVD10cnVlIl0KIAorcmVxdWlyZV9yZWxhdGl2ZSAid2Vi
a2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQiCisKIGRlZiBzaG91bGRDb2xs
ZWN0Q29udGludW91c2x5PwogICAgICRidWlsZFR5cGUgPT0gInJlbGVhc2UiIG9yICRmb3JjZUNv
bGxlY3RDb250aW51b3VzbHkKIGVuZApAQCAtNDcxLDI3NCArNDczLDggQEAgZGVmIHBhdGhUb0hl
bHBlcnMKICAgICBwYXRoVG9CdW5kbGVSZXNvdXJjZUZyb21CZW5jaG1hcmtEaXJlY3RvcnkoIi5o
ZWxwZXJzIikKIGVuZAogCi1kZWYgcHJlZml4Q29tbWFuZChwcmVmaXgpCi0gICAgImF3ayAiICsg
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgieyBwcmludGYgI3socHJlZml4ICsgJzogJykuaW5zcGVj
dH07IHByaW50IH0iKQotZW5kCi0KLWRlZiByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocHJlZml4
KQotICAgIHByZWZpeENvbW1hbmQocHJlZml4KSArICIgMj4mMSIKLWVuZAotCi1kZWYgcGlwZUFu
ZFByZWZpeENvbW1hbmQob3V0cHV0RmlsZW5hbWUsIHByZWZpeCkKLSAgICAidGVlICIgKyBTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKG91dHB1dEZpbGVuYW1lLnRvX3MpICsgIiB8ICIgKyBwcmVmaXhD
b21tYW5kKHByZWZpeCkKLWVuZAotCi0jIE91dHB1dCBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGFy
ZSBleHBlY3RlZCB0byBiZSBzaWxlbnQuCi1kZWYgc2lsZW50T3V0cHV0SGFuZGxlcgotICAgIFBy
b2MubmV3IHsKLSAgICAgICAgfCBuYW1lIHwKLSAgICAgICAgIiB8ICIgKyBwaXBlQW5kUHJlZml4
Q29tbWFuZCgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MsIG5hbWUpCi0g
ICAgfQotZW5kCi0KLSMgT3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVk
IHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQuCi1kZWYgbm9pc3lPdXRwdXRIYW5kbGVyCi0g
ICAgUHJvYy5uZXcgewotICAgICAgICB8IG5hbWUgfAotICAgICAgICAiIHwgY2F0ID4gIiArIFNo
ZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50
b19zKQotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBl
eGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCi0jIFRoaXMgaXMg
dXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCi1kZWYgc2ltcGxlRXJyb3JI
YW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBv
dXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKLSAgICAgICAgb3V0cC5wdXRz
ICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBFUlJPUjogVW5leHBlY3RlZCBl
eGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4
Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxD
b21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAgICB9Ci1l
bmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRo
ZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCi1kZWYgZXhwZWN0ZWRGYWlsRXJyb3JIYW5kbGVy
Ci0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1
dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVu
IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAg
ICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIEVSUk9SOiBV
bmV4cGVjdGVkIGV4aXQgY29kZTogMCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBs
YW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAg
ICAgICAgb3V0cC5wdXRzICJmaSIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0
ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIG5vbi16ZXJvIGV4aXQgc3Rh
dHVzIGFuZCBwcm9kdWNlCi0jIGxvdHMgb2Ygc3Bldy4gVGhpcyB3aWxsIGVjaG8gdGhhdCBzcGV3
IHdoZW4gdGhlIHRlc3QgZmFpbHMuCi1kZWYgbm9pc3lFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5l
dyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQi
KSkudG9fcykKLSAgICAKLSAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWls
RmlsZX0iCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
KGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29k
ZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5k
KHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQK
LSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0j
IEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21l
IGV4cGVjdGF0aW9uLgotZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKLSAg
ICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVu
YW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1l
ICsgIi5vdXQiKSkudG9fcykKLSAgICAgICAgZGlmZkZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5kaWZmIikpLnRvX3MpCi0g
ICAgICAgIAotICAgICAgICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIK
LSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7
b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0
ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5u
YW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAg
ICBvdXRwLnB1dHMgImVsaWYgdGVzdCAtZSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhw
ZWN0ZWRGaWxlbmFtZSl9IgotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAu
cHV0cyAiICAgIGRpZmYgLS1zdHJpcC10cmFpbGluZy1jciAtdSAuLi8je1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9ICN7b3V0cHV0RmlsZW5hbWV9ID4gI3tkaWZmRmls
ZW5hbWV9IgotICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBbICQ/IC1lcSAwIF0iCi0gICAgICAg
IG91dHAucHV0cyAiICAgIHRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1
Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICAgICAoZWNobyBcIkRJRkYgRkFJTFVSRSFcIiAmJiBjYXQgI3tkaWZmRmlsZW5h
bWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBv
dXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgZmkiCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgKGVjaG8gXCJOTyBFWFBFQ1RBVElPTiFcIiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwg
IiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAg
fQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkg
c2F5aW5nICJmYWlsZWQhIi4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEKLSMgdGVzdHMuCi1kZWYg
bW96aWxsYUVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFu
IHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRo
bmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAu
cHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgotICAgICAgICBvdXRwLnB1dHMgInRo
ZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNo
byBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwg
IiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVw
IC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCi0gICAgICAgIG91dHAucHV0cyAidGhl
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNh
dCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4u
bmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAg
ICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNj
ZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0jIEVycm9y
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIs
IGFuZCBhcmUgZXhwZWN0ZWQgdG8KLSMgZmFpbC4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEgdGVz
dHMuCi1kZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAg
IHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKLQot
ICAgICAgICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKLSAgICAgICAg
b3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNz
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0
cHV0RmlsZW5hbWV9IgotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gTk9USUNFOiBZb3UgbWFkZSB0aGlzIHRlc3Qg
cGFzcywgYnV0IGl0IHdhcyBleHBlY3RlZCB0byBmYWlsKSB8ICIgKyByZWRpcmVjdEFuZFByZWZp
eENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhh
bmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFu
ZCBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQotIyBhbiBleGl0IGNvZGUgb2YgMy4KLWRlZiBtb3ppbGxh
RXhpdDNFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8
Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5h
bWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1
dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVu
IgotICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBbIGBjYXQgI3twbGFuLmZhaWxGaWxlfWAgLWVx
IDMgXSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgIHRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAg
KGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsg
cmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICAg
ICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICAgICAiICsgcGxhbi5zdWNjZXNz
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgZmkiCi0gICAgICAgIG91dHAucHV0
cyAiICAgIGVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAoY2F0ICN7b3V0cHV0Rmls
ZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5m
YWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgZmkiCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBUZXN0IGV4cGVj
dGVkIHRvIGZhaWwsIGJ1dCByZXR1cm5lZCBzdWNjZXNzZnVsbHkpIHwgIiArIHJlZGlyZWN0QW5k
UHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFu
LmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJy
b3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBzYXlpbmcgIlBhc3Nl
ZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQiLgotIyBUaGlzIGlzIHVzZWQgYnkgQ2hha3Jh
IHRlc3RzLgotZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewot
ICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRv
X3MpCi0KLSAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCi0g
ICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291
dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAj
e3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFt
ZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgRkFJTEVEICN7b3V0cHV0RmlsZW5hbWV9IgotICAg
ICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIERldGVj
dGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0QW5k
UHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFu
LmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAg
ICB9Ci1lbmQKLQogJHJ1bkNvbW1hbmRPcHRpb25zID0ge30KIAotY2xhc3MgUGxhbgotICAgIGF0
dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHksIDpuYW1lLCA6b3V0cHV0
SGFuZGxlciwgOmVycm9ySGFuZGxlcgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0gICAgCi0g
ICAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0
cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5
Ci0gICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHMKLSAgICAgICAgQGZhbWlseSA9IGZhbWls
eQotICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRI
YW5kbGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAgQGlz
U2xvdyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgZW5kCi0gICAgCi0gICAg
ZGVmIHNoZWxsQ29tbWFuZAotICAgICAgICAjIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRo
YXQgdGhlIHRlc3QgaXMgYWN0dWFsbHkgcnVuIGluIGEgc3Vic2hlbGwsIHNvIGlmIHdlIGNoYW5n
ZSBkaXJlY3RvcnkKLSAgICAgICAgIyBpbiB0aGUgc3Vic2hlbGwgd2hlbiB3ZSByZXR1cm4gd2Ug
d2lsbCBiZSBpbiBvdXIgb3JpZ2luYWwgZGlyZWN0b3J5LiBUaGlzIGlzIG5pY2UgYmVjYXVzZSB3
ZSBkb24ndAotICAgICAgICAjIGhhdmUgdG8gYmVuZCBvdmVyIGJhY2t3YXJkcyB0byBkbyB0aGlu
Z3MgcmVsYXRpdmUgdG8gdGhlIHJvb3QuCi0gICAgICAgIHNjcmlwdCA9ICIoY2QgLi4vI3tTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9ICYmICgiCi0gICAgICAgICRlbnZW
YXJzLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0gImV4cG9ydCAiIDw8IHZhciA8PCAiOyAiIH0KLSAg
ICAgICAgc2NyaXB0ICs9ICJcIiRAXCIgIiArIGVzY2FwZUFsbChAYXJndW1lbnRzKSArICIpKSIK
LSAgICAgICAgcmV0dXJuIHNjcmlwdAotICAgIGVuZAotICAgIAotICAgIGRlZiByZXByb1Njcmlw
dENvbW1hbmQKLSAgICAgICAgIyBXZSBoYXZlIHRvIGZpbmQgb3VyIHdheSBiYWNrIHRvIHRoZSAu
cnVubmVyIGRpcmVjdG9yeSBzaW5jZSB0aGF0J3Mgd2hlcmUgYWxsIG9mIHRoZSByZWxhdGl2ZQot
ICAgICAgICAjIHBhdGhzIGFzc3VtZSB0aGV5IHN0YXJ0IG91dCBmcm9tLgotICAgICAgICBzY3Jp
cHQgPSAiQ1VSUkVOVF9ESVI9XCIkKCBjZCBcIiQoIGRpcm5hbWUgXCIke0JBU0hfU09VUkNFWzBd
fVwiIClcIiAmJiBwd2QgKVwiXG4iCi0gICAgICAgIHNjcmlwdCArPSAiY2QgJENVUlJFTlRfRElS
XG4iCi0gICAgICAgIFBhdGhuYW1lLm5ldyhAbmFtZSkuZGlybmFtZS5lYWNoX2ZpbGVuYW1lIHsK
LSAgICAgICAgICAgIHwgcGF0aENvbXBvbmVudCB8Ci0gICAgICAgICAgICBzY3JpcHQgKz0gImNk
IC4uXG4iCi0gICAgICAgIH0KLSAgICAgICAgc2NyaXB0ICs9ICJjZCAucnVubmVyXG4iCi0KLSAg
ICAgICAgc2NyaXB0ICs9ICJleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSD0kKGNkICN7JHRlc3Rp
bmdGcmFtZXdvcmtQYXRoLmRpcm5hbWV9OyBwd2QpXG4iCi0gICAgICAgIHNjcmlwdCArPSAiZXhw
b3J0IEpTQ1RFU1RfdGltZW91dD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydKU0NURVNU
X3RpbWVvdXQnXSl9XG4iCi0gICAgICAgICRlbnZWYXJzLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0g
ImV4cG9ydCAiIDw8IHZhciA8PCAiXG4iIH0KLSAgICAgICAgc2NyaXB0ICs9ICIje3NoZWxsQ29t
bWFuZH0gfHwgZXhpdCAxIgotICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUo
c2NyaXB0KX0gPiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSAr
IEBuYW1lKS50b19zKX0iCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIGZhaWxDb21tYW5kCi0gICAg
ICAgICJlY2hvIEZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IDsgdG91Y2gg
I3tmYWlsRmlsZX0gOyAiICsgcmVwcm9TY3JpcHRDb21tYW5kCi0gICAgZW5kCi0gICAgCi0gICAg
ZGVmIHN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIGlmICRwcm9ncmVzc01ldGVyIG9yICR2ZXJib3Np
dHkgPj0gMgotICAgICAgICAgICAgInJtIC1mICN7ZmFpbEZpbGV9IDsgZWNobyBQQVNTOiAje1No
ZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
InJtIC1mICN7ZmFpbEZpbGV9IgotICAgICAgICBlbmQKLSAgICBlbmQKLSAgICAKLSAgICBkZWYg
ZmFpbEZpbGUKLSAgICAgICAgInRlc3RfZmFpbF8je0BpbmRleH0iCi0gICAgZW5kCi0gICAgCi0g
ICAgZGVmIHdyaXRlUnVuU2NyaXB0KGZpbGVuYW1lKQotICAgICAgICBGaWxlLm9wZW4oZmlsZW5h
bWUsICJ3IikgewotICAgICAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAi
ZWNobyBSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IgotICAgICAgICAg
ICAgY21kICA9ICIoIiArIHNoZWxsQ29tbWFuZCArICIgfHwgKGVjaG8gJD8gPiAje2ZhaWxGaWxl
fSkpIDI+JjEgIgotICAgICAgICAgICAgY21kICs9IEBvdXRwdXRIYW5kbGVyLmNhbGwoQG5hbWUp
Ci0gICAgICAgICAgICBpZiAkdmVyYm9zaXR5ID49IDMKLSAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgImVjaG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGNtZCl9IgotICAgICAgICAgICAgZW5k
Ci0gICAgICAgICAgICBvdXRwLnB1dHMgY21kCi0gICAgICAgICAgICBAZXJyb3JIYW5kbGVyLmNh
bGwob3V0cCwgc2VsZikKLSAgICAgICAgfQotICAgIGVuZAotZW5kCi0KICR1bmlxdWVGaWxlbmFt
ZUNvdW50ZXIgPSAwCiBkZWYgdW5pcXVlRmlsZW5hbWUoZXh0ZW5zaW9uKQogICAgIHBheWxvYWRE
aXIgPSAkb3V0cHV0RGlyICsgIl9wYXlsb2FkIgpAQCAtMTg5NSw2MyArMTYzMSw2IEBAIGRlZiBw
cmVwYXJlVGVzdFJ1bm5lcgogICAgIGVuZAogZW5kCiAKLWRlZiBwcmVwYXJlU2hlbGxUZXN0UnVu
bmVyCi0gICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCArICJqc2Mtc3RyZXNzLXRlc3QtaGVs
cGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgJHJ1bm5lckRpciArICJydW5zY3JpcHQiCi1lbmQK
LQotZGVmIHByZXBhcmVNYWtlVGVzdFJ1bm5lcgotICAgICMgVGhlIGdvYWxzIG9mIG91ciBwYXJh
bGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuIFRoZQotICAg
ICMgc2ltcGxpY2l0eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuIFdlIGRvbid0IHdh
bnQgdG8gaGF2ZSB0byBoYXZlCi0gICAgIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBo
aWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCi0gICAgIwotICAgICMgQXMgc3Vj
aCwgd2UganVzdCBwYXNzIG9mZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0byAnbWFrZScuIFRoaXMg
Y3JlYXRlcyBhCi0gICAgIyBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5ydW5uZXIiKSBp
biB3aGljaCB3ZSBjcmVhdGUgYSBkdW1teQotICAgICMgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBo
YXMgYW4gJ2FsbCcgcnVsZSB0aGF0IGRlcGVuZHMgb24gYWxsIG9mIHRoZSB0ZXN0cy4KLSAgICAj
IFRoYXQgaXMsIGZvciBlYWNoIHRlc3Qgd2Uga25vdyB3ZSB3aWxsIHJ1biwgdGhlcmUgaXMgYSBy
dWxlIGluIHRoZQotICAgICMgTWFrZWZpbGUgYW5kICdhbGwnIGRlcGVuZHMgb24gaXQuIFJ1bm5p
bmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcwotICAgICMgTWFrZWZpbGUgcmVzdWx0cyBp
biAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6Ci0gICAgIwotICAgICMgLSBMb2Fk
IGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFs
YW5jZXIgaW4KLSAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRoZW4ganVz
dCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCi0gICAgIwotICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1
c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcwotICAgICMg
ICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB6b21iaWUgcHJv
Y2Vzc2VzLgotICAgICMKLSAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBmYWls
dXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKLSAgICAjIHRvdGFsbHkgc291bmQu
IElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0bwot
ICAgICMgc3RvcC4gV2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBmb3IgbWFrZWZpbGUt
ZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KLSAgICAjIFdlIGRvIGhhdmUgc3VjaCBhIHRoaW5nIGZv
ciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVtcwotICAgICMgYnkg
aGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBkb25l
IGluIGEgc2hlbGwKLSAgICAjIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhlcmUgaXMgb25lIHN1Y2gg
c2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCi0gICAgIyB0byBmYWlsdXJlIGJ5
IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhlbiB0b3VjaGluZyBhCi0g
ICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJucyAw
LiBUaGlzIG1ha2VzICdtYWtlJwotICAgICMgY29udGludWUgcGFzdCB0aGF0IGZhaWx1cmUgYW5k
IGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotICAgICMKLSAgICAjIEluIHRoZSBlbmQs
IHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2VhcmNoaW5nIGZv
cgotICAgICMgZmlsZXMgaW4gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hl
cyAvXnRlc3RfZmFpbF8vLCB3aGVyZQotICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8n
IGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKLSAgICAjIHdvdWxk
IGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBX
ZSdyZQotICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFzIGEgY29uY3VycmVu
dCBkYXRhYmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgotICAgICMgRXZlbiBpZiB0d28gdGVzdHMgZmFp
bCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAotICAg
ICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0gICAgcnVuSW5kaWNlcyA9IFtd
Ci0gICAgJHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIHJ1bkluZGlj
ZXMgPDwgcGxhbi5pbmRleAotICAgIH0KLSAgICAKLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciAr
ICJNYWtlZmlsZSIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMo
ImFsbDogIiArIHJ1bkluZGljZXMubWFwe3x2fCAidGVzdF9kb25lXyN7dn0ifS5qb2luKCcgJykp
Ci0gICAgICAgIHJ1bkluZGljZXMuZWFjaCB7Ci0gICAgICAgICAgICB8IGluZGV4IHwKLSAgICAg
ICAgICAgIHBsYW4gPSAkcnVubGlzdFtpbmRleF0KLSAgICAgICAgICAgIG91dHAucHV0cyAidGVz
dF9kb25lXyN7aW5kZXh9OiIKLSAgICAgICAgICAgIG91dHAucHV0cyAiXHRzaCB0ZXN0X3Njcmlw
dF8je3BsYW4uaW5kZXh9IgotICAgICAgICB9Ci0gICAgfQotZW5kCi0KIGRlZiBjbGVhblJ1bm5l
ckRpcmVjdG9yeQogICAgIHJhaXNlIHVubGVzcyAkYnVuZGxlCiAgICAgRGlyLmZvcmVhY2goJHJ1
bm5lckRpcikgewpAQCAtMjA3NywxNSArMTc1Niw2IEBAIGRlZiBydW5BbmRNb25pdG9yVGVzdFJ1
bm5lckNvbW1hbmQoKmNtZCkKIGVuZAogCiBkZWYgcnVuVGVzdFJ1bm5lcgotICAgIGNhc2UgJHRl
c3RSdW5uZXJUeXBlCi0gICAgd2hlbiA6c2hlbGwKLSAgICAgICAgdGVzdFJ1bm5lckNvbW1hbmQg
PSAic2ggcnVuc2NyaXB0IgotICAgIHdoZW4gOm1ha2UKLSAgICAgICAgdGVzdFJ1bm5lckNvbW1h
bmQgPSAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlcy50b19zfSAtcyAtZiBNYWtlZmlsZSIK
LSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJVbmtub3duIHRlc3QgcnVubmVyIHR5cGU6ICN7JHRl
c3RSdW5uZXJUeXBlLnRvX3N9IgotICAgIGVuZAotCiAgICAgaWYgJHJlbW90ZQogICAgICAgICBp
ZiAhJHJlbW90ZURpcmVjdG9yeQogICAgICAgICAgICAgJHJlbW90ZURpcmVjdG9yeSA9IEpTT046
OnBhcnNlKHNzaFJlYWQoImNhdCB+Ly5iZW5jaGVyIikpWyJ0ZW1wUGF0aCJdCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0
LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVm
YXVsdC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTBlYWIzMmM1
ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiCkBAIC0wLDAgKzEsMzg5IEBACisjIENvcHlyaWdodCAo
QykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitkZWYgcHJlZml4Q29tbWFuZChwcmVmaXgpCisgICAg
ImF3ayAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgieyBwcmludGYgI3socHJlZml4ICsgJzog
JykuaW5zcGVjdH07IHByaW50IH0iKQorZW5kCisKK2RlZiByZWRpcmVjdEFuZFByZWZpeENvbW1h
bmQocHJlZml4KQorICAgIHByZWZpeENvbW1hbmQocHJlZml4KSArICIgMj4mMSIKK2VuZAorCitk
ZWYgcGlwZUFuZFByZWZpeENvbW1hbmQob3V0cHV0RmlsZW5hbWUsIHByZWZpeCkKKyAgICAidGVl
ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKG91dHB1dEZpbGVuYW1lLnRvX3MpICsgIiB8ICIg
KyBwcmVmaXhDb21tYW5kKHByZWZpeCkKK2VuZAorCisjIE91dHB1dCBoYW5kbGVyIGZvciB0ZXN0
cyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBzaWxlbnQuCitkZWYgc2lsZW50T3V0cHV0SGFuZGxl
cgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBuYW1lIHwKKyAgICAgICAgIiB8ICIgKyBwaXBl
QW5kUHJlZml4Q29tbWFuZCgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3Ms
IG5hbWUpCisgICAgfQorZW5kCisKKyMgT3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJl
IGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQuCitkZWYgbm9pc3lPdXRwdXRI
YW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG5hbWUgfAorICAgICAgICAiIHwgY2F0
ID4gIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAi
Lm91dCIpKS50b19zKQorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRo
YXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCisj
IFRoaXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCitkZWYgc2lt
cGxlRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAor
ICAgICAgICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKKyAgICAgICAg
b3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBFUlJPUjogVW5l
eHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHJlZGlyZWN0
QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJmaSIK
KyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3Rs
eSB3aGVuIHRoZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCitkZWYgZXhwZWN0ZWRGYWlsRXJy
b3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAg
ICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKKyAgICAgICAgb3V0cC5w
dXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFu
ZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgIChlY2hv
IEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogMCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhD
b21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5k
bGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIG5vbi16ZXJv
IGV4aXQgc3RhdHVzIGFuZCBwcm9kdWNlCisjIGxvdHMgb2Ygc3Bldy4gVGhpcyB3aWxsIGVjaG8g
dGhhdCBzcGV3IHdoZW4gdGhlIHRlc3QgZmFpbHMuCitkZWYgbm9pc3lFcnJvckhhbmRsZXIKKyAg
ICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVu
YW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1l
ICsgIi5vdXQiKSkudG9fcykKKyAgICAKKyAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7
cGxhbi5mYWlsRmlsZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVk
IGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVm
aXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0K
K2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQg
d2l0aCBzb21lIGV4cGVjdGF0aW9uLgorZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxl
bmFtZSkKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91
dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAo
cGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKyAgICAgICAgZGlmZkZpbGVuYW1lID0gU2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5kaWZmIikp
LnRvX3MpCisgICAgICAgIAorICAgICAgICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZh
aWxGaWxlfSIKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBj
b2RlOiBgY2F0ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1h
bmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFu
ZAorICAgICAgICBvdXRwLnB1dHMgImVsaWYgdGVzdCAtZSAuLi8je1NoZWxsd29yZHMuc2hlbGxl
c2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIGRpZmYgLS1zdHJpcC10cmFpbGluZy1jciAtdSAuLi8je1NoZWxs
d29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9ICN7b3V0cHV0RmlsZW5hbWV9ID4g
I3tkaWZmRmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBbICQ/IC1lcSAwIF0i
CisgICAgICAgIG91dHAucHV0cyAiICAgIHRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCisgICAg
ICAgIG91dHAucHV0cyAiICAgICAgICAoZWNobyBcIkRJRkYgRkFJTFVSRSFcIiAmJiBjYXQgI3tk
aWZmRmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgZmkiCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgKGVjaG8gXCJOTyBFWFBFQ1RBVElPTiFcIiAmJiBjYXQgI3tvdXRwdXRGaWxl
bmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAi
ZmkiCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQg
ZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIi4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEKKyMgdGVz
dHMuCitkZWYgbW96aWxsYUVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBv
dXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorCisgICAg
ICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgorICAgICAgICBvdXRw
LnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFt
ZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxG
aWxlfWApIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAi
ZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAu
cHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVy
ZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21t
YW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAor
CisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAi
ZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8KKyMgZmFpbC4gVGhpcyBpcyB1c2VkIGJ5IE1v
emlsbGEgdGVzdHMuCitkZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7
CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSku
dG9fcykKKworICAgICAgICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIK
KyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWls
ZWQhICN7b3V0cHV0RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0
cyAiZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gTk9USUNFOiBZb3UgbWFkZSB0
aGlzIHRlc3QgcGFzcywgYnV0IGl0IHdhcyBleHBlY3RlZCB0byBmYWlsKSB8ICIgKyByZWRpcmVj
dEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCisj
IEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFp
bGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQorIyBhbiBleGl0IGNvZGUgb2YgMy4KK2Rl
ZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0
cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAg
ICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKKyAgICAgICAgb3V0cC5w
dXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBbIGBjYXQgI3twbGFuLmZhaWxG
aWxlfWAgLWVxIDMgXSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAg
ICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1l
fSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgZmkiCisgICAgICAg
IG91dHAucHV0cyAiICAgIGVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAoY2F0ICN7
b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0
ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5u
YW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgZmkiCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBU
ZXN0IGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCByZXR1cm5lZCBzdWNjZXNzZnVsbHkpIHwgIiArIHJl
ZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZmkiCisgICAgfQorZW5k
CisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBzYXlp
bmcgIlBhc3NlZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQiLgorIyBUaGlzIGlzIHVzZWQg
YnkgQ2hha3JhIHRlc3RzLgorZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJv
Yy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9
IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIu
b3V0IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWls
RmlsZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
KGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29k
ZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5k
KHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQK
KyAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgRkFJTEVEICN7b3V0cHV0RmlsZW5h
bWV9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgIChl
Y2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJl
ZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRz
ICJmaSIKKyAgICB9CitlbmQKKworIyRydW5Db21tYW5kT3B0aW9ucyA9IHt9CisKK2NsYXNzIFBs
YW4KKyAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFt
ZSwgOm91dHB1dEhhbmRsZXIsIDplcnJvckhhbmRsZXIKKyAgICBhdHRyX2FjY2Vzc29yIDppbmRl
eAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHks
IG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKKyAgICAgICAgQGRpcmVjdG9yeSA9
IGRpcmVjdG9yeQorICAgICAgICBAYXJndW1lbnRzID0gYXJndW1lbnRzCisgICAgICAgIEBmYW1p
bHkgPSBmYW1pbHkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgICAgIEBvdXRwdXRIYW5kbGVy
ID0gb3V0cHV0SGFuZGxlcgorICAgICAgICBAZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCisg
ICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBzaGVsbENvbW1hbmQKKyAgICAgICAgIyBJdCdzIGltcG9ydGFudCB0byBy
ZW1lbWJlciB0aGF0IHRoZSB0ZXN0IGlzIGFjdHVhbGx5IHJ1biBpbiBhIHN1YnNoZWxsLCBzbyBp
ZiB3ZSBjaGFuZ2UgZGlyZWN0b3J5CisgICAgICAgICMgaW4gdGhlIHN1YnNoZWxsIHdoZW4gd2Ug
cmV0dXJuIHdlIHdpbGwgYmUgaW4gb3VyIG9yaWdpbmFsIGRpcmVjdG9yeS4gVGhpcyBpcyBuaWNl
IGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgIyBoYXZlIHRvIGJlbmQgb3ZlciBiYWNrd2FyZHMg
dG8gZG8gdGhpbmdzIHJlbGF0aXZlIHRvIHRoZSByb290LgorICAgICAgICBzY3JpcHQgPSAiKGNk
IC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAZGlyZWN0b3J5LnRvX3MpfSAmJiAoIgorICAg
ICAgICAkZW52VmFycy5lYWNoIHsgfHZhcnwgc2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIgPDwg
IjsgIiB9CisgICAgICAgIHNjcmlwdCArPSAiXCIkQFwiICIgKyBlc2NhcGVBbGwoQGFyZ3VtZW50
cykgKyAiKSkiCisgICAgICAgIHJldHVybiBzY3JpcHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cmVwcm9TY3JpcHRDb21tYW5kCisgICAgICAgICMgV2UgaGF2ZSB0byBmaW5kIG91ciB3YXkgYmFj
ayB0byB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkgc2luY2UgdGhhdCdzIHdoZXJlIGFsbCBvZiB0aGUg
cmVsYXRpdmUKKyAgICAgICAgIyBwYXRocyBhc3N1bWUgdGhleSBzdGFydCBvdXQgZnJvbS4KKyAg
ICAgICAgc2NyaXB0ID0gIkNVUlJFTlRfRElSPVwiJCggY2QgXCIkKCBkaXJuYW1lIFwiJHtCQVNI
X1NPVVJDRVswXX1cIiApXCIgJiYgcHdkIClcIlxuIgorICAgICAgICBzY3JpcHQgKz0gImNkICRD
VVJSRU5UX0RJUlxuIgorICAgICAgICBQYXRobmFtZS5uZXcoQG5hbWUpLmRpcm5hbWUuZWFjaF9m
aWxlbmFtZSB7CisgICAgICAgICAgICB8IHBhdGhDb21wb25lbnQgfAorICAgICAgICAgICAgc2Ny
aXB0ICs9ICJjZCAuLlxuIgorICAgICAgICB9CisgICAgICAgIHNjcmlwdCArPSAiY2QgLnJ1bm5l
clxuIgorCisgICAgICAgIHNjcmlwdCArPSAiZXhwb3J0IERZTERfRlJBTUVXT1JLX1BBVEg9JChj
ZCAjeyR0ZXN0aW5nRnJhbWV3b3JrUGF0aC5kaXJuYW1lfTsgcHdkKVxuIgorICAgICAgICBzY3Jp
cHQgKz0gImV4cG9ydCBKU0NURVNUX3RpbWVvdXQ9I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEVO
VlsnSlNDVEVTVF90aW1lb3V0J10pfVxuIgorICAgICAgICAkZW52VmFycy5lYWNoIHsgfHZhcnwg
c2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIgPDwgIlxuIiB9CisgICAgICAgIHNjcmlwdCArPSAi
I3tzaGVsbENvbW1hbmR9IHx8IGV4aXQgMSIKKyAgICAgICAgImVjaG8gI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKHNjcmlwdCl9ID4gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZS5u
ZXcoIi4uIikgKyBAbmFtZSkudG9fcyl9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBmYWlsQ29t
bWFuZAorICAgICAgICAiZWNobyBGQUlMOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUp
fSA7IHRvdWNoICN7ZmFpbEZpbGV9IDsgIiArIHJlcHJvU2NyaXB0Q29tbWFuZAorICAgIGVuZAor
ICAgIAorICAgIGRlZiBzdWNjZXNzQ29tbWFuZAorICAgICAgICBpZiAkcHJvZ3Jlc3NNZXRlciBv
ciAkdmVyYm9zaXR5ID49IDIKKyAgICAgICAgICAgICJybSAtZiAje2ZhaWxGaWxlfSA7IGVjaG8g
UEFTUzogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX0iCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICJybSAtZiAje2ZhaWxGaWxlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAg
CisgICAgZGVmIGZhaWxGaWxlCisgICAgICAgICJ0ZXN0X2ZhaWxfI3tAaW5kZXh9IgorICAgIGVu
ZAorICAgIAorICAgIGRlZiB3cml0ZVJ1blNjcmlwdChmaWxlbmFtZSkKKyAgICAgICAgRmlsZS5v
cGVuKGZpbGVuYW1lLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBv
dXRwLnB1dHMgImVjaG8gUnVubmluZyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSIK
KyAgICAgICAgICAgIGNtZCAgPSAiKCIgKyBzaGVsbENvbW1hbmQgKyAiIHx8IChlY2hvICQ/ID4g
I3tmYWlsRmlsZX0pKSAyPiYxICIKKyAgICAgICAgICAgIGNtZCArPSBAb3V0cHV0SGFuZGxlci5j
YWxsKEBuYW1lKQorICAgICAgICAgICAgaWYgJHZlcmJvc2l0eSA+PSAzCisgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJlY2hvICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShjbWQpfSIKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgb3V0cC5wdXRzIGNtZAorICAgICAgICAgICAgQGVycm9y
SGFuZGxlci5jYWxsKG91dHAsIHNlbGYpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCisjIFJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSB3ZXJlIHJ1biBjb21tYW5kcyBmb3VuZCBpbiB0aGUgZmlsZSAo
JGJlbmNobWFya0RpcmVjdG9yeSArCisjICRiZW5jaG1hcmspLCBpbiB3aGljaCBjYXNlIHRob3Nl
IHJ1biBjb21tYW5kcyBoYXZlIGFscmVhZHkgYmVlbiBleGVjdXRlZC4gT3RoZXJ3aXNlCisjIHJl
dHVybnMgZmFsc2UsIGluIHdoaWNoIGNhc2UgeW91J3JlIHN1cHBvc2VkIHRvIGFkZCB5b3VyIG93
biBydW4gY29tbWFuZHMuCitkZWYgcGFyc2VSdW5Db21tYW5kcworICAgIG9sZERpZEFkZFJ1bkNv
bW1hbmQgPSAkZGlkQWRkUnVuQ29tbWFuZAorICAgICRkaWRBZGRSdW5Db21tYW5kID0gZmFsc2UK
KworICAgIERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgIEZpbGUub3BlbigkYmVuY2ht
YXJrRGlyZWN0b3J5ICsgJGJlbmNobWFyaykgeworICAgICAgICAgICAgfCBpbnAgfAorICAgICAg
ICAgICAgaW5wLmVhY2hfbGluZSB7CisgICAgICAgICAgICAgICAgfCBsaW5lIHwKKyAgICAgICAg
ICAgICAgICBiZWdpbgorICAgICAgICAgICAgICAgICAgICBkb2VzTWF0Y2ggPSBsaW5lID1+IC9e
XC9cL0AvCisgICAgICAgICAgICAgICAgcmVzY3VlIEV4Y2VwdGlvbiA9PiBlCisgICAgICAgICAg
ICAgICAgICAgICMgQXBwYXJlbnRseSB0aGlzIGhhcHBlbnMgaW4gdGhlIGNhc2Ugb2Ygc29tZSBV
VEY4IHN0dWZmIGluIHNvbWUgZmlsZXMsIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICMgUnVi
eSB0cmllcyB0byBiZSBzdHJpY3QgYW5kIHRocm93IGV4Y2VwdGlvbnMuCisgICAgICAgICAgICAg
ICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBuZXh0IHVu
bGVzcyBkb2VzTWF0Y2gKKyAgICAgICAgICAgICAgICBldmFsICR+LnBvc3RfbWF0Y2gKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9ICRkaWRBZGRSdW5Db21t
YW5kCisgICAgJGRpZEFkZFJ1bkNvbW1hbmQgPSByZXN1bHQgb3Igb2xkRGlkQWRkUnVuQ29tbWFu
ZAorICAgIHJlc3VsdAorZW5kCisKK2RlZiBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCisgICAgRmls
ZVV0aWxzLmNwIFNDUklQVFNfUEFUSCArICJqc2Mtc3RyZXNzLXRlc3QtaGVscGVycyIgKyAic2hl
bGwtcnVubmVyLnNoIiwgJHJ1bm5lckRpciArICJydW5zY3JpcHQiCitlbmQKKworZGVmIHByZXBh
cmVNYWtlVGVzdFJ1bm5lcgorICAgICMgVGhlIGdvYWxzIG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1
bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuIFRoZQorICAgICMgc2ltcGxpY2l0
eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0
byBoYXZlCisgICAgIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5n
IGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCisgICAgIworICAgICMgQXMgc3VjaCwgd2UganVzdCBw
YXNzIG9mZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0byAnbWFrZScuIFRoaXMgY3JlYXRlcyBhCisg
ICAgIyBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5ydW5uZXIiKSBpbiB3aGljaCB3ZSBj
cmVhdGUgYSBkdW1teQorICAgICMgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBoYXMgYW4gJ2FsbCcg
cnVsZSB0aGF0IGRlcGVuZHMgb24gYWxsIG9mIHRoZSB0ZXN0cy4KKyAgICAjIFRoYXQgaXMsIGZv
ciBlYWNoIHRlc3Qgd2Uga25vdyB3ZSB3aWxsIHJ1biwgdGhlcmUgaXMgYSBydWxlIGluIHRoZQor
ICAgICMgTWFrZWZpbGUgYW5kICdhbGwnIGRlcGVuZHMgb24gaXQuIFJ1bm5pbmcgJ21ha2UgLWog
PHdoYXRldmVyPicgb24gdGhpcworICAgICMgTWFrZWZpbGUgcmVzdWx0cyBpbiAnbWFrZScgZG9p
bmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6CisgICAgIworICAgICMgLSBMb2FkIGJhbGFuY2luZyBq
dXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KKyAg
ICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRoZW4ganVzdCBpbnN0YWxsIGEg
cmVhbCAnbWFrZScuCisgICAgIworICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1c3Qgd29yay4gRm9y
IGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcworICAgICMgICBleGFjdGx5IHJp
Z2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB6b21iaWUgcHJvY2Vzc2VzLgorICAg
ICMKKyAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBmYWlsdXJlIGRldGVjdGlv
biB3b3JrIGFuZCB0byBtYWtlIHRoaXMKKyAgICAjIHRvdGFsbHkgc291bmQuIElmIGEgdGVzdCBm
YWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0bworICAgICMgc3RvcC4g
V2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBmb3IgbWFrZWZpbGUtZXNjYXBpbmcgb2Yg
cGF0aCBuYW1lcy4KKyAgICAjIFdlIGRvIGhhdmUgc3VjaCBhIHRoaW5nIGZvciBzaGVsbC1lc2Nh
cGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVtcworICAgICMgYnkgaGF2aW5nIHRoZSBh
Y3R1YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwK
KyAgICAjIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhlcmUgaXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0
ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCisgICAgIyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNv
bWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhlbiB0b3VjaGluZyBhCisgICAgIyBmYWlsdXJl
IGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJucyAwLiBUaGlzIG1ha2Vz
ICdtYWtlJworICAgICMgY29udGludWUgcGFzdCB0aGF0IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFs
bCB0aGUgdGVzdHMgYW55d2F5LgorICAgICMKKyAgICAjIEluIHRoZSBlbmQsIHRoaXMgc2NyaXB0
IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2VhcmNoaW5nIGZvcgorICAgICMgZmls
ZXMgaW4gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcyAvXnRlc3RfZmFp
bF8vLCB3aGVyZQorICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8nIGlzIHRoZSB0ZXN0
IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAjIHdvdWxkIGJlIGNyZWF0ZWQg
YnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBXZSdyZQorICAgICMg
YmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFzIGEgY29uY3VycmVudCBkYXRhYmFzZSBv
ZiB0ZXN0IGZhaWx1cmVzLgorICAgICMgRXZlbiBpZiB0d28gdGVzdHMgZmFpbCBhdCB0aGUgc2Ft
ZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAorICAgICMgZmlsZXMgd2Ug
d29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCisgICAgcnVuSW5kaWNlcyA9IFtdCisgICAgJHJ1bmxp
c3QuZWFjaCB7CisgICAgICAgIHwgcGxhbiB8CisgICAgICAgIHJ1bkluZGljZXMgPDwgcGxhbi5p
bmRleAorICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJNYWtlZmlsZSIs
ICJ3IikgeworICAgICAgICB8IG91dHAgfAorICAgICAgICBvdXRwLnB1dHMoImFsbDogIiArIHJ1
bkluZGljZXMubWFwe3x2fCAidGVzdF9kb25lXyN7dn0ifS5qb2luKCcgJykpCisgICAgICAgIHJ1
bkluZGljZXMuZWFjaCB7CisgICAgICAgICAgICB8IGluZGV4IHwKKyAgICAgICAgICAgIHBsYW4g
PSAkcnVubGlzdFtpbmRleF0KKyAgICAgICAgICAgIG91dHAucHV0cyAidGVzdF9kb25lXyN7aW5k
ZXh9OiIKKyAgICAgICAgICAgIG91dHAucHV0cyAiXHRzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5k
ZXh9IgorICAgICAgICB9CisgICAgfQorZW5kCisKK2RlZiB0ZXN0UnVubmVyQ29tbWFuZAorICAg
IGNhc2UgJHRlc3RSdW5uZXJUeXBlCisgICAgd2hlbiA6c2hlbGwKKyAgICAgICAgY29tbWFuZCA9
ICJzaCBydW5zY3JpcHQiCisgICAgd2hlbiA6bWFrZQorICAgICAgICBjb21tYW5kID0gIm1ha2Ug
LWogI3skbnVtQ2hpbGRQcm9jZXNzZXMudG9fc30gLXMgLWYgTWFrZWZpbGUiCisgICAgZWxzZQor
ICAgICAgICByYWlzZSAiVW5rbm93biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0ZXN0UnVubmVyVHlw
ZS50b19zfSIKKyAgICBlbmQKKyAgICByZXR1cm4gY29tbWFuZAorZW5kCg==
</data>
<flag name="review"
          id="338122"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317628</attachid>
            <date>2017-08-08 15:21:33 -0700</date>
            <delta_ts>2017-08-08 17:18:11 -0700</delta_ts>
            <desc>Separate out script building/running from other parts of run-jsc-stress-tests</desc>
            <filename>175216-2.diff</filename>
            <type>text/plain</type>
            <size>31299</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNTBi
MDVkNjc0Zi4uYTM3Nzk2ZTUwZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wOC0wOCAgU3RlcGhhbiBTemFi
byAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CisKKyAgICAgICAgU2VwYXJhdGUganNjIHN0cmVz
cyB0ZXN0IHNjcmlwdCB3cml0ZXIgZnJvbSBydW4tanNjLXN0cmVzcy10ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLWRlZmF1bHQucmI6IEFkZGVkLgorCiAyMDE3LTA4LTA3ICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDQU5WQVNfUEFUSCBjb21waWxhdGlv
biBndWFyZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggYzYwODM5ZGVhZWQuLmU2
MTBjOTdkODVkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3Rz
CisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTQzNCw2ICs0MzQs
OCBAQCBOT19DSklUX09QVElPTlMgPSBbIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIsICItLXRo
cmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMAogQjNPMV9PUFRJT05TID0gWyItLWRlZmF1bHRC
M09wdExldmVsPTEiXQogRlRMX09QVElPTlMgPSBbIi0tdXNlRlRMSklUPXRydWUiXQogCityZXF1
aXJlX3JlbGF0aXZlICJ3ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdCIK
KwogZGVmIHNob3VsZENvbGxlY3RDb250aW51b3VzbHk/CiAgICAgJGJ1aWxkVHlwZSA9PSAicmVs
ZWFzZSIgb3IgJGZvcmNlQ29sbGVjdENvbnRpbnVvdXNseQogZW5kCkBAIC00NzEsMjc0ICs0NzMs
OCBAQCBkZWYgcGF0aFRvSGVscGVycwogICAgIHBhdGhUb0J1bmRsZVJlc291cmNlRnJvbUJlbmNo
bWFya0RpcmVjdG9yeSgiLmhlbHBlcnMiKQogZW5kCiAKLWRlZiBwcmVmaXhDb21tYW5kKHByZWZp
eCkKLSAgICAiYXdrICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKCJ7IHByaW50ZiAjeyhwcmVm
aXggKyAnOiAnKS5pbnNwZWN0fTsgcHJpbnQgfSIpCi1lbmQKLQotZGVmIHJlZGlyZWN0QW5kUHJl
Zml4Q29tbWFuZChwcmVmaXgpCi0gICAgcHJlZml4Q29tbWFuZChwcmVmaXgpICsgIiAyPiYxIgot
ZW5kCi0KLWRlZiBwaXBlQW5kUHJlZml4Q29tbWFuZChvdXRwdXRGaWxlbmFtZSwgcHJlZml4KQot
ICAgICJ0ZWUgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUob3V0cHV0RmlsZW5hbWUudG9fcykg
KyAiIHwgIiArIHByZWZpeENvbW1hbmQocHJlZml4KQotZW5kCi0KLSMgT3V0cHV0IGhhbmRsZXIg
Zm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHNpbGVudC4KLWRlZiBzaWxlbnRPdXRw
dXRIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG5hbWUgfAotICAgICAgICAiIHwg
IiArIHBpcGVBbmRQcmVmaXhDb21tYW5kKChQYXRobmFtZSgiLi4iKSArIChuYW1lICsgIi5vdXQi
KSkudG9fcywgbmFtZSkKLSAgICB9Ci1lbmQKLQotIyBPdXRwdXQgaGFuZGxlciBmb3IgdGVzdHMg
dGhhdCBhcmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIG91dHB1dC4KLWRlZiBub2lz
eU91dHB1dEhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8Ci0gICAgICAg
ICIgfCBjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAo
bmFtZSArICIub3V0IikpLnRvX3MpCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3Ig
dGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0IHN0
YXR1cy4KLSMgVGhpcyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFpbC4K
LWRlZiBzaW1wbGVFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwg
cGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9Igot
ICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIEVS
Uk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsg
cmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImZpIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFp
bCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gemVybyBleGl0IHN0YXR1cy4KLWRlZiBleHBlY3Rl
ZEZhaWxFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8
Ci0gICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgotICAgICAg
ICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgKGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAwKSB8ICIgKyByZWRpcmVjdEFu
ZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0jIEVy
cm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4g
bm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKLSMgbG90cyBvZiBzcGV3LiBUaGlzIHdp
bGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4KLWRlZiBub2lzeUVycm9ySGFu
ZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0
cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChw
bGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotICAgIAotICAgICAgICBvdXRwLnB1dHMgImlmIHRl
c3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVu
ZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVj
dEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmki
Ci0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBkaWZmIHRoZWly
IG91dHB1dCB3aXRoIHNvbWUgZXhwZWN0YXRpb24uCi1kZWYgZGlmZkVycm9ySGFuZGxlcihleHBl
Y3RlZEZpbGVuYW1lKQotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAg
ICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgi
Li4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotICAgICAgICBkaWZmRmlsZW5hbWUg
PSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAi
LmRpZmYiKSkudG9fcykKLSAgICAgICAgCi0gICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAj
e3BsYW4uZmFpbEZpbGV9IgotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAu
cHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3Rl
ZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHJlZGlyZWN0QW5kUHJl
Zml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lIC4uLyN7U2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCi0gICAgICAgIG91dHAucHV0cyAidGhl
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZGlmZiAtLXN0cmlwLXRyYWlsaW5nLWNyIC11IC4u
LyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0gI3tvdXRwdXRGaWxl
bmFtZX0gPiAje2RpZmZGaWxlbmFtZX0iCi0gICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgJD8g
LWVxIDAgXSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZWxz
ZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIChlY2hvIFwiRElGRiBGQUlMVVJFIVwiICYm
IGNhdCAje2RpZmZGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFu
Lm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAot
ICAgICAgICBvdXRwLnB1dHMgIiAgICBmaSIKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBcIk5PIEVYUEVDVEFUSU9OIVwiICYmIGNhdCAje291
dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0
cC5wdXRzICJmaSIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0
IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxs
YQotIyB0ZXN0cy4KLWRlZiBtb3ppbGxhRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAg
ICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3Mp
Ci0KLSAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCi0gICAg
ICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1
dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3Bs
YW4uZmFpbEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0
cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKLSAgICAg
ICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBEZXRlY3Rl
ZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFBy
ZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAi
ICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAg
fQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkg
c2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bwotIyBmYWlsLiBUaGlzIGlzIHVz
ZWQgYnkgTW96aWxsYSB0ZXN0cy4KLWRlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxlcgotICAgIFBy
b2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUg
PSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAi
Lm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFp
bEZpbGV9IgotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1p
IC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBOT1RJQ0U6IFlv
dSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWwpIHwgIiAr
IHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAi
ICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQot
ZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5
aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBoYXZlCi0jIGFuIGV4aXQgY29kZSBv
ZiAzLgotZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAg
ICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQot
Ci0gICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgotICAgICAg
ICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgYGNhdCAje3Bs
YW4uZmFpbEZpbGV9YCAtZXEgMyBdIgotICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0Rmls
ZW5hbWV9IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgdGhlbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0
RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAg
IG91dHAucHV0cyAiICAgICAgICBlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICBmaSIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
IChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNv
ZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFu
ZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29t
bWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICBmaSIKLSAgICAgICAgb3V0cC5wdXRzICJlbHNl
IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8g
RVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxseSkg
fCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAg
ICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBzdWNjZXNz
IGJ5IHNheWluZyAiUGFzc2VkIiBvciBlcnJvciBieSBzYXlpbmcgIkZBSUxFRCIuCi0jIFRoaXMg
aXMgdXNlZCBieSBDaGFrcmEgdGVzdHMuCi1kZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhhbmRsZXIK
LSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZp
bGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5u
YW1lICsgIi5vdXQiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgImlmIHRlc3QgLWUgI3tw
bGFuLmZhaWxGaWxlfSIKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQg
ZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVjdEFuZFByZWZp
eENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBGQUlMRUQgI3tvdXRw
dXRGaWxlbmFtZX0iCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkg
fCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBv
dXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCiAkcnVuQ29tbWFuZE9wdGlvbnMgPSB7fQogCi1j
bGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50cywgOmZhbWls
eSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVyCi0gICAgYXR0cl9hY2Nlc3Nv
ciA6aW5kZXgKLSAgICAKLSAgICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywg
ZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJl
Y3RvcnkgPSBkaXJlY3RvcnkKLSAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwotICAgICAg
ICBAZmFtaWx5ID0gZmFtaWx5Ci0gICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAb3V0cHV0
SGFuZGxlciA9IG91dHB1dEhhbmRsZXIKLSAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFu
ZGxlcgotICAgICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KLSAg
ICBlbmQKLSAgICAKLSAgICBkZWYgc2hlbGxDb21tYW5kCi0gICAgICAgICMgSXQncyBpbXBvcnRh
bnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBzdWJzaGVs
bCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQotICAgICAgICAjIGluIHRoZSBzdWJzaGVsbCB3
aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMg
aXMgbmljZSBiZWNhdXNlIHdlIGRvbid0Ci0gICAgICAgICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFj
a3dhcmRzIHRvIGRvIHRoaW5ncyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KLSAgICAgICAgc2NyaXB0
ID0gIihjZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYg
KCIKLSAgICAgICAgJGVudlZhcnMuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIgPDwg
dmFyIDw8ICI7ICIgfQotICAgICAgICBzY3JpcHQgKz0gIlwiJEBcIiAiICsgZXNjYXBlQWxsKEBh
cmd1bWVudHMpICsgIikpIgotICAgICAgICByZXR1cm4gc2NyaXB0Ci0gICAgZW5kCi0gICAgCi0g
ICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICAjIFdlIGhhdmUgdG8gZmluZCBvdXIg
d2F5IGJhY2sgdG8gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVyZSBhbGwg
b2YgdGhlIHJlbGF0aXZlCi0gICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQgb3V0IGZy
b20uCi0gICAgICAgIHNjcmlwdCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGlybmFtZSBc
IiR7QkFTSF9TT1VSQ0VbMF19XCIgKVwiICYmIHB3ZCApXCJcbiIKLSAgICAgICAgc2NyaXB0ICs9
ICJjZCAkQ1VSUkVOVF9ESVJcbiIKLSAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1l
LmVhY2hfZmlsZW5hbWUgewotICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKLSAgICAgICAg
ICAgIHNjcmlwdCArPSAiY2QgLi5cbiIKLSAgICAgICAgfQotICAgICAgICBzY3JpcHQgKz0gImNk
IC5ydW5uZXJcbiIKLQotICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBEWUxEX0ZSQU1FV09SS19Q
QVRIPSQoY2QgI3skdGVzdGluZ0ZyYW1ld29ya1BhdGguZGlybmFtZX07IHB3ZClcbiIKLSAgICAg
ICAgc2NyaXB0ICs9ICJleHBvcnQgSlNDVEVTVF90aW1lb3V0PSN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZShFTlZbJ0pTQ1RFU1RfdGltZW91dCddKX1cbiIKLSAgICAgICAgJGVudlZhcnMuZWFjaCB7
IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICJcbiIgfQotICAgICAgICBzY3Jp
cHQgKz0gIiN7c2hlbGxDb21tYW5kfSB8fCBleGl0IDEiCi0gICAgICAgICJlY2hvICN7U2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZShzY3JpcHQpfSA+ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0
aG5hbWUubmV3KCIuLiIpICsgQG5hbWUpLnRvX3MpfSIKLSAgICBlbmQKLSAgICAKLSAgICBkZWYg
ZmFpbENvbW1hbmQKLSAgICAgICAgImVjaG8gRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KEBuYW1lKX0gOyB0b3VjaCAje2ZhaWxGaWxlfSA7ICIgKyByZXByb1NjcmlwdENvbW1hbmQKLSAg
ICBlbmQKLSAgICAKLSAgICBkZWYgc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgaWYgJHByb2dyZXNz
TWV0ZXIgb3IgJHZlcmJvc2l0eSA+PSAyCi0gICAgICAgICAgICAicm0gLWYgI3tmYWlsRmlsZX0g
OyBlY2hvIFBBU1M6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IgotICAgICAgICBl
bHNlCi0gICAgICAgICAgICAicm0gLWYgI3tmYWlsRmlsZX0iCi0gICAgICAgIGVuZAotICAgIGVu
ZAotICAgIAotICAgIGRlZiBmYWlsRmlsZQotICAgICAgICAidGVzdF9mYWlsXyN7QGluZGV4fSIK
LSAgICBlbmQKLSAgICAKLSAgICBkZWYgd3JpdGVSdW5TY3JpcHQoZmlsZW5hbWUpCi0gICAgICAg
IEZpbGUub3BlbihmaWxlbmFtZSwgInciKSB7Ci0gICAgICAgICAgICB8IG91dHAgfAotICAgICAg
ICAgICAgb3V0cC5wdXRzICJlY2hvIFJ1bm5pbmcgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBu
YW1lKX0iCi0gICAgICAgICAgICBjbWQgID0gIigiICsgc2hlbGxDb21tYW5kICsgIiB8fCAoZWNo
byAkPyA+ICN7ZmFpbEZpbGV9KSkgMj4mMSAiCi0gICAgICAgICAgICBjbWQgKz0gQG91dHB1dEhh
bmRsZXIuY2FsbChAbmFtZSkKLSAgICAgICAgICAgIGlmICR2ZXJib3NpdHkgPj0gMwotICAgICAg
ICAgICAgICAgIG91dHAucHV0cyAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoY21kKX0i
Ci0gICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIG91dHAucHV0cyBjbWQKLSAgICAgICAgICAg
IEBlcnJvckhhbmRsZXIuY2FsbChvdXRwLCBzZWxmKQotICAgICAgICB9Ci0gICAgZW5kCi1lbmQK
LQogJHVuaXF1ZUZpbGVuYW1lQ291bnRlciA9IDAKIGRlZiB1bmlxdWVGaWxlbmFtZShleHRlbnNp
b24pCiAgICAgcGF5bG9hZERpciA9ICRvdXRwdXREaXIgKyAiX3BheWxvYWQiCkBAIC0xODk1LDYz
ICsxNjMxLDYgQEAgZGVmIHByZXBhcmVUZXN0UnVubmVyCiAgICAgZW5kCiBlbmQKIAotZGVmIHBy
ZXBhcmVTaGVsbFRlc3RSdW5uZXIKLSAgICBGaWxlVXRpbHMuY3AgU0NSSVBUU19QQVRIICsgImpz
Yy1zdHJlc3MtdGVzdC1oZWxwZXJzIiArICJzaGVsbC1ydW5uZXIuc2giLCAkcnVubmVyRGlyICsg
InJ1bnNjcmlwdCIKLWVuZAotCi1kZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyCi0gICAgIyBUaGUg
Z29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3QgcnVubmVyIGFyZSBzY2FsYWJpbGl0eSBhbmQgc2lt
cGxpY2l0eS4gVGhlCi0gICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9y
dGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUKLSAgICAjIGEgZnVsbC10aW1lIGNv
bnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJvdXQgcGFyYWxsZWwgdGVzdGluZy4KLSAg
ICAjCi0gICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0aGUgaGFyZCB3b3Jr
IHRvICdtYWtlJy4gVGhpcyBjcmVhdGVzIGEKLSAgICAjIGR1bW15IGRpcmVjdG9yeSAoIiRvdXRw
dXREaXIvLnJ1bm5lciIpIGluIHdoaWNoIHdlIGNyZWF0ZSBhIGR1bW15Ci0gICAgIyBNYWtlZmls
ZS4gVGhlIE1ha2VmaWxlIGhhcyBhbiAnYWxsJyBydWxlIHRoYXQgZGVwZW5kcyBvbiBhbGwgb2Yg
dGhlIHRlc3RzLgotICAgICMgVGhhdCBpcywgZm9yIGVhY2ggdGVzdCB3ZSBrbm93IHdlIHdpbGwg
cnVuLCB0aGVyZSBpcyBhIHJ1bGUgaW4gdGhlCi0gICAgIyBNYWtlZmlsZSBhbmQgJ2FsbCcgZGVw
ZW5kcyBvbiBpdC4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlzCi0gICAgIyBN
YWtlZmlsZSByZXN1bHRzIGluICdtYWtlJyBkb2luZyBhbGwgb2YgdGhlIGhhcmQgd29yazoKLSAg
ICAjCi0gICAgIyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZl
IGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgotICAgICMgICAnbWFrZScuIElmIHlvdXIgc3lzdGVt
IGRvZXNuJ3QgdGhlbiBqdXN0IGluc3RhbGwgYSByZWFsICdtYWtlJy4KLSAgICAjCi0gICAgIyAt
IEludGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4g
J21ha2UnIGlzCi0gICAgIyAgIGV4YWN0bHkgcmlnaHQuIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IHpvbWJpZSBwcm9jZXNzZXMuCi0gICAgIwotICAgICMgV2UgdGhlbiBkbyBzb21lIHRy
aWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhpcwotICAg
ICMgdG90YWxseSBzb3VuZC4gSWYgYSB0ZXN0IGZhaWxzLCB3ZSBkb24ndCB3YW50IHRoZSB3aG9s
ZSAnbWFrZScgam9iIHRvCi0gICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2ls
aXR5IGZvciBtYWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgotICAgICMgV2UgZG8gaGF2
ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdlIGZpeCBib3RoIHBy
b2JsZW1zCi0gICAgIyBieSBoYXZpbmcgdGhlIGFjdHVhbCB3b3JrIGZvciBlYWNoIG9mIHRoZSB0
ZXN0IHJ1bGVzIGJlIGRvbmUgaW4gYSBzaGVsbAotICAgICMgc2NyaXB0IG9uIHRoZSBzaWRlLiBU
aGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9uZHMKLSAg
ICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0
aGVuIHRvdWNoaW5nIGEKLSAgICAjIGZhaWx1cmUgZmlsZSBmb3IgdGhhdCB0ZXN0LCBidXQgdGhl
biBzdGlsbCByZXR1cm5zIDAuIFRoaXMgbWFrZXMgJ21ha2UnCi0gICAgIyBjb250aW51ZSBwYXN0
IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3YXkuCi0gICAgIwot
ICAgICMgSW4gdGhlIGVuZCwgdGhpcyBzY3JpcHQgY29sbGVjdHMgYWxsIG9mIHRoZSBmYWlsdXJl
cyBieSBzZWFyY2hpbmcgZm9yCi0gICAgIyBmaWxlcyBpbiB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkg
d2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJlCi0gICAgIyB0aGUgdGhpbmcg
YWZ0ZXIgdGhlICdmYWlsXycgaXMgdGhlIHRlc3QgaW5kZXguIFRob3NlIGFyZSB0aGUgZmlsZXMg
dGhhdAotICAgICMgd291bGQgYmUgY3JlYXRlZCBieSB0aGUgdGVzdCBzY3JpcHRzIGlmIHRoZXkg
ZGV0ZWN0IGZhaWx1cmUuIFdlJ3JlCi0gICAgIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0
ZW0gYXMgYSBjb25jdXJyZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCi0gICAgIyBFdmVu
IGlmIHR3byB0ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRoZXkncmUgdG91Y2hp
bmcgZGlmZmVyZW50Ci0gICAgIyBmaWxlcyB3ZSB3b24ndCBtaXNzIGFueSBmYWlsdXJlcy4KLSAg
ICBydW5JbmRpY2VzID0gW10KLSAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgfCBwbGFuIHwK
LSAgICAgICAgcnVuSW5kaWNlcyA8PCBwbGFuLmluZGV4Ci0gICAgfQotICAgIAotICAgIEZpbGUu
b3BlbigkcnVubmVyRGlyICsgIk1ha2VmaWxlIiwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0g
ICAgICAgIG91dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVf
I3t2fSJ9LmpvaW4oJyAnKSkKLSAgICAgICAgcnVuSW5kaWNlcy5lYWNoIHsKLSAgICAgICAgICAg
IHwgaW5kZXggfAotICAgICAgICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQotICAgICAgICAg
ICAgb3V0cC5wdXRzICJ0ZXN0X2RvbmVfI3tpbmRleH06IgotICAgICAgICAgICAgb3V0cC5wdXRz
ICJcdHNoIHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iCi0gICAgICAgIH0KLSAgICB9Ci1lbmQK
LQogZGVmIGNsZWFuUnVubmVyRGlyZWN0b3J5CiAgICAgcmFpc2UgdW5sZXNzICRidW5kbGUKICAg
ICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7CkBAIC0yMDc3LDE1ICsxNzU2LDYgQEAgZGVmIHJ1
bkFuZE1vbml0b3JUZXN0UnVubmVyQ29tbWFuZCgqY21kKQogZW5kCiAKIGRlZiBydW5UZXN0UnVu
bmVyCi0gICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDpzaGVsbAotICAgICAgICB0
ZXN0UnVubmVyQ29tbWFuZCA9ICJzaCBydW5zY3JpcHQiCi0gICAgd2hlbiA6bWFrZQotICAgICAg
ICB0ZXN0UnVubmVyQ29tbWFuZCA9ICJtYWtlIC1qICN7JG51bUNoaWxkUHJvY2Vzc2VzLnRvX3N9
IC1zIC1mIE1ha2VmaWxlIgotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBy
dW5uZXIgdHlwZTogI3skdGVzdFJ1bm5lclR5cGUudG9fc30iCi0gICAgZW5kCi0KICAgICBpZiAk
cmVtb3RlCiAgICAgICAgIGlmICEkcmVtb3RlRGlyZWN0b3J5CiAgICAgICAgICAgICAkcmVtb3Rl
RGlyZWN0b3J5ID0gSlNPTjo6cGFyc2Uoc3NoUmVhZCgiY2F0IH4vLmJlbmNoZXIiKSlbInRlbXBQ
YXRoIl0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLWRlZmF1bHQucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4zMTExODMwZDljYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIKQEAgLTAsMCArMSwzNTcg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2RlZiBwcmVmaXhDb21t
YW5kKHByZWZpeCkKKyAgICAiYXdrICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKCJ7IHByaW50
ZiAjeyhwcmVmaXggKyAnOiAnKS5pbnNwZWN0fTsgcHJpbnQgfSIpCitlbmQKKworZGVmIHJlZGly
ZWN0QW5kUHJlZml4Q29tbWFuZChwcmVmaXgpCisgICAgcHJlZml4Q29tbWFuZChwcmVmaXgpICsg
IiAyPiYxIgorZW5kCisKK2RlZiBwaXBlQW5kUHJlZml4Q29tbWFuZChvdXRwdXRGaWxlbmFtZSwg
cHJlZml4KQorICAgICJ0ZWUgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUob3V0cHV0RmlsZW5h
bWUudG9fcykgKyAiIHwgIiArIHByZWZpeENvbW1hbmQocHJlZml4KQorZW5kCisKKyMgT3V0cHV0
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHNpbGVudC4KK2RlZiBz
aWxlbnRPdXRwdXRIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG5hbWUgfAorICAg
ICAgICAiIHwgIiArIHBpcGVBbmRQcmVmaXhDb21tYW5kKChQYXRobmFtZSgiLi4iKSArIChuYW1l
ICsgIi5vdXQiKSkudG9fcywgbmFtZSkKKyAgICB9CitlbmQKKworIyBPdXRwdXQgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIG91dHB1dC4K
K2RlZiBub2lzeU91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgbmFtZSB8
CisgICAgICAgICIgfCBjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUo
Ii4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFu
ZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVy
byBleGl0IHN0YXR1cy4KKyMgVGhpcyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQg
dG8gZmFpbC4KK2RlZiBzaW1wbGVFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAg
IHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFp
bEZpbGV9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAg
IChlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9
YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNl
IgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAg
ICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3Rz
IHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gemVybyBleGl0IHN0YXR1cy4KK2Rl
ZiBleHBlY3RlZEZhaWxFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0
cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9
IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgKGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAwKSB8ICIgKyBy
ZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2Vu
ZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhl
eSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKKyMgbG90cyBvZiBzcGV3
LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4KK2RlZiBub2lz
eUVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAg
ICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgi
Li4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgIAorICAgICAgICBvdXRwLnB1
dHMgImlmIHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVu
IgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8g
RVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIg
KyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAu
cHV0cyAiZmkiCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBk
aWZmIHRoZWlyIG91dHB1dCB3aXRoIHNvbWUgZXhwZWN0YXRpb24uCitkZWYgZGlmZkVycm9ySGFu
ZGxlcihleHBlY3RlZEZpbGVuYW1lKQorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBw
bGFuIHwKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQ
YXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBkaWZm
RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFu
Lm5hbWUgKyAiLmRpZmYiKSkudG9fcykKKyAgICAgICAgCisgICAgICAgIG91dHAucHV0cyAiaWYg
dGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjog
VW5leHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHJlZGly
ZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lIC4uLyN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCisgICAgICAgIG91dHAu
cHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgZGlmZiAtLXN0cmlwLXRyYWlsaW5n
LWNyIC11IC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0gI3tv
dXRwdXRGaWxlbmFtZX0gPiAje2RpZmZGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0cyAiICAg
IGlmIFsgJD8gLWVxIDAgXSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIChlY2hvIFwiRElGRiBGQUlM
VVJFIVwiICYmIGNhdCAje2RpZmZGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29t
bWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBmaSIKKyAgICAgICAgb3V0cC5wdXRzICJl
bHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBcIk5PIEVYUEVDVEFUSU9OIVwiICYm
IGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBs
YW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAg
ICAgICAgb3V0cC5wdXRzICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0
ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLiBUaGlzIGlzIHVzZWQg
YnkgTW96aWxsYQorIyB0ZXN0cy4KK2RlZiBtb3ppbGxhRXJyb3JIYW5kbGVyCisgICAgUHJvYy5u
ZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNo
ZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0
IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmls
ZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGNh
dCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTog
YGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBs
YW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAg
ICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1l
fSIKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNo
byBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRp
cmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAi
ICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAgICAgIG91
dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAi
ZmkiCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQg
ZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bworIyBmYWlsLiBU
aGlzIGlzIHVzZWQgYnkgTW96aWxsYSB0ZXN0cy4KK2RlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxl
cgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cHV0
RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFu
Lm5hbWUgKyAiLm91dCIpKS50b19zKQorCisgICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAj
e3BsYW4uZmFpbEZpbGV9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxp
ZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0
cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQK
KyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBO
T1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZh
aWwpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91
dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZmki
CisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJy
b3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBoYXZlCisjIGFuIGV4
aXQgY29kZSBvZiAzLgorZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgorICAgIFByb2MubmV3
IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIp
KS50b19zKQorCisgICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9
IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsg
YGNhdCAje3BsYW4uZmFpbEZpbGV9YCAtZXEgMyBdIgorICAgICAgICBvdXRwLnB1dHMgIiAgICB0
aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7
b3V0cHV0RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgdGhlbiIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0
ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5u
YW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5k
CisgICAgICAgIG91dHAucHV0cyAiICAgICAgICBlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAg
ICAgICBmaSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3Rl
ZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHJlZGlyZWN0QW5kUHJl
Zml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxh
bi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBmaSIKKyAgICAgICAgb3V0cC5w
dXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9
ICYmIGVjaG8gRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nl
c3NmdWxseSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRz
ICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9y
dCBzdWNjZXNzIGJ5IHNheWluZyAiUGFzc2VkIiBvciBlcnJvciBieSBzYXlpbmcgIkZBSUxFRCIu
CisjIFRoaXMgaXMgdXNlZCBieSBDaGFrcmEgdGVzdHMuCitkZWYgY2hha3JhUGFzc0ZhaWxFcnJv
ckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAg
IG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikg
KyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgImlmIHRl
c3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVu
ZXhwZWN0ZWQgZXhpdCBjb2RlOiBgY2F0ICN7cGxhbi5mYWlsRmlsZX1gKSB8ICIgKyByZWRpcmVj
dEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBGQUlM
RUQgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZp
bGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRz
ICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAor
ICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCitjbGFzcyBQbGFuCisgICAgYXR0
cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRI
YW5kbGVyLCA6ZXJyb3JIYW5kbGVyCisgICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRw
dXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCisgICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkK
KyAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cworICAgICAgICBAZmFtaWx5ID0gZmFtaWx5
CisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91dHB1dEhh
bmRsZXIKKyAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgorICAgICAgICBAaXNT
bG93ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgc2hlbGxDb21tYW5kCisgICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhh
dCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28gaWYgd2UgY2hhbmdl
IGRpcmVjdG9yeQorICAgICAgICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3
aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmljZSBiZWNhdXNlIHdl
IGRvbid0CisgICAgICAgICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRzIHRvIGRvIHRoaW5n
cyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KKyAgICAgICAgc2NyaXB0ID0gIihjZCAuLi8je1NoZWxs
d29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgKCIKKyAgICAgICAgJGVudlZh
cnMuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICI7ICIgfQorICAg
ICAgICBzY3JpcHQgKz0gIlwiJEBcIiAiICsgZXNjYXBlQWxsKEBhcmd1bWVudHMpICsgIikpIgor
ICAgICAgICByZXR1cm4gc2NyaXB0CisgICAgZW5kCisgICAgCisgICAgZGVmIHJlcHJvU2NyaXB0
Q29tbWFuZAorICAgICAgICAjIFdlIGhhdmUgdG8gZmluZCBvdXIgd2F5IGJhY2sgdG8gdGhlIC5y
dW5uZXIgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVyZSBhbGwgb2YgdGhlIHJlbGF0aXZlCisg
ICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQgb3V0IGZyb20uCisgICAgICAgIHNjcmlw
dCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGlybmFtZSBcIiR7QkFTSF9TT1VSQ0VbMF19
XCIgKVwiICYmIHB3ZCApXCJcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJjZCAkQ1VSUkVOVF9ESVJc
biIKKyAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1lLmVhY2hfZmlsZW5hbWUgewor
ICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKKyAgICAgICAgICAgIHNjcmlwdCArPSAiY2Qg
Li5cbiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQgKz0gImNkIC5ydW5uZXJcbiIKKworICAg
ICAgICBzY3JpcHQgKz0gImV4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIPSQoY2QgI3skdGVzdGlu
Z0ZyYW1ld29ya1BhdGguZGlybmFtZX07IHB3ZClcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJleHBv
cnQgSlNDVEVTVF90aW1lb3V0PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShFTlZbJ0pTQ1RFU1Rf
dGltZW91dCddKX1cbiIKKyAgICAgICAgJGVudlZhcnMuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAi
ZXhwb3J0ICIgPDwgdmFyIDw8ICJcbiIgfQorICAgICAgICBzY3JpcHQgKz0gIiN7c2hlbGxDb21t
YW5kfSB8fCBleGl0IDEiCisgICAgICAgICJlY2hvICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShz
Y3JpcHQpfSA+ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUubmV3KCIuLiIpICsg
QG5hbWUpLnRvX3MpfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZmFpbENvbW1hbmQKKyAgICAg
ICAgImVjaG8gRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX0gOyB0b3VjaCAj
e2ZhaWxGaWxlfSA7ICIgKyByZXByb1NjcmlwdENvbW1hbmQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3IgJHZlcmJvc2l0
eSA+PSAyCisgICAgICAgICAgICAicm0gLWYgI3tmYWlsRmlsZX0gOyBlY2hvIFBBU1M6ICN7U2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAi
cm0gLWYgI3tmYWlsRmlsZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBm
YWlsRmlsZQorICAgICAgICAidGVzdF9mYWlsXyN7QGluZGV4fSIKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgd3JpdGVSdW5TY3JpcHQoZmlsZW5hbWUpCisgICAgICAgIEZpbGUub3BlbihmaWxlbmFt
ZSwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgb3V0cC5wdXRzICJl
Y2hvIFJ1bm5pbmcgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX0iCisgICAgICAgICAg
ICBjbWQgID0gIigiICsgc2hlbGxDb21tYW5kICsgIiB8fCAoZWNobyAkPyA+ICN7ZmFpbEZpbGV9
KSkgMj4mMSAiCisgICAgICAgICAgICBjbWQgKz0gQG91dHB1dEhhbmRsZXIuY2FsbChAbmFtZSkK
KyAgICAgICAgICAgIGlmICR2ZXJib3NpdHkgPj0gMworICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoY21kKX0iCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgIG91dHAucHV0cyBjbWQKKyAgICAgICAgICAgIEBlcnJvckhhbmRsZXIuY2Fs
bChvdXRwLCBzZWxmKQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworZGVmIHByZXBhcmVTaGVs
bFRlc3RSdW5uZXIKKyAgICBGaWxlVXRpbHMuY3AgU0NSSVBUU19QQVRIICsgImpzYy1zdHJlc3Mt
dGVzdC1oZWxwZXJzIiArICJzaGVsbC1ydW5uZXIuc2giLCAkcnVubmVyRGlyICsgInJ1bnNjcmlw
dCIKK2VuZAorCitkZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyCisgICAgIyBUaGUgZ29hbHMgb2Yg
b3VyIHBhcmFsbGVsIHRlc3QgcnVubmVyIGFyZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4g
VGhlCisgICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2Ug
ZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUKKyAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9y
IGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJvdXQgcGFyYWxsZWwgdGVzdGluZy4KKyAgICAjCisgICAg
IyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtl
Jy4gVGhpcyBjcmVhdGVzIGEKKyAgICAjIGR1bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1
bm5lciIpIGluIHdoaWNoIHdlIGNyZWF0ZSBhIGR1bW15CisgICAgIyBNYWtlZmlsZS4gVGhlIE1h
a2VmaWxlIGhhcyBhbiAnYWxsJyBydWxlIHRoYXQgZGVwZW5kcyBvbiBhbGwgb2YgdGhlIHRlc3Rz
LgorICAgICMgVGhhdCBpcywgZm9yIGVhY2ggdGVzdCB3ZSBrbm93IHdlIHdpbGwgcnVuLCB0aGVy
ZSBpcyBhIHJ1bGUgaW4gdGhlCisgICAgIyBNYWtlZmlsZSBhbmQgJ2FsbCcgZGVwZW5kcyBvbiBp
dC4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlzCisgICAgIyBNYWtlZmlsZSBy
ZXN1bHRzIGluICdtYWtlJyBkb2luZyBhbGwgb2YgdGhlIGhhcmQgd29yazoKKyAgICAjCisgICAg
IyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQg
bG9hZCBiYWxhbmNlciBpbgorICAgICMgICAnbWFrZScuIElmIHlvdXIgc3lzdGVtIGRvZXNuJ3Qg
dGhlbiBqdXN0IGluc3RhbGwgYSByZWFsICdtYWtlJy4KKyAgICAjCisgICAgIyAtIEludGVycnVw
dGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlz
CisgICAgIyAgIGV4YWN0bHkgcmlnaHQuIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHpv
bWJpZSBwcm9jZXNzZXMuCisgICAgIworICAgICMgV2UgdGhlbiBkbyBzb21lIHRyaWNrcyB0byBt
YWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhpcworICAgICMgdG90YWxs
eSBzb3VuZC4gSWYgYSB0ZXN0IGZhaWxzLCB3ZSBkb24ndCB3YW50IHRoZSB3aG9sZSAnbWFrZScg
am9iIHRvCisgICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZvciBt
YWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICMgV2UgZG8gaGF2ZSBzdWNoIGEg
dGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCisg
ICAgIyBieSBoYXZpbmcgdGhlIGFjdHVhbCB3b3JrIGZvciBlYWNoIG9mIHRoZSB0ZXN0IHJ1bGVz
IGJlIGRvbmUgaW4gYSBzaGVsbAorICAgICMgc2NyaXB0IG9uIHRoZSBzaWRlLiBUaGVyZSBpcyBv
bmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9uZHMKKyAgICAjIHRvIGZh
aWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0aGVuIHRvdWNo
aW5nIGEKKyAgICAjIGZhaWx1cmUgZmlsZSBmb3IgdGhhdCB0ZXN0LCBidXQgdGhlbiBzdGlsbCBy
ZXR1cm5zIDAuIFRoaXMgbWFrZXMgJ21ha2UnCisgICAgIyBjb250aW51ZSBwYXN0IHRoYXQgZmFp
bHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3YXkuCisgICAgIworICAgICMgSW4g
dGhlIGVuZCwgdGhpcyBzY3JpcHQgY29sbGVjdHMgYWxsIG9mIHRoZSBmYWlsdXJlcyBieSBzZWFy
Y2hpbmcgZm9yCisgICAgIyBmaWxlcyBpbiB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkgd2hvc2UgbmFt
ZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJlCisgICAgIyB0aGUgdGhpbmcgYWZ0ZXIgdGhl
ICdmYWlsXycgaXMgdGhlIHRlc3QgaW5kZXguIFRob3NlIGFyZSB0aGUgZmlsZXMgdGhhdAorICAg
ICMgd291bGQgYmUgY3JlYXRlZCBieSB0aGUgdGVzdCBzY3JpcHRzIGlmIHRoZXkgZGV0ZWN0IGZh
aWx1cmUuIFdlJ3JlCisgICAgIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBj
b25jdXJyZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCisgICAgIyBFdmVuIGlmIHR3byB0
ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRoZXkncmUgdG91Y2hpbmcgZGlmZmVy
ZW50CisgICAgIyBmaWxlcyB3ZSB3b24ndCBtaXNzIGFueSBmYWlsdXJlcy4KKyAgICBydW5JbmRp
Y2VzID0gW10KKyAgICAkcnVubGlzdC5lYWNoIHsKKyAgICAgICAgfCBwbGFuIHwKKyAgICAgICAg
cnVuSW5kaWNlcyA8PCBwbGFuLmluZGV4CisgICAgfQorICAgIAorICAgIEZpbGUub3BlbigkcnVu
bmVyRGlyICsgIk1ha2VmaWxlIiwgInciKSB7CisgICAgICAgIHwgb3V0cCB8CisgICAgICAgIG91
dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9Lmpv
aW4oJyAnKSkKKyAgICAgICAgcnVuSW5kaWNlcy5lYWNoIHsKKyAgICAgICAgICAgIHwgaW5kZXgg
fAorICAgICAgICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQorICAgICAgICAgICAgb3V0cC5w
dXRzICJ0ZXN0X2RvbmVfI3tpbmRleH06IgorICAgICAgICAgICAgb3V0cC5wdXRzICJcdHNoIHRl
c3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iCisgICAgICAgIH0KKyAgICB9CitlbmQKKworZGVmIHRl
c3RSdW5uZXJDb21tYW5kCisgICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKKyAgICB3aGVuIDpzaGVs
bAorICAgICAgICBjb21tYW5kID0gInNoIHJ1bnNjcmlwdCIKKyAgICB3aGVuIDptYWtlCisgICAg
ICAgIGNvbW1hbmQgPSAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlcy50b19zfSAtcyAtZiBN
YWtlZmlsZSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJVbmtub3duIHRlc3QgcnVubmVyIHR5
cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9IgorICAgIGVuZAorICAgIHJldHVybiBjb21tYW5k
CitlbmQK
</data>

          </attachment>
      

    </bug>

</bugzilla>