<?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>178610</bug_id>
          
          <creation_ts>2017-10-20 16:56:02 -0700</creation_ts>
          <short_desc>Update perf dashboard upload logic to support uploading binaries from owned commits.</short_desc>
          <delta_ts>2017-10-23 16:33:41 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362920</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2017-10-20 16:56:02 -0700</bug_when>
    <thetext>Update perf dashboard upload logic to support uploading binaries from owned commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362924</commentid>
    <comment_count>1</comment_count>
      <attachid>324470</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-10-20 17:01:25 -0700</bug_when>
    <thetext>Created attachment 324470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362940</commentid>
    <comment_count>2</comment_count>
      <attachid>324470</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-20 17:20:45 -0700</bug_when>
    <thetext>Comment on attachment 324470
Patch

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

&gt; Websites/perf.webkit.org/public/api/upload-root.php:69
&gt; +    $commit_repository_rows_in_set = $db-&gt;query_and_fetch_all(&apos;SELECT commit_set_items.commitset_commit as commitset_commit, owned.repository_name as repository_name, owner.repository_name as owner_repository_name

Please wrap the line after as commitset_commit. It&apos;s really hard to read such a long line.

&gt; Websites/perf.webkit.org/public/api/upload-root.php:82
&gt; +            }
&gt; +            else

Nit: else should be on the same line as }.

&gt; Websites/perf.webkit.org/public/api/upload-root.php:91
&gt; +        elseif(is_array($repository_name) &amp;&amp; count($repository_name) == 2)

