<?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>100805</bug_id>
          
          <creation_ts>2012-10-30 19:45:17 -0700</creation_ts>
          <short_desc>garden-o-matic should work for local results</short_desc>
          <delta_ts>2012-10-31 12:36:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754901</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 19:45:17 -0700</bug_when>
    <thetext>garden-o-matic should work for local results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754903</commentid>
    <comment_count>1</comment_count>
      <attachid>171569</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 19:46:57 -0700</bug_when>
    <thetext>Created attachment 171569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754905</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 19:48:54 -0700</bug_when>
    <thetext>Next step in getting g-o-m to replace rebaseline-server. This roughly works for examining the failures for a single bot, but the UI is clearly the g-o-m UI and is not yet tuned for this use case.

I haven&apos;t yet tried the &quot;rebaseline&quot; part yet (but I suspect it&apos;ll just work).

Patch still needs tests and another once-over for cleanup. 

Adam, any thoughts on the approach to serving the local files statically? It seems like I&apos;m fighting w/ CSP and CORS here and perhaps there&apos;s a better way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754928</commentid>
    <comment_count>3</comment_count>
      <attachid>171569</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-30 21:08:36 -0700</bug_when>
    <thetext>Comment on attachment 171569
Patch

LGTM. I&apos;ll leave it for Adam to take a look though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755411</commentid>
    <comment_count>4</comment_count>
      <attachid>171569</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 10:08:56 -0700</bug_when>
    <thetext>Comment on attachment 171569
Patch

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

This seems like a reasonable approach.  I&apos;m surprised we didn&apos;t need to add CORS headers.  Perhaps we do that already?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:35
&gt; -                                         img-src &apos;self&apos; https://ajax.googleapis.com http://build.chromium.org http://build.webkit.org file:;
&gt; +                                         img-src &apos;self&apos; https://ajax.googleapis.com http://build.chromium.org http://build.webkit.org file: http://127.0.0.1:8127;

You&apos;ll probably need to add this to media-src and frame-src as well.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:192
&gt; +    return resultsDirectoryListingURL(platform, builderName) + &apos;results/layout-test-results&apos;;

Why did you delete the kLayoutTestResultsPath constant?

&gt; Tools/Scripts/webkitpy/tool/servers/gardeningserver.py:139
&gt; +        if not filesystem.isabs(path) and self.server.options.results_directory:
&gt; +            fullpath = filesystem.abspath(filesystem.join(self.server.options.results_directory, path))

Can we add some to defend against directory traversal here?  Perhaps check that fullpath is actually inside results_directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755527</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 12:12:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 171569 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171569&amp;action=review
&gt; 
&gt; This seems like a reasonable approach.  I&apos;m surprised we didn&apos;t need to add CORS headers.  Perhaps we do that already?
&gt; 

Nope, they&apos;re turned off. Which requests did you think needed CORS?

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:35
&gt; &gt; -                                         img-src &apos;self&apos; https://ajax.googleapis.com http://build.chromium.org http://build.webkit.org file:;
&gt; &gt; +                                         img-src &apos;self&apos; https://ajax.googleapis.com http://build.chromium.org http://build.webkit.org file: http://127.0.0.1:8127;
&gt; 
&gt; You&apos;ll probably need to add this to media-src and frame-src as well.
&gt; 

Will do.

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:192
&gt; &gt; +    return resultsDirectoryListingURL(platform, builderName) + &apos;results/layout-test-results&apos;;
&gt; 
&gt; Why did you delete the kLayoutTestResultsPath constant?
&gt;

It was only being used in one place and I had to change it anyway to get rid of the duplication between
resultsDirectoryURL() and resultsDirectoryListingURL().
  
&gt; &gt; Tools/Scripts/webkitpy/tool/servers/gardeningserver.py:139
&gt; &gt; +        if not filesystem.isabs(path) and self.server.options.results_directory:
&gt; &gt; +            fullpath = filesystem.abspath(filesystem.join(self.server.options.results_directory, path))
&gt; 
&gt; Can we add some to defend against directory traversal here?  Perhaps check that fullpath is actually inside results_directory?

Good idea. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755544</commentid>
    <comment_count>6</comment_count>
      <attachid>171704</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 12:32:24 -0700</bug_when>
    <thetext>Created attachment 171704
update w/ review feedback, clean up, add tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755548</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 12:36:16 -0700</bug_when>
    <thetext>Committed r133061: &lt;http://trac.webkit.org/changeset/133061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171569</attachid>
            <date>2012-10-30 19:46:57 -0700</date>
            <delta_ts>2012-10-31 12:32:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100805-20121030194521.patch</filename>
            <type>text/plain</type>
            <size>28763</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTNkNWM3ZWNmNmI0NjRkNzg4MWYwNjc3MmNiNGM3NjRi