Nit: Use &quot;else if&quot; also need a space between else if and (.
Please use an associative array instead as we discussed in person.

&gt; Websites/perf.webkit.org/public/api/upload-root.php:94
&gt; -            exit_with_error(&apos;InvalidRepository&apos;, array(&apos;repositoryName&apos; =&gt; $repository_name, &apos;commitSet&apos; =&gt; $commit_set_id));
&gt; +            exit_with_error(&apos;InvalidRepository&apos;, array(&apos;repositoryName&apos; =&gt; $repository_name, &apos;commitSet&apos; =&gt; $commit_set_id, &apos;full&apos; =&gt; $commit_repository_rows_in_set, &apos;dict&apos; =&gt; $commit_by_owned_and_owner_repository_names));

Names like &quot;full&quot; and &quot;dict&quot; are too generic.
I really don&apos;t think we should be dumping these entries.
These error messages aren&apos;t meant to debug perf dashboard, it&apos;s for people writing scripts to submit roots.

&gt; Websites/perf.webkit.org/public/api/upload-root.php:98
&gt; +        exit_with_error(&apos;InvalidRepositoryList&apos;, array(&apos;repositoryList&apos; =&gt; $repository_name_list, &apos;commitSet&apos; =&gt; $commit_set_id, &apos;full&apos; =&gt; $commit_repository_rows_in_set, &apos;dict&apos; =&gt; $commit_by_owned_and_owner_repository_names));

Ditto.

&gt; Websites/perf.webkit.org/server-tests/api-upload-root-tests.js:625
&gt; -    it(&apos;should update all commit set items in the repository listed&apos;, () =&gt; {
&gt; +    it(&apos;should only set build requests as complete when all roots are built&apos;, () =&gt; {

Instead of modifying the existing test, you should add a new test. r- because of this.

&gt; Websites/perf.webkit.org/server-tests/tools-sync-buildbot-integration-tests.js:809
&gt; +            assert.equal(buildRequest.statusLabel(), &apos;Running&apos;);

Again, we should add a new test case instead of modifying an existing one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362980</commentid>
    <comment_count>3</comment_count>
      <attachid>324470</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-10-20 21:36:59 -0700</bug_when>
    <thetext>Comment on attachment 324470
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/api/upload-root.php:94
&gt;&gt; +            exit_with_error(&apos;InvalidRepository&apos;, array(&apos;repositoryName&apos; =&gt; $repository_name, &apos;commitSet&apos; =&gt; $commit_set_id, &apos;full&apos; =&gt; $commit_repository_rows_in_set, &apos;dict&apos; =&gt; $commit_by_owned_and_owner_repository_names));
&gt; 
&gt; Names like &quot;full&quot; and &quot;dict&quot; are too generic.
&gt; I really don&apos;t think we should be dumping these entries.
&gt; These error messages aren&apos;t meant to debug perf dashboard, it&apos;s for people writing scripts to submit roots.

You are right. I forgot to remove this debug info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362996</commentid>
    <comment_count>4</comment_count>
      <attachid>324470</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-10-20 22:46:50 -0700</bug_when>
    <thetext>Comment on attachment 324470
Patch

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

&gt;&gt; Websites/perf.webkit.org/server-tests/api-upload-root-tests.js:625
&gt;&gt; +    it(&apos;should only set build requests as complete when all roots are built&apos;, () =&gt; {
&gt; 
&gt; Instead of modifying the existing test, you should add a new test. r- because of this.

This is a duplicate tests checked in accidentally. It&apos;s a dup to the test right above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362997</commentid>
    <comment_count>5</comment_count>
      <attachid>324489</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-10-20 22:55:57 -0700</bug_when>
    <thetext>Created attachment 324489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363456</commentid>
    <comment_count>6</comment_count>
      <attachid>324489</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-23 16:33:41 -0700</bug_when>
    <thetext>Comment on attachment 324489
Patch

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

&gt; Websites/perf.webkit.org/public/api/upload-root.php:76
&gt; +    $commit_by_owned_and_owner_repository_names = array();

Since this map&apos;s owner-major, I think it&apos;s better to call it $commit_by_owner_and_owned_repository_names

&gt; Websites/perf.webkit.org/public/api/upload-root.php:92
&gt; +        else if (is_array($repository_name) &amp;&amp; array_key_exists(&apos;ownerRepository&apos;, $repository_name) &amp;&amp; array_key_exists(&apos;ownedRepository&apos;, $repository_name))
&gt; +            $commit_id = array_get(array_get($commit_by_owned_and_owner_repository_names, $repository_name[&apos;ownerRepository&apos;], array()), $repository_name[&apos;ownedRepository&apos;]);

There&apos;s no need to check this. You can just array_get ownerRepository and ownedRepository.
On the other hand, you should spit out an error if either is missing.

&gt; Websites/perf.webkit.org/server-tests/api-upload-root-tests.js:13
&gt; +function makeReport(rootFile, buildRequestId = 1, repositoryList=[&apos;WebKit&apos;], buildTime = &apos;2017-05-10T02:54:08.666&apos;)

Nit: Need spaces around &quot;=&quot; for repositoryList.

&gt; Websites/perf.webkit.org/server-tests/api-upload-root-tests.js:623
&gt; -    it(&apos;should update all commit set items in the repository listed&apos;, () =&gt; {
&gt; +    it(&apos;should only set build requests as complete when all roots are built&apos;, () =&gt; {

Despite of having the same name, these are two different tests. Please add a new test case instead.

&gt; Websites/perf.webkit.org/server-tests/tools-sync-buildbot-integration-tests.js:105
&gt; +function uploadRoot(buildRequestId, buildNumber, repositoryList=[&quot;WebKit&quot;], buildTime=&apos;2017-05-10T02:54:08.666&apos;)

Nit: Spaces around =.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324470</attachid>
            <date>2017-10-20 17:01:25 -0700</date>
            <delta_ts>2017-10-20 22:55:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178610-20171020170124.patch</filename>
            <type>text/plain</type>
            <size>34111</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNzk5CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAxZDc1N2MzNjEwMGY5NWU0YmJjY2E1MmNiNzViMTExY2RiNDdkNWUzLi41ZTJmNzdhZjEw
OGY4MDU3ZmZlM2MwMGZhZWM0MTAxYTZmODY4ZTRjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0xMC0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgcGVyZiBkYXNoYm9hcmQgdXBsb2FkIGxvZ2lj
IHRvIHN1cHBvcnQgdXBsb2FkaW5nIGJpbmFyaWVzIGZyb20gb3duZWQgY29tbWl0cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODYxMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBidWlsZCBy
ZXF1ZXN0cyB0byAnY29tcGxldGVkJyBvbmx5IHdoZW4gYWxsIGNvbW1pdCBzZXQgaXRlbXMgYXJl
IHNhdGlzZmllZC4KKyAgICAgICAgRXh0ZW5kICdyZXBvc2l0b3J5TGlzdCcgcGFyYW1ldGVyIHRv
IGJlIGFibGUgdG8gc3BlY2lmaWVkIG93biBjb21taXQgaW5mb3JtYXRpb24uCisgICAgICAgIEl0
ZW1zIGluICdyZXBvc2l0b3J5TGlzdCcgY2FuIGVpdGhlciBiZSBhIHN0cmluZyBmb3IgdG9wIGxl
dmVsIHJlcG9zaXRvcnksCisgICAgICAgIG9yIGEgbGlzdCB3aXRoIHR3byBpdGVtcyBmb2xsb3dz
IFtvd25lcl9yZXBvc2l0b3J5LCBvd25lZF9yZXBvc2l0b3J5XSBmb3JtYXQuCisKKyAgICAgICAg
KiBwdWJsaWMvYXBpL3VwbG9hZC1yb290LnBocDogRXh0ZW5kIHVwbG9hZCBsb2dpYyBmb3Igc3Vw
cG9ydCB1cGxvYWRpbmcgYmluYXJpZXMgZnJvbSBvd25lZCBjb21taXRzLgorICAgICAgICAqIHNl
cnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanM6IEFkZGVkIHVuaXQgdGVzdHMuCisg
ICAgICAgICogc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVz
dHMuanM6IEFkZGVkIHVuaXQgdGVzdHMuCisKIDIwMTctMTAtMDUgIERld2VpIFpodSAgPGRld2Vp
X3podUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRyeS1ib3QgYnV0dG9uIG9uIHBlcmYgYW5h
bHlzaXMgc3RhdHVzIHBhZ2UuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2FwaS91cGxvYWQtcm9vdC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2FwaS91cGxvYWQtcm9vdC5waHAKaW5kZXggOTczZTk1NjZjZDM4M2FiZGIyZDc2ZmU5ZWRl
Y2RiZDQyYjY4M2Y1Zi4uNmZmZWEwMzJlMjY5YWUwMzVkNjBkYzJlOGYwOWExNzI1NzIwYzc5NiAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdXBsb2FkLXJv
b3QucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3VwbG9hZC1y
b290LnBocApAQCAtMzksOCArMzksNiBAQCBmdW5jdGlvbiBtYWluKCkKICAgICAgICAgICAgICRi
dWlsZF9pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRzJywgJ2J1aWxkJywgJGJ1aWxkX2luZm8p
OwogICAgICAgICAgICAgaWYgKCEkYnVpbGRfaWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFy
cmF5KCdzdGF0dXMnID0+ICdGYWlsZWRUb0NyZWF0ZUJ1aWxkJywgJ2J1aWxkJyA9PiAkYnVpbGRf
aW5mbyk7Ci0gICAgICAgICAgICBpZiAoISRkYi0+dXBkYXRlX3JvdygnYnVpbGRfcmVxdWVzdHMn
LCAncmVxdWVzdCcsIGFycmF5KCdpZCcgPT4gJGJ1aWxkX3JlcXVlc3RfaWQpLCBhcnJheSgnc3Rh
dHVzJyA9PiAnY29tcGxldGVkJywgJ2J1aWxkJyA9PiAkYnVpbGRfaWQpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gYXJyYXkoJ3N0YXR1cycgPT4gJ0ZhaWxlZFRvVXBkYXRlQnVpbGRSZXF1ZXN0
JywgJ2J1aWxkUmVxdWVzdCcgPT4gJGJ1aWxkX3JlcXVlc3RfaWQpOwogCiAgICAgICAgICAgICBm
b3JlYWNoICgkY29tbWl0X3NldF9pdGVtc190b191cGRhdGUgYXMgJGNvbW1pdF9pZCkgewogICAg
ICAgICAgICAgICAgIGlmICghJGRiLT51cGRhdGVfcm93KCdjb21taXRfc2V0X2l0ZW1zJywgJ2Nv
bW1pdHNldCcsCkBAIC00OCwzNiArNDYsNTYgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgICAgICAg
ICAgICAgICAgIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaWQsICdyb290X2ZpbGUnID0+ICRy
b290X2ZpbGVfaWQpLCAnKicpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoJ3N0
YXR1cycgPT4gJ0ZhaWxlZFRvVXBkYXRlQ29tbWl0U2V0JywgJ2NvbW1pdFNldCcgPT4gJGNvbW1p
dF9zZXRfaWQsICdjb21taXQnID0+ICRjb21taXRfaWQpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCFhbGxfY29tbWl0X3NldF9pdGVtc19hcmVfc2F0aXNmaWVkKCRkYiwgJGNvbW1p
dF9zZXRfaWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYg
KCEkZGItPnVwZGF0ZV9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgnaWQn
ID0+ICRidWlsZF9yZXF1ZXN0X2lkKSwgYXJyYXkoJ3N0YXR1cycgPT4gJ2NvbXBsZXRlZCcsICdi
dWlsZCcgPT4gJGJ1aWxkX2lkKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdzdGF0
dXMnID0+ICdGYWlsZWRUb1VwZGF0ZUJ1aWxkUmVxdWVzdCcsICdidWlsZFJlcXVlc3QnID0+ICRi
dWlsZF9yZXF1ZXN0X2lkKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9KTsK
IAogICAgIGV4aXRfd2l0aF9zdWNjZXNzKGFycmF5KCd1cGxvYWRlZEZpbGUnID0+ICR1cGxvYWRl
ZF9maWxlKSk7CiB9CiAKK2Z1bmN0aW9uIGFsbF9jb21taXRfc2V0X2l0ZW1zX2FyZV9zYXRpc2Zp
ZWQoJGRiLCAkY29tbWl0X3NldF9pZCkKK3sKKyAgICByZXR1cm4gISRkYi0+c2VsZWN0X2ZpcnN0
X3JvdygnY29tbWl0X3NldF9pdGVtcycsICdjb21taXRzZXQnLCBhcnJheSgncm9vdF9maWxlJyA9
PiBOVUxMLCAncmVxdWlyZXNfYnVpbGQnID0+IFRSVUUsICdzZXQnID0+ICRjb21taXRfc2V0X2lk
KSk7Cit9CisKIGZ1bmN0aW9uIGNvbXB1dGVfY29tbWl0X3NldF9pdGVtc190b191cGRhdGUoJGRi
LCAkY29tbWl0X3NldF9pZCwgJHJlcG9zaXRvcnlfbmFtZV9saXN0KQogewogICAgIGlmICghaXNf
YXJyYXkoJHJlcG9zaXRvcnlfbmFtZV9saXN0KSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJ
bnZhbGlkUmVwb3NpdG9yeUxpc3QnLCBhcnJheSgncmVwb3NpdG9yeUxpc3QnID0+ICRyZXBvc2l0
b3J5X25hbWVfbGlzdCkpOwogCi0gICAgJGNvbW1pdF9yZXBvc2l0b3J5X3Jvd3NfaW5fc2V0ID0g
JGRiLT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1QgKiBGUk9NIHJlcG9zaXRvcmllcywgY29t
bWl0cywgY29tbWl0X3NldF9pdGVtcwotICAgICAgICBXSEVSRSByZXBvc2l0b3J5X2lkID0gY29t
bWl0X3JlcG9zaXRvcnkgQU5EIGNvbW1pdF9pZCA9IGNvbW1pdHNldF9jb21taXQKKyAgICAkY29t
bWl0X3JlcG9zaXRvcnlfcm93c19pbl9zZXQgPSAkZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NF
TEVDVCBjb21taXRfc2V0X2l0ZW1zLmNvbW1pdHNldF9jb21taXQgYXMgY29tbWl0c2V0X2NvbW1p
dCwgb3duZWQucmVwb3NpdG9yeV9uYW1lIGFzIHJlcG9zaXRvcnlfbmFtZSwgb3duZXIucmVwb3Np
dG9yeV9uYW1lIGFzIG93bmVyX3JlcG9zaXRvcnlfbmFtZQorICAgICAgICBGUk9NIHJlcG9zaXRv
cmllcyBhcyBvd25lZCBMRUZUIE9VVEVSIEpPSU4gcmVwb3NpdG9yaWVzIGFzIG93bmVyIE9OIG93
bmVkLnJlcG9zaXRvcnlfb3duZXIgPSBvd25lci5yZXBvc2l0b3J5X2lkLCBjb21taXRzLCBjb21t
aXRfc2V0X2l0ZW1zCisgICAgICAgIFdIRVJFIG93bmVkLnJlcG9zaXRvcnlfaWQgPSBjb21taXRf
cmVwb3NpdG9yeSBBTkQgY29tbWl0X2lkID0gY29tbWl0c2V0X2NvbW1pdAogICAgICAgICAgICAg
QU5EIGNvbW1pdHNldF9zZXQgPSAkMScsIGFycmF5KCRjb21taXRfc2V0X2lkKSk7CiAKICAgICAk
Y29tbWl0X2J5X3JlcG9zaXRvcnlfbmFtZSA9IGFycmF5KCk7CisgICAgJGNvbW1pdF9ieV9vd25l
ZF9hbmRfb3duZXJfcmVwb3NpdG9yeV9uYW1lcyA9IGFycmF5KCk7CiAgICAgaWYgKCRjb21taXRf
cmVwb3NpdG9yeV9yb3dzX2luX3NldCkgewogICAgICAgICBmb3JlYWNoICgkY29tbWl0X3JlcG9z
aXRvcnlfcm93c19pbl9zZXQgYXMgJHJvdykKLSAgICAgICAgICAgICRjb21taXRfYnlfcmVwb3Np
dG9yeV9uYW1lWyRyb3dbJ3JlcG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ2NvbW1pdHNldF9jb21t
aXQnXTsKKyAgICAgICAgICAgIGlmICgkcm93Wydvd25lcl9yZXBvc2l0b3J5X25hbWUnXSkgewor
ICAgICAgICAgICAgICAgICRvd25lZF9yZXBvc2l0b3JpZXMgPSAmYXJyYXlfZW5zdXJlX2l0ZW1f
aGFzX2FycmF5KCRjb21taXRfYnlfb3duZWRfYW5kX293bmVyX3JlcG9zaXRvcnlfbmFtZXMsICRy
b3dbJ293bmVyX3JlcG9zaXRvcnlfbmFtZSddKTsKKyAgICAgICAgICAgICAgICAkb3duZWRfcmVw
b3NpdG9yaWVzWyRyb3dbJ3JlcG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ2NvbW1pdHNldF9jb21t
aXQnXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAk
Y29tbWl0X2J5X3JlcG9zaXRvcnlfbmFtZVskcm93WydyZXBvc2l0b3J5X25hbWUnXV0gPSAkcm93
Wydjb21taXRzZXRfY29tbWl0J107CiAgICAgfQogCiAgICAgJGNvbW1pdF9zZXRfaXRlbXNfdG9f
dXBkYXRlID0gYXJyYXkoKTsKICAgICBmb3JlYWNoICgkcmVwb3NpdG9yeV9uYW1lX2xpc3QgYXMg
JHJlcG9zaXRvcnlfbmFtZSkgewotICAgICAgICAkY29tbWl0X2lkID0gYXJyYXlfZ2V0KCRjb21t
aXRfYnlfcmVwb3NpdG9yeV9uYW1lLCAkcmVwb3NpdG9yeV9uYW1lKTsKKyAgICAgICAgJGNvbW1p
dF9pZCA9IE5VTEw7CisgICAgICAgIGlmIChpc19zdHJpbmcoJHJlcG9zaXRvcnlfbmFtZSkpCisg
ICAgICAgICAgICAkY29tbWl0X2lkID0gYXJyYXlfZ2V0KCRjb21taXRfYnlfcmVwb3NpdG9yeV9u
YW1lLCAkcmVwb3NpdG9yeV9uYW1lKTsKKyAgICAgICAgZWxzZWlmKGlzX2FycmF5KCRyZXBvc2l0
b3J5X25hbWUpICYmIGNvdW50KCRyZXBvc2l0b3J5X25hbWUpID09IDIpCisgICAgICAgICAgICAk
Y29tbWl0X2lkID0gYXJyYXlfZ2V0KGFycmF5X2dldCgkY29tbWl0X2J5X293bmVkX2FuZF9vd25l
cl9yZXBvc2l0b3J5X25hbWVzLCAkcmVwb3NpdG9yeV9uYW1lWzBdLCBhcnJheSgpKSwgJHJlcG9z
aXRvcnlfbmFtZVsxXSk7CiAgICAgICAgIGlmICghJGNvbW1pdF9pZCkKLSAgICAgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcG9zaXRvcnknLCBhcnJheSgncmVwb3NpdG9yeU5hbWUn
ID0+ICRyZXBvc2l0b3J5X25hbWUsICdjb21taXRTZXQnID0+ICRjb21taXRfc2V0X2lkKSk7Cisg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBvc2l0b3J5JywgYXJyYXkoJ3Jl
cG9zaXRvcnlOYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lLCAnY29tbWl0U2V0JyA9PiAkY29tbWl0
X3NldF9pZCwgJ2Z1bGwnID0+ICRjb21taXRfcmVwb3NpdG9yeV9yb3dzX2luX3NldCwgJ2RpY3Qn
ID0+ICRjb21taXRfYnlfb3duZWRfYW5kX293bmVyX3JlcG9zaXRvcnlfbmFtZXMpKTsKICAgICAg
ICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldF9pdGVtc190b191cGRhdGUsICRjb21taXRfaWQpOwog
ICAgIH0KICAgICBpZiAoISRjb21taXRfc2V0X2l0ZW1zX3RvX3VwZGF0ZSkKLSAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwb3NpdG9yeUxpc3QnLCBhcnJheSgncmVwb3NpdG9yeUxp
c3QnID0+ICRyZXBvc2l0b3J5X2xpc3QpKTsKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZh
bGlkUmVwb3NpdG9yeUxpc3QnLCBhcnJheSgncmVwb3NpdG9yeUxpc3QnID0+ICRyZXBvc2l0b3J5
X25hbWVfbGlzdCwgJ2NvbW1pdFNldCcgPT4gJGNvbW1pdF9zZXRfaWQsICdmdWxsJyA9PiAkY29t
bWl0X3JlcG9zaXRvcnlfcm93c19pbl9zZXQsICdkaWN0JyA9PiAkY29tbWl0X2J5X293bmVkX2Fu
ZF9vd25lcl9yZXBvc2l0b3J5X25hbWVzKSk7CiAKICAgICByZXR1cm4gJGNvbW1pdF9zZXRfaXRl
bXNfdG9fdXBkYXRlOwogfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qcwppbmRleCBiZmZjZjYw
YjQ3Y2RmNjY3MjllMTE5YjFkYTZlYjcyYThhZGJlYzNiLi40YWZmYTZlZDAxMDU4Mjc5NzU5NDM4
MDkwYzRjMjZiMmE5ZGZiYzI0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qcwpAQCAtMTAs
MTcgKzEwLDE3IEBAIGNvbnN0IFRlbXBvcmFyeUZpbGUgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90
ZW1wb3JhcnktZmlsZS5qcycpLlRlbXBvcmFyeUZpbGU7CiBjb25zdCBhZGRTbGF2ZUZvclJlcG9y
dCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYWRkU2xhdmVG
b3JSZXBvcnQ7CiBjb25zdCBwcmVwYXJlU2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVzb3VyY2Vz
L2NvbW1vbi1vcGVyYXRpb25zLmpzJykucHJlcGFyZVNlcnZlclRlc3Q7CiAKLWZ1bmN0aW9uIG1h
a2VSZXBvcnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdElkID0gMSkKK2Z1bmN0aW9uIG1ha2VSZXBv
cnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdElkID0gMSwgcmVwb3NpdG9yeUxpc3Q9WydXZWJLaXQn
XSwgYnVpbGRUaW1lID0gJzIwMTctMDUtMTBUMDI6NTQ6MDguNjY2JykKIHsKICAgICByZXR1cm4g
ewogICAgICAgICBzbGF2ZU5hbWU6ICdzb21lU2xhdmUnLAogICAgICAgICBzbGF2ZVBhc3N3b3Jk
OiAnc29tZVBhc3N3b3JkJywKICAgICAgICAgYnVpbGRlck5hbWU6ICdzb21lQnVpbGRlcicsCiAg
ICAgICAgIGJ1aWxkTnVtYmVyOiAxMjMsCi0gICAgICAgIGJ1aWxkVGltZTogJzIwMTctMDUtMTBU
MDI6NTQ6MDguNjY2JywKKyAgICAgICAgYnVpbGRUaW1lOiBidWlsZFRpbWUsCiAgICAgICAgIGJ1
aWxkUmVxdWVzdDogYnVpbGRSZXF1ZXN0SWQsCiAgICAgICAgIHJvb3RGaWxlOiByb290RmlsZSwK
LSAgICAgICAgcmVwb3NpdG9yeUxpc3Q6ICdbIldlYktpdCJdJywKKyAgICAgICAgcmVwb3NpdG9y
eUxpc3Q6IEpTT04uc3RyaW5naWZ5KHJlcG9zaXRvcnlMaXN0KSwKICAgICB9OwogfQogCkBAIC03
Myw2ICs3Myw0OCBAQCBmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXBXaWhQYXRjaCgpCiAgICAgfSk7
CiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRjaEFuZE93bmVkQ29tbWl0cygp
Cit7CisgICAgY29uc3QgdHJpZ2dlcmFibGVDb25maWd1cmF0aW9uID0geworICAgICAgICAnc2xh
dmVOYW1lJzogJ3N5bmMtc2xhdmUnLAorICAgICAgICAnc2xhdmVQYXNzd29yZCc6ICdwYXNzd29y
ZCcsCisgICAgICAgICd0cmlnZ2VyYWJsZSc6ICdidWlsZC13ZWJraXQnLAorICAgICAgICAnY29u
ZmlndXJhdGlvbnMnOiBbCisgICAgICAgICAgICB7dGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgp
LCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKX0sCisgICAgICAgIF0sCisgICAg
ICAgICdyZXBvc2l0b3J5R3JvdXBzJzogWworICAgICAgICAgICAge25hbWU6ICd3ZWJraXQnLCBy
ZXBvc2l0b3JpZXM6IFsKKyAgICAgICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEud2Vi
a2l0UmVwb3NpdG9yeUlkKCksIGFjY2VwdHNQYXRjaDogdHJ1ZX0KKyAgICAgICAgICAgIF19Cisg
ICAgICAgIF0KKyAgICB9OworCisgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7
CisgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFtUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdw
YXRjaC5kYXQnLCAncGF0Y2ggZmlsZScpLCBNYW5pZmVzdC5mZXRjaCgpXSk7CisgICAgfSkudGhl
bigocmVzdWx0KSA9PiB7CisgICAgICAgIGNvbnN0IHBhdGNoRmlsZSA9IHJlc3VsdFswXTsKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtVcGxvYWRlZEZpbGUudXBsb2FkRmlsZShwYXRjaEZp
bGUpLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2Vy
YWJsZS8nLCB0cmlnZ2VyYWJsZUNvbmZpZ3VyYXRpb24pXSk7CisgICAgfSkudGhlbigocmVzdWx0
KSA9PiB7CisgICAgICAgIGNvbnN0IHBhdGNoRmlsZSA9IHJlc3VsdFswXTsKKyAgICAgICAgY29u
c3Qgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSk7CisgICAg
ICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVw
b3NpdG9yeUlkKCkpOworICAgICAgICBjb25zdCBvd25lZFNKQyA9IFJlcG9zaXRvcnkuZmluZEJ5
SWQoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgIGNvbnN0IHNldDEg
PSBuZXcgQ3VzdG9tQ29tbWl0U2V0OworICAgICAgICBzZXQxLnNldFJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQsICcxOTE2MjInLCBwYXRjaEZpbGUpOworICAgICAgICBzZXQxLnNldFJldmlz
aW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywgJ293bmVkLWpzYy02MTYxJywgbnVsbCwgJzE5MTYy
MicpOworICAgICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKKyAgICAgICAg
c2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkyNzM2Jyk7CisgICAgICAg
IHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkU0pDLCAnb3duZWQtanNjLTkxOTEn
LCBudWxsLCAnMTkyNzM2Jyk7CisKKyAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRo
VGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKTsKKyAgICB9
KS50aGVuKCh0YXNrKSA9PiB7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFz
ayh0YXNrLmlkKCkpWzBdOworICAgIH0pLnRoZW4oKGdyb3VwKSA9PiB7CisgICAgICAgIHJldHVy
biBkYi5xdWVyeSgnVVBEQVRFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFNFVCB0ZXN0Z3JvdXBfYXV0
aG9yID0gJDEnLCBbJ3NvbWVVc2VyJ10pLnRoZW4oKCkgPT4gZ3JvdXApOworICAgIH0pOworfQor
CiBkZXNjcmliZSgnL2FwaS91cGxvYWQtcm9vdC8nLCBmdW5jdGlvbiAoKSB7CiAgICAgcHJlcGFy
ZVNlcnZlclRlc3QodGhpcyk7CiAgICAgVGVtcG9yYXJ5RmlsZS5pbmplY3QoKTsKQEAgLTE5OSw2
ICsyNDEsMTYyIEBAIGRlc2NyaWJlKCcvYXBpL3VwbG9hZC1yb290LycsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHVzaW5n
IG1vcmUgdGhhbiB0d28gcmVwb3NpdG9yaWVzIHRvIHNwZWNpZnkgYW4gb3duZWQgcmVwb3NpdG9y
eScsICgpID0+IHsKKyAgICAgICAgbGV0IHdlYmtpdDsKKyAgICAgICAgbGV0IHdlYmtpdFBhdGNo
OworICAgICAgICBsZXQgb3duZWRKU0M7CisgICAgICAgIGxldCB0ZXN0R3JvdXA7CisgICAgICAg
IGxldCBidWlsZFJlcXVlc3Q7CisgICAgICAgIGxldCBvdGhlckJ1aWxkUmVxdWVzdDsKKyAgICAg
ICAgbGV0IHVwbG9hZGVkUm9vdDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVRlc3RHcm91cFdpdGhQ
YXRjaEFuZE93bmVkQ29tbWl0cygpLnRoZW4oKGdyb3VwKSA9PiB7CisgICAgICAgICAgICB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsK
KyAgICAgICAgICAgIG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS5vd25l
ZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKworICAgICAgICAgICAgdGVzdEdyb3VwID0gZ3JvdXA7Cisg
ICAgICAgICAgICBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCkubGVuZ3Ro
LCA2KTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAg
ICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2Vy
dCghYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0KGJ1aWxk
UmVxdWVzdC5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGJ1
aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAg
IHdlYmtpdFBhdGNoID0gY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpOworICAg
ICAgICAgICAgYXNzZXJ0KHdlYmtpdFBhdGNoIGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRQYXRjaC5maWxlbmFtZSgpLCAncGF0Y2guZGF0
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZp
c2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwg
bnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0
b3J5KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1p
dFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICBvdGhlckJ1aWxkUmVxdWVz
dCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAgICAgICBjb25zdCBvdGhl
ckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucGF0
Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShv
d25lZEpTQyksICdvd25lZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90
aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KG93bmVk
SlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0
LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUFuZENy
ZWF0ZVJvb3RGaWxlKCk7CisgICAgICAgIH0pLnRoZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3QuaWQo
KSwgWydXZWJLaXQnXSk7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3QvJywgcmVwb3J0KTsKKyAgICAgICAgfSku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRSb290UmF3RGF0YSA9
IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAgIHVwbG9hZGVkUm9vdCA9IFVw
bG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24odXBsb2FkZWRSb290UmF3RGF0YS5pZCwgdXBsb2Fk
ZWRSb290UmF3RGF0YSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodXBsb2FkZWRSb290LmZp
bGVuYW1lKCksICdzb21lLmRhdCcpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRj
aEZvclRhc2soYnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpLnRhc2soKS5pZCgpLCB0cnVlKTsKKyAg
ICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdy
b3Vwc1swXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cCwgdGVzdEdyb3VwKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwg
Nik7CisKKyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAu
YnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRCdWls
ZFJlcXVlc3QsIGJ1aWxkUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVl
c3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgp
KTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxS
b290RmlsZXMoKSwgW3VwbG9hZGVkUm9vdF0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW10pOworICAg
ICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ0phdmFTY3Jp
cHRDb3JlLVJvb3QuZGF0JywgJ0phdmFTY3JpcHQgQ29udGVudCAwJyk7CisgICAgICAgIH0pLnRo
ZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0
KHJvb3RGaWxlLCBidWlsZFJlcXVlc3QuaWQoKSwgW1snV2ViS2l0JywnSmF2YVNjcmlwdENvcmUn
LCAnSW52YWxpZCddXSwgJzIwMTctMDUtMTBUMDI6NTQ6MDkuNjY2Jyk7CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJv
b3QvJywgcmVwb3J0KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAg
ICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdJbnZhbGlkUmVwb3NpdG9yeScpOworICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gcmVwb3J0aW5nIGFuIGludmFsaWQgb3du
ZWQgcmVwb3NpdG9yeScsICgpID0+IHsKKyAgICAgICAgbGV0IHdlYmtpdDsKKyAgICAgICAgbGV0
IHdlYmtpdFBhdGNoOworICAgICAgICBsZXQgb3duZWRKU0M7CisgICAgICAgIGxldCB0ZXN0R3Jv
dXA7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3Q7CisgICAgICAgIGxldCBvdGhlckJ1aWxkUmVx
dWVzdDsKKyAgICAgICAgbGV0IHVwbG9hZGVkUm9vdDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVRl
c3RHcm91cFdpdGhQYXRjaEFuZE93bmVkQ29tbWl0cygpLnRoZW4oKGdyb3VwKSA9PiB7CisgICAg
ICAgICAgICB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9z
aXRvcnlJZCgpKTsKKyAgICAgICAgICAgIG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChN
b2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKworICAgICAgICAgICAgdGVzdEdyb3Vw
ID0gZ3JvdXA7CisgICAgICAgICAgICBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1
ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJlcXVl
c3RzKCkubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWls
ZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAg
ICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAg
YXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNv
bW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsK
KyAgICAgICAgICAgIHdlYmtpdFBhdGNoID0gY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3
ZWJraXQpOworICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFBhdGNoIGluc3RhbmNlb2YgVXBsb2Fk
ZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRQYXRjaC5maWxlbmFtZSgp
LCAncGF0Y2guZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RG
b3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTYxNjEn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5
KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJv
b3RGb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICBvdGhl
ckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAgICAg
ICBjb25zdCBvdGhlckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJD
b21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9y
UmVwb3NpdG9yeShvd25lZEpTQyksICdvd25lZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBv
c2l0b3J5KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90
aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIHJldHVybiBh
ZGRTbGF2ZUFuZENyZWF0ZVJvb3RGaWxlKCk7CisgICAgICAgIH0pLnRoZW4oKHJvb3RGaWxlKSA9
PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWls
ZFJlcXVlc3QuaWQoKSwgWydXZWJLaXQnXSk7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3QvJywgcmVwb3J0KTsK
KyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRS
b290UmF3RGF0YSA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAgIHVwbG9h
ZGVkUm9vdCA9IFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24odXBsb2FkZWRSb290UmF3RGF0
YS5pZCwgdXBsb2FkZWRSb290UmF3RGF0YSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodXBs
b2FkZWRSb290LmZpbGVuYW1lKCksICdzb21lLmRhdCcpOworICAgICAgICAgICAgcmV0dXJuIFRl
c3RHcm91cC5mZXRjaEZvclRhc2soYnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpLnRhc2soKS5pZCgp
LCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cCwgdGVz
dEdyb3VwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0
cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWlsZFJlcXVlc3Qg
PSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHVwZGF0ZWRCdWlsZFJlcXVlc3QsIGJ1aWxkUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGFzc2Vy
dChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1
ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0Lmhhc0Zpbmlz
aGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCks
IG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkUmVxdWVzdC5jb21t
aXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW3VwbG9hZGVkUm9vdF0pOworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxSb290RmlsZXMo
KSwgW10pOworICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZp
bGUoJ0phdmFTY3JpcHRDb3JlLVJvb3QuZGF0JywgJ0phdmFTY3JpcHQgQ29udGVudCAwJyk7Cisg
ICAgICAgIH0pLnRoZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQg
PSBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3QuaWQoKSwgW1snV2ViS2l0MicsJ0ph
dmFTY3JpcHRDb3JlJ11dLCAnMjAxNy0wNS0xMFQwMjo1NDowOS42NjYnKTsKKyAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQt
cm9vdC8nLCByZXBvcnQpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlWydzdGF0dXMnXSwgJ0ludmFsaWRSZXBvc2l0b3J5Jyk7CisgICAgICAgIH0pOworICAg
IH0pOworCiAgICAgaXQoJ3Nob3VsZCBhY2NlcHQgd2hlbiBidWlsZCByZXF1ZXN0IGV4aXN0cycs
ICgpID0+IHsKICAgICAgICAgbGV0IHdlYmtpdDsKICAgICAgICAgbGV0IHdlYmtpdFBhdGNoOwpA
QCAtNDI0LDE3ICs2MjIsMTggQEAgZGVzY3JpYmUoJy9hcGkvdXBsb2FkLXJvb3QvJywgZnVuY3Rp
b24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgdXBkYXRlIGFs
bCBjb21taXQgc2V0IGl0ZW1zIGluIHRoZSByZXBvc2l0b3J5IGxpc3RlZCcsICgpID0+IHsKKyAg
ICBpdCgnc2hvdWxkIG9ubHkgc2V0IGJ1aWxkIHJlcXVlc3RzIGFzIGNvbXBsZXRlIHdoZW4gYWxs
IHJvb3RzIGFyZSBidWlsdCcsICgpID0+IHsKICAgICAgICAgbGV0IHdlYmtpdDsKICAgICAgICAg
bGV0IHdlYmtpdFBhdGNoOwotICAgICAgICBsZXQgc2hhcmVkOworICAgICAgICBsZXQgb3duZWRK
U0M7CiAgICAgICAgIGxldCB0ZXN0R3JvdXA7CiAgICAgICAgIGxldCBidWlsZFJlcXVlc3Q7CiAg
ICAgICAgIGxldCBvdGhlckJ1aWxkUmVxdWVzdDsKICAgICAgICAgbGV0IHVwbG9hZGVkUm9vdDsK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVRlc3RHcm91cFdpaFBhdGNoKCkudGhlbigoZ3JvdXApID0+
IHsKKyAgICAgICAgbGV0IGpzY1Jvb3Q7CisgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBX
aXRoUGF0Y2hBbmRPd25lZENvbW1pdHMoKS50aGVuKChncm91cCkgPT4gewogICAgICAgICAgICAg
d2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQo
KSk7Ci0gICAgICAgICAgICBzaGFyZWQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLnNo
YXJlZFJlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIG93bmVkSlNDID0gUmVwb3NpdG9yeS5m
aW5kQnlJZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKIAogICAgICAgICAgICAg
dGVzdEdyb3VwID0gZ3JvdXA7CiAgICAgICAgICAgICBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAu
YnVpbGRSZXF1ZXN0cygpWzBdOwpAQCAtNDQyLDcgKzY0MSw3IEBAIGRlc2NyaWJlKCcvYXBpL3Vw
bG9hZC1yb290LycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVl
c3QuaXNCdWlsZCgpKTsKICAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgp
KTsKICAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpOwotICAg
ICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc1BlbmRpbmcoKSk7IAorICAgICAgICAgICAg
YXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc1BlbmRpbmcoKSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CiAKICAgICAgICAgICAgIGNvbnN0IGNv
bW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKQEAgLTQ1MSwyNSArNjUwLDI0IEBA
IGRlc2NyaWJlKCcvYXBpL3VwbG9hZC1yb290LycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGFzc2VydCh3ZWJraXRQYXRjaCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwod2Via2l0UGF0Y2guZmlsZW5hbWUoKSwgJ3BhdGNoLmRhdCcpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCBudWxsKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHNoYXJlZCksICc4MDIyOScpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkoc2hhcmVkKSwgbnVsbCk7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHNoYXJlZCksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
b3duZWRKU0MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgbnVs
bCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMo
KSwgW10pOwogCiAgICAgICAgICAgICBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWls
ZFJlcXVlc3RzKClbMV07CiAgICAgICAgICAgICBjb25zdCBvdGhlckNvbW1pdFNldCA9IG90aGVy
QnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVy
Q29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksICcxOTI3MzYnKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1p
dFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7
Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHNoYXJlZCksICc4MDIyOScpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVy
Q29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTkxOTEnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVw
b3NpdG9yeShvd25lZEpTQyksIG51bGwpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChv
dGhlckNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOwogCiAgICAgICAgICAgICByZXR1cm4g
YWRkU2xhdmVBbmRDcmVhdGVSb290RmlsZSgpOwogICAgICAgICB9KS50aGVuKChyb290RmlsZSkg
PT4gewotICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gbWFrZVJlcG9ydChyb290RmlsZSwgYnVp
bGRSZXF1ZXN0LmlkKCkpOwotICAgICAgICAgICAgcmVwb3J0LnJlcG9zaXRvcnlMaXN0ID0gJ1si
V2ViS2l0IiwgIlNoYXJlZCJdJzsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBv
cnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdC5pZCgpLCBbJ1dlYktpdCddKTsKICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQt
cm9vdC8nLCByZXBvcnQpOwogICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CkBAIC00ODgsMTMg
KzY4NiwzOCBAQCBkZXNjcmliZSgnL2FwaS91cGxvYWQtcm9vdC8nLCBmdW5jdGlvbiAoKSB7CiAK
ICAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKICAgICAgICAgICAg
IGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVp
bGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW3VwbG9hZGVkUm9vdF0p
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRT
ZXQoKS5hbGxSb290RmlsZXMoKSwgW10pOworICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZp
bGUubWFrZVRlbXBvcmFyeUZpbGUoJ0phdmFTY3JpcHRDb3JlLVJvb3QuZGF0JywgJ0phdmFTY3Jp
cHQgQ29udGVudCAwJyk7CisgICAgICAgIH0pLnRoZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3QuaWQo
KSwgW1snV2ViS2l0JywnSmF2YVNjcmlwdENvcmUnXV0sICcyMDE3LTA1LTEwVDAyOjU0OjA5LjY2
NicpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1E
YXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
T0snKTsKKyAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkUm9vdFJhd0RhdGEgPSByZXNwb25zZVsn
dXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICBqc2NSb290ID0gVXBsb2FkZWRGaWxlLmVuc3Vy
ZVNpbmdsZXRvbih1cGxvYWRlZFJvb3RSYXdEYXRhLmlkLCB1cGxvYWRlZFJvb3RSYXdEYXRhKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChqc2NSb290LmZpbGVuYW1lKCksICdKYXZhU2NyaXB0
Q29yZS1Sb290LmRhdCcpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZvclRh
c2soYnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpLnRhc2soKS5pZCgpLCB0cnVlKTsKKyAgICAgICAg
fSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cCwgdGVzdEdyb3VwKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisK
KyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRS
ZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRCdWlsZFJlcXVl
c3QsIGJ1aWxkUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNC
dWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKICAg
ICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSk7Ci0gICAgICAgICAg
ICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1BlbmRpbmcoKSk7IAorICAgICAgICAgICAgYXNzZXJ0
KCFidWlsZFJlcXVlc3QuaXNQZW5kaW5nKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFs
KGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOwogCi0gICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW3VwbG9hZGVk
Um9vdF0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZFJlcXVlc3QuY29tbWl0
U2V0KCkuYWxsUm9vdEZpbGVzKCksIFt1cGxvYWRlZFJvb3QsIGpzY1Jvb3RdKTsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCkuYWxsUm9v
dEZpbGVzKCksIFtdKTsKICAgICAgICAgfSk7CiAgICAgfSk7Ci0KIH0pOwpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90
LWludGVncmF0aW9uLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCmluZGV4IGIwYzA4
NGFlODcwMTdmNTE3MTEzYWE2ZThlZWY5ZDcxMGM2NDRhNzUuLmMxZTFhYmJjN2RhNzJiYmMzM2Y0
MmY3ZjU3NGI3NWRkMWJhZWM1ZGMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVp
bGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKQEAgLTEwMiwxOCArMTAyLDE4IEBAIGZ1bmN0aW9u
IGNyZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KCkKICAgICB9KTsKIH0KIAotZnVuY3Rpb24g
dXBsb2FkUm9vdChidWlsZFJlcXVlc3RJZCwgYnVpbGROdW1iZXIpCitmdW5jdGlvbiB1cGxvYWRS
b290KGJ1aWxkUmVxdWVzdElkLCBidWlsZE51bWJlciwgcmVwb3NpdG9yeUxpc3Q9WyJXZWJLaXQi
XSwgYnVpbGRUaW1lPScyMDE3LTA1LTEwVDAyOjU0OjA4LjY2NicpCiB7Ci0gICAgcmV0dXJuIFRl
bXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoYHJvb3Qke2J1aWxkTnVtYmVyfS5kYXRgLCBg
cm9vdCBmb3IgYnVpbGQgJHtidWlsZE51bWJlcn1gKS50aGVuKChyb290RmlsZSkgPT4geworICAg
IHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKGByb290JHtidWlsZE51bWJl
cn0uZGF0YCwgYHJvb3QgZm9yIGJ1aWxkICR7YnVpbGROdW1iZXJ9IGFuZCByZXBvc2l0b3J5IGxp
c3QgYXQgJHtidWlsZFRpbWV9YCkudGhlbigocm9vdEZpbGUpID0+IHsKICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290Lycs
IHsKICAgICAgICAgICAgIHNsYXZlTmFtZTogJ3N5bmMtc2xhdmUnLAogICAgICAgICAgICAgc2xh
dmVQYXNzd29yZDogJ3Bhc3N3b3JkJywKICAgICAgICAgICAgIGJ1aWxkZXJOYW1lOiAnc29tZSBi
dWlsZGVyJywKICAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBidWlsZE51bWJlciwKLSAgICAgICAg
ICAgIGJ1aWxkVGltZTogJzIwMTctMDUtMTBUMDI6NTQ6MDguNjY2JywKKyAgICAgICAgICAgIGJ1
aWxkVGltZTogYnVpbGRUaW1lLAogICAgICAgICAgICAgYnVpbGRSZXF1ZXN0OiBidWlsZFJlcXVl
c3RJZCwKICAgICAgICAgICAgIHJvb3RGaWxlLAotICAgICAgICAgICAgcmVwb3NpdG9yeUxpc3Q6
ICdbIldlYktpdCJdJywKKyAgICAgICAgICAgIHJlcG9zaXRvcnlMaXN0OiBKU09OLnN0cmluZ2lm
eShyZXBvc2l0b3J5TGlzdCksCiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtODA2LDYgKzgw
Niw0NyBAQCBkZXNjcmliZSgnc3luYy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIGNvbnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CiAg
ICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CiAgICAgICAgICAgICBh
c3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
YnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdSdW5uaW5nJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBj
b25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkx
NjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQu
b3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlND
KSwgY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAg
IGNvbnN0IHdlYmtpdFJvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KTsK
KyAgICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTIz
LmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9vdEZp
bGVzKCksIFt3ZWJraXRSb290XSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1
ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGFzc2VydChv
dGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1
aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWls
ZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAg
ICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQo
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90
aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyks
IG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsK
KyAgICAgICAgICAgIHJldHVybiB1cGxvYWRSb290KGJ1aWxkUmVxdWVzdC5pZCgpLCAxMjMsIFtb
J1dlYktpdCcsICdKYXZhU2NyaXB0Q29yZSddXSwgJzIwMTctMDUtMTBUMDI6NTQ6MDkuNjY2Jyk7
CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5m
ZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3Vwcykg
PT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRv
cnlJZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJ
ZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAg
IGNvbnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAg
ICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3Nl
cnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVp
bGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CiAgICAgICAgICAgICBhc3Nl
cnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CkBAIC04MTgsNyArODU5
LDEwIEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90JywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgY29uc3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQp
OwogICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jvb3Qx
MjMuZGF0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290
RmlsZXMoKSwgW3dlYmtpdFJvb3RdKTsKKyAgICAgICAgICAgIGNvbnN0IGpzY1Jvb3QgPSBjb21t
aXRTZXQucm9vdEZvclJlcG9zaXRvcnkoKG93bmVkSlNDKSk7CisgICAgICAgICAgICBhc3NlcnQo
anNjUm9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoanNjUm9vdC5maWxlbmFtZSgpLCAncm9vdDEyMy5kYXQnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbd2Via2l0Um9vdCwganNjUm9v
dF0pOwogCiAgICAgICAgICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5i
dWlsZFJlcXVlc3RzKClbMV07CiAgICAgICAgICAgICBhc3NlcnQob3RoZXJCdWlsZFJlcXVlc3Qu
aXNCdWlsZCgpKTsKQEAgLTg5NCw5ICs5MzgsMTAgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRib3Qn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVy
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIGNv
bW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CiAgICAgICAgICAgICBjb25z
dCB3ZWJraXRSb290ID0gY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAg
ICAgICAgICBjb25zdCBqc2NSb290ID0gY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KG93bmVk
SlNDKTsKICAgICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRG
aWxlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdy
b290MTIzLmRhdCcpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxs
Um9vdEZpbGVzKCksIFt3ZWJraXRSb290XSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW3dlYmtpdFJvb3QsIGpzY1Jvb3RdKTsKIAogICAg
ICAgICAgICAgY29uc3Qgb3RoZXJCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0
cygpWzFdOwogICAgICAgICAgICAgYXNzZXJ0KG90aGVyQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7
CkBAIC05MzgsNyArOTgzLDUyIEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90JywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgY29uc3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVw
b3NpdG9yeSh3ZWJraXQpOwogICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2Vv
ZiBVcGxvYWRlZEZpbGUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmls
ZW5hbWUoKSwgJ3Jvb3QxMjMuZGF0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bW1pdFNldC5hbGxSb290RmlsZXMoKSwgW3dlYmtpdFJvb3RdKTsKKyAgICAgICAgICAgIGNvbnN0
IGpzY1Jvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3duZWRKU0MpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFt3ZWJraXRS
b290LCBqc2NSb290XSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0g
dGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1
aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVx
dWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVl
c3Quc3RhdHVzTGFiZWwoKSwgJ1J1bm5pbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChv
dGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1
aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChvdGhlckJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBj
b25zdCBvdGhlckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9y
eSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21t
aXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0Lm93bmVy
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgb3RoZXJDb21taXRTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgY29uc3Qgb3RoZXJXZWJraXRSb290
ID0gb3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAg
IGFzc2VydChvdGhlcldlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyV2Via2l0Um9vdC5maWxlbmFtZSgpLCAncm9vdDEyNC5k
YXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9v
dEZpbGVzKCksIFtvdGhlcldlYmtpdFJvb3RdKTsKKyAgICAgICAgICAgIHJldHVybiB1cGxvYWRS
b290KG90aGVyQnVpbGRSZXF1ZXN0LmlkKCksIDEyNCwgW1snV2ViS2l0JywgJ0phdmFTY3JpcHRD
b3JlJ11dLCAnMjAxNy0wNS0xMFQwMjo1NDowOS42NjYnKTsKKyAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRy
dWUpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgdGVzdEdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRv
cnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAg
Y29uc3Qgb3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93bmVkSlNDUmVw
b3NpdG9yeUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJl
cXVlc3RzKCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0ID0g
dGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJl
cXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVz
dCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwo
KSwgJ0NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5z
dGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUlMjBidWls
ZGVyL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChidWlsZFJlcXVl
c3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVp
bGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIGNvbW1pdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBjb25zdCB3ZWJraXRSb290ID0g
Y29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQo
d2Via2l0Um9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwod2Via2l0Um9vdC5maWxlbmFtZSgpLCAncm9vdDEyMy5kYXQnKTsKKyAgICAgICAgICAg
IGNvbnN0IGpzY1Jvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3duZWRKU0MpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFt3
ZWJraXRSb290LCBqc2NSb290XSk7CiAKICAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1
ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKICAgICAgICAgICAgIGFzc2VydChv
dGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOwpAQCAtOTU1LDcgKzEwNDUsMTAgQEAgZGVzY3Jp
YmUoJ3N5bmMtYnVpbGRib3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBjb25zdCBvdGhl
cldlYmtpdFJvb3QgPSBvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwog
ICAgICAgICAgICAgYXNzZXJ0KG90aGVyV2Via2l0Um9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmls
ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJXZWJraXRSb290LmZpbGVuYW1lKCks
ICdyb290MTI0LmRhdCcpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckNvbW1p
dFNldC5hbGxSb290RmlsZXMoKSwgW290aGVyV2Via2l0Um9vdF0pOworICAgICAgICAgICAgY29u
c3Qgb3RoZXJKU0NSb290ID0gb3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3duZWRK
U0MpOworICAgICAgICAgICAgYXNzZXJ0KG90aGVySlNDUm9vdCBpbnN0YW5jZW9mIFVwbG9hZGVk
RmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJKU0NSb290LmZpbGVuYW1lKCks
ICdyb290MTI0LmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckNvbW1p
dFNldC5hbGxSb290RmlsZXMoKSwgW290aGVyV2Via2l0Um9vdCwgb3RoZXJKU0NSb290XSk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324489</attachid>
            <date>2017-10-20 22:55:57 -0700</date>
            <delta_ts>2017-10-23 16:33:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178610-20171020225556.patch</filename>
            <type>text/plain</type>
            <size>53601</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNzk5CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAxZDc1N2MzNjEwMGY5NWU0YmJjY2E1MmNiNzViMTExY2RiNDdkNWUzLi42ZTI4NmJkZmIy
NGM0ZmQ1OGJmMzhkOGI0MzU1NjViOGFjYzI0NmMzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0xMC0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgcGVyZiBkYXNoYm9hcmQgdXBsb2FkIGxvZ2lj
IHRvIHN1cHBvcnQgdXBsb2FkaW5nIGJpbmFyaWVzIGZyb20gb3duZWQgY29tbWl0cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODYxMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBidWlsZCBy
ZXF1ZXN0cyB0byAnY29tcGxldGVkJyBvbmx5IHdoZW4gYWxsIGNvbW1pdCBzZXQgaXRlbXMgYXJl
IHNhdGlzZmllZC4KKyAgICAgICAgRXh0ZW5kICdyZXBvc2l0b3J5TGlzdCcgcGFyYW1ldGVyIHRv
IGJlIGFibGUgdG8gc3BlY2lmaWVkIG93biBjb21taXQgaW5mb3JtYXRpb24uCisgICAgICAgIEl0
ZW1zIGluICdyZXBvc2l0b3J5TGlzdCcgY2FuIGVpdGhlciBiZSBhIHN0cmluZyBmb3IgdG9wIGxl
dmVsIHJlcG9zaXRvcnksCisgICAgICAgIG9yIGEgZGljdGlvbmFyeSB3aXRoIHR3byBrZXlzOiAn
b3duZXJSZXBvc2l0b3J5JyBhbmQgJ293bmVkUmVwb3NpdG9yeScuCisKKyAgICAgICAgKiBwdWJs
aWMvYXBpL3VwbG9hZC1yb290LnBocDogRXh0ZW5kIHVwbG9hZCBsb2dpYyBmb3Igc3VwcG9ydCB1
cGxvYWRpbmcgYmluYXJpZXMgZnJvbSBvd25lZCBjb21taXRzLgorICAgICAgICAqIHNlcnZlci10
ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanM6IEFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAg
ICogc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanM6
IEFkZGVkIHVuaXQgdGVzdHMuCisKIDIwMTctMTAtMDUgIERld2VpIFpodSAgPGRld2VpX3podUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRyeS1ib3QgYnV0dG9uIG9uIHBlcmYgYW5hbHlzaXMg
c3RhdHVzIHBhZ2UuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FwaS91cGxvYWQtcm9vdC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2Fw
aS91cGxvYWQtcm9vdC5waHAKaW5kZXggOTczZTk1NjZjZDM4M2FiZGIyZDc2ZmU5ZWRlY2RiZDQy
YjY4M2Y1Zi4uNmQ0YjEwODcwYThiN2M5M2NhZjVhNzU1YzBjZGZlZjYxYjFlMjE4OCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdXBsb2FkLXJvb3QucGhw
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3VwbG9hZC1yb290LnBo
cApAQCAtMzksOCArMzksNiBAQCBmdW5jdGlvbiBtYWluKCkKICAgICAgICAgICAgICRidWlsZF9p
ZCA9ICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRzJywgJ2J1aWxkJywgJGJ1aWxkX2luZm8pOwogICAg
ICAgICAgICAgaWYgKCEkYnVpbGRfaWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdz
dGF0dXMnID0+ICdGYWlsZWRUb0NyZWF0ZUJ1aWxkJywgJ2J1aWxkJyA9PiAkYnVpbGRfaW5mbyk7
Ci0gICAgICAgICAgICBpZiAoISRkYi0+dXBkYXRlX3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVx
dWVzdCcsIGFycmF5KCdpZCcgPT4gJGJ1aWxkX3JlcXVlc3RfaWQpLCBhcnJheSgnc3RhdHVzJyA9
PiAnY29tcGxldGVkJywgJ2J1aWxkJyA9PiAkYnVpbGRfaWQpKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gYXJyYXkoJ3N0YXR1cycgPT4gJ0ZhaWxlZFRvVXBkYXRlQnVpbGRSZXF1ZXN0JywgJ2J1
aWxkUmVxdWVzdCcgPT4gJGJ1aWxkX3JlcXVlc3RfaWQpOwogCiAgICAgICAgICAgICBmb3JlYWNo
ICgkY29tbWl0X3NldF9pdGVtc190b191cGRhdGUgYXMgJGNvbW1pdF9pZCkgewogICAgICAgICAg
ICAgICAgIGlmICghJGRiLT51cGRhdGVfcm93KCdjb21taXRfc2V0X2l0ZW1zJywgJ2NvbW1pdHNl
dCcsCkBAIC00OCwzNiArNDYsNTYgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgICAgICAgICAgICAg
ICAgIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaWQsICdyb290X2ZpbGUnID0+ICRyb290X2Zp
bGVfaWQpLCAnKicpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoJ3N0YXR1cycg
PT4gJ0ZhaWxlZFRvVXBkYXRlQ29tbWl0U2V0JywgJ2NvbW1pdFNldCcgPT4gJGNvbW1pdF9zZXRf
aWQsICdjb21taXQnID0+ICRjb21taXRfaWQpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCFhbGxfY29tbWl0X3NldF9pdGVtc19hcmVfc2F0aXNmaWVkKCRkYiwgJGNvbW1pdF9zZXRf
aWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYgKCEkZGIt
PnVwZGF0ZV9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgnaWQnID0+ICRi
dWlsZF9yZXF1ZXN0X2lkKSwgYXJyYXkoJ3N0YXR1cycgPT4gJ2NvbXBsZXRlZCcsICdidWlsZCcg
PT4gJGJ1aWxkX2lkKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdzdGF0dXMnID0+
ICdGYWlsZWRUb1VwZGF0ZUJ1aWxkUmVxdWVzdCcsICdidWlsZFJlcXVlc3QnID0+ICRidWlsZF9y
ZXF1ZXN0X2lkKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9KTsKIAogICAg
IGV4aXRfd2l0aF9zdWNjZXNzKGFycmF5KCd1cGxvYWRlZEZpbGUnID0+ICR1cGxvYWRlZF9maWxl
KSk7CiB9CiAKK2Z1bmN0aW9uIGFsbF9jb21taXRfc2V0X2l0ZW1zX2FyZV9zYXRpc2ZpZWQoJGRi
LCAkY29tbWl0X3NldF9pZCkKK3sKKyAgICByZXR1cm4gISRkYi0+c2VsZWN0X2ZpcnN0X3Jvdygn
Y29tbWl0X3NldF9pdGVtcycsICdjb21taXRzZXQnLCBhcnJheSgncm9vdF9maWxlJyA9PiBOVUxM
LCAncmVxdWlyZXNfYnVpbGQnID0+IFRSVUUsICdzZXQnID0+ICRjb21taXRfc2V0X2lkKSk7Cit9
CisKIGZ1bmN0aW9uIGNvbXB1dGVfY29tbWl0X3NldF9pdGVtc190b191cGRhdGUoJGRiLCAkY29t
bWl0X3NldF9pZCwgJHJlcG9zaXRvcnlfbmFtZV9saXN0KQogewogICAgIGlmICghaXNfYXJyYXko
JHJlcG9zaXRvcnlfbmFtZV9saXN0KSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlk
UmVwb3NpdG9yeUxpc3QnLCBhcnJheSgncmVwb3NpdG9yeUxpc3QnID0+ICRyZXBvc2l0b3J5X25h
bWVfbGlzdCkpOwogCi0gICAgJGNvbW1pdF9yZXBvc2l0b3J5X3Jvd3NfaW5fc2V0ID0gJGRiLT5x
dWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1QgKiBGUk9NIHJlcG9zaXRvcmllcywgY29tbWl0cywg
Y29tbWl0X3NldF9pdGVtcwotICAgICAgICBXSEVSRSByZXBvc2l0b3J5X2lkID0gY29tbWl0X3Jl
cG9zaXRvcnkgQU5EIGNvbW1pdF9pZCA9IGNvbW1pdHNldF9jb21taXQKKyAgICAkY29tbWl0X3Jl
cG9zaXRvcnlfcm93c19pbl9zZXQgPSAkZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCBj
b21taXRfc2V0X2l0ZW1zLmNvbW1pdHNldF9jb21taXQgYXMgY29tbWl0c2V0X2NvbW1pdCwKKyAg
ICAgICAgb3duZWQucmVwb3NpdG9yeV9uYW1lIGFzIHJlcG9zaXRvcnlfbmFtZSwgb3duZXIucmVw
b3NpdG9yeV9uYW1lIGFzIG93bmVyX3JlcG9zaXRvcnlfbmFtZQorICAgICAgICBGUk9NIHJlcG9z
aXRvcmllcyBhcyBvd25lZCBMRUZUIE9VVEVSIEpPSU4gcmVwb3NpdG9yaWVzIGFzIG93bmVyIE9O
IG93bmVkLnJlcG9zaXRvcnlfb3duZXIgPSBvd25lci5yZXBvc2l0b3J5X2lkLCBjb21taXRzLCBj
b21taXRfc2V0X2l0ZW1zCisgICAgICAgIFdIRVJFIG93bmVkLnJlcG9zaXRvcnlfaWQgPSBjb21t
aXRfcmVwb3NpdG9yeSBBTkQgY29tbWl0X2lkID0gY29tbWl0c2V0X2NvbW1pdAogICAgICAgICAg
ICAgQU5EIGNvbW1pdHNldF9zZXQgPSAkMScsIGFycmF5KCRjb21taXRfc2V0X2lkKSk7CiAKICAg
ICAkY29tbWl0X2J5X3JlcG9zaXRvcnlfbmFtZSA9IGFycmF5KCk7CisgICAgJGNvbW1pdF9ieV9v
d25lZF9hbmRfb3duZXJfcmVwb3NpdG9yeV9uYW1lcyA9IGFycmF5KCk7CiAgICAgaWYgKCRjb21t
aXRfcmVwb3NpdG9yeV9yb3dzX2luX3NldCkgewogICAgICAgICBmb3JlYWNoICgkY29tbWl0X3Jl
cG9zaXRvcnlfcm93c19pbl9zZXQgYXMgJHJvdykKLSAgICAgICAgICAgICRjb21taXRfYnlfcmVw
b3NpdG9yeV9uYW1lWyRyb3dbJ3JlcG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ2NvbW1pdHNldF9j
b21taXQnXTsKKyAgICAgICAgICAgIGlmICgkcm93Wydvd25lcl9yZXBvc2l0b3J5X25hbWUnXSkg
eworICAgICAgICAgICAgICAgICRvd25lZF9yZXBvc2l0b3JpZXMgPSAmYXJyYXlfZW5zdXJlX2l0
ZW1faGFzX2FycmF5KCRjb21taXRfYnlfb3duZWRfYW5kX293bmVyX3JlcG9zaXRvcnlfbmFtZXMs
ICRyb3dbJ293bmVyX3JlcG9zaXRvcnlfbmFtZSddKTsKKyAgICAgICAgICAgICAgICAkb3duZWRf
cmVwb3NpdG9yaWVzWyRyb3dbJ3JlcG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ2NvbW1pdHNldF9j
b21taXQnXTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICRjb21taXRfYnlf
cmVwb3NpdG9yeV9uYW1lWyRyb3dbJ3JlcG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ2NvbW1pdHNl
dF9jb21taXQnXTsKICAgICB9CiAKICAgICAkY29tbWl0X3NldF9pdGVtc190b191cGRhdGUgPSBh
cnJheSgpOwogICAgIGZvcmVhY2ggKCRyZXBvc2l0b3J5X25hbWVfbGlzdCBhcyAkcmVwb3NpdG9y
eV9uYW1lKSB7Ci0gICAgICAgICRjb21taXRfaWQgPSBhcnJheV9nZXQoJGNvbW1pdF9ieV9yZXBv
c2l0b3J5X25hbWUsICRyZXBvc2l0b3J5X25hbWUpOworICAgICAgICAkY29tbWl0X2lkID0gTlVM
TDsKKyAgICAgICAgaWYgKGlzX3N0cmluZygkcmVwb3NpdG9yeV9uYW1lKSkKKyAgICAgICAgICAg
ICRjb21taXRfaWQgPSBhcnJheV9nZXQoJGNvbW1pdF9ieV9yZXBvc2l0b3J5X25hbWUsICRyZXBv
c2l0b3J5X25hbWUpOworICAgICAgICBlbHNlIGlmIChpc19hcnJheSgkcmVwb3NpdG9yeV9uYW1l
KSAmJiBhcnJheV9rZXlfZXhpc3RzKCdvd25lclJlcG9zaXRvcnknLCAkcmVwb3NpdG9yeV9uYW1l
KSAmJiBhcnJheV9rZXlfZXhpc3RzKCdvd25lZFJlcG9zaXRvcnknLCAkcmVwb3NpdG9yeV9uYW1l
KSkKKyAgICAgICAgICAgICRjb21taXRfaWQgPSBhcnJheV9nZXQoYXJyYXlfZ2V0KCRjb21taXRf
Ynlfb3duZWRfYW5kX293bmVyX3JlcG9zaXRvcnlfbmFtZXMsICRyZXBvc2l0b3J5X25hbWVbJ293
bmVyUmVwb3NpdG9yeSddLCBhcnJheSgpKSwgJHJlcG9zaXRvcnlfbmFtZVsnb3duZWRSZXBvc2l0
b3J5J10pOwogICAgICAgICBpZiAoISRjb21taXRfaWQpCiAgICAgICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ0ludmFsaWRSZXBvc2l0b3J5JywgYXJyYXkoJ3JlcG9zaXRvcnlOYW1lJyA9PiAkcmVw
b3NpdG9yeV9uYW1lLCAnY29tbWl0U2V0JyA9PiAkY29tbWl0X3NldF9pZCkpOwogICAgICAgICBh
cnJheV9wdXNoKCRjb21taXRfc2V0X2l0ZW1zX3RvX3VwZGF0ZSwgJGNvbW1pdF9pZCk7CiAgICAg
fQogICAgIGlmICghJGNvbW1pdF9zZXRfaXRlbXNfdG9fdXBkYXRlKQotICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ludmFsaWRSZXBvc2l0b3J5TGlzdCcsIGFycmF5KCdyZXBvc2l0b3J5TGlzdCcg
PT4gJHJlcG9zaXRvcnlfbGlzdCkpOworICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRS
ZXBvc2l0b3J5TGlzdCcsIGFycmF5KCdyZXBvc2l0b3J5TGlzdCcgPT4gJHJlcG9zaXRvcnlfbmFt
ZV9saXN0LCAnY29tbWl0U2V0JyA9PiAkY29tbWl0X3NldF9pZCkpOwogCiAgICAgcmV0dXJuICRj
b21taXRfc2V0X2l0ZW1zX3RvX3VwZGF0ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZC1yb290LXRlc3RzLmpzIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMK
aW5kZXggYmZmY2Y2MGI0N2NkZjY2NzI5ZTExOWIxZGE2ZWI3MmE4YWRiZWMzYi4uOTQ5ZDExNGYx
NmU1ZGNkNjI2YTkzMmVlNGVmNDIyZGI0Mzg4ZWFmYSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVz
dHMuanMKQEAgLTEwLDE3ICsxMCwxNyBAQCBjb25zdCBUZW1wb3JhcnlGaWxlID0gcmVxdWlyZSgn
Li9yZXNvdXJjZXMvdGVtcG9yYXJ5LWZpbGUuanMnKS5UZW1wb3JhcnlGaWxlOwogY29uc3QgYWRk
U2xhdmVGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5q
cycpLmFkZFNsYXZlRm9yUmVwb3J0OwogY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJl
KCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0Owog
Ci1mdW5jdGlvbiBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3RJZCA9IDEpCitmdW5j
dGlvbiBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3RJZCA9IDEsIHJlcG9zaXRvcnlM
aXN0PVsnV2ViS2l0J10sIGJ1aWxkVGltZSA9ICcyMDE3LTA1LTEwVDAyOjU0OjA4LjY2NicpCiB7
CiAgICAgcmV0dXJuIHsKICAgICAgICAgc2xhdmVOYW1lOiAnc29tZVNsYXZlJywKICAgICAgICAg
c2xhdmVQYXNzd29yZDogJ3NvbWVQYXNzd29yZCcsCiAgICAgICAgIGJ1aWxkZXJOYW1lOiAnc29t
ZUJ1aWxkZXInLAogICAgICAgICBidWlsZE51bWJlcjogMTIzLAotICAgICAgICBidWlsZFRpbWU6
ICcyMDE3LTA1LTEwVDAyOjU0OjA4LjY2NicsCisgICAgICAgIGJ1aWxkVGltZTogYnVpbGRUaW1l
LAogICAgICAgICBidWlsZFJlcXVlc3Q6IGJ1aWxkUmVxdWVzdElkLAogICAgICAgICByb290Rmls
ZTogcm9vdEZpbGUsCi0gICAgICAgIHJlcG9zaXRvcnlMaXN0OiAnWyJXZWJLaXQiXScsCisgICAg
ICAgIHJlcG9zaXRvcnlMaXN0OiBKU09OLnN0cmluZ2lmeShyZXBvc2l0b3J5TGlzdCksCiAgICAg
fTsKIH0KIApAQCAtNzMsNiArNzMsNDggQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2loUGF0
Y2goKQogICAgIH0pOwogfQogCitmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXBXaXRoUGF0Y2hBbmRP
d25lZENvbW1pdHMoKQoreworICAgIGNvbnN0IHRyaWdnZXJhYmxlQ29uZmlndXJhdGlvbiA9IHsK
KyAgICAgICAgJ3NsYXZlTmFtZSc6ICdzeW5jLXNsYXZlJywKKyAgICAgICAgJ3NsYXZlUGFzc3dv
cmQnOiAncGFzc3dvcmQnLAorICAgICAgICAndHJpZ2dlcmFibGUnOiAnYnVpbGQtd2Via2l0JywK
KyAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogWworICAgICAgICAgICAge3Rlc3Q6IE1vY2tEYXRh
LnNvbWVUZXN0SWQoKSwgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9LAorICAg
ICAgICBdLAorICAgICAgICAncmVwb3NpdG9yeUdyb3Vwcyc6IFsKKyAgICAgICAgICAgIHtuYW1l
OiAnd2Via2l0JywgcmVwb3NpdG9yaWVzOiBbCisgICAgICAgICAgICAgICAge3JlcG9zaXRvcnk6
IE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IHRydWV9CisgICAg
ICAgICAgICBdfQorICAgICAgICBdCisgICAgfTsKKworICAgIGNvbnN0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOworICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYikudGhlbigo
KSA9PiB7CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbVGVtcG9yYXJ5RmlsZS5tYWtlVGVt
cG9yYXJ5RmlsZSgncGF0Y2guZGF0JywgJ3BhdGNoIGZpbGUnKSwgTWFuaWZlc3QuZmV0Y2goKV0p
OworICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICBjb25zdCBwYXRjaEZpbGUgPSBy
ZXN1bHRbMF07CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbVXBsb2FkZWRGaWxlLnVwbG9h
ZEZpbGUocGF0Y2hGaWxlKSwgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91
cGRhdGUtdHJpZ2dlcmFibGUvJywgdHJpZ2dlcmFibGVDb25maWd1cmF0aW9uKV0pOworICAgIH0p
LnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICBjb25zdCBwYXRjaEZpbGUgPSByZXN1bHRbMF07
CisgICAgICAgIGNvbnN0IHNvbWVUZXN0ID0gVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVz
dElkKCkpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tE
YXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgY29uc3Qgb3duZWRTSkMgPSBSZXBv
c2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgICAg
ICBjb25zdCBzZXQxID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKKyAgICAgICAgc2V0MS5zZXRSZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJywgcGF0Y2hGaWxlKTsKKyAgICAgICAg
c2V0MS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRTSkMsICdvd25lZC1qc2MtNjE2MScs
IG51bGwsICcxOTE2MjInKTsKKyAgICAgICAgY29uc3Qgc2V0MiA9IG5ldyBDdXN0b21Db21taXRT
ZXQ7CisgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5Mjcz
NicpOworICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywgJ293
bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5MjczNicpOworCisgICAgICAgIHJldHVybiBUZXN0R3Jv
dXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBz
ZXQyXSk7CisgICAgfSkudGhlbigodGFzaykgPT4geworICAgICAgICByZXR1cm4gVGVzdEdyb3Vw
LmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKKyAgICB9KS50aGVuKChncm91cCkgPT4gewor
ICAgICAgICByZXR1cm4gZGIucXVlcnkoJ1VQREFURSBhbmFseXNpc190ZXN0X2dyb3VwcyBTRVQg
dGVzdGdyb3VwX2F1dGhvciA9ICQxJywgWydzb21lVXNlciddKS50aGVuKCgpID0+IGdyb3VwKTsK
KyAgICB9KTsKK30KKwogZGVzY3JpYmUoJy9hcGkvdXBsb2FkLXJvb3QvJywgZnVuY3Rpb24gKCkg
ewogICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOwogICAgIFRlbXBvcmFyeUZpbGUuaW5qZWN0
KCk7CkBAIC0xOTksNiArMjQxLDE2MCBAQCBkZXNjcmliZSgnL2FwaS91cGxvYWQtcm9vdC8nLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCByZWpl
Y3Qgd2hlbiB1c2luZyBpbnZhbGlkIGtleSB0byBzcGVjaWZ5IGFuIG93bmVkIHJlcG9zaXRvcnkn
LCAoKSA9PiB7CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIGxldCB3ZWJraXRQYXRjaDsK
KyAgICAgICAgbGV0IG93bmVkSlNDOworICAgICAgICBsZXQgdGVzdEdyb3VwOworICAgICAgICBs
ZXQgYnVpbGRSZXF1ZXN0OworICAgICAgICBsZXQgb3RoZXJCdWlsZFJlcXVlc3Q7CisgICAgICAg
IGxldCB1cGxvYWRlZFJvb3Q7CisgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBXaXRoUGF0
Y2hBbmRPd25lZENvbW1pdHMoKS50aGVuKChncm91cCkgPT4geworICAgICAgICAgICAgd2Via2l0
ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSk7Cisg
ICAgICAgICAgICBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEub3duZWRK
U0NSZXBvc2l0b3J5SWQoKSk7CisKKyAgICAgICAgICAgIHRlc3RHcm91cCA9IGdyb3VwOworICAg
ICAgICAgICAgYnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwg
Nik7CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAg
ICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQo
IWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJl
cXVlc3QuaXNQZW5kaW5nKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVz
dC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBidWls
ZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICB3
ZWJraXRQYXRjaCA9IGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAg
ICAgICAgIGFzc2VydCh3ZWJraXRQYXRjaCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0UGF0Y2guZmlsZW5hbWUoKSwgJ3BhdGNoLmRhdCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNp
b25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgJ293bmVkLWpzYy02MTYxJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9y
eShvd25lZEpTQyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRT
ZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAgICAgICAgb3RoZXJCdWlsZFJlcXVlc3Qg
PSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAgICAgY29uc3Qgb3RoZXJD
b21taXRTZXQgPSBvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwg
JzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNo
Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChv
dGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3du
ZWRKU0MpLCAnb3duZWQtanNjLTkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShvd25lZEpT
QyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckNvbW1pdFNldC5h
bGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVBbmRDcmVh
dGVSb290RmlsZSgpOworICAgICAgICB9KS50aGVuKChyb290RmlsZSkgPT4geworICAgICAgICAg
ICAgY29uc3QgcmVwb3J0ID0gbWFrZVJlcG9ydChyb290RmlsZSwgYnVpbGRSZXF1ZXN0LmlkKCks
IFsnV2ViS2l0J10pOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0
YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkUm9vdFJhd0RhdGEgPSBy
ZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICB1cGxvYWRlZFJvb3QgPSBVcGxv
YWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHVwbG9hZGVkUm9vdFJhd0RhdGEuaWQsIHVwbG9hZGVk
Um9vdFJhd0RhdGEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHVwbG9hZGVkUm9vdC5maWxl
bmFtZSgpLCAnc29tZS5kYXQnKTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hG
b3JUYXNrKGJ1aWxkUmVxdWVzdC50ZXN0R3JvdXAoKS50YXNrKCkuaWQoKSwgdHJ1ZSk7CisgICAg
ICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0
ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91
cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAsIHRlc3RHcm91cCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYp
OworCisgICAgICAgICAgICBjb25zdCB1cGRhdGVkQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1
aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkQnVpbGRS
ZXF1ZXN0LCBidWlsZFJlcXVlc3QpOworCisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0
LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7
CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZFJlcXVlc3QuY29tbWl0U2V0KCkuYWxsUm9v
dEZpbGVzKCksIFt1cGxvYWRlZFJvb3RdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
b3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCkuYWxsUm9vdEZpbGVzKCksIFtdKTsKKyAgICAg
ICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdKYXZhU2NyaXB0
Q29yZS1Sb290LmRhdCcsICdKYXZhU2NyaXB0IENvbnRlbnQgMCcpOworICAgICAgICB9KS50aGVu
KChyb290RmlsZSkgPT4geworICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gbWFrZVJlcG9ydChy
b290RmlsZSwgYnVpbGRSZXF1ZXN0LmlkKCksIFt7b3duZXJSZXBvc2l0b3J5V3JvbmdLZXk6ICdX
ZWJLaXQnLCBvd25lZFJlcG9zaXRvcnk6ICdKYXZhU2NyaXB0Q29yZSd9XSwgJzIwMTctMDUtMTBU
MDI6NTQ6MDkuNjY2Jyk7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3QvJywgcmVwb3J0KTsKKyAgICAgICAgfSku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdJbnZhbGlkUmVwb3NpdG9yeScpOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gcmVwb3J0aW5nIGFuIGludmFsaWQgb3duZWQgcmVw
b3NpdG9yeScsICgpID0+IHsKKyAgICAgICAgbGV0IHdlYmtpdDsKKyAgICAgICAgbGV0IHdlYmtp
dFBhdGNoOworICAgICAgICBsZXQgb3duZWRKU0M7CisgICAgICAgIGxldCB0ZXN0R3JvdXA7Cisg
ICAgICAgIGxldCBidWlsZFJlcXVlc3Q7CisgICAgICAgIGxldCBvdGhlckJ1aWxkUmVxdWVzdDsK
KyAgICAgICAgbGV0IHVwbG9hZGVkUm9vdDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVRlc3RHcm91
cFdpdGhQYXRjaEFuZE93bmVkQ29tbWl0cygpLnRoZW4oKGdyb3VwKSA9PiB7CisgICAgICAgICAg
ICB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJ
ZCgpKTsKKyAgICAgICAgICAgIG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0
YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKworICAgICAgICAgICAgdGVzdEdyb3VwID0gZ3Jv
dXA7CisgICAgICAgICAgICBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygp
WzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCku
bGVuZ3RoLCA2KTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsK
KyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAg
IGFzc2VydCghYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0
KGJ1aWxkUmVxdWVzdC5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVp
bGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNl
dCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAg
ICAgICAgIHdlYmtpdFBhdGNoID0gY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQp
OworICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFBhdGNoIGluc3RhbmNlb2YgVXBsb2FkZWRGaWxl
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRQYXRjaC5maWxlbmFtZSgpLCAncGF0
Y2guZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBv
c2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KG93bmVk
SlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JS
ZXBvc2l0b3J5KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICBvdGhlckJ1aWxk
UmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAgICAgICBjb25z
dCBvdGhlckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRT
ZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeShvd25lZEpTQyksICdvd25lZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5
KG93bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29t
bWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2
ZUFuZENyZWF0ZVJvb3RGaWxlKCk7CisgICAgICAgIH0pLnRoZW4oKHJvb3RGaWxlKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVl
c3QuaWQoKSwgWydXZWJLaXQnXSk7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3QvJywgcmVwb3J0KTsKKyAgICAg
ICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRSb290UmF3
RGF0YSA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAgIHVwbG9hZGVkUm9v
dCA9IFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24odXBsb2FkZWRSb290UmF3RGF0YS5pZCwg
dXBsb2FkZWRSb290UmF3RGF0YSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodXBsb2FkZWRS
b290LmZpbGVuYW1lKCksICdzb21lLmRhdCcpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91
cC5mZXRjaEZvclRhc2soYnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpLnRhc2soKS5pZCgpLCB0cnVl
KTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cCwgdGVzdEdyb3Vw
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxl
bmd0aCwgNik7CisKKyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWlsZFJlcXVlc3QgPSB0ZXN0
R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0
ZWRCdWlsZFJlcXVlc3QsIGJ1aWxkUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGFzc2VydChidWls
ZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0Lmlz
VGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwp
OworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkUmVxdWVzdC5jb21taXRTZXQo
KS5hbGxSb290RmlsZXMoKSwgW3VwbG9hZGVkUm9vdF0pOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW10p
OworICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ0ph
dmFTY3JpcHRDb3JlLVJvb3QuZGF0JywgJ0phdmFTY3JpcHQgQ29udGVudCAwJyk7CisgICAgICAg
IH0pLnRoZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtl
UmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3QuaWQoKSwgW3tvd25lclJlcG9zaXRvcnk6ICdX
ZWJLaXQyJywgb3duZWRSZXBvc2l0b3J5OiAnSmF2YVNjcmlwdENvcmUnfV0sICcyMDE3LTA1LTEw
VDAyOjU0OjA5LjY2NicpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Vb
J3N0YXR1cyddLCAnSW52YWxpZFJlcG9zaXRvcnknKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
ICAgICBpdCgnc2hvdWxkIGFjY2VwdCB3aGVuIGJ1aWxkIHJlcXVlc3QgZXhpc3RzJywgKCkgPT4g
ewogICAgICAgICBsZXQgd2Via2l0OwogICAgICAgICBsZXQgd2Via2l0UGF0Y2g7CkBAIC00MjQs
MTcgKzYyMCwxOCBAQCBkZXNjcmliZSgnL2FwaS91cGxvYWQtcm9vdC8nLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCB1cGRhdGUgYWxsIGNvbW1p
dCBzZXQgaXRlbXMgaW4gdGhlIHJlcG9zaXRvcnkgbGlzdGVkJywgKCkgPT4geworICAgIGl0KCdz
aG91bGQgb25seSBzZXQgYnVpbGQgcmVxdWVzdHMgYXMgY29tcGxldGUgd2hlbiBhbGwgcm9vdHMg
YXJlIGJ1aWx0JywgKCkgPT4gewogICAgICAgICBsZXQgd2Via2l0OwogICAgICAgICBsZXQgd2Vi
a2l0UGF0Y2g7Ci0gICAgICAgIGxldCBzaGFyZWQ7CisgICAgICAgIGxldCBvd25lZEpTQzsKICAg
ICAgICAgbGV0IHRlc3RHcm91cDsKICAgICAgICAgbGV0IGJ1aWxkUmVxdWVzdDsKICAgICAgICAg
bGV0IG90aGVyQnVpbGRSZXF1ZXN0OwogICAgICAgICBsZXQgdXBsb2FkZWRSb290OwotICAgICAg
ICByZXR1cm4gY3JlYXRlVGVzdEdyb3VwV2loUGF0Y2goKS50aGVuKChncm91cCkgPT4geworICAg
ICAgICBsZXQganNjUm9vdDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRj
aEFuZE93bmVkQ29tbWl0cygpLnRoZW4oKGdyb3VwKSA9PiB7CiAgICAgICAgICAgICB3ZWJraXQg
PSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsKLSAg
ICAgICAgICAgIHNoYXJlZCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEuc2hhcmVkUmVw
b3NpdG9yeUlkKCkpOworICAgICAgICAgICAgb3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlk
KE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKCkpOwogCiAgICAgICAgICAgICB0ZXN0R3Jv
dXAgPSBncm91cDsKICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJl
cXVlc3RzKClbMF07CkBAIC00NDIsNyArNjM5LDcgQEAgZGVzY3JpYmUoJy9hcGkvdXBsb2FkLXJv
b3QvJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1
aWxkKCkpOwogICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOwogICAg
ICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSk7Ci0gICAgICAgICAg
ICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzUGVuZGluZygpKTsgCisgICAgICAgICAgICBhc3NlcnQo
YnVpbGRSZXF1ZXN0LmlzUGVuZGluZygpKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWls
ZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKIAogICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0
ID0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOwpAQCAtNDUxLDI1ICs2NDgsMjQgQEAgZGVzY3Jp
YmUoJy9hcGkvdXBsb2FkLXJvb3QvJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0
KHdlYmtpdFBhdGNoIGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCh3ZWJraXRQYXRjaC5maWxlbmFtZSgpLCAncGF0Y2guZGF0Jyk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwp
OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkoc2hhcmVkKSwgJzgwMjI5Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0
LnBhdGNoRm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKLSAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkoc2hhcmVkKSwgbnVsbCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpT
QyksICdvd25lZC1qc2MtNjE2MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5wYXRjaEZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBudWxsKTsKICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7
CiAKICAgICAgICAgICAgIG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVz
dHMoKVsxXTsKICAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJl
cXVlc3QuY29tbWl0U2V0KCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRT
ZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgJzE5MjczNicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBh
dGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
c2hhcmVkKSwgJzgwMjI5Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRT
ZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHNoYXJlZCksIG51bGwpOwotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHNoYXJlZCksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeShvd25lZEpTQyksICdvd25lZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5
KG93bmVkSlNDKSwgbnVsbCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29t
bWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CiAKICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2
ZUFuZENyZWF0ZVJvb3RGaWxlKCk7CiAgICAgICAgIH0pLnRoZW4oKHJvb3RGaWxlKSA9PiB7Ci0g
ICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVl
c3QuaWQoKSk7Ci0gICAgICAgICAgICByZXBvcnQucmVwb3NpdG9yeUxpc3QgPSAnWyJXZWJLaXQi
LCAiU2hhcmVkIl0nOworICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gbWFrZVJlcG9ydChyb290
RmlsZSwgYnVpbGRSZXF1ZXN0LmlkKCksIFsnV2ViS2l0J10pOwogICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290Lycs
IHJlcG9ydCk7CiAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKQEAgLTQ4OCwxMyArNjg0LDM4
IEBAIGRlc2NyaWJlKCcvYXBpL3VwbG9hZC1yb290LycsIGZ1bmN0aW9uICgpIHsKIAogICAgICAg
ICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOwogICAgICAgICAgICAgYXNzZXJ0
KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVl
c3QuaGFzRmluaXNoZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRS
ZXF1ZXN0LmNvbW1pdFNldCgpLmFsbFJvb3RGaWxlcygpLCBbdXBsb2FkZWRSb290XSk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpLmFs
bFJvb3RGaWxlcygpLCBbXSk7CisgICAgICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtl
VGVtcG9yYXJ5RmlsZSgnSmF2YVNjcmlwdENvcmUtUm9vdC5kYXQnLCAnSmF2YVNjcmlwdCBDb250
ZW50IDAnKTsKKyAgICAgICAgfSkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdC5pZCgpLCBbe293
bmVyUmVwb3NpdG9yeTogJ1dlYktpdCcsIG93bmVkUmVwb3NpdG9yeTogJ0phdmFTY3JpcHRDb3Jl
J31dLCAnMjAxNy0wNS0xMFQwMjo1NDowOS42NjYnKTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBv
cnQpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICBjb25zdCB1cGxv
YWRlZFJvb3RSYXdEYXRhID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAg
anNjUm9vdCA9IFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24odXBsb2FkZWRSb290UmF3RGF0
YS5pZCwgdXBsb2FkZWRSb290UmF3RGF0YSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoanNj
Um9vdC5maWxlbmFtZSgpLCAnSmF2YVNjcmlwdENvcmUtUm9vdC5kYXQnKTsKKyAgICAgICAgICAg
IHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKGJ1aWxkUmVxdWVzdC50ZXN0R3JvdXAoKS50
YXNrKCkuaWQoKSwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Z3JvdXAsIHRlc3RHcm91cCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1
aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBjb25zdCB1cGRhdGVkQnVp
bGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbCh1cGRhdGVkQnVpbGRSZXF1ZXN0LCBidWlsZFJlcXVlc3QpOworCisgICAgICAg
ICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQo
IWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CiAgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0
Lmhhc0ZpbmlzaGVkKCkpOwotICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNQZW5k
aW5nKCkpOyAKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzUGVuZGluZygpKTsK
ICAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxs
KTsKIAotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZFJlcXVlc3QuY29tbWl0U2V0
KCkuYWxsUm9vdEZpbGVzKCksIFt1cGxvYWRlZFJvb3RdKTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpLmFsbFJvb3RGaWxlcygpLCBbdXBsb2Fk
ZWRSb290LCBqc2NSb290XSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQnVp
bGRSZXF1ZXN0LmNvbW1pdFNldCgpLmFsbFJvb3RGaWxlcygpLCBbXSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwotCiB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRl
Z3JhdGlvbi10ZXN0cy5qcwppbmRleCBiMGMwODRhZTg3MDE3ZjUxNzExM2FhNmU4ZWVmOWQ3MTBj
NjQ0YTc1Li4xZjJiNWU2Y2M5Y2Q3YzRkOGI5OTRlODkxZTI4MGEyZDhhMjhiYTA0IDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVp
bGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCkBA
IC0xMDIsMTggKzEwMiwxOCBAQCBmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXBXaWhPd25lZENvbW1p
dCgpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIHVwbG9hZFJvb3QoYnVpbGRSZXF1ZXN0SWQsIGJ1
aWxkTnVtYmVyKQorZnVuY3Rpb24gdXBsb2FkUm9vdChidWlsZFJlcXVlc3RJZCwgYnVpbGROdW1i
ZXIsIHJlcG9zaXRvcnlMaXN0PVsiV2ViS2l0Il0sIGJ1aWxkVGltZT0nMjAxNy0wNS0xMFQwMjo1
NDowOC42NjYnKQogewotICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxl
KGByb290JHtidWlsZE51bWJlcn0uZGF0YCwgYHJvb3QgZm9yIGJ1aWxkICR7YnVpbGROdW1iZXJ9
YCkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVt
cG9yYXJ5RmlsZShgcm9vdCR7YnVpbGROdW1iZXJ9LmRhdGAsIGByb290IGZvciBidWlsZCAke2J1
aWxkTnVtYmVyfSBhbmQgcmVwb3NpdG9yeSBsaXN0IGF0ICR7YnVpbGRUaW1lfWApLnRoZW4oKHJv
b3RGaWxlKSA9PiB7CiAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RG
b3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCB7CiAgICAgICAgICAgICBzbGF2ZU5hbWU6ICdz
eW5jLXNsYXZlJywKICAgICAgICAgICAgIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsCiAgICAg
ICAgICAgICBidWlsZGVyTmFtZTogJ3NvbWUgYnVpbGRlcicsCiAgICAgICAgICAgICBidWlsZE51
bWJlcjogYnVpbGROdW1iZXIsCi0gICAgICAgICAgICBidWlsZFRpbWU6ICcyMDE3LTA1LTEwVDAy
OjU0OjA4LjY2NicsCisgICAgICAgICAgICBidWlsZFRpbWU6IGJ1aWxkVGltZSwKICAgICAgICAg
ICAgIGJ1aWxkUmVxdWVzdDogYnVpbGRSZXF1ZXN0SWQsCiAgICAgICAgICAgICByb290RmlsZSwK
LSAgICAgICAgICAgIHJlcG9zaXRvcnlMaXN0OiAnWyJXZWJLaXQiXScsCisgICAgICAgICAgICBy
ZXBvc2l0b3J5TGlzdDogSlNPTi5zdHJpbmdpZnkocmVwb3NpdG9yeUxpc3QpLAogICAgICAgICB9
KTsKICAgICB9KTsKIH0KQEAgLTc5Myw3ICs3OTMsNyBAQCBkZXNjcmliZSgnc3luYy1idWlsZGJv
dCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29tbWl0U2V0LnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKIAotICAgICAgICAgICAgcmV0
dXJuIHVwbG9hZFJvb3QoYnVpbGRSZXF1ZXN0LmlkKCksIDEyMyk7CisgICAgICAgICAgICByZXR1
cm4gdXBsb2FkUm9vdChidWlsZFJlcXVlc3QuaWQoKSwgMTIzKS50aGVuKCgpID0+IHVwbG9hZFJv
b3QoYnVpbGRSZXF1ZXN0LmlkKCksIDEyMywgW3tvd25lclJlcG9zaXRvcnk6ICdXZWJLaXQnLCBv
d25lZFJlcG9zaXRvcnk6ICdKYXZhU2NyaXB0Q29yZSd9XSwgJzIwMTctMDUtMTBUMDI6NTQ6MDku
NjY2JykpOwogICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CiAgICAgICAgIH0pLnRoZW4oKHRlc3RH
cm91cHMpID0+IHsKQEAgLTgxOCw3ICs4MTgsMTAgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRib3Qn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBjb25zdCB3ZWJraXRSb290ID0gY29tbWl0U2V0
LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CiAgICAgICAgICAgICBhc3NlcnQod2Via2l0Um9v
dCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Vi
a2l0Um9vdC5maWxlbmFtZSgpLCAncm9vdDEyMy5kYXQnKTsKLSAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbd2Via2l0Um9vdF0pOworICAgICAg
ICAgICAgY29uc3QganNjUm9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShvd25lZEpT
Qyk7CisgICAgICAgICAgICBhc3NlcnQoanNjUm9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoanNjUm9vdC5maWxlbmFtZSgpLCAncm9vdDEyMy5k
YXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxl
cygpLCBbd2Via2l0Um9vdCwganNjUm9vdF0pOwogCiAgICAgICAgICAgICBjb25zdCBvdGhlckJ1
aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CiAgICAgICAgICAgICBh
c3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKQEAgLTg5NiwxMSArODk5LDM1MCBA
QCBkZXNjcmliZSgnc3luYy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGNv
bnN0IHdlYmtpdFJvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KTsKICAg
ICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTIzLmRh
dCcpOworICAgICAgICAgICAgY29uc3QganNjUm9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3Np
dG9yeShvd25lZEpTQyk7CisgICAgICAgICAgICBhc3NlcnQoanNjUm9vdCBpbnN0YW5jZW9mIFVw
bG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoanNjUm9vdC5maWxlbmFtZSgp
LCAncm9vdDEyMy5kYXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0
LmFsbFJvb3RGaWxlcygpLCBbd2Via2l0Um9vdCwganNjUm9vdF0pOworCisgICAgICAgICAgICBj
b25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07Cisg
ICAgICAgICAgICBhc3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAg
ICAgIGFzc2VydCghb3RoZXJCdWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdSdW5uaW5nJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJZCgp
LCBudWxsKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1aWxk
UmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1p
dFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVw
b3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxs
Um9vdEZpbGVzKCksIFtdKTsKKworICAgICAgICAgICAgcmV0dXJuIHVwbG9hZFJvb3Qob3RoZXJC
dWlsZFJlcXVlc3QuaWQoKSwgMTI0KS50aGVuKCgpID0+IHVwbG9hZFJvb3Qob3RoZXJCdWlsZFJl
cXVlc3QuaWQoKSwgMTI0LCBbe293bmVyUmVwb3NpdG9yeTogJ1dlYktpdCcsIG93bmVkUmVwb3Np
dG9yeTogJ0phdmFTY3JpcHRDb3JlJ31dLCAnMjAxNy0wNS0xMFQwMjo1NDowOS42NjYnKSk7Cisg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRj
aEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4g
eworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBjb25z
dCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJ
ZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChN
b2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAgIGNv
bnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAgICAg
ICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQo
IWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRS
ZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9i
dWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQu
bm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNv
bnN0IGNvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2
MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0
b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5v
d25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0Mp
LCBjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAg
Y29uc3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwor
ICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jvb3QxMjMu
ZGF0Jyk7CisgICAgICAgICAgICBjb25zdCBqc2NSb290ID0gY29tbWl0U2V0LnJvb3RGb3JSZXBv
c2l0b3J5KG93bmVkSlNDKTsKKyAgICAgICAgICAgIGFzc2VydChqc2NSb290IGluc3RhbmNlb2Yg
VXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChqc2NSb290LmZpbGVuYW1l
KCksICdyb290MTIzLmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRT
ZXQuYWxsUm9vdEZpbGVzKCksIFt3ZWJraXRSb290LCBqc2NSb290XSk7CisKKyAgICAgICAgICAg
IGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsK
KyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAg
ICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ0NvbXBsZXRlZCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgp
LCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRz
LzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1
aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3Ro
ZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3Ro
ZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
b3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3du
ZWRKU0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7Cisg
ICAgICAgICAgICBjb25zdCBvdGhlcldlYmtpdFJvb3QgPSBvdGhlckNvbW1pdFNldC5yb290Rm9y
UmVwb3NpdG9yeSh3ZWJraXQpOworICAgICAgICAgICAgYXNzZXJ0KG90aGVyV2Via2l0Um9vdCBp
bnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJX
ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTI0LmRhdCcpOworICAgICAgICAgICAgY29uc3Qg
b3RoZXJKU0NSb290ID0gb3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3duZWRKU0Mp
OworICAgICAgICAgICAgYXNzZXJ0KG90aGVySlNDUm9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmls
ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJKU0NSb290LmZpbGVuYW1lKCksICdy
b290MTI0LmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckNvbW1pdFNl
dC5hbGxSb290RmlsZXMoKSwgW290aGVyV2Via2l0Um9vdCwgb3RoZXJKU0NSb290XSk7CisgICAg
ICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBub3QgdXBkYXRlIGEgYnVpbGQgcmVx
dWVzdCB0byAiY29tcGxldGVkIiB1bnRpbCBhbGwgcm9vdHMgbmVlZGVkIGluIHRoZSBjb21taXQg
c2V0IGFyZSB1cGxvYWRlZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzOworICAgICAgICBsZXQgdHJpZ2dlcmFibGU7CisgICAgICAgIGxl
dCB0YXNrSWQgPSBudWxsOworICAgICAgICBsZXQgc3luY1Byb21pc2U7CisgICAgICAgIHJldHVy
biBjcmVhdGVUcmlnZ2VyYWJsZSgpLnRoZW4oKG5ld1RyaWdnZXJhYmxlKSA9PiB7CisgICAgICAg
ICAgICB0cmlnZ2VyYWJsZSA9IG5ld1RyaWdnZXJhYmxlOworICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KCk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91
cCkgPT4geworICAgICAgICAgICAgdGFza0lkID0gdGVzdEdyb3VwLnRhc2soKS5pZCgpOworICAg
ICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJr
aXRSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRv
cnkuZmluZEJ5SWQoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisg
ICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygp
WzBdOworICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAg
ICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAg
ICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hG
b3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwg
bnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25G
b3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RG
aWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVz
dEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxk
UmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVz
dC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Qu
c3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29u
c3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
d2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0
U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29t
bWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAg
ICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4g
dHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0QW5k
UmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUy
MHRlc3Rlci9wZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2
ZVJlcXVlc3QocmVxdWVzdHNbMV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxk
ZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1
ZXN0KHJlcXVlc3RzWzJdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9w
ZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2Fp
dEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29s
dmVSZXF1ZXN0KHJlcXVlc3RzWzNdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0
ZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAgYXNzZXJ0
QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29t
ZSUyMGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAg
ICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNV0sICdHRVQnLCAnL2pzb24vYnVp
bGRlcnMvb3RoZXIlMjBidWlsZGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsK
KyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgNyk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1s2
XSwgJ1BPU1QnLCAnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2ZvcmNlJywgJ09LJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzZdLmRhdGEsIHsnd2snOiAnMTkxNjIy
JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnMScsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1hYi1i
dWlsZHMnLCAnb3duZWQtY29tbWl0cyc6IGB7IldlYktpdCI6W3sicmV2aXNpb24iOiJvd25lZC1q
c2MtNjE2MSIsInJlcG9zaXRvcnkiOiJKYXZhU2NyaXB0Q29yZSIsIm93bmVyUmV2aXNpb24iOiIx
OTE2MjIifV19YH0pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxMCk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVx
dWVzdChyZXF1ZXN0c1s3XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVyL3Bl
bmRpbmdCdWlsZHMnLCBbXSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChy
ZXF1ZXN0c1s4XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlci9wZW5kaW5n
QnVpbGRzJywKKyAgICAgICAgICAgICAgICBbTW9ja0RhdGEucGVuZGluZ0J1aWxkKHtidWlsZGVy
OiAnc29tZSBidWlsZGVyJywgYnVpbGRSZXF1ZXN0SWQ6IDF9KV0pOworICAgICAgICAgICAgYXNz
ZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbOV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMv
b3RoZXIlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7CisgICAgICAgICAgICByZXR1cm4g
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEzKTsKKyAgICAgICAg
ICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzEwXSwgJ0dFVCcsICcvanNvbi9i
dWlsZGVycy9zb21lJTIwdGVzdGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsK
KyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzExXSwgJ0dFVCcs
ICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9
LTInLCB7CisgICAgICAgICAgICAgICAgWy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWls
ZGVyOiAnc29tZSBidWlsZGVyJywgYnVpbGRSZXF1ZXN0SWQ6IDF9KQorICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1sxMl0sICdHRVQn
LCAnL2pzb24vYnVpbGRlcnMvb3RoZXIlMjBidWlsZGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVj
dD0tMicsIHt9KTsKKyAgICAgICAgICAgIHJldHVybiBzeW5jUHJvbWlzZTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0
YXNrSWQsIHRydWUpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29u
c3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAg
ICAgICAgICAgY29uc3Qgb3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93
bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91
cC5idWlsZFJlcXVlc3RzKCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgYnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2Vy
dChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1
ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3Rh
dHVzTGFiZWwoKSwgJ1J1bm5pbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJl
cXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9zb21l
JTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRS
ZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9
IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21t
aXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9y
eSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3du
ZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwg
Y29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAg
ICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsx
XTsKKyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAg
ICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwo
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVp
bGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhl
ckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5y
b290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9u
Rm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRT
ZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAgICAgICAgcmV0dXJuIHVwbG9hZFJvb3Qo
YnVpbGRSZXF1ZXN0LmlkKCksIDEyMyk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAg
ICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RH
cm91cHNbMF07CisgICAgICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlk
KE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVk
SlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgp
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxl
bmd0aCwgNik7CisKKyAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5i
dWlsZFJlcXVlc3RzKClbMF07CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVp
bGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdSdW5uaW5n
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEy
NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51
bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0
U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVw
b3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwg
bnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25G
b3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdFJvb3QgPSBjb21taXRTZXQucm9vdEZv
clJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3Rh
bmNlb2YgVXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290
LmZpbGVuYW1lKCksICdyb290MTIzLmRhdCcpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFt3ZWJraXRSb290XSk7CiAKICAgICAgICAgICAg
IGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsK
ICAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOwogICAgICAg
ICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwg
bnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJ
ZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1
aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNv
bW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290
Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChv
dGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9y
UmVwb3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9y
eSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQu
YWxsUm9vdEZpbGVzKCksIFtdKTsKKyAgICAgICAgICAgIHJldHVybiB1cGxvYWRSb290KGJ1aWxk
UmVxdWVzdC5pZCgpLCAxMjMsIFt7b3duZXJSZXBvc2l0b3J5OiAnV2ViS2l0Jywgb3duZWRSZXBv
c2l0b3J5OiAnSmF2YVNjcmlwdENvcmUnfV0sICcyMDE3LTA1LTEwVDAyOjU0OjA5LjY2NicpOwor
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0
Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgY29u
c3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5
SWQoKSk7CisgICAgICAgICAgICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQo
TW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBj
b25zdCBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAg
ICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0
KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
YnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0
Lm5vdEVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBj
b25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkx
NjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQu
b3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlND
KSwgY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAg
IGNvbnN0IHdlYmtpdFJvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KTsK
KyAgICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTIz
LmRhdCcpOworICAgICAgICAgICAgY29uc3QganNjUm9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVw
b3NpdG9yeSgob3duZWRKU0MpKTsKKyAgICAgICAgICAgIGFzc2VydChqc2NSb290IGluc3RhbmNl
b2YgVXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChqc2NSb290LmZpbGVu
YW1lKCksICdyb290MTIzLmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21t
aXRTZXQuYWxsUm9vdEZpbGVzKCksIFt3ZWJraXRSb290LCBqc2NSb290XSk7CisKKyAgICAgICAg
ICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsx
XTsKKyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAg
ICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwo
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVp
bGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhl
ckJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5y
b290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9u
Rm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRT
ZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNl
dCgpOworICAgICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2Vycygp
LnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICByZXR1cm4g
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAg
ICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMF0sICdHRVQnLCAnL2pzb24vYnVp
bGRlcnMvc29tZSUyMHRlc3Rlci9wZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgYXNz
ZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMv
c29tZSUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFu
ZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzJdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVy
JTIwYnVpbGRlci9wZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgIGFz
c2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzNdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJz
L3NvbWUlMjB0ZXN0ZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAg
ICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNF0sICdHRVQnLCAnL2pzb24v
YnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywgewor
ICAgICAgICAgICAgICAgIFstMV06IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGQoe2J1aWxkZXI6ICdz
b21lIGJ1aWxkZXInLCBidWlsZFJlcXVlc3RJZDogMX0pCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzVdLCAnR0VUJywgJy9qc29u
L2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7
fSk7CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwor
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDcpOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVz
dHNbNl0sICdQT1NUJywgJy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9mb3JjZScsICdPSycpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1s2XS5kYXRhLCB7J3drJzogJzE5
MjczNicsICdidWlsZC1yZXF1ZXN0LWlkJzogJzInLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Ut
YWItYnVpbGRzJywgJ293bmVkLWNvbW1pdHMnOiBgeyJXZWJLaXQiOlt7InJldmlzaW9uIjoib3du
ZWQtanNjLTkxOTEiLCJyZXBvc2l0b3J5IjoiSmF2YVNjcmlwdENvcmUiLCJvd25lclJldmlzaW9u
IjoiMTkyNzM2In1dfWB9KTsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMTApOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2
ZVJlcXVlc3QocmVxdWVzdHNbN10sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rl
ci9wZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVl
c3QocmVxdWVzdHNbOF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvcGVu
ZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJl
cXVlc3RzWzldLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9wZW5kaW5n
QnVpbGRzJywgW10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxMyk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVx
dWVzdChyZXF1ZXN0c1sxMF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rlci9i
dWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICBhc3NlcnRBbmRS
ZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1sxMV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUy
MGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywgeworICAgICAgICAgICAgICAg
IFstMV06IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlcicsIGJ1
aWxkUmVxdWVzdElkOiAyfSksCisgICAgICAgICAgICAgICAgWy0yXTogTW9ja0RhdGEuZmluaXNo
ZWRCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlcicsIGJ1aWxkUmVxdWVzdElkOiAxfSksCisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVl
c3RzWzEyXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvYnVpbGRzLz9z
ZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNl
OworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAu
ZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMp
ID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAg
Y29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0
b3J5SWQoKSk7CisgICAgICAgICAgICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5
SWQoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAg
ICBjb25zdCBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAg
ICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNz
ZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNz
ZXJ0Lm5vdEVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAg
ICBjb25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAn
MTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVw
b3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVk
SlNDKSwgY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAg
ICAgIGNvbnN0IHdlYmtpdFJvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0
KTsKKyAgICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxl
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290
MTIzLmRhdCcpOworICAgICAgICAgICAgY29uc3QganNjUm9vdCA9IGNvbW1pdFNldC5yb290Rm9y
UmVwb3NpdG9yeShvd25lZEpTQyk7CisgICAgICAgICAgICBhc3NlcnQoanNjUm9vdCBpbnN0YW5j
ZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoanNjUm9vdC5maWxl
bmFtZSgpLCAncm9vdDEyMy5kYXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29t
bWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbd2Via2l0Um9vdCwganNjUm9vdF0pOworCisgICAgICAg
ICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClb
MV07CisgICAgICAgICAgICBhc3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAg
ICAgICAgICAgIGFzc2VydCghb3RoZXJCdWlsZFJlcXVlc3QuaXNUZXN0KCkpOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdSdW5uaW5n
Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJs
KCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWls
ZHMvMTI0Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVp
bGRJZCgpLCBudWxsKTsKQEAgLTkzOCw3ICsxMjgwLDU2IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxk
Ym90JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgY29uc3Qgd2Via2l0Um9vdCA9IGNvbW1p
dFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwogICAgICAgICAgICAgYXNzZXJ0KHdlYmtp
dFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHdlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jvb3QxMjMuZGF0Jyk7Ci0gICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW3dlYmtpdFJvb3RdKTsKKyAg
ICAgICAgICAgIGNvbnN0IGpzY1Jvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3du
ZWRKU0MpOworICAgICAgICAgICAgYXNzZXJ0KGpzY1Jvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZp
bGUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGpzY1Jvb3QuZmlsZW5hbWUoKSwgJ3Jvb3Qx
MjMuZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290
RmlsZXMoKSwgW3dlYmtpdFJvb3QsIGpzY1Jvb3RdKTsKKworICAgICAgICAgICAgY29uc3Qgb3Ro
ZXJCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAg
ICAgYXNzZXJ0KG90aGVyQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3Nl
cnQoIW90aGVyQnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnUnVubmluZycpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7
CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3Qu
Y29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3Ro
ZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBvdGhlckNv
bW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBjb25z
dCBvdGhlcldlYmtpdFJvb3QgPSBvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpOworICAgICAgICAgICAgYXNzZXJ0KG90aGVyV2Via2l0Um9vdCBpbnN0YW5jZW9mIFVwbG9h
ZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJXZWJraXRSb290LmZpbGVu
YW1lKCksICdyb290MTI0LmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhl
ckNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW290aGVyV2Via2l0Um9vdF0pOworICAgICAgICAg
ICAgcmV0dXJuIHVwbG9hZFJvb3Qob3RoZXJCdWlsZFJlcXVlc3QuaWQoKSwgMTI0LCBbe293bmVy
UmVwb3NpdG9yeTogJ1dlYktpdCcsIG93bmVkUmVwb3NpdG9yeTogJ0phdmFTY3JpcHRDb3JlJ31d
LCAnMjAxNy0wNS0xMFQwMjo1NDowOS42NjYnKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOwor
ICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmlu
ZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgY29uc3Qg
b3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9y
eUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJlcXVlc3Rz
KCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0ID0gdGVzdEdy
b3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3Qu
aXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ0Nv
bXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNV
cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1
aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChidWlsZFJlcXVlc3QuYnVp
bGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1
ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIGNvbW1pdFNldC5yZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBjb25zdCB3ZWJraXRSb290ID0gY29tbWl0
U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQod2Via2l0
Um9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
d2Via2l0Um9vdC5maWxlbmFtZSgpLCAncm9vdDEyMy5kYXQnKTsKKyAgICAgICAgICAgIGNvbnN0
IGpzY1Jvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkob3duZWRKU0MpOworICAgICAg
ICAgICAgYXNzZXJ0KGpzY1Jvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGpzY1Jvb3QuZmlsZW5hbWUoKSwgJ3Jvb3QxMjMuZGF0Jyk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW3dlYmtp
dFJvb3QsIGpzY1Jvb3RdKTsKIAogICAgICAgICAgICAgY29uc3Qgb3RoZXJCdWlsZFJlcXVlc3Qg
PSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOwogICAgICAgICAgICAgYXNzZXJ0KG90aGVy
QnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CkBAIC05NTUsNyArMTM0NiwxMCBAQCBkZXNjcmliZSgn
c3luYy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGNvbnN0IG90aGVyV2Vi
a2l0Um9vdCA9IG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CiAgICAg
ICAgICAgICBhc3NlcnQob3RoZXJXZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlcldlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jv
b3QxMjQuZGF0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0
LmFsbFJvb3RGaWxlcygpLCBbb3RoZXJXZWJraXRSb290XSk7CisgICAgICAgICAgICBjb25zdCBv
dGhlckpTQ1Jvb3QgPSBvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShvd25lZEpTQyk7
CisgICAgICAgICAgICBhc3NlcnQob3RoZXJKU0NSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxl
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckpTQ1Jvb3QuZmlsZW5hbWUoKSwgJ3Jv
b3QxMjQuZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0
LmFsbFJvb3RGaWxlcygpLCBbb3RoZXJXZWJraXRSb290LCBvdGhlckpTQ1Jvb3RdKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9KTsK
</data>
<flag name="review"
          id="344106"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>