YjEwNWUzYi4uOWVmNmQyYjU4NGJiOWU3MGZiOWZjNzViZDdlZjExZDcwMGQyMDdmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDEyLTEwLTMwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCB3b3JrIGZvciBsb2NhbCByZXN1bHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBu
ZXh0IHN0ZXAgaW4gbWFraW5nIGdhcmRlbi1vLW1hdGljIHJlcGxhY2UKKyAgICAgICAgJ3dlYmtp
dC1wYXRjaCByZWJhc2VsaW5lLXNlcnZlcicgYW5kIGJlIGFibGUgdG8gZGVhbCB3aXRoIGxvY2Fs
CisgICAgICAgIHJlc3VsdHMuIGdhcmRlbi1vLW1hdGljIG5vdyBhY2NlcHRzIGEgJy0tcmVzdWx0
cy1kaXJlY3RvcnknIG9wdGlvbgorICAgICAgICB0aGF0IHdpbGwgcG9pbnQgdG8gYSBsYXlvdXQt
dGVzdC1yZXN1bHRzIGRpcmVjdG9yeS4gQXQgdGhlIG1vbWVudAorICAgICAgICB0aGlzIHdpbGwg
b25seSB3b3JrIGlmIHlvdSBhcmUgYWxzbyBmaWx0ZXJpbmcgdG8gYSBzaW5nbGUgYm90LworICAg
ICAgICBwbGF0Zm9ybSBhdCBhIHRpbWUgKHdlIGNhbid0IGhhbmRsZSBtdWx0aXBsZSBib3RzJyB3
b3J0aCBvZiBsb2NhbAorICAgICAgICByZXN1bHRzLCBidXQgdGhhdCBpcyBhIGxvZ2ljYWwgbmV4
dCBzdGVwKS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sOgorICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZpZy5qczoKKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9yZXN1bHRzLmpzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9nYXJkZW5vbWF0aWMucHk6CisgICAgICAgIChHYXJkZW5PTWF0aWMuX19pbml0X18pOgor
ICAgICAgICAoR2FyZGVuT01hdGljLmV4ZWN1dGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorICAgICAgICAoQWJzdHJhY3RSZWJhc2Vs
aW5pbmdDb21tYW5kKToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0Ll9faW5pdF9fKToKKyAgICAg
ICAgKFJlYmFzZWxpbmVUZXN0Ll9yZWJhc2VsaW5lX3Rlc3QpOgorICAgICAgICAoUmViYXNlbGlu
ZVRlc3QuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucyk6CisgICAgICAg
IChSZWJhc2VsaW5lVGVzdC5leGVjdXRlKToKKyAgICAgICAgKEFic3RyYWN0UGFyYWxsZWxSZWJh
c2VsaW5lQ29tbWFuZC5fcmViYXNlbGluZV9jb21tYW5kcyk6CisgICAgICAgIChBYnN0cmFjdFBh
cmFsbGVsUmViYXNlbGluZUNvbW1hbmQuX3JlYmFzZWxpbmUpOgorICAgICAgICAoUmViYXNlbGlu
ZUpzb24uX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5OgorICAgICAgICAoX0Jhc2VUZXN0Q2FzZSk6CisgICAg
ICAgICh0ZXN0X3JlYmFzZWxpbmVfdXBkYXRlc19leHBlY3RhdGlvbnNfZmlsZSk6CisgICAgICAg
ICh0ZXN0X3JlYmFzZWxpbmVfZG9lc19ub3RfaW5jbHVkZV9vdmVycmlkZXMpOgorICAgICAgICAo
dGVzdF9yZWJhc2VsaW5lX3Rlc3QpOgorICAgICAgICAodGVzdF9yZWJhc2VsaW5lX3Rlc3RfYW5k
X3ByaW50X3NjbV9jaGFuZ2VzKToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90
ZXN0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0X25vX2V4aXN0aW5n
X3Jlc3VsdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF93aXRoX2xp
b25fcmVzdWx0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV9ub19vdmVyd3Jp
dGVfdGVzdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdGVzdF9pbnRlcm5hbF93aXRoX21v
dmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNv
bi50ZXN0X3JlYmFzZWxpbmVfYWxsKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNvbi50ZXN0
X3JlYmFzZWxpbmVfZGVidWcpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVKc29uLnRlc3RfbW92
ZV9vdmVyd3JpdHRlbik6CisgICAgICAgIChUZXN0UmViYXNlbGluZUpzb24udGVzdF9ub19vcHRp
bWl6ZSk6CisgICAgICAgIChUZXN0UmViYXNlbGluZUV4cGVjdGF0aW9ucy50ZXN0X3JlYmFzZWxp
bmVfZXhwZWN0YXRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVy
cy9nYXJkZW5pbmdzZXJ2ZXIucHk6CisgICAgICAgIChHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRs
ZXIucmViYXNlbGluZWFsbCk6CisgICAgICAgIChHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIp
OgorICAgICAgICAoR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyLmxvY2FscmVzdWx0KToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWZsZWN0aW9uaGFuZGxlci5w
eToKKyAgICAgICAgKFJlZmxlY3Rpb25IYW5kbGVyLmRvX1BPU1QpOgorICAgICAgICAoUmVmbGVj
dGlvbkhhbmRsZXIpOgorICAgICAgICAoUmVmbGVjdGlvbkhhbmRsZXIuZG9fSEVBRCk6CisKKzIw
MTItMTAtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
Z2FyZGVuLW8tbWF0aWMgc2hvdWxkIHN1cHBvcnQgZ2FyZGVuaW5nIGEgc2luZ2xlIHBvcnQgYW5k
IHNwZWNpZnlpbmcgaG93IHRvIGRlYWwgd2l0aCBvdmVyd3JpdHRlbiBiYXNlbGluZXMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDU2MwogCmRpZmYg
LS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbCBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCmluZGV4IDJjMjhmYmU4MzVmMWJlMzkyOGYzMGJiMzdi
N2EzNDY1ZTdjYmNmNmYuLmViMDI3MjdlYjhkMzgzMmMwYWI5YWY5ZjAwMmY0MWRhYWE0Y2E2Njkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCisrKyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCkBAIC0zMiw3ICszMiw3IEBAIEphbWVz
LCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5naGFtLCBVSy4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LXNyYyAnc2VsZicgZmlsZTogaHR0cHM6Ly9h
amF4Lmdvb2dsZWFwaXMuY29tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyBmaWxlOiBodHRwczovL2FqYXgu
Z29vZ2xlYXBpcy5jb20gaHR0cDovL2ZvbnRzLmdvb2dsZWFwaXMuY29tOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNyYyBodHRwOi8vdGhlbWVzLmdvb2ds
ZXVzZXJjb250ZW50LmNvbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1nLXNyYyAnc2VsZicgaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tIGh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcgaHR0cDovL2J1aWxkLndlYmtpdC5vcmcgZmlsZTo7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy1zcmMgJ3NlbGYnIGh0dHBzOi8vYWph
eC5nb29nbGVhcGlzLmNvbSBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnIGh0dHA6Ly9idWlsZC53
ZWJraXQub3JnIGZpbGU6IGh0dHA6Ly8xMjcuMC4wLjE6ODEyNzsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWEtc3JjIGh0dHA6Ly9idWlsZC5jaHJvbWl1bS5v
cmcgaHR0cDovL2J1aWxkLndlYmtpdC5vcmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLXNyYyBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnIGh0dHA6Ly9i
dWlsZC53ZWJraXQub3JnIGh0dHA6Ly90ZXN0LXJlc3VsdHMuYXBwc3BvdC5jb207CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Qtc3JjIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcgaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZyBodHRwOi8vYnVpbGQud2Via2l0
Lm9yZyBodHRwOi8vMTI3LjAuMC4xOjgxMjciPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvY29uZmlnLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzCmlu
ZGV4IDgzNDhiNzA1NjlhN2MwNmQzOGZmNmM0ZjY4MTdhNjMwOTNlYWE2N2MuLmJhY2I2NDFmODZi
YmMxZTU0NmY5NjBmMDFiZDM0ZDYxODZkMmQ3NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL2NvbmZpZy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcu
anMKQEAgLTE5NSw0ICsxOTUsNiBAQCBjb25maWcuc2V0UGxhdGZvcm0gPSBmdW5jdGlvbihwbGF0
Zm9ybSkgewogICAgIGNvbmZpZy5jdXJyZW50UGxhdGZvcm0gPSBwbGF0Zm9ybTsKIH07CiAKK2Nv
bmZpZy51c2VMb2NhbFJlc3VsdHMgPSBCb29sZWFuKGJhc2UuZ2V0VVJMUGFyYW1ldGVyKCd1c2VM
b2NhbFJlc3VsdHMnKSkgfHwgZmFsc2U7CisKIH0pKCk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9yZXN1bHRzLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvcmVzdWx0
cy5qcwppbmRleCAwNDFiZTRiYjJiMDc2ZTc3MTllOTBhZjA0NGU2MDk2ZDI2Yzk0ZjBhLi44ZTRl
NzAzNzEyMzA1OGFhMDYyMjE2YTk3ZjY4ZDMxZWZkNmQ5YzAyIDEwMDY0NAotLS0gYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9yZXN1bHRzLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L3Jlc3VsdHMuanMKQEAgLTI3LDcgKzI3LDYgQEAgdmFyIHJlc3VsdHMgPSByZXN1bHRzIHx8IHt9
OwogCiAoZnVuY3Rpb24oKSB7CiAKLXZhciBrTGF5b3V0VGVzdFJlc3VsdHNQYXRoID0gJy9yZXN1
bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKIHZhciBrUmVzdWx0c05hbWUgPSAnZnVsbF9yZXN1
bHRzLmpzb24nOwogCiB2YXIga0J1aWxkTGlua1JlZ2V4cCA9IC9hIGhyZWY9IlxkK1wvIi9nOwpA
QCAtMTg4LDcgKzE4Nyw5IEBAIHJlc3VsdHMuZGlyZWN0b3J5Rm9yQnVpbGRlciA9IGZ1bmN0aW9u
KGJ1aWxkZXJOYW1lKQogCiBmdW5jdGlvbiByZXN1bHRzRGlyZWN0b3J5VVJMKHBsYXRmb3JtLCBi
dWlsZGVyTmFtZSkKIHsKLSAgICByZXR1cm4gbGF5b3V0VGVzdFJlc3VsdHNVUkwocGxhdGZvcm0p
ICsgJy8nICsgcmVzdWx0cy5kaXJlY3RvcnlGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSArIGtMYXlv
dXRUZXN0UmVzdWx0c1BhdGg7CisgICAgaWYgKGNvbmZpZy51c2VMb2NhbFJlc3VsdHMpCisgICAg
ICAgIHJldHVybiBjb25maWcua0xvY2FsU2VydmVyVVJMICsgJy9sb2NhbHJlc3VsdD9wYXRoPSc7
CisgICAgcmV0dXJuIHJlc3VsdHNEaXJlY3RvcnlMaXN0aW5nVVJMKHBsYXRmb3JtLCBidWlsZGVy
TmFtZSkgKyAncmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzJzsKIH0KIAogZnVuY3Rpb24gcmVz
dWx0c0RpcmVjdG9yeUxpc3RpbmdVUkwocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKaW5k
ZXggMTMwMDhhY2VlZDQzNTllYzQ0NTY1YzgwNTFiMTdiM2ZjYTNlMGMyZi4uNjMxNzUyMDI5OGIy
NGViZmZjNTQ4OTdkZmY3MmNiOTUyZDg1ZjJkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5CkBAIC0zNCw2ICszNCw3IEBA
IGNsYXNzIEdhcmRlbk9NYXRpYyhBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN1cGVyKEFic3RyYWN0UmViYXNlbGlu
aW5nQ29tbWFuZCwgc2VsZikuX19pbml0X18ob3B0aW9ucz0oc2VsZi5wbGF0Zm9ybV9vcHRpb25z
ICsgWwogICAgICAgICAgICAgc2VsZi5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc19vcHRpb24s
CisgICAgICAgICAgICBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5X29wdGlvbiwKICAgICAgICAgICAg
IHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAogICAgICAgICAgICAgXSkpCiAKQEAgLTQ4LDYgKzQ5
LDggQEAgY2xhc3MgR2FyZGVuT01hdGljKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAg
ICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlcnMuYnVpbGRlcl9uYW1lX2Zvcl9wb3J0X25hbWUo
b3B0aW9ucy5wbGF0Zm9ybSkKICAgICAgICAgICAgIGlmIGJ1aWxkZXI6CiAgICAgICAgICAgICAg
ICAgYXJnc1snYnVpbGRlciddID0gYnVpbGRlcgorICAgICAgICBpZiBvcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5OgorICAgICAgICAgICAgYXJnc1sndXNlTG9jYWxSZXN1bHRzJ10gPSAidHJ1ZSIK
IAogICAgICAgICBodHRwZCA9IEdhcmRlbmluZ0hUVFBTZXJ2ZXIoaHR0cGRfcG9ydD04MTI3LCBj
b25maWc9eyd0b29sJzogdG9vbCwgJ29wdGlvbnMnOiBvcHRpb25zfSkKICAgICAgICAgc2VsZi5f
dG9vbC51c2VyLm9wZW5fdXJsKGh0dHBkLnVybChhcmdzKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKaW5kZXggYTFkNGJhZTc3OWJh
OTZiYjViMzBjYjgyNzhjOGNiMGU0YWQ1YTEwOS4uMzJjOTg1OWZhMWE2YWVkYzdmMTAxNGNiNGI0
ODE3OTYwMzIyOTdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3JlYmFzZWxpbmUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3JlYmFzZWxpbmUucHkKQEAgLTY5LDYgKzY5LDggQEAgY2xhc3MgQWJzdHJhY3RSZWJh
c2VsaW5pbmdDb21tYW5kKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKIAogICAgIHBsYXRm
b3JtX29wdGlvbnMgPSBmYWN0b3J5LnBsYXRmb3JtX29wdGlvbnMoKQogCisgICAgcmVzdWx0c19k
aXJlY3Rvcnlfb3B0aW9uID0gb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcmVzdWx0cy1kaXJlY3Rv
cnkiLCBoZWxwPSJMb2NhbCByZXN1bHRzIGRpcmVjdG9yeSB0byB1c2UiKQorCiAgICAgc3VmZml4
ZXNfb3B0aW9uID0gb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tc3VmZml4ZXMiLCBkZWZhdWx0PScs
Jy5qb2luKEJBU0VMSU5FX1NVRkZJWF9MSVNUKSwgYWN0aW9uPSJzdG9yZSIsCiAgICAgICAgIGhl
bHA9IkNvbW1hLXNlcGFyYXRlZC1saXN0IG9mIGZpbGUgdHlwZXMgdG8gcmViYXNlbGluZSIpCiAK
QEAgLTg0LDYgKzg2LDcgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QoQWJzdHJhY3RSZWJhc2VsaW5p
bmdDb21tYW5kKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHN1cGVyKFJlYmFz
ZWxpbmVUZXN0LCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPVsKICAgICAgICAgICAgIHNlbGYubm9f
b3B0aW1pemVfb3B0aW9uLAorICAgICAgICAgICAgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeV9vcHRp
b24sCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeGVzX29wdGlvbiwKICAgICAgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkZXIiLCBoZWxwPSJCdWlsZGVyIHRvIHB1bGwgbmV3IGJh
c2VsaW5lcyBmcm9tIiksCiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1tb3Zl
LW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10byIsIGFjdGlvbj0iYXBwZW5kIiwgZGVmYXVsdD1bXSwK
QEAgLTE2NCw4ICsxNjcsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdChBYnN0cmFjdFJlYmFzZWxp
bmluZ0NvbW1hbmQpOgogICAgIGRlZiBfZmlsZV9uYW1lX2Zvcl9leHBlY3RlZF9yZXN1bHQoc2Vs
ZiwgdGVzdF9uYW1lLCBzdWZmaXgpOgogICAgICAgICByZXR1cm4gIiVzLWV4cGVjdGVkLiVzIiAl
IChzZWxmLl90ZXN0X3Jvb3QodGVzdF9uYW1lKSwgc3VmZml4KQogCi0gICAgZGVmIF9yZWJhc2Vs
aW5lX3Rlc3Qoc2VsZiwgYnVpbGRlcl9uYW1lLCB0ZXN0X25hbWUsIG1vdmVfb3ZlcndyaXR0ZW5f
YmFzZWxpbmVzX3RvLCBzdWZmaXgpOgotICAgICAgICByZXN1bHRzX3VybCA9IHNlbGYuX3Jlc3Vs
dHNfdXJsKGJ1aWxkZXJfbmFtZSkKKyAgICBkZWYgX3JlYmFzZWxpbmVfdGVzdChzZWxmLCBidWls
ZGVyX25hbWUsIHRlc3RfbmFtZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8sIHN1ZmZp
eCwgcmVzdWx0c191cmwpOgogICAgICAgICBiYXNlbGluZV9kaXJlY3RvcnkgPSBzZWxmLl9iYXNl
bGluZV9kaXJlY3RvcnkoYnVpbGRlcl9uYW1lKQogCiAgICAgICAgIHNvdXJjZV9iYXNlbGluZSA9
ICIlcy8lcyIgJSAocmVzdWx0c191cmwsIHNlbGYuX2ZpbGVfbmFtZV9mb3JfYWN0dWFsX3Jlc3Vs
dCh0ZXN0X25hbWUsIHN1ZmZpeCkpCkBAIC0xNzcsMTQgKzE3OSwxNSBAQCBjbGFzcyBSZWJhc2Vs
aW5lVGVzdChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgICAgICBfbG9nLmRlYnVn
KCJSZXRyaWV2aW5nICVzLiIgJSBzb3VyY2VfYmFzZWxpbmUpCiAgICAgICAgIHNlbGYuX3NhdmVf
YmFzZWxpbmUoc2VsZi5fdG9vbC53ZWIuZ2V0X2JpbmFyeShzb3VyY2VfYmFzZWxpbmUsIGNvbnZl
cnRfNDA0X3RvX05vbmU9VHJ1ZSksIHRhcmdldF9iYXNlbGluZSkKIAotICAgIGRlZiBfcmViYXNl
bGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKHNlbGYsIGJ1aWxkZXJfbmFtZSwgdGVz
dF9uYW1lLCBwbGF0Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG8pOgorICAgIGRl
ZiBfcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKHNlbGYsIGJ1aWxkZXJf
bmFtZSwgdGVzdF9uYW1lLCBwbGF0Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG8s
IHJlc3VsdHNfdXJsKToKICAgICAgICAgZm9yIHN1ZmZpeCBpbiBzZWxmLl9iYXNlbGluZV9zdWZm
aXhfbGlzdDoKLSAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfdGVzdChidWlsZGVyX25hbWUs
IHRlc3RfbmFtZSwgcGxhdGZvcm1zX3RvX21vdmVfZXhpc3RpbmdfYmFzZWxpbmVzX3RvLCBzdWZm
aXgpCisgICAgICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3Rlc3QoYnVpbGRlcl9uYW1lLCB0ZXN0
X25hbWUsIHBsYXRmb3Jtc190b19tb3ZlX2V4aXN0aW5nX2Jhc2VsaW5lc190bywgc3VmZml4LCBy
ZXN1bHRzX3VybCkKICAgICAgICAgc2VsZi5fdXBkYXRlX2V4cGVjdGF0aW9uc19maWxlKGJ1aWxk
ZXJfbmFtZSwgdGVzdF9uYW1lKQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6CiAgICAgICAgIHNlbGYuX2Jhc2VsaW5lX3N1ZmZpeF9saXN0ID0gb3B0aW9ucy5z
dWZmaXhlcy5zcGxpdCgnLCcpCi0gICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBk
YXRlX2V4cGVjdGF0aW9ucyhvcHRpb25zLmJ1aWxkZXIsIG9wdGlvbnMudGVzdCwgb3B0aW9ucy5t
b3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bykKKyAgICAgICAgcmVzdWx0c191cmwgPSBvcHRp
b25zLnJlc3VsdHNfdXJsIG9yIHNlbGYuX3Jlc3VsdHNfdXJsKG9wdGlvbnMuYnVpbGRlcikKKyAg
ICAgICAgc2VsZi5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKG9wdGlv
bnMuYnVpbGRlciwgb3B0aW9ucy50ZXN0LCBvcHRpb25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxp
bmVzX3RvLCByZXN1bHRzX3VybCkKICAgICAgICAgcHJpbnQganNvbi5kdW1wcyhzZWxmLl9zY21f
Y2hhbmdlcykKIAogCkBAIC0yNzQsNyArMjc3LDcgQEAgY2xhc3MgQWJzdHJhY3RQYXJhbGxlbFJl
YmFzZWxpbmVDb21tYW5kKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAgICAgICAgICAg
ICAgICAgYnVpbGRlcnNfdG9fZmFsbGJhY2tfcGF0aHNbYnVpbGRlcl0gPSBmYWxsYmFja19wYXRo
CiAgICAgICAgIHJldHVybiBidWlsZGVyc190b19mYWxsYmFja19wYXRocy5rZXlzKCkKIAotICAg
IGRlZiBfcmViYXNlbGluZV9jb21tYW5kcyhzZWxmLCB0ZXN0X2xpc3QsIG1vdmVfb3ZlcndyaXR0
ZW5fYmFzZWxpbmVzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKToKKyAgICBkZWYgX3JlYmFzZWxpbmVf
Y29tbWFuZHMoc2VsZiwgdGVzdF9saXN0LCBvcHRpb25zKToKIAogICAgICAgICBwYXRoX3RvX3dl
YmtpdF9wYXRjaCA9IHNlbGYuX3Rvb2wucGF0aCgpCiAgICAgICAgIGN3ZCA9IHNlbGYuX3Rvb2wu
c2NtKCkuY2hlY2tvdXRfcm9vdApAQCAtMjgzLDExICsyODYsMTMgQEAgY2xhc3MgQWJzdHJhY3RQ
YXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAg
ICAgICAgICAgICBmb3IgYnVpbGRlciBpbiBzZWxmLl9idWlsZGVyc190b19mZXRjaF9mcm9tKHRl
c3RfbGlzdFt0ZXN0XSk6CiAgICAgICAgICAgICAgICAgc3VmZml4ZXMgPSAnLCcuam9pbih0ZXN0
X2xpc3RbdGVzdF1bYnVpbGRlcl0pCiAgICAgICAgICAgICAgICAgY21kX2xpbmUgPSBbcGF0aF90
b193ZWJraXRfcGF0Y2gsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycs
IHN1ZmZpeGVzLCAnLS1idWlsZGVyJywgYnVpbGRlciwgJy0tdGVzdCcsIHRlc3RdCi0gICAgICAg
ICAgICAgICAgaWYgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6CisgICAgICAgICAgICAgICAg
aWYgb3B0aW9ucy5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lczoKICAgICAgICAgICAgICAgICAg
ICAgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8gPSBidWlsZGVycy5tb3ZlX292ZXJ3cml0
dGVuX2Jhc2VsaW5lc190byhidWlsZGVyKQogICAgICAgICAgICAgICAgICAgICBmb3IgcGxhdGZv
cm0gaW4gbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG86CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjbWRfbGluZS5leHRlbmQoWyctLW1vdmUtb3ZlcndyaXR0ZW4tYmFzZWxpbmVzLXRvJywg
cGxhdGZvcm1dKQotICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAg
aWYgb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgY21kX2xp
bmUuZXh0ZW5kKFsnLS1yZXN1bHRzX2RpcmVjdG9yeScsIG9wdGlvbnMucmVzdWx0c19kaXJlY3Rv
cnldKQorICAgICAgICAgICAgICAgIGlmIG9wdGlvbnMudmVyYm9zZToKICAgICAgICAgICAgICAg
ICAgICAgY21kX2xpbmUuYXBwZW5kKCctLXZlcmJvc2UnKQogICAgICAgICAgICAgICAgIGNvbW1h
bmRzLmFwcGVuZCh0dXBsZShbY21kX2xpbmUsIGN3ZF0pKQogICAgICAgICByZXR1cm4gY29tbWFu
ZHMKQEAgLTMyNSw3ICszMzAsNyBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNv
bW1hbmQoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAgIGZvciBidWls
ZGVyLCBzdWZmaXhlcyBpbiBzb3J0ZWQoYnVpbGRlcnMuaXRlbXMoKSk6CiAgICAgICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygiICAlczogJXMiICUgKGJ1aWxkZXIsICIsIi5qb2luKHN1ZmZpeGVzKSkp
CiAKLSAgICAgICAgY29tbWFuZHMgPSBzZWxmLl9yZWJhc2VsaW5lX2NvbW1hbmRzKHRlc3RfbGlz
dCwgb3B0aW9ucy5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcywgb3B0aW9ucy52ZXJib3NlKQor
ICAgICAgICBjb21tYW5kcyA9IHNlbGYuX3JlYmFzZWxpbmVfY29tbWFuZHModGVzdF9saXN0LCBv
cHRpb25zKQogICAgICAgICBjb21tYW5kX3Jlc3VsdHMgPSBzZWxmLl90b29sLmV4ZWN1dGl2ZS5y
dW5faW5fcGFyYWxsZWwoY29tbWFuZHMpCiAKICAgICAgICAgbG9nX291dHB1dCA9ICdcbicuam9p
bihyZXN1bHRbMl0gZm9yIHJlc3VsdCBpbiBjb21tYW5kX3Jlc3VsdHMpLnJlcGxhY2UoJ1xuXG4n
LCAnXG4nKQpAQCAtMzQ5LDYgKzM1NCw3IEBAIGNsYXNzIFJlYmFzZWxpbmVKc29uKEFic3RyYWN0
UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZCk6CiAgICAgICAgIHJldHVybiBzdXBlcihSZWJhc2Vs
aW5lSnNvbiwgc2VsZikuX19pbml0X18ob3B0aW9ucz1bCiAgICAgICAgICAgICBzZWxmLm1vdmVf
b3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiwKICAgICAgICAgICAgIHNlbGYubm9fb3B0aW1p
emVfb3B0aW9uLAorICAgICAgICAgICAgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeV9vcHRpb24sCiAg
ICAgICAgICAgICBdKQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9v
bCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CmluZGV4IDg2NTE4MzQ4YzQ3YTg0MmEzOTNmYTdlM2Jl
NWZkNmJmOGI5MDg4MDUuLmEwYmJkMzZkNjlmYWU1ZDQ2YTBkNzJmMTA2YjEyOWZjMDIyNGQxNjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2Vs
aW5lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CkBAIC0zOCw2ICszOCw4IEBAIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIAogY2xh
c3MgX0Jhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgTU9DS19XRUJfUkVTVUxU
ID0gJ01PQ0sgV2ViIHJlc3VsdCwgY29udmVydCA0MDQgdG8gTm9uZT1UcnVlJworICAgIFdFQl9Q
UkVGSVggPSAnTm9uZScgICMgRklYTUU6IG1ha2UgdGhpcyBzb21ldGhpbmcgdXNlZnVsLgorCiAg
ICAgY29tbWFuZF9jb25zdHJ1Y3RvciA9IE5vbmUKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAg
LTk0LDEyICs5NiwxMiBAQCBCdWcoQSkgWyBEZWJ1ZyBdIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1v
Zi1ydWxlcy1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCiAgICAgICAgIHNlbGYuX3dyaXRlKCJmYXN0
L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwiLCAiRHVtbXkgdGVzdCBjb250ZW50
cyIpCiAgICAgICAgIHNlbGYuX3dyaXRlKCJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIs
ICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKIAotICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxp
bmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNj
cmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3Jl
YmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0IE1hYzEwLjciLCAi
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lLCBOb25lKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAotICAgICAgICAgICAg
WydodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xh
eW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcnLAot
ICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAu
Ny9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFj
dHVhbC53YXYnLAotICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9X
ZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgICAgIFtzZWxmLldFQl9QUkVGSVggKyAn
L3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nJywKKyAgICAgICAgICAgICBzZWxm
LldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2JywKKyAg
ICAgICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1h
Y3R1YWwudHh0J10pCiAgICAgICAgIG5ld19leHBlY3RhdGlvbnMgPSBzZWxmLl9yZWFkKHNlbGYu
bGlvbl9leHBlY3RhdGlvbnNfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZXhw
ZWN0YXRpb25zLCAiIiJCdWcoQikgWyBNYWMgTGludXggWFAgRGVidWcgXSBmYXN0L2RvbS9XaW5k
b3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLXJlYWxseS1kZWVwLWFycmF5Lmh0bWwgWyBQYXNz
IF0KIEJ1ZyhBKSBbIERlYnVnIF0gOiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNo
Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTEwOSwxMiArMTExLDEyIEBAIEJ1ZyhBKSBbIERlYnVnIF0g
OiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KICAg
ICAgICAgc2VsZi5fd3JpdGUoc2VsZi5saW9uX2V4cGVjdGF0aW9uc19wYXRoLCAiQnVnKHgpIFsg
TWFjIF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1c
bmJ1Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF1cbiIpCiAgICAgICAgIHNlbGYuX3dyaXRlKCJ1c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCIsICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKIAotICAgICAgICBzZWxmLmNvbW1h
bmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0IE1hYzEw
LjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lKQorICAgICAgICBzZWxm
LmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucygiV2ViS2l0
IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lLCBOb25lKQog
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAot
ICAgICAgICAgICAgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAu
Ny9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFj
dHVhbC5wbmcnLAotICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9X
ZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0LWFjdHVhbC53YXYnLAotICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgICAgIFtzZWxmLldF
Ql9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nJywKKyAgICAg
ICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1
YWwud2F2JywKKyAgICAgICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC1hY3R1YWwudHh0J10pCiAgICAgICAgIG5ld19leHBlY3RhdGlvbnMgPSBzZWxm
Ll9yZWFkKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXdfZXhwZWN0YXRpb25zLCAiQnVnKHgpIFsgTW91bnRhaW5MaW9uIFNub3dMZW9wYXJk
IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbmJ1
Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF1cbiIpCiAKQEAgLTEyMywzOSArMTI1LDM5IEBAIEJ1ZyhBKSBbIERlYnVnIF0gOiBm
YXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KICAgICAg
ICAgc2VsZi5fd3JpdGUoc2VsZi5saW9uX3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3Nr
aWEnLCAnc2tpYV90ZXN0X2V4cGVjdGF0aW9ucy50eHQnKSwgIkJ1Zyh5KSBbIE1hYyBdIG90aGVy
LXRlc3QuaHRtbCBbIEZhaWx1cmUgXVxuIikKICAgICAgICAgc2VsZi5fd3JpdGUoInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgIkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAgICAg
IHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKCJX
ZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUpCisg
ICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRp
b25zKCJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5v
bmUsIE5vbmUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLndlYi51cmxz
X2ZldGNoZWQsCi0gICAgICAgICAgICBbJ2h0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dl
YktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtYWN0dWFsLnBuZycsCi0gICAgICAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9m
L2J1aWxkZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndhdicsCi0gICAgICAgICAgICAgJ2h0dHA6Ly9l
eGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3Qt
cmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCddKQorICAgICAgICAg
ICAgW3NlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5w
bmcnLAorICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0LWFjdHVhbC53YXYnLAorICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKIAogICAgICAgICBuZXdfZXhwZWN0
YXRpb25zID0gc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0YXRpb25zX3BhdGgpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobmV3X2V4cGVjdGF0aW9ucywgIkJ1Zyh4KSBbIE1vdW50YWluTGlv
biBTbm93TGVvcGFyZCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdXG5CdWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV90ZXN0
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0IExp
bnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwgInR4dCIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLCBbJ2h0dHA6
Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBMaW51eC9yZXN1bHRzL2xheW91dC10ZXN0
LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAg
c2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBMaW51eCIsICJ1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUsICJ0eHQiLCBOb25lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwgW3NlbGYuV0VCX1BSRUZJWCAr
ICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKIAogICAgIGRlZiB0ZXN0
X3JlYmFzZWxpbmVfdGVzdF9hbmRfcHJpbnRfc2NtX2NoYW5nZXMoc2VsZik6CiAgICAgICAgIHNl
bGYuY29tbWFuZC5fcHJpbnRfc2NtX2NoYW5nZXMgPSBUcnVlCiAgICAgICAgIHNlbGYuY29tbWFu
ZC5fc2NtX2NoYW5nZXMgPSB7J2FkZCc6IFtdLCAnZGVsZXRlJzogW119CiAgICAgICAgIHNlbGYu
dG9vbC5fc2NtLmV4aXN0cyA9IGxhbWJkYSB4OiBGYWxzZQogCi0gICAgICAgIHNlbGYuY29tbWFu
ZC5fcmViYXNlbGluZV90ZXN0KCJXZWJLaXQgTGludXgiLCAidXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwiLCBOb25lLCAidHh0IikKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5l
X3Rlc3QoIldlYktpdCBMaW51eCIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5v
bmUsICJ0eHQiLCBOb25lKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuY29tbWFu
ZC5fc2NtX2NoYW5nZXMsIHsnYWRkJzogWycvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0
J10sICdkZWxldGUnOiBbXX0pCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rl
c3Qoc2VsZik6CiAgICAgICAgIHNlbGYuX3dyaXRlKCJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qt
ZXhwZWN0ZWQudHh0IiwgImdlbmVyaWMgcmVzdWx0IikKIAotICAgICAgICBzZWxmLmNvbW1hbmQu
X3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0IikKKyAgICAgICAg
c2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBNYWMxMC43IiwgInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiXSwgInR4
dCIsIE5vbmUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fcmVhZCgncGxhdGZv
cm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4
dCcpLCBzZWxmLk1PQ0tfV0VCX1JFU1VMVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vs
Zi5fcmVhZCgncGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC1leHBlY3RlZC50eHQnKSwgJ2dlbmVyaWMgcmVzdWx0JykKIAogICAgIGRlZiB0
ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF9ub19leGlzdGluZ19yZXN1bHQoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0KCJXZWJLaXQgTWFjMTAuNyIsICJ1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0tbWFjLXNub3dsZW9wYXJk
Il0sICJ0eHQiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0
IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1h
Yy1zbm93bGVvcGFyZCJdLCAidHh0IiwgTm9uZSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzZWxmLl9yZWFkKCdwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtZXhwZWN0ZWQudHh0JyksIHNlbGYuTU9DS19XRUJfUkVTVUxUKQogICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHNlbGYudG9vbC5maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9leHBhbmQo
J3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QtZXhwZWN0ZWQudHh0JykpKQpAQCAtMTYzLDkgKzE2NSw5IEBAIEJ1ZyhBKSBbIERlYnVnIF0g
OiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KICAg
ICBkZWYgdGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rlc3Rfd2l0aF9saW9uX3Jlc3VsdChzZWxm
KToKICAgICAgICAgc2VsZi5fd3JpdGUoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1saW9uL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiLCAib3JpZ2luYWwgbGlvbiByZXN1bHQi
KQogCi0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0KCJXZWJLaXQgTWFjMTAu
NyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0tbWFjLXNub3ds
ZW9wYXJkIl0sICJ0eHQiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgi
V2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9t
aXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0IiwgTm9uZSkKIAotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwgWyJodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoc2VsZi50b29sLndlYi51cmxzX2ZldGNoZWQsIFtzZWxmLldFQl9QUkVGSVggKyAnL3Vz
ZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJvcmlnaW5hbCBsaW9uIHJlc3Vs
dCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9t
aXVtLW1hYy1saW9uL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgc2Vs
Zi5NT0NLX1dFQl9SRVNVTFQpCiAKQEAgLTE3Myw3ICsxNzUsNyBAQCBCdWcoQSkgWyBEZWJ1ZyBd
IDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCiAg
ICAgICAgIHNlbGYuX3dyaXRlKCJwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiwgIm9yaWdpbmFsIGxpb24gcmVzdWx0IikKICAg
ICAgICAgc2VsZi5fd3JpdGUoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiwgIm9yaWdpbmFsIHNub3dsZW9wYXJk
IHJlc3VsdCIpCiAKLSAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktp
dCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1t
YWMtc25vd2xlb3BhcmQiXSwgInR4dCIpCisgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGlu
ZV90ZXN0KCJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIs
IFsiY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkIl0sICJ0eHQiLCBOb25lKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVv
cGFyZC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJvcmlnaW5hbCBz
bm93bGVvcGFyZCByZXN1bHQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9yZWFk
KCJwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhw
ZWN0ZWQudHh0IiksIHNlbGYuTU9DS19XRUJfUkVTVUxUKQpAQCAtMTk0LDcgKzE5Niw4IEBAIEJ1
ZyhBKSBbIERlYnVnIF0gOiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwg
WyBGYWlsdXJlIF0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgb3B0aW9ucyA9IE1vY2tP
cHRpb25zKG9wdGltaXplPVRydWUsIGJ1aWxkZXI9Ik1PQ0sgU25vd0xlb3BhcmQiLCBzdWZmaXhl
cz0idHh0IiwKLSAgICAgICAgICAgICAgICBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bz1b
InRlc3QtbWFjLWxlb3BhcmQiXSwgdmVyYm9zZT1UcnVlLCB0ZXN0PSJmYWlsdXJlcy9leHBlY3Rl
ZC9pbWFnZS5odG1sIikKKyAgICAgICAgICAgICAgICBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5l
c190bz1bInRlc3QtbWFjLWxlb3BhcmQiXSwgdmVyYm9zZT1UcnVlLCB0ZXN0PSJmYWlsdXJlcy9l
eHBlY3RlZC9pbWFnZS5odG1sIiwKKyAgICAgICAgICAgICAgICByZXN1bHRzX3VybD1Ob25lKQog
CiAgICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCiAgICAgICAgICAgICBzZWxmLmNvbW1h
bmQuZXhlY3V0ZShvcHRpb25zLCBbXSwgc2VsZi50b29sKQpAQCAtMjI0LDcgKzIyNyw3IEBAIGNs
YXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKICAgICAgICAgc3VwZXIoVGVz
dFJlYmFzZWxpbmVKc29uLCBzZWxmKS50ZWFyRG93bigpCiAKICAgICBkZWYgdGVzdF9yZWJhc2Vs
aW5lX2FsbChzZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRy
dWUsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UpCisgICAg
ICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUsIG1v
dmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlLCByZXN1bHRzX2RpcmVjdG9yeT1Ob25lKQog
ICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsidXNlci1zY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sIjogeyJNT0NLIGJ1aWxkZXIiOiBbInR4dCIsICJwbmciXX19KQog
CiAgICAgICAgICMgTm90ZSB0aGF0IHdlIGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwg
Zm9sbG93ZWQgYnkgYSBydW5fY29tbWFuZCgpCkBAIC0yMzMsNyArMjM2LDcgQEAgY2xhc3MgVGVz
dFJlYmFzZWxpbmVKc29uKF9CYXNlVGVzdENhc2UpOgogICAgICAgICAgICAgIFsnZWNobycsICct
LXZlcmJvc2UnLCAnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycs
ICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnXV0pCiAKICAgICBkZWYgdGVzdF9yZWJh
c2VsaW5lX2RlYnVnKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1p
emU9VHJ1ZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSkK
KyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIHZlcmJvc2U9VHJ1
ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UsIHJlc3VsdHNfZGlyZWN0b3J5PU5v
bmUpCiAgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZShvcHRpb25zLCAgeyJ1c2VyLXNj
cmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sgYnVpbGRlciAoRGVidWcpIjogWyJ0eHQi
LCAicG5nIl19fSkKIAogICAgICAgICAjIE5vdGUgdGhhdCB3ZSBoYXZlIG9uZSBydW5faW5fcGFy
YWxsZWwoKSBjYWxsIGZvbGxvd2VkIGJ5IGEgcnVuX2NvbW1hbmQoKQpAQCAtMjQyLDcgKzI0NSw3
IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKICAgICAgICAgICAg
ICBbJ2VjaG8nLCAnLS12ZXJib3NlJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVz
JywgJ3R4dCxwbmcnLCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dKQogCiAgICAg
ZGVmIHRlc3RfbW92ZV9vdmVyd3JpdHRlbihzZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tP
cHRpb25zKG9wdGltaXplPVRydWUsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNl
bGluZXM9VHJ1ZSkKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUs
IHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9VHJ1ZSwgcmVzdWx0c19k
aXJlY3Rvcnk9Tm9uZSkKICAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lKG9wdGlvbnMs
ICB7InVzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsiTU9DSyBidWlsZGVyIjogWyJ0
eHQiLCAicG5nIl19fSkKIAogICAgICAgICAjIE5vdGUgdGhhdCB3ZSBoYXZlIG9uZSBydW5faW5f
cGFyYWxsZWwoKSBjYWxsIGZvbGxvd2VkIGJ5IGEgcnVuX2NvbW1hbmQoKQpAQCAtMjUxLDcgKzI1
NCw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKICAgICAgICAg
ICAgICBbJ2VjaG8nLCAnLS12ZXJib3NlJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZp
eGVzJywgJ3R4dCxwbmcnLCAndXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dKQogCiAg
ICAgZGVmIHRlc3Rfbm9fb3B0aW1pemUoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2Vs
aW5lcz1GYWxzZSkKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNl
LCB2ZXJib3NlPVRydWUsIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlLCByZXN1bHRz
X2RpcmVjdG9yeT1Ob25lKQogICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9u
cywgIHsidXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIjogeyJNT0NLIGJ1aWxkZXIgKERl
YnVnKSI6IFsidHh0IiwgInBuZyJdfX0pCiAKICAgICAgICAgIyBOb3RlIHRoYXQgd2UgaGF2ZSBv
bmx5IG9uZSBydW5faW5fcGFyYWxsZWwoKSBjYWxsCkBAIC0zMTAsNyArMzEzLDcgQEAgY2xhc3Mg
VGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
dG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAKICAgICAgICAgc2VsZi5jb21tYW5k
Ll90ZXN0c190b19yZWJhc2VsaW5lID0gbGFtYmRhIHBvcnQ6IHsndXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0Lmh0bWwnOiBzZXQoWyd0eHQnXSksICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJzogc2V0
KFsncG5nJ10pfQotICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0aW9ucyhvcHRp
bWl6ZT1GYWxzZSwgdmVyYm9zZT1GYWxzZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFs
c2UpLCBbXSwgc2VsZi50b29sKQorICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0
aW9ucyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1GYWxzZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNl
bGluZXM9RmFsc2UsIHJlc3VsdHNfZGlyZWN0b3J5PU5vbmUpLCBbXSwgc2VsZi50b29sKQogCiAg
ICAgICAgICMgRklYTUU6IGNoYW5nZSB0aGlzIHRvIHVzZSB0aGUgdGVzdC0gcG9ydHMuCiAgICAg
ICAgIGNhbGxzID0gZmlsdGVyKGxhbWJkYSB4OiB4ICE9IFsncW1ha2UnLCAnLXYnXSwgc2VsZi50
b29sLmV4ZWN1dGl2ZS5jYWxscykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weQppbmRleCA0NDI4NzExY2FhYWEwNzQ2MTIx
ZGExMzkwZjk3YzYzZmRiN2RiM2RkLi41NGQ3M2RmOTNlNTZiMjgxMzgyOTQxYzk2ZjdiMjhlOTQ3
NjFjYjNlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9n
YXJkZW5pbmdzZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZl
cnMvZ2FyZGVuaW5nc2VydmVyLnB5CkBAIC0xMTMsNiArMTEzLDggQEAgY2xhc3MgR2FyZGVuaW5n
SFRUUFJlcXVlc3RIYW5kbGVyKFJlZmxlY3Rpb25IYW5kbGVyKToKICAgICAgICAgY29tbWFuZCA9
IFsncmViYXNlbGluZS1qc29uJ10KICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIub3B0aW9ucy5tb3Zl
X292ZXJ3cml0dGVuX2Jhc2VsaW5lczoKICAgICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCctLW1v
dmUtb3ZlcndyaXR0ZW4tYmFzZWxpbmVzJykKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIub3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeToKKyAgICAgICAgICAgIGNvbW1hbmQuZXh0ZW5kKFsnLS1yZXN1
bHRzLWRpcmVjdG9yeScsIHNlbGYuc2VydmVyLm9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnldKQog
ICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIub3B0aW9ucy5vcHRpbWl6ZToKICAgICAgICAgICAg
IGNvbW1hbmQuYXBwZW5kKCctLW5vLW9wdGltaXplJykKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIu
b3B0aW9ucy52ZXJib3NlOgpAQCAtMTI5LDMgKzEzMSwxMCBAQCBjbGFzcyBHYXJkZW5pbmdIVFRQ
UmVxdWVzdEhhbmRsZXIoUmVmbGVjdGlvbkhhbmRsZXIpOgogCiAgICAgICAgICMgRklYTUU6IHBy
b3BhZ2F0ZSBlcnJvciBhbmQvb3IgbG9nIG1lc3NhZ2VzIGJhY2sgdG8gdGhlIFVJLgogICAgICAg
ICBzZWxmLl9zZXJ2ZV90ZXh0KCdzdWNjZXNzJykKKworICAgIGRlZiBsb2NhbHJlc3VsdChzZWxm
KToKKyAgICAgICAgcGF0aCA9IHNlbGYucXVlcnlbJ3BhdGgnXVswXQorICAgICAgICBmaWxlc3lz
dGVtID0gc2VsZi5zZXJ2ZXIudG9vbC5maWxlc3lzdGVtCisgICAgICAgIGlmIG5vdCBmaWxlc3lz
dGVtLmlzYWJzKHBhdGgpIGFuZCBzZWxmLnNlcnZlci5vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
OgorICAgICAgICAgICAgZnVsbHBhdGggPSBmaWxlc3lzdGVtLmFic3BhdGgoZmlsZXN5c3RlbS5q
b2luKHNlbGYuc2VydmVyLm9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHBhdGgpKQorICAgICAg
ICAgICAgc2VsZi5fc2VydmVfZmlsZShmdWxscGF0aCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlZmxlY3Rpb25oYW5kbGVyLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmVmbGVjdGlvbmhhbmRsZXIucHkKaW5kZXggMjRi
YjI3NzFhMDM4MTI5YzQ5M2EwMDM3ZDY4MmNiZmNmYjUzMmNkYS4uNmNhY2FiMWFkMTcyY2EzODdh
N2M3NTg4NzIzZjgzMTI5NTZmYWY2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3NlcnZlcnMvcmVmbGVjdGlvbmhhbmRsZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvcmVmbGVjdGlvbmhhbmRsZXIucHkKQEAgLTU5LDYgKzU5LDkg
QEAgY2xhc3MgUmVmbGVjdGlvbkhhbmRsZXIoQmFzZUhUVFBTZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0
SGFuZGxlcik6CiAgICAgZGVmIGRvX1BPU1Qoc2VsZik6CiAgICAgICAgIHNlbGYuX2hhbmRsZV9y
ZXF1ZXN0KCkKIAorICAgIGRlZiBkb19IRUFEKHNlbGYpOgorICAgICAgICBzZWxmLl9oYW5kbGVf
cmVxdWVzdCgpCisKICAgICBkZWYgcmVhZF9lbnRpdHlfYm9keShzZWxmKToKICAgICAgICAgbGVu
Z3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFkZXIoJ2NvbnRlbnQtbGVuZ3RoJykpCiAgICAg
ICAgIHJldHVybiBzZWxmLnJmaWxlLnJlYWQobGVuZ3RoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171704</attachid>
            <date>2012-10-31 12:32:24 -0700</date>
            <delta_ts>2012-10-31 12:35:44 -0700</delta_ts>
            <desc>update w/ review feedback, clean up, add tests</desc>
            <filename>bug-100805-20121031123047.patch</filename>
            <type>text/plain</type>
            <size>31532</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGYwNzUyMzFhYTdlNDhkNGRlZTY4MDdmZjBmNGVlYzI2
Zjc4YmIzNy4uMGE0MzU2NzE0ZjQ2MTAxODA3OGI4ZDJhNTQ5ZWQ3NWMxNjQyZTIzMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDEyLTEwLTMxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCB3b3JrIGZvciBsb2NhbCByZXN1bHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgdGhlIG5leHQg
c3RlcCBpbiBtYWtpbmcgZ2FyZGVuLW8tbWF0aWMgcmVwbGFjZQorICAgICAgICAnd2Via2l0LXBh
dGNoIHJlYmFzZWxpbmUtc2VydmVyJyBhbmQgYmUgYWJsZSB0byBkZWFsIHdpdGggbG9jYWwKKyAg
ICAgICAgcmVzdWx0cy4gZ2FyZGVuLW8tbWF0aWMgbm93IGFjY2VwdHMgYSAnLS1yZXN1bHRzLWRp
cmVjdG9yeScgb3B0aW9uCisgICAgICAgIHRoYXQgd2lsbCBwb2ludCB0byBhIGxheW91dC10ZXN0
LXJlc3VsdHMgZGlyZWN0b3J5LiBBdCB0aGUgbW9tZW50CisgICAgICAgIHRoaXMgd2lsbCBvbmx5
IHdvcmsgaWYgeW91IGFyZSBhbHNvIGZpbHRlcmluZyB0byBhIHNpbmdsZSBib3QvCisgICAgICAg
IHBsYXRmb3JtIGF0IGEgdGltZSAod2UgY2FuJ3QgaGFuZGxlIG11bHRpcGxlIGJvdHMnIHdvcnRo
IG9mIGxvY2FsCisgICAgICAgIHJlc3VsdHMsIGJ1dCB0aGF0IGlzIGEgbG9naWNhbCBuZXh0IHN0
ZXApLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWw6CisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL3Jlc3VsdHMuanM6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2dhcmRlbm9tYXRpYy5weToKKyAgICAgICAgKEdhcmRlbk9NYXRpYy5fX2luaXRfXyk6CisgICAg
ICAgIChHYXJkZW5PTWF0aWMuZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHk6CisgICAgICAgIChBYnN0cmFjdFJlYmFzZWxpbmlu
Z0NvbW1hbmQpOgorICAgICAgICAoUmViYXNlbGluZVRlc3QuX19pbml0X18pOgorICAgICAgICAo
UmViYXNlbGluZVRlc3QuX3JlYmFzZWxpbmVfdGVzdCk6CisgICAgICAgIChSZWJhc2VsaW5lVGVz
dC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKToKKyAgICAgICAgKFJl
YmFzZWxpbmVUZXN0LmV4ZWN1dGUpOgorICAgICAgICAoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxp
bmVDb21tYW5kLl9yZWJhc2VsaW5lX2NvbW1hbmRzKToKKyAgICAgICAgKEFic3RyYWN0UGFyYWxs
ZWxSZWJhc2VsaW5lQ29tbWFuZC5fcmViYXNlbGluZSk6CisgICAgICAgIChSZWJhc2VsaW5lSnNv
bi5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Jl
YmFzZWxpbmVfdW5pdHRlc3QucHk6CisgICAgICAgIChfQmFzZVRlc3RDYXNlKToKKyAgICAgICAg
KHRlc3RfcmViYXNlbGluZV91cGRhdGVzX2V4cGVjdGF0aW9uc19maWxlKToKKyAgICAgICAgKHRl
c3RfcmViYXNlbGluZV9kb2VzX25vdF9pbmNsdWRlX292ZXJyaWRlcyk6CisgICAgICAgICh0ZXN0
X3JlYmFzZWxpbmVfdGVzdCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdGVzdF9hbmRfcHJp
bnRfc2NtX2NoYW5nZXMpOgorICAgICAgICAodGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rlc3Qp
OgorICAgICAgICAodGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rlc3Rfbm9fZXhpc3RpbmdfcmVz
dWx0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0X3dpdGhfbGlvbl9y
ZXN1bHQpOgorICAgICAgICAodGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X25vX292ZXJ3cml0ZV90
ZXN0KToKKyAgICAgICAgKHRlc3RfcmViYXNlbGluZV90ZXN0X2ludGVybmFsX3dpdGhfbW92ZV9v
dmVyd3JpdHRlbl9iYXNlbGluZXNfdG8pOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVKc29uLnRl
c3RfcmViYXNlbGluZV9hbGwpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVKc29uLnRlc3RfcmVi
YXNlbGluZV9kZWJ1Zyk6CisgICAgICAgIChUZXN0UmViYXNlbGluZUpzb24udGVzdF9tb3ZlX292
ZXJ3cml0dGVuKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lSnNvbi50ZXN0X25vX29wdGltaXpl
KToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lRXhwZWN0YXRpb25zLnRlc3RfcmViYXNlbGluZV9l
eHBlY3RhdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dh
cmRlbmluZ3NlcnZlci5weToKKyAgICAgICAgKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlci5y
ZWJhc2VsaW5lYWxsKToKKyAgICAgICAgKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlcik6Cisg
ICAgICAgIChHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIubG9jYWxyZXN1bHQpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlZmxlY3Rpb25oYW5kbGVyLnB5Ogor
ICAgICAgICAoUmVmbGVjdGlvbkhhbmRsZXIuZG9fUE9TVCk6CisgICAgICAgIChSZWZsZWN0aW9u
SGFuZGxlcik6CisgICAgICAgIChSZWZsZWN0aW9uSGFuZGxlci5kb19IRUFEKToKKworMjAxMi0x
MC0zMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBnYXJk
ZW4tby1tYXRpYyBzaG91bGQgc3VwcG9ydCBnYXJkZW5pbmcgYSBzaW5nbGUgcG9ydCBhbmQgc3Bl
Y2lmeWluZyBob3cgdG8gZGVhbCB3aXRoIG92ZXJ3cml0dGVuIGJhc2VsaW5lcwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTYzCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L2dhcmRlbi1vLW1hdGljLmh0bWwKaW5kZXggMmMyOGZiZTgzNWYxYmUzOTI4ZjMwYmIzN2I3YTM0
NjVlN2NiY2Y2Zi4uMTllMTU2YmRhMmRjOWZmZTdiZmVkNDA2ZWFmZGYzYzQ1ZWNlMzM5NyAxMDA2
NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKQEAgLTMyLDkgKzMyLDkgQEAgSmFtZXMsIGEg
d2ViIGRldmVsb3BlciBmcm9tIEJpcm1pbmdoYW0sIFVLLgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY3JpcHQtc3JjICdzZWxmJyBmaWxlOiBodHRwczovL2FqYXgu
Z29vZ2xlYXBpcy5jb207CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnIGZpbGU6IGh0dHBzOi8vYWpheC5nb29n
bGVhcGlzLmNvbSBodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb207CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc3JjIGh0dHA6Ly90aGVtZXMuZ29vZ2xldXNl
cmNvbnRlbnQuY29tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bWctc3JjICdzZWxmJyBodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20gaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZyBodHRwOi8vYnVpbGQud2Via2l0Lm9yZyBmaWxlOjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWEtc3JjIGh0dHA6Ly9idWlsZC5jaHJvbWl1
bS5vcmcgaHR0cDovL2J1aWxkLndlYmtpdC5vcmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lLXNyYyBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnIGh0dHA6
Ly9idWlsZC53ZWJraXQub3JnIGh0dHA6Ly90ZXN0LXJlc3VsdHMuYXBwc3BvdC5jb207CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy1zcmMgJ3NlbGYnIGh0dHBz
Oi8vYWpheC5nb29nbGVhcGlzLmNvbSBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnIGh0dHA6Ly9i
dWlsZC53ZWJraXQub3JnIGZpbGU6IGh0dHA6Ly8xMjcuMC4wLjE6ODEyNzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWEtc3JjIGh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcgaHR0cDovL2J1aWxkLndlYmtpdC5vcmcgaHR0cDovLzEyNy4wLjAuMTo4MTI3Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS1zcmMgaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZyBodHRwOi8vYnVpbGQud2Via2l0Lm9yZyBodHRwOi8vdGVzdC1y
ZXN1bHRzLmFwcHNwb3QuY29tIGh0dHA6Ly8xMjcuMC4wLjE6ODEyNzsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdC1zcmMgaHR0cDovL3RyYWMud2Via2l0
Lm9yZyBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnIGh0dHA6Ly9idWlsZC53ZWJraXQub3JnIGh0
dHA6Ly8xMjcuMC4wLjE6ODEyNyI+CiA8dGl0bGU+R2FyZGVuLU8tTWF0aWM8L3RpdGxlPgogPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3Nz
P2ZhbWlseT1PcGVuK1NhbnM6NDAwLDcwMCI+CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9jb25maWcuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcuanMKaW5k
ZXggMWY4MDc0NDIwZGUxMjcxOWQ0NTU0OWNkODcyMzcyOTYwNmNmYzcxNC4uOGRhYTQyNTVlNzYw
NmQzYWFhYmUyNjNkODA1NzVkZmRmNGUzYjAwMCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvY29uZmlnLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZpZy5q
cwpAQCAtMTg5LDQgKzE4OSw2IEBAIGNvbmZpZy5zZXRQbGF0Zm9ybSA9IGZ1bmN0aW9uKHBsYXRm
b3JtKSB7CiAgICAgY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9IHBsYXRmb3JtOwogfTsKIAorY29u
ZmlnLnVzZUxvY2FsUmVzdWx0cyA9IEJvb2xlYW4oYmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ3VzZUxv
Y2FsUmVzdWx0cycpKSB8fCBmYWxzZTsKKwogfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL3Jlc3VsdHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9yZXN1bHRz
LmpzCmluZGV4IDA0MWJlNGJiMmIwNzZlNzcxOWU5MGFmMDQ0ZTYwOTZkMjZjOTRmMGEuLjhlNGU3
MDM3MTIzMDU4YWEwNjIyMTZhOTdmNjhkMzFlZmQ2ZDljMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
cmVzdWx0cy5qcwpAQCAtMjcsNyArMjcsNiBAQCB2YXIgcmVzdWx0cyA9IHJlc3VsdHMgfHwge307
CiAKIChmdW5jdGlvbigpIHsKIAotdmFyIGtMYXlvdXRUZXN0UmVzdWx0c1BhdGggPSAnL3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy8nOwogdmFyIGtSZXN1bHRzTmFtZSA9ICdmdWxsX3Jlc3Vs
dHMuanNvbic7CiAKIHZhciBrQnVpbGRMaW5rUmVnZXhwID0gL2EgaHJlZj0iXGQrXC8iL2c7CkBA
IC0xODgsNyArMTg3LDkgQEAgcmVzdWx0cy5kaXJlY3RvcnlGb3JCdWlsZGVyID0gZnVuY3Rpb24o
YnVpbGRlck5hbWUpCiAKIGZ1bmN0aW9uIHJlc3VsdHNEaXJlY3RvcnlVUkwocGxhdGZvcm0sIGJ1
aWxkZXJOYW1lKQogewotICAgIHJldHVybiBsYXlvdXRUZXN0UmVzdWx0c1VSTChwbGF0Zm9ybSkg
KyAnLycgKyByZXN1bHRzLmRpcmVjdG9yeUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpICsga0xheW91
dFRlc3RSZXN1bHRzUGF0aDsKKyAgICBpZiAoY29uZmlnLnVzZUxvY2FsUmVzdWx0cykKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZy5rTG9jYWxTZXJ2ZXJVUkwgKyAnL2xvY2FscmVzdWx0P3BhdGg9JzsK
KyAgICByZXR1cm4gcmVzdWx0c0RpcmVjdG9yeUxpc3RpbmdVUkwocGxhdGZvcm0sIGJ1aWxkZXJO
YW1lKSArICdyZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMnOwogfQogCiBmdW5jdGlvbiByZXN1
bHRzRGlyZWN0b3J5TGlzdGluZ1VSTChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQppbmRl
eCAyNGQzMGE3ZmQ2MWRjZThlMmE4NDZiYTkzYTdkYWViN2VjYzljM2MzLi42Y2IxNTE5ZWZmZWQw
MDY5NTE0MzA2OGJkODJiYWM0YTA1YzY5MDA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKQEAgLTM0LDYgKzM0LDcgQEAg
Y2xhc3MgR2FyZGVuT01hdGljKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc3VwZXIoQWJzdHJhY3RSZWJhc2VsaW5p
bmdDb21tYW5kLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPShzZWxmLnBsYXRmb3JtX29wdGlvbnMg
KyBbCiAgICAgICAgICAgICBzZWxmLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiwK
KyAgICAgICAgICAgIHNlbGYucmVzdWx0c19kaXJlY3Rvcnlfb3B0aW9uLAogICAgICAgICAgICAg
c2VsZi5ub19vcHRpbWl6ZV9vcHRpb24sCiAgICAgICAgICAgICBdKSkKIApAQCAtNDgsNiArNDks
OCBAQCBjbGFzcyBHYXJkZW5PTWF0aWMoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAg
ICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVycy5idWlsZGVyX25hbWVfZm9yX3BvcnRfbmFtZShv
cHRpb25zLnBsYXRmb3JtKQogICAgICAgICAgICAgaWYgYnVpbGRlcjoKICAgICAgICAgICAgICAg
ICBhcmdzWydidWlsZGVyJ10gPSBidWlsZGVyCisgICAgICAgIGlmIG9wdGlvbnMucmVzdWx0c19k
aXJlY3Rvcnk6CisgICAgICAgICAgICBhcmdzWyd1c2VMb2NhbFJlc3VsdHMnXSA9ICJ0cnVlIgog
CiAgICAgICAgIGh0dHBkID0gR2FyZGVuaW5nSFRUUFNlcnZlcihodHRwZF9wb3J0PTgxMjcsIGNv
bmZpZz17J3Rvb2wnOiB0b29sLCAnb3B0aW9ucyc6IG9wdGlvbnN9KQogICAgICAgICBzZWxmLl90
b29sLnVzZXIub3Blbl91cmwoaHR0cGQudXJsKGFyZ3MpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQppbmRleCBhMWQ0YmFlNzc5YmE5
NmJiNWIzMGNiODI3OGM4Y2IwZTRhZDVhMTA5Li45YzY4MzNjZGIzYTQ3Y2ViYmM0NWY0NzE2ODFj
YTI1NGIyM2E3MmQ3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZS5weQpAQCAtNjksNiArNjksOCBAQCBjbGFzcyBBYnN0cmFjdFJlYmFz
ZWxpbmluZ0NvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogCiAgICAgcGxhdGZv
cm1fb3B0aW9ucyA9IGZhY3RvcnkucGxhdGZvcm1fb3B0aW9ucygpCiAKKyAgICByZXN1bHRzX2Rp
cmVjdG9yeV9vcHRpb24gPSBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1yZXN1bHRzLWRpcmVjdG9y
eSIsIGhlbHA9IkxvY2FsIHJlc3VsdHMgZGlyZWN0b3J5IHRvIHVzZSIpCisKICAgICBzdWZmaXhl
c19vcHRpb24gPSBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1zdWZmaXhlcyIsIGRlZmF1bHQ9Jywn
LmpvaW4oQkFTRUxJTkVfU1VGRklYX0xJU1QpLCBhY3Rpb249InN0b3JlIiwKICAgICAgICAgaGVs
cD0iQ29tbWEtc2VwYXJhdGVkLWxpc3Qgb2YgZmlsZSB0eXBlcyB0byByZWJhc2VsaW5lIikKIApA
QCAtODQsNiArODYsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdChBYnN0cmFjdFJlYmFzZWxpbmlu
Z0NvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc3VwZXIoUmViYXNl
bGluZVRlc3QsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9WwogICAgICAgICAgICAgc2VsZi5ub19v
cHRpbWl6ZV9vcHRpb24sCisgICAgICAgICAgICBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5X29wdGlv
biwKICAgICAgICAgICAgIHNlbGYuc3VmZml4ZXNfb3B0aW9uLAogICAgICAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oIi0tYnVpbGRlciIsIGhlbHA9IkJ1aWxkZXIgdG8gcHVsbCBuZXcgYmFz
ZWxpbmVzIGZyb20iKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW1vdmUt
b3ZlcndyaXR0ZW4tYmFzZWxpbmVzLXRvIiwgYWN0aW9uPSJhcHBlbmQiLCBkZWZhdWx0PVtdLApA
QCAtMTY0LDggKzE2Nyw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3RyYWN0UmViYXNlbGlu
aW5nQ29tbWFuZCk6CiAgICAgZGVmIF9maWxlX25hbWVfZm9yX2V4cGVjdGVkX3Jlc3VsdChzZWxm
LCB0ZXN0X25hbWUsIHN1ZmZpeCk6CiAgICAgICAgIHJldHVybiAiJXMtZXhwZWN0ZWQuJXMiICUg
KHNlbGYuX3Rlc3Rfcm9vdCh0ZXN0X25hbWUpLCBzdWZmaXgpCiAKLSAgICBkZWYgX3JlYmFzZWxp
bmVfdGVzdChzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwgbW92ZV9vdmVyd3JpdHRlbl9i
YXNlbGluZXNfdG8sIHN1ZmZpeCk6Ci0gICAgICAgIHJlc3VsdHNfdXJsID0gc2VsZi5fcmVzdWx0
c191cmwoYnVpbGRlcl9uYW1lKQorICAgIGRlZiBfcmViYXNlbGluZV90ZXN0KHNlbGYsIGJ1aWxk
ZXJfbmFtZSwgdGVzdF9uYW1lLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bywgc3VmZml4
LCByZXN1bHRzX3VybCk6CiAgICAgICAgIGJhc2VsaW5lX2RpcmVjdG9yeSA9IHNlbGYuX2Jhc2Vs
aW5lX2RpcmVjdG9yeShidWlsZGVyX25hbWUpCiAKICAgICAgICAgc291cmNlX2Jhc2VsaW5lID0g
IiVzLyVzIiAlIChyZXN1bHRzX3VybCwgc2VsZi5fZmlsZV9uYW1lX2Zvcl9hY3R1YWxfcmVzdWx0
KHRlc3RfbmFtZSwgc3VmZml4KSkKQEAgLTE3NywxNCArMTc5LDE1IEBAIGNsYXNzIFJlYmFzZWxp
bmVUZXN0KEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAgICAgICAgIF9sb2cuZGVidWco
IlJldHJpZXZpbmcgJXMuIiAlIHNvdXJjZV9iYXNlbGluZSkKICAgICAgICAgc2VsZi5fc2F2ZV9i
YXNlbGluZShzZWxmLl90b29sLndlYi5nZXRfYmluYXJ5KHNvdXJjZV9iYXNlbGluZSwgY29udmVy
dF80MDRfdG9fTm9uZT1UcnVlKSwgdGFyZ2V0X2Jhc2VsaW5lKQogCi0gICAgZGVmIF9yZWJhc2Vs
aW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMoc2VsZiwgYnVpbGRlcl9uYW1lLCB0ZXN0
X25hbWUsIHBsYXRmb3Jtc190b19tb3ZlX2V4aXN0aW5nX2Jhc2VsaW5lc190byk6CisgICAgZGVm
IF9yZWJhc2VsaW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMoc2VsZiwgYnVpbGRlcl9u
YW1lLCB0ZXN0X25hbWUsIHBsYXRmb3Jtc190b19tb3ZlX2V4aXN0aW5nX2Jhc2VsaW5lc190bywg
cmVzdWx0c191cmwpOgogICAgICAgICBmb3Igc3VmZml4IGluIHNlbGYuX2Jhc2VsaW5lX3N1ZmZp
eF9saXN0OgotICAgICAgICAgICAgc2VsZi5fcmViYXNlbGluZV90ZXN0KGJ1aWxkZXJfbmFtZSwg
dGVzdF9uYW1lLCBwbGF0Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG8sIHN1ZmZp
eCkKKyAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfdGVzdChidWlsZGVyX25hbWUsIHRlc3Rf
bmFtZSwgcGxhdGZvcm1zX3RvX21vdmVfZXhpc3RpbmdfYmFzZWxpbmVzX3RvLCBzdWZmaXgsIHJl
c3VsdHNfdXJsKQogICAgICAgICBzZWxmLl91cGRhdGVfZXhwZWN0YXRpb25zX2ZpbGUoYnVpbGRl
cl9uYW1lLCB0ZXN0X25hbWUpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdz
LCB0b29sKToKICAgICAgICAgc2VsZi5fYmFzZWxpbmVfc3VmZml4X2xpc3QgPSBvcHRpb25zLnN1
ZmZpeGVzLnNwbGl0KCcsJykKLSAgICAgICAgc2VsZi5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRh
dGVfZXhwZWN0YXRpb25zKG9wdGlvbnMuYnVpbGRlciwgb3B0aW9ucy50ZXN0LCBvcHRpb25zLm1v
dmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvKQorICAgICAgICByZXN1bHRzX3VybCA9IG9wdGlv
bnMucmVzdWx0c19kaXJlY3Rvcnkgb3Igc2VsZi5fcmVzdWx0c191cmwob3B0aW9ucy5idWlsZGVy
KQorICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMo
b3B0aW9ucy5idWlsZGVyLCBvcHRpb25zLnRlc3QsIG9wdGlvbnMubW92ZV9vdmVyd3JpdHRlbl9i
YXNlbGluZXNfdG8sIHJlc3VsdHNfdXJsKQogICAgICAgICBwcmludCBqc29uLmR1bXBzKHNlbGYu
X3NjbV9jaGFuZ2VzKQogCiAKQEAgLTI3NCw3ICsyNzcsNyBAQCBjbGFzcyBBYnN0cmFjdFBhcmFs
bGVsUmViYXNlbGluZUNvbW1hbmQoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAg
ICAgICAgICAgICBidWlsZGVyc190b19mYWxsYmFja19wYXRoc1tidWlsZGVyXSA9IGZhbGxiYWNr
X3BhdGgKICAgICAgICAgcmV0dXJuIGJ1aWxkZXJzX3RvX2ZhbGxiYWNrX3BhdGhzLmtleXMoKQog
Ci0gICAgZGVmIF9yZWJhc2VsaW5lX2NvbW1hbmRzKHNlbGYsIHRlc3RfbGlzdCwgbW92ZV9vdmVy
d3JpdHRlbl9iYXNlbGluZXM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpOgorICAgIGRlZiBfcmViYXNl
bGluZV9jb21tYW5kcyhzZWxmLCB0ZXN0X2xpc3QsIG9wdGlvbnMpOgogCiAgICAgICAgIHBhdGhf
dG9fd2Via2l0X3BhdGNoID0gc2VsZi5fdG9vbC5wYXRoKCkKICAgICAgICAgY3dkID0gc2VsZi5f
dG9vbC5zY20oKS5jaGVja291dF9yb290CkBAIC0yODMsMTEgKzI4NiwxMyBAQCBjbGFzcyBBYnN0
cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5k
KToKICAgICAgICAgICAgIGZvciBidWlsZGVyIGluIHNlbGYuX2J1aWxkZXJzX3RvX2ZldGNoX2Zy
b20odGVzdF9saXN0W3Rlc3RdKToKICAgICAgICAgICAgICAgICBzdWZmaXhlcyA9ICcsJy5qb2lu
KHRlc3RfbGlzdFt0ZXN0XVtidWlsZGVyXSkKICAgICAgICAgICAgICAgICBjbWRfbGluZSA9IFtw
YXRoX3RvX3dlYmtpdF9wYXRjaCwgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZp
eGVzJywgc3VmZml4ZXMsICctLWJ1aWxkZXInLCBidWlsZGVyLCAnLS10ZXN0JywgdGVzdF0KLSAg
ICAgICAgICAgICAgICBpZiBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lczoKKyAgICAgICAgICAg
ICAgICBpZiBvcHRpb25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzOgogICAgICAgICAgICAg
ICAgICAgICBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byA9IGJ1aWxkZXJzLm1vdmVfb3Zl
cndyaXR0ZW5fYmFzZWxpbmVzX3RvKGJ1aWxkZXIpCiAgICAgICAgICAgICAgICAgICAgIGZvciBw
bGF0Zm9ybSBpbiBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bzoKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNtZF9saW5lLmV4dGVuZChbJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMt
dG8nLCBwbGF0Zm9ybV0pCi0gICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAg
ICAgICBpZiBvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICBj
bWRfbGluZS5leHRlbmQoWyctLXJlc3VsdHNfZGlyZWN0b3J5Jywgb3B0aW9ucy5yZXN1bHRzX2Rp
cmVjdG9yeV0pCisgICAgICAgICAgICAgICAgaWYgb3B0aW9ucy52ZXJib3NlOgogICAgICAgICAg
ICAgICAgICAgICBjbWRfbGluZS5hcHBlbmQoJy0tdmVyYm9zZScpCiAgICAgICAgICAgICAgICAg
Y29tbWFuZHMuYXBwZW5kKHR1cGxlKFtjbWRfbGluZSwgY3dkXSkpCiAgICAgICAgIHJldHVybiBj
b21tYW5kcwpAQCAtMzI1LDcgKzMzMCw3IEBAIGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJhc2Vs
aW5lQ29tbWFuZChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgICAgICAgICAgZm9y
IGJ1aWxkZXIsIHN1ZmZpeGVzIGluIHNvcnRlZChidWlsZGVycy5pdGVtcygpKToKICAgICAgICAg
ICAgICAgICBfbG9nLmRlYnVnKCIgICVzOiAlcyIgJSAoYnVpbGRlciwgIiwiLmpvaW4oc3VmZml4
ZXMpKSkKIAotICAgICAgICBjb21tYW5kcyA9IHNlbGYuX3JlYmFzZWxpbmVfY29tbWFuZHModGVz
dF9saXN0LCBvcHRpb25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzLCBvcHRpb25zLnZlcmJv
c2UpCisgICAgICAgIGNvbW1hbmRzID0gc2VsZi5fcmViYXNlbGluZV9jb21tYW5kcyh0ZXN0X2xp
c3QsIG9wdGlvbnMpCiAgICAgICAgIGNvbW1hbmRfcmVzdWx0cyA9IHNlbGYuX3Rvb2wuZXhlY3V0
aXZlLnJ1bl9pbl9wYXJhbGxlbChjb21tYW5kcykKIAogICAgICAgICBsb2dfb3V0cHV0ID0gJ1xu
Jy5qb2luKHJlc3VsdFsyXSBmb3IgcmVzdWx0IGluIGNvbW1hbmRfcmVzdWx0cykucmVwbGFjZSgn
XG5cbicsICdcbicpCkBAIC0zNDksNiArMzU0LDcgQEAgY2xhc3MgUmViYXNlbGluZUpzb24oQWJz
dHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKToKICAgICAgICAgcmV0dXJuIHN1cGVyKFJl
YmFzZWxpbmVKc29uLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPVsKICAgICAgICAgICAgIHNlbGYu
bW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfb3B0aW9uLAogICAgICAgICAgICAgc2VsZi5ub19v
cHRpbWl6ZV9vcHRpb24sCisgICAgICAgICAgICBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5X29wdGlv
biwKICAgICAgICAgICAgIF0pCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdz
LCB0b29sKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKaW5kZXggZDBhMWYzNjQ0ZDRjNzQ4N2U1ODE2
MTg0YTQxMjY4NGY0YThlNzczNS4uZTU2OTRkMmZiMmNjZGExNDg5YjkwYWI3MjJmMzIxM2NjY2Mx
NWRjMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Jl
YmFzZWxpbmVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKQEAgLTM4LDYgKzM4LDggQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgog
CiBjbGFzcyBfQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBNT0NLX1dFQl9S
RVNVTFQgPSAnTU9DSyBXZWIgcmVzdWx0LCBjb252ZXJ0IDQwNCB0byBOb25lPVRydWUnCisgICAg
V0VCX1BSRUZJWCA9ICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAu
Ny9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMnCisKICAgICBjb21tYW5kX2NvbnN0cnVjdG9y
ID0gTm9uZQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtOTQsMTIgKzk2LDEyIEBAIEJ1ZyhB
KSBbIERlYnVnIF0gOiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgWyBG
YWlsdXJlIF0KICAgICAgICAgc2VsZi5fd3JpdGUoImZhc3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVs
ZXMtY3Jhc2guaHRtbCIsICJEdW1teSB0ZXN0IGNvbnRlbnRzIikKICAgICAgICAgc2VsZi5fd3Jp
dGUoInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgIkR1bW15IHRlc3QgY29udGVudHMi
KQogCi0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhw
ZWN0YXRpb25zKCJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCIsIE5vbmUpCisgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRh
dGVfZXhwZWN0YXRpb25zKCJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCIsIE5vbmUsIHNlbGYuV0VCX1BSRUZJWCkKIAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwKLSAgICAgICAgICAgIFsnaHR0cDovL2V4
YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nJywKLSAgICAgICAgICAg
ICAnaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2JywK
LSAgICAgICAgICAgICAnaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEw
LjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1h
Y3R1YWwudHh0J10pCisgICAgICAgICAgICBbc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBuZycsCisgICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklY
ICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndhdicsCisgICAgICAgICAgICAg
c2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCdd
KQogICAgICAgICBuZXdfZXhwZWN0YXRpb25zID0gc2VsZi5fcmVhZChzZWxmLmxpb25fZXhwZWN0
YXRpb25zX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2V4cGVjdGF0aW9ucywg
IiIiQnVnKEIpIFsgTWFjIExpbnV4IFhQIERlYnVnIF0gZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1jbG9uZS1yZWFsbHktZGVlcC1hcnJheS5odG1sIFsgUGFzcyBdCiBCdWcoQSkg
WyBEZWJ1ZyBdIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5odG1sIFsgRmFp
bHVyZSBdCkBAIC0xMDksMTIgKzExMSwxMiBAQCBCdWcoQSkgWyBEZWJ1ZyBdIDogZmFzdC9jc3Mv
bGFyZ2UtbGlzdC1vZi1ydWxlcy1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCiAgICAgICAgIHNlbGYu
X3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCwgIkJ1Zyh4KSBbIE1hYyBdIHVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG5idWcoeikgWyBM
aW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
XG4iKQogICAgICAgICBzZWxmLl93cml0ZSgidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
LCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCiAKLSAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2Vs
aW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMoIldlYktpdCBNYWMxMC43IiwgInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSkKKyAgICAgICAgc2VsZi5jb21tYW5kLl9y
ZWJhc2VsaW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMoIldlYktpdCBNYWMxMC43Iiwg
InVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwgc2VsZi5XRUJfUFJFRklYKQog
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAot
ICAgICAgICAgICAgWydodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJLaXQgTWFjMTAu
Ny9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFj
dHVhbC5wbmcnLAotICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9X
ZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0LWFjdHVhbC53YXYnLAotICAgICAgICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJLaXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgICAgIFtzZWxmLldF
Ql9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nJywKKyAgICAg
ICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1
YWwud2F2JywKKyAgICAgICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fu
b3RoZXItdGVzdC1hY3R1YWwudHh0J10pCiAgICAgICAgIG5ld19leHBlY3RhdGlvbnMgPSBzZWxm
Ll9yZWFkKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXdfZXhwZWN0YXRpb25zLCAiQnVnKHgpIFsgTW91bnRhaW5MaW9uIFNub3dMZW9wYXJk
IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbmJ1
Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF1cbiIpCiAKQEAgLTEyMywzOSArMTI1LDQzIEBAIEJ1ZyhBKSBbIERlYnVnIF0gOiBm
YXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KICAgICAg
ICAgc2VsZi5fd3JpdGUoc2VsZi5saW9uX3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3Nr
aWEnLCAnc2tpYV90ZXN0X2V4cGVjdGF0aW9ucy50eHQnKSwgIkJ1Zyh5KSBbIE1hYyBdIG90aGVy
LXRlc3QuaHRtbCBbIEZhaWx1cmUgXVxuIikKICAgICAgICAgc2VsZi5fd3JpdGUoInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgIkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAgICAg
IHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zKCJX
ZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUpCisg
ICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRp
b25zKCJXZWJLaXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5v
bmUsIHNlbGYuV0VCX1BSRUZJWCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRv
b2wud2ViLnVybHNfZmV0Y2hlZCwKLSAgICAgICAgICAgIFsnaHR0cDovL2V4YW1wbGUuY29tL2Yv
YnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nJywKLSAgICAgICAgICAgICAnaHR0cDovL2V4
YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2JywKLSAgICAgICAgICAg
ICAnaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IE1hYzEwLjcvcmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0J10p
CisgICAgICAgICAgICBbc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QtYWN0dWFsLnBuZycsCisgICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndhdicsCisgICAgICAgICAgICAgc2VsZi5XRUJfUFJF
RklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCddKQogCiAgICAgICAg
IG5ld19leHBlY3RhdGlvbnMgPSBzZWxmLl9yZWFkKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0
aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZXhwZWN0YXRpb25zLCAiQnVnKHgpIFsg
TW91bnRhaW5MaW9uIFNub3dMZW9wYXJkIF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF1cbkJ1Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbiIpCiAKICAgICBkZWYgdGVzdF9yZWJh
c2VsaW5lX3Rlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0
KCJXZWJLaXQgTGludXgiLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lLCAi
dHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLndlYi51cmxzX2ZldGNo
ZWQsIFsnaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2ViS2l0IExpbnV4L3Jlc3VsdHMv
bGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCdd
KQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0IExpbnV4Iiwg
InVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwgInR4dCIsIHNlbGYuV0VCX1BS
RUZJWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLndlYi51cmxzX2ZldGNo
ZWQsIFtzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwu
dHh0J10pCisKKyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3Rlc3Rfd2l0aF9yZXN1bHRzX2RpcmVj
dG9yeShzZWxmKToKKyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktp
dCBMaW51eCIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmUsICJ0eHQiLCAn
L3RtcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRj
aGVkLCBbJy90bXAvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKIAogICAg
IGRlZiB0ZXN0X3JlYmFzZWxpbmVfdGVzdF9hbmRfcHJpbnRfc2NtX2NoYW5nZXMoc2VsZik6CiAg
ICAgICAgIHNlbGYuY29tbWFuZC5fcHJpbnRfc2NtX2NoYW5nZXMgPSBUcnVlCiAgICAgICAgIHNl
bGYuY29tbWFuZC5fc2NtX2NoYW5nZXMgPSB7J2FkZCc6IFtdLCAnZGVsZXRlJzogW119CiAgICAg
ICAgIHNlbGYudG9vbC5fc2NtLmV4aXN0cyA9IGxhbWJkYSB4OiBGYWxzZQogCi0gICAgICAgIHNl
bGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0KCJXZWJLaXQgTGludXgiLCAidXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lLCAidHh0IikKKyAgICAgICAgc2VsZi5jb21tYW5kLl9y
ZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBMaW51eCIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCIsIE5vbmUsICJ0eHQiLCBOb25lKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNl
bGYuY29tbWFuZC5fc2NtX2NoYW5nZXMsIHsnYWRkJzogWycvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhw
ZWN0ZWQudHh0J10sICdkZWxldGUnOiBbXX0pCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2Fu
ZF9jb3B5X3Rlc3Qoc2VsZik6CiAgICAgICAgIHNlbGYuX3dyaXRlKCJ1c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiwgImdlbmVyaWMgcmVzdWx0IikKIAotICAgICAgICBzZWxm
LmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCgiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0IikK
KyAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBNYWMxMC43Iiwg
InVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3Bh
cmQiXSwgInR4dCIsIE5vbmUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fcmVh
ZCgncGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4
cGVjdGVkLnR4dCcpLCBzZWxmLk1PQ0tfV0VCX1JFU1VMVCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoc2VsZi5fcmVhZCgncGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQnKSwgJ2dlbmVyaWMgcmVzdWx0JykKIAog
ICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF9ub19leGlzdGluZ19yZXN1bHQo
c2VsZik6Ci0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0KCJXZWJLaXQgTWFj
MTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0tbWFjLXNu
b3dsZW9wYXJkIl0sICJ0eHQiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmVfdGVz
dCgiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbImNo
cm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0IiwgTm9uZSkKIAogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzZWxmLl9yZWFkKCdwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGlvbi91c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0JyksIHNlbGYuTU9DS19XRUJfUkVTVUxUKQog
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYudG9vbC5maWxlc3lzdGVtLmV4aXN0cyhzZWxm
Ll9leHBhbmQoJ3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0JykpKQpAQCAtMTYzLDkgKzE2OSw5IEBAIEJ1ZyhBKSBb
IERlYnVnIF0gOiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgWyBGYWls
dXJlIF0KICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rlc3Rfd2l0aF9saW9uX3Jl
c3VsdChzZWxmKToKICAgICAgICAgc2VsZi5fd3JpdGUoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1s
aW9uL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiLCAib3JpZ2luYWwgbGlv
biByZXN1bHQiKQogCi0gICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0KCJXZWJL
aXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0t
bWFjLXNub3dsZW9wYXJkIl0sICJ0eHQiKQorICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxp
bmVfdGVzdCgiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
LCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Iiwgc2VsZi5XRUJfUFJFRklYKQog
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLCBb
Imh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYktpdCBNYWMxMC43L3Jlc3VsdHMvbGF5
b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCJdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwgW3Nl
bGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fcmVhZCgicGxhdGZvcm0vY2hyb21pdW0t
bWFjLXNub3dsZW9wYXJkL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwg
Im9yaWdpbmFsIGxpb24gcmVzdWx0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5f
cmVhZCgicGxhdGZvcm0vY2hyb21pdW0tbWFjLWxpb24vdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWV4cGVjdGVkLnR4dCIpLCBzZWxmLk1PQ0tfV0VCX1JFU1VMVCkKIApAQCAtMTczLDcgKzE3OSw3
IEBAIEJ1ZyhBKSBbIERlYnVnIF0gOiBmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNo
Lmh0bWwgWyBGYWlsdXJlIF0KICAgICAgICAgc2VsZi5fd3JpdGUoInBsYXRmb3JtL2Nocm9taXVt
LW1hYy1saW9uL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiLCAib3JpZ2lu
YWwgbGlvbiByZXN1bHQiKQogICAgICAgICBzZWxmLl93cml0ZSgicGxhdGZvcm0vY2hyb21pdW0t
bWFjLXNub3dsZW9wYXJkL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiLCAi
b3JpZ2luYWwgc25vd2xlb3BhcmQgcmVzdWx0IikKIAotICAgICAgICBzZWxmLmNvbW1hbmQuX3Jl
YmFzZWxpbmVfdGVzdCgiV2ViS2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0IikKKyAgICAgICAgc2Vs
Zi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QoIldlYktpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiXSwgInR4dCIs
IE5vbmUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fcmVhZCgicGxhdGZvcm0v
Y2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3Rl
ZC50eHQiKSwgIm9yaWdpbmFsIHNub3dsZW9wYXJkIHJlc3VsdCIpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlbGYuX3JlYWQoInBsYXRmb3JtL2Nocm9taXVtLW1hYy1saW9uL3VzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgc2VsZi5NT0NLX1dFQl9SRVNVTFQpCkBA
IC0xOTQsNyArMjAwLDggQEAgQnVnKEEpIFsgRGVidWcgXSA6IGZhc3QvY3NzL2xhcmdlLWxpc3Qt
b2YtcnVsZXMtY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgYnVpbGRlcj0iTU9DSyBT
bm93TGVvcGFyZCIsIHN1ZmZpeGVzPSJ0eHQiLAotICAgICAgICAgICAgICAgIG1vdmVfb3Zlcndy
aXR0ZW5fYmFzZWxpbmVzX3RvPVsidGVzdC1tYWMtbGVvcGFyZCJdLCB2ZXJib3NlPVRydWUsIHRl
c3Q9ImZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiKQorICAgICAgICAgICAgICAgIG1vdmVf
b3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvPVsidGVzdC1tYWMtbGVvcGFyZCJdLCB2ZXJib3NlPVRy
dWUsIHRlc3Q9ImZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiLAorICAgICAgICAgICAgICAg
IHJlc3VsdHNfZGlyZWN0b3J5PU5vbmUpCiAKICAgICAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0
KCkKICAgICAgICAgICAgIHNlbGYuY29tbWFuZC5leGVjdXRlKG9wdGlvbnMsIFtdLCBzZWxmLnRv
b2wpCkBAIC0yMjQsNyArMjMxLDcgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVKc29uKF9CYXNlVGVz
dENhc2UpOgogICAgICAgICBzdXBlcihUZXN0UmViYXNlbGluZUpzb24sIHNlbGYpLnRlYXJEb3du
KCkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYWxsKHNlbGYpOgotICAgICAgICBvcHRpb25z
ID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0
dGVuX2Jhc2VsaW5lcz1GYWxzZSkKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGlt
aXplPVRydWUsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2Us
IHJlc3VsdHNfZGlyZWN0b3J5PU5vbmUpCiAgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGlu
ZShvcHRpb25zLCAgeyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sgYnVp
bGRlciI6IFsidHh0IiwgInBuZyJdfX0pCiAKICAgICAgICAgIyBOb3RlIHRoYXQgd2UgaGF2ZSBv
bmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbCBmb2xsb3dlZCBieSBhIHJ1bl9jb21tYW5kKCkKQEAg
LTIzMyw3ICsyNDAsNyBAQCBjbGFzcyBUZXN0UmViYXNlbGluZUpzb24oX0Jhc2VUZXN0Q2FzZSk6
CiAgICAgICAgICAgICAgWydlY2hvJywgJy0tdmVyYm9zZScsICdvcHRpbWl6ZS1iYXNlbGluZXMn
LCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCddXSkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfZGVidWcoc2VsZik6Ci0gICAgICAgIG9w
dGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUsIG1vdmVfb3Zl
cndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlKQorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMo
b3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1G
YWxzZSwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSkKICAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJh
c2VsaW5lKG9wdGlvbnMsICB7InVzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsiTU9D
SyBidWlsZGVyIChEZWJ1ZykiOiBbInR4dCIsICJwbmciXX19KQogCiAgICAgICAgICMgTm90ZSB0
aGF0IHdlIGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkgYSBydW5f
Y29tbWFuZCgpCkBAIC0yNDIsNyArMjQ5LDcgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVKc29uKF9C
YXNlVGVzdENhc2UpOgogICAgICAgICAgICAgIFsnZWNobycsICctLXZlcmJvc2UnLCAnb3B0aW1p
emUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICd1c2VyLXNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwnXV0pCiAKICAgICBkZWYgdGVzdF9tb3ZlX292ZXJ3cml0dGVuKHNlbGYp
OgotICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1U
cnVlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1UcnVlKQorICAgICAgICBvcHRpb25zID0g
TW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0dGVu
X2Jhc2VsaW5lcz1UcnVlLCByZXN1bHRzX2RpcmVjdG9yeT1Ob25lKQogICAgICAgICBzZWxmLmNv
bW1hbmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsidXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5o
dG1sIjogeyJNT0NLIGJ1aWxkZXIiOiBbInR4dCIsICJwbmciXX19KQogCiAgICAgICAgICMgTm90
ZSB0aGF0IHdlIGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkgYSBy
dW5fY29tbWFuZCgpCkBAIC0yNTEsMTMgKzI1OCwyMSBAQCBjbGFzcyBUZXN0UmViYXNlbGluZUpz
b24oX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgICAgICAgWydlY2hvJywgJy0tdmVyYm9zZScsICdv
cHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJ3VzZXItc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKIAogICAgIGRlZiB0ZXN0X25vX29wdGltaXplKHNlbGYp
OgotICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9RmFsc2UsIHZlcmJvc2U9
VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UpCisgICAgICAgIG9wdGlvbnMg
PSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0
dGVuX2Jhc2VsaW5lcz1GYWxzZSwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSkKICAgICAgICAgc2Vs
Zi5jb21tYW5kLl9yZWJhc2VsaW5lKG9wdGlvbnMsICB7InVzZXItc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCI6IHsiTU9DSyBidWlsZGVyIChEZWJ1ZykiOiBbInR4dCIsICJwbmciXX19KQogCiAg
ICAgICAgICMgTm90ZSB0aGF0IHdlIGhhdmUgb25seSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2Fs
bAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzLAog
ICAgICAgICAgICAgW1tbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3Vm
Zml4ZXMnLCAndHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyIChEZWJ1ZyknLCAn
LS10ZXN0JywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCcsICctLXZlcmJvc2UnXV1d
KQogCisgICAgZGVmIHRlc3RfcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgIG9wdGlv
bnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSwgcmVzdWx0c19kaXJlY3Rvcnk9Jy90bXAnKQorICAgICAg
ICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsidXNlci1zY3JpcHRzL2Fub3Ro
ZXItdGVzdC5odG1sIjogeyJNT0NLIGJ1aWxkZXIiOiBbInR4dCIsICJwbmciXX19KQorCisgICAg
ICAgICMgTm90ZSB0aGF0IHdlIGhhdmUgb25seSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbAor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzLAorICAg
ICAgICAgICAgW1tbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4
ZXMnLCAndHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyJywgJy0tdGVzdCcsICd1
c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLCAnLS1yZXN1bHRzX2RpcmVjdG9yeScsICcv
dG1wJywgJy0tdmVyYm9zZSddXV0pCisKIAogY2xhc3MgVGVzdFJlYmFzZWxpbmUoX0Jhc2VUZXN0
Q2FzZSk6CiAgICAgIyBUaGlzIGNvbW1hbmQgc2hhcmVzIG1vc3Qgb2YgaXRzIGxvZ2ljIHdpdGgg
UmViYXNlbGluZUpzb24sIHNvIHRoZXNlIHRlc3RzIGp1c3QgdGVzdCB3aGF0IGlzIGRpZmZlcmVu
dC4KQEAgLTMxMCw3ICszMjUsNyBAQCBjbGFzcyBUZXN0UmViYXNlbGluZUV4cGVjdGF0aW9ucyhf
QmFzZVRlc3RDYXNlKToKICAgICAgICAgc2VsZi50b29sLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRp
dmUyKCkKIAogICAgICAgICBzZWxmLmNvbW1hbmQuX3Rlc3RzX3RvX3JlYmFzZWxpbmUgPSBsYW1i
ZGEgcG9ydDogeyd1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCc6IHNldChbJ3R4dCddKSwg
J3VzZXJzY3JpcHRzL2ltYWdlcy5zdmcnOiBzZXQoWydwbmcnXSl9Ci0gICAgICAgIHNlbGYuY29t
bWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNlLCB2ZXJib3NlPUZhbHNlLCBt
b3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSksIFtdLCBzZWxmLnRvb2wpCisgICAgICAg
IHNlbGYuY29tbWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNlLCB2ZXJib3Nl
PUZhbHNlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSwgcmVzdWx0c19kaXJlY3Rv
cnk9Tm9uZSksIFtdLCBzZWxmLnRvb2wpCiAKICAgICAgICAgIyBGSVhNRTogY2hhbmdlIHRoaXMg
dG8gdXNlIHRoZSB0ZXN0LSBwb3J0cy4KICAgICAgICAgY2FsbHMgPSBmaWx0ZXIobGFtYmRhIHg6
IHggIT0gWydxbWFrZScsICctdiddLCBzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVy
LnB5CmluZGV4IGVjMDc4OTMxMDI4NWYxN2JiOTFhM2NlNmZmYzM1ZjVhNDdlOWNmZTMuLmU1N2Fm
ZjExOWFkY2ZiZmJiYWU2YTQ4ZjZkZDdkYzg2YjJiYjE1MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkKQEAgLTEx
MSw2ICsxMTEsOCBAQCBjbGFzcyBHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIoUmVmbGVjdGlv
bkhhbmRsZXIpOgogICAgICAgICBjb21tYW5kID0gWydyZWJhc2VsaW5lLWpzb24nXQogICAgICAg
ICBpZiBzZWxmLnNlcnZlci5vcHRpb25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzOgogICAg
ICAgICAgICAgY29tbWFuZC5hcHBlbmQoJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMnKQor
ICAgICAgICBpZiBzZWxmLnNlcnZlci5vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5OgorICAgICAg
ICAgICAgY29tbWFuZC5leHRlbmQoWyctLXJlc3VsdHMtZGlyZWN0b3J5Jywgc2VsZi5zZXJ2ZXIu
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeV0pCiAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlci5v
cHRpb25zLm9wdGltaXplOgogICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoJy0tbm8tb3B0aW1p
emUnKQogICAgICAgICBpZiBzZWxmLnNlcnZlci5vcHRpb25zLnZlcmJvc2U6CkBAIC0xMjcsMyAr
MTI5LDE2IEBAIGNsYXNzIEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlcihSZWZsZWN0aW9uSGFu
ZGxlcik6CiAKICAgICAgICAgIyBGSVhNRTogcHJvcGFnYXRlIGVycm9yIGFuZC9vciBsb2cgbWVz
c2FnZXMgYmFjayB0byB0aGUgVUkuCiAgICAgICAgIHNlbGYuX3NlcnZlX3RleHQoJ3N1Y2Nlc3Mn
KQorCisgICAgZGVmIGxvY2FscmVzdWx0KHNlbGYpOgorICAgICAgICBwYXRoID0gc2VsZi5xdWVy
eVsncGF0aCddWzBdCisgICAgICAgIGZpbGVzeXN0ZW0gPSBzZWxmLnNlcnZlci50b29sLmZpbGVz
eXN0ZW0KKworICAgICAgICAjIEVuc3VyZSB0aGF0IHdlJ3JlIG9ubHkgc2VydmluZyBmaWxlcyBm
cm9tIGluc2lkZSB0aGUgcmVzdWx0cyBkaXJlY3RvcnkuCisgICAgICAgIGlmIG5vdCBmaWxlc3lz
dGVtLmlzYWJzKHBhdGgpIGFuZCBzZWxmLnNlcnZlci5vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
OgorICAgICAgICAgICAgZnVsbHBhdGggPSBmaWxlc3lzdGVtLmFic3BhdGgoZmlsZXN5c3RlbS5q
b2luKHNlbGYuc2VydmVyLm9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHBhdGgpKQorICAgICAg
ICAgICAgaWYgZnVsbHBhdGguc3RhcnRzd2l0aChmaWxlc3lzdGVtLmFic3BhdGgoc2VsZi5zZXJ2
ZXIub3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3Nl
cnZlX2ZpbGUoZnVsbHBhdGgsIGhlYWRlcnNfb25seT0oc2VsZi5jb21tYW5kID09ICdIRUFEJykp
CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fc2VuZF9yZXNwb25zZSg0
MDMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWZs
ZWN0aW9uaGFuZGxlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3Jl
ZmxlY3Rpb25oYW5kbGVyLnB5CmluZGV4IDI0YmIyNzcxYTAzODEyOWM0OTNhMDAzN2Q2ODJjYmZj
ZmI1MzJjZGEuLjA3NmNjYzZiMmEwNmFjZGI3N2U5MzQwNjFhZjUyMDFmZGY0OTVhNGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlZmxlY3Rpb25oYW5k
bGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlZmxlY3Rp
b25oYW5kbGVyLnB5CkBAIC01OSw2ICs1OSw5IEBAIGNsYXNzIFJlZmxlY3Rpb25IYW5kbGVyKEJh
c2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgIGRlZiBkb19QT1NUKHNl
bGYpOgogICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdCgpCiAKKyAgICBkZWYgZG9fSEVBRChz
ZWxmKToKKyAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3QoKQorCiAgICAgZGVmIHJlYWRfZW50
aXR5X2JvZHkoc2VsZik6CiAgICAgICAgIGxlbmd0aCA9IGludChzZWxmLmhlYWRlcnMuZ2V0aGVh
ZGVyKCdjb250ZW50LWxlbmd0aCcpKQogICAgICAgICByZXR1cm4gc2VsZi5yZmlsZS5yZWFkKGxl
bmd0aCkKQEAgLTExNiw3ICsxMTksNyBAQCBjbGFzcyBSZWZsZWN0aW9uSGFuZGxlcihCYXNlSFRU
UFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgc2VsZi5lbmRfaGVhZGVy
cygpCiAgICAgICAgIGpzb24uZHVtcChqc29uX29iamVjdCwgc2VsZi53ZmlsZSkKIAotICAgIGRl
ZiBfc2VydmVfZmlsZShzZWxmLCBmaWxlX3BhdGgsIGNhY2hlYWJsZV9zZWNvbmRzPTApOgorICAg
IGRlZiBfc2VydmVfZmlsZShzZWxmLCBmaWxlX3BhdGgsIGNhY2hlYWJsZV9zZWNvbmRzPTAsIGhl
YWRlcnNfb25seT1GYWxzZSk6CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlX3Bh
dGgpOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIkZpbGUgbm90IGZvdW5kIikK
ICAgICAgICAgICAgIHJldHVybgpAQCAtMTM2LDQgKzEzOSw1IEBAIGNsYXNzIFJlZmxlY3Rpb25I
YW5kbGVyKEJhc2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAg
ICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkV4cGlyZXMiLCBleHBpcmVzX2Zvcm1hdHRlZCkKICAg
ICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogCi0gICAgICAgICAgICBzaHV0aWwuY29weWZp
bGVvYmooc3RhdGljX2ZpbGUsIHNlbGYud2ZpbGUpCisgICAgICAgICAgICBpZiBub3QgaGVhZGVy
X29ubHk6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHN0YXRpY19maWxlLCBz
ZWxmLndmaWxlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>