<?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>27147</bug_id>
          
          <creation_ts>2009-07-10 02:32:39 -0700</creation_ts>
          <short_desc>JS Syntax Highlight is incorrect for keyword followed by string or regexp</short_desc>
          <delta_ts>2009-10-27 11:33:43 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>130858</commentid>
    <comment_count>0</comment_count>
      <attachid>32553</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-10 02:32:39 -0700</bug_when>
    <thetext>Created attachment 32553
testcase - inspect and see the syntax highlight for src.js

JS Syntax Highlight is wrong when a string or regexp immediately follows a keyword without a space. (ex. return&quot;foo&quot;; )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130860</commentid>
    <comment_count>1</comment_count>
      <attachid>32554</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-10 04:02:04 -0700</bug_when>
    <thetext>Created attachment 32554
Patch

all-minified.js at slashdot.org looks much better with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146877</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-11 19:59:54 -0700</bug_when>
    <thetext>Wait, why was this marked obsolete?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146880</commentid>
    <comment_count>3</comment_count>
      <attachid>32554</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 20:10:53 -0700</bug_when>
    <thetext>Comment on attachment 32554
Patch

Rejecting patch 32554 from commit-queue.

This patch will require manual commit. Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147076</commentid>
    <comment_count>4</comment_count>
      <attachid>32554</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 09:52:51 -0700</bug_when>
    <thetext>Comment on attachment 32554
Patch

You were bitten by bug 28316.  Will have a fix this week, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147101</commentid>
    <comment_count>5</comment_count>
      <attachid>32554</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-14 10:31:01 -0700</bug_when>
    <thetext>Comment on attachment 32554
Patch

Rejecting patch 32554 from commit-queue.

This patch will require manual commit. [&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147104</commentid>
    <comment_count>6</comment_count>
      <attachid>32554</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 10:38:36 -0700</bug_when>
    <thetext>Comment on attachment 32554
Patch

It would appear we have a flakey worker test. :(
fast/workers/dedicated-worker-lifecycle.html -&gt; failed

Also, looks like you have tabs in your ChangeLog, so this would have failed anyway.  Leaving cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148286</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-18 12:02:38 -0700</bug_when>
    <thetext>A quick git log search says this hasn&apos;t been landed yet.  If you&apos;d like to post a tab-less patch, we&apos;d be happy to cq+ this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152127</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-10-03 21:54:27 -0700</bug_when>
    <thetext>Hmm, it looks like when checking for a String or a Number it first checks the previous character to make sure it was empty (thus scanning a new line) or a non-alpha character:

  ...
  else if (!prevChar || /^\W/.test(prevChar)) { 
    token = findNumber(codeFragment, code[i - 1]) || 
      findKeyword(codeFragment, code[i - 1]) || 
      findSingleLineString(codeFragment) || 
      findSingleLineRegExp(codeFragment);
  ...

This has been around since the beginning:
http://trac.webkit.org/changeset/34657/trunk/WebCore/page/inspector/SourceFrame.js

Tim, was there a reason for this check or is it just an optimization? Dropping that check fixes this edge case, but I don&apos;t know what types of affects it would have on the speed of the parsing.  Keishi&apos;s solution did just this, he moved the regex and string checks out of this constraint.

As for Keishi&apos;s patch which he said improves &quot;all-minified.js&quot; on slashdot. Syntax highlighting that file crashes Safari 4.0.3, WebKit r49073, and even TextMate my editor (which uses a similar syntax highlighting procedure).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153992</commentid>
    <comment_count>9</comment_count>
      <attachid>41019</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-11 22:01:21 -0700</bug_when>
    <thetext>Created attachment 41019
New Javascript Synax Highlighter

I&apos;m sorry for the bad patch. 

I have rewritten the syntax highlighter from scratch. 
It now uses similar logic as a proper ECMAScript tokenizer so it should not confuse DIV and REGEXP anymore.
It also can figure out IDENT tokens(even with Unicode characters too). It&apos;s turned off right now to cut down on the number of elements but maybe we could use it in the future for the debugger to show variable values.
I also changed it to process 100 tokens at a time. 
It was still beach balling with minified JS so I put a limit on the number of characters per line it will color.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155942</commentid>
    <comment_count>10</comment_count>
      <attachid>32554</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-19 15:13:43 -0700</bug_when>
    <thetext>Comment on attachment 32554
Patch

Clearing Tim&apos;s r+ on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157637</commentid>
    <comment_count>11</comment_count>
      <attachid>41833</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-25 16:32:35 -0700</bug_when>
    <thetext>Created attachment 41833
proposed patch

Dropped unicode letter support. Uses [a-zA-Z] as unicode letter regexp.

Fixed syntax highlighting in ElementsTreeOutline.

I&apos;ll try to come up with some tests next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157638</commentid>
    <comment_count>12</comment_count>
      <attachid>41833</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-25 16:57:19 -0700</bug_when>
    <thetext>Comment on attachment 41833
proposed patch


&gt; +    this.LEXSTATE = {
&gt; +        INITIAL: 1,
&gt; +        DIV_ALLOWED: 2,
&gt; +    };
&gt; +    this.CONTINUESTATE = {
&gt; +        NONE: 0,
&gt; +        COMMENT: 1,
&gt; +        SINGLEQUOTESTRING: 2,
&gt; +        DOUBLEQUOTESTRING: 3,
&gt; +        REGEXP: 4
&gt; +    };

These should not be all caps. Make them CamelCase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157673</commentid>
    <comment_count>13</comment_count>
      <attachid>41841</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-25 21:47:56 -0700</bug_when>
    <thetext>Created attachment 41841
proposed patch with tests

&gt; These should not be all caps. Make them CamelCase.
Fixed.

Added  some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157675</commentid>
    <comment_count>14</comment_count>
      <attachid>41842</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-25 21:57:39 -0700</bug_when>
    <thetext>Created attachment 41842
fixed some minor stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157816</commentid>
    <comment_count>15</comment_count>
      <attachid>41842</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-26 10:28:57 -0700</bug_when>
    <thetext>Comment on attachment 41842
fixed some minor stuff


&gt; +        DivAllowed: 2,

I assume this means division allowed. Spell it out in the constant.


&gt; +    this.state = this.LexState.Initial;

This be this.lexState to match the constant names. Or the constant name should just be this.State.


&gt; +    }
&gt; +    
&gt; +    
&gt; +    function singleQuoteStringStartAction(token)

Extra blank line here.


&gt; +        var keywords = [&quot;null&quot;, &quot;true&quot;, &quot;false&quot;, &quot;break&quot;, &quot;case&quot;, &quot;catch&quot;, &quot;const&quot;, &quot;default&quot;, &quot;finally&quot;, &quot;for&quot;, &quot;instanceof&quot;, &quot;new&quot;, &quot;var&quot;, &quot;continue&quot;, &quot;function&quot;, &quot;return&quot;, &quot;void&quot;, &quot;delete&quot;, &quot;if&quot;, &quot;this&quot;, &quot;do&quot;, &quot;while&quot;, &quot;else&quot;, &quot;in&quot;, &quot;switch&quot;, &quot;throw&quot;, &quot;try&quot;, &quot;typeof&quot;, &quot;with&quot;, &quot;debugger&quot;, &quot;class&quot;, &quot;enum&quot;, &quot;export&quot;, &quot;extends&quot;, &quot;import&quot;, &quot;super&quot;, &quot;get&quot;, &quot;set&quot;];

Use &quot;const keywords&quot; instead of &quot;var keywords&quot;.


&gt; +        if (keywords.indexOf(token) &lt; 0) {

=== -1 is better here, since it is speced to return only -1. Or flip it to be !== -1 if you want.


&gt; +            var i;
&gt; +            for (i = 0; i &lt; tokensPerChunk; i++) {

Put the var i in the for loop:

for (var i = 0; …


&gt; +                var messageBubble = line.lastChild;
&gt; +                if (messageBubble &amp;&amp; messageBubble.nodeType === Node.ELEMENT_NODE &amp;&amp; messageBubble.hasStyleClass(&quot;webkit-html-message-bubble&quot;))
&gt; +                    line.removeChild(messageBubble);
&gt; +                else
&gt; +                    messageBubble = null;

I think it would be better to start messageBubble out as null and assign it only after confirming the type and class on the lastChild.


&gt; +                while (line.firstChild)
&gt; +                    line.removeChild(line.firstChild);

We have a helper for this. Calling line.removeChildren() should do.


&gt; +                this.lineFragment =null;

Missing a space after the &quot;=&quot;.


&gt; +    appendNonToken: function () {

Brace on the next line.


&gt; +    syntaxHighlightNode: function(node) {

Ditto.


&gt; +        while (1) {

Use &quot;true&quot;.


&gt; +        result.push(dumpSyntaxHighlight(&quot;return&apos;foo&apos;;&quot;));
&gt; +        result.push(dumpSyntaxHighlight(&quot;/\\\//&quot;));
&gt; +        result.push(dumpSyntaxHighlight(&quot;//ig&apos;;&quot;));
&gt; +        result.push(dumpSyntaxHighlight(&quot;1 / 2 + /a/.test(&apos;a&apos;);&quot;));
&gt; +        result.push(dumpSyntaxHighlight(&quot;\&quot;\\\&quot;/\&quot;.length / 2&quot;));
&gt; +        result.push(dumpSyntaxHighlight(&quot;var foo = 1/****//2&quot;));
&gt; +        result.push(dumpSyntaxHighlight(&quot;/*comment*//.*/.test(&apos;a&apos;)&quot;));

You should write some more tests that are multi-line and deal with things like message bubbles and nodes directly.

Can be another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157818</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-26 10:30:49 -0700</bug_when>
    <thetext>Nice work BTW! You should apply this to the CSS highlighter and make them share more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158194</commentid>
    <comment_count>17</comment_count>
      <attachid>41953</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-27 08:03:53 -0700</bug_when>
    <thetext>Created attachment 41953
proposed patch

&gt; You should write some more tests that are multi-line and deal with things like
&gt; message bubbles and nodes directly.

I added some multiline tests. 
I tried to write a message bubble test like this
http://gist.github.com/219610
But I get the timeout error. The event doesn&apos;t seem to be getting dispatched but I couldn&apos;t figure out more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158229</commentid>
    <comment_count>18</comment_count>
      <attachid>41953</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-27 10:01:32 -0700</bug_when>
    <thetext>Comment on attachment 41953
proposed patch

Rejecting patch 41953 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Timothy Hatcher&apos;, &apos;--force&apos;]&quot; exit_code: 2
patching file WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebCore/inspector/front-end/ElementsTreeOutline.js
patching file WebCore/inspector/front-end/SourceFrame.js
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/inspector/javascript-syntax-highlight-expected.txt
Died at /Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply line 438, &lt;&gt; line 638.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158234</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 10:09:11 -0700</bug_when>
    <thetext>My apologies.  False rejection.  I&apos;m working on a fix to svn-apply right now.  bug 30826</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158260</commentid>
    <comment_count>20</comment_count>
      <attachid>41953</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 10:38:59 -0700</bug_when>
    <thetext>Comment on attachment 41953
proposed patch

svn-apply fixed.  Trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158274</commentid>
    <comment_count>21</comment_count>
      <attachid>41953</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-27 11:10:44 -0700</bug_when>
    <thetext>Comment on attachment 41953
proposed patch

Rejecting patch 41953 from commit-queue.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;]&quot; exit_code: 1
Last 500 characters of output:
.html
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/SourceFrame.js
A repository hook failed: MERGE request failed on &apos;/repository/webkit/trunk&apos;: Commit blocked by pre-commit hook (exit code 1) with output:
svnlook: Can&apos;t write to stream: Broken pipe

    The following ChangeLog files contain OOPS:

        trunk/LayoutTests/ChangeLog

    Please don&apos;t ever say &quot;OOPS&quot; in a ChangeLog file.
 at /usr/local/libexec/git-core//git-svn line 469</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158279</commentid>
    <comment_count>22</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-27 11:27:14 -0700</bug_when>
    <thetext>Committed r50162: &lt;http://trac.webkit.org/changeset/50162&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158284</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 11:33:43 -0700</bug_when>
    <thetext> 5         Need a short description and bug URL (OOPS!)

in the LayoutTests ChangeLog was the problem. :(

Thank you for taking care of this Tim.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>32553</attachid>
            <date>2009-07-10 02:32:39 -0700</date>
            <delta_ts>2009-07-10 02:32:39 -0700</delta_ts>
            <desc>testcase - inspect and see the syntax highlight for src.js</desc>
            <filename>syntaxhighlight-testcase.zip</filename>
            <type>application/zip</type>
            <size>1794</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAAuT6joAAAAAAAAAAAAAAAAZABAAc3ludGF4aGlnaGxpZ2h0LXRlc3RjYXNlL1VY
DACGCFdKxghXSvUBFABQSwMEFAAIAAgAkYDqOgAAAAAAAAAAAAAAAB8AEABzeW50YXhoaWdobGln
aHQtdGVzdGNhc2Uvc3JjLmpzVVgMAM4IV0oC6FZK9QEUAEsrzUsuyczPUyhJLS7R0FSo5lIAgqLU
ktKiPCWQmJI1Vy0AUEsHCLBJlhIjAAAAJQAAAFBLAwQKAAAAAAAPk+o6AAAAAAAAAAAAAAAACQAQ
AF9fTUFDT1NYL1VYDADOCFdKzghXSvUBFABQSwMECgAAAAAAD5PqOgAAAAAAAAAAAAAAACIAEABf
X01BQ09TWC9zeW50YXhoaWdobGlnaHQtdGVzdGNhc2UvVVgMAM4IV0rOCFdK9QEUAFBLAwQUAAgA
CACRgOo6AAAAAAAAAAAAAAAAKgAQAF9fTUFDT1NYL3N5bnRheGhpZ2hsaWdodC10ZXN0Y2FzZS8u
X3NyYy5qc1VYDADOCFdKAuhWSvUBFABjYBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXEHEIP4uxiI
Ao4hIUEMEe+6oDpmALESmhJGhLhocn6uXm5iclF+bmJJarFecmJRaglDNRfIFcn5OaW5eQq2Cobm
1mCBnMy8VBDXmqsWAFBLBwhMLuZ6aAAAALoAAABQSwMEFAAIAAgAC5PqOgAAAAAAAAAAAAAAACIA
EABzeW50YXhoaWdobGlnaHQtdGVzdGNhc2UvdGVzdC5odG1sVVgMAM4IV0rGCFdK9QEUAG2QzU7D
MBCEz/FTmL0nS9ULLU4OJJVAKj9CqYCjSUzjkjgl3jTp2+PUVcWBg7Wza883Wour7DnNP15WvKKm
5i+bu/VDyiFEfJuniFme8ff7/HHNZ9E1zztprCbdGlkjrp6ABVAR7ZeIwzBEwzxquy3mrzhOsNnk
PsuQ/lijkkpIGBOnyLGpjY3/4cwWi4W3w/RoWUuzjUEZ4BeVOIaSZcIC0SiSfIKE6qfXhxjS1pAy
FObHvQJe+C4GUiPhBL3lRSU7qyju6Su8AZwotuj0nrjtihhwY1Vn8VtpW2nM2qJvHMGiPRqSY6W3
Ve0OhaQsFdIqdK5oZ4GTSzwH7eRBeiZc4sDnJQL9jfuJQJCmWiW9OdVSoO9ZwAT6DZn4bMujq27i
lTitkbBfUEsHCPQiAZwoAQAAwwEAAFBLAwQUAAgACAALk+o6AAAAAAAAAAAAAAAALQAQAF9fTUFD
T1NYL3N5bnRheGhpZ2hsaWdodC10ZXN0Y2FzZS8uX3Rlc3QuaHRtbFVYDADOCFdKxghXSvUBFABj
YBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXEHEIP4uxiIAo4hIUEMEe+mQXXMAGIlNCWMCHHR5Pxc
vdzE5KL83MSS1GK95MSi1BKGai6QK5Lzc0pz8xRsFQyswfyczLxUIM/Q3JqrFgBQSwcIpmDbf2kA
AAC6AAAAUEsBAhUDCgAAAAAAC5PqOgAAAAAAAAAAAAAAABkADAAAAAAAAAAAQO1BAAAAAHN5bnRh
eGhpZ2hsaWdodC10ZXN0Y2FzZS9VWAgAhghXSsYIV0pQSwECFQMUAAgACACRgOo6sEmWEiMAAAAl
AAAAHwAMAAAAAAAAAABApIFHAAAAc3ludGF4aGlnaGxpZ2h0LXRlc3RjYXNlL3NyYy5qc1VYCADO
CFdKAuhWSlBLAQIVAwoAAAAAAA+T6joAAAAAAAAAAAAAAAAJAAwAAAAAAAAAAED9QccAAABfX01B
Q09TWC9VWAgAzghXSs4IV0pQSwECFQMKAAAAAAAPk+o6AAAAAAAAAAAAAAAAIgAMAAAAAAAAAABA
/UH+AAAAX19NQUNPU1gvc3ludGF4aGlnaGxpZ2h0LXRlc3RjYXNlL1VYCADOCFdKzghXSlBLAQIV
AxQACAAIAJGA6jpMLuZ6aAAAALoAAAAqAAwAAAAAAAAAAECkgU4BAABfX01BQ09TWC9zeW50YXho
aWdobGlnaHQtdGVzdGNhc2UvLl9zcmMuanNVWAgAzghXSgLoVkpQSwECFQMUAAgACAALk+o69CIB
nCgBAADDAQAAIgAMAAAAAAAAAABApIEeAgAAc3ludGF4aGlnaGxpZ2h0LXRlc3RjYXNlL3Rlc3Qu
aHRtbFVYCADOCFdKxghXSlBLAQIVAxQACAAIAAuT6jqmYNt/aQAAALoAAAAtAAwAAAAAAAAAAECk
gaYDAABfX01BQ09TWC9zeW50YXhoaWdobGlnaHQtdGVzdGNhc2UvLl90ZXN0Lmh0bWxVWAgAzghX
SsYIV0pQSwUGAAAAAAcABwByAgAAegQAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32554</attachid>
            <date>2009-07-10 04:02:04 -0700</date>
            <delta_ts>2009-10-19 15:13:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3574</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmM2NGZjYi4uZWE1ZmY5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0xMCAgS2Vpc2hpIEhhdHRv
cmkgIDxjYXNleS5oYXR0b3JpQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworCQlXZWJJbnNwZWN0b3I6IEpTIFN5bnRheCBIaWdobGlnaHQgaXMgaW5j
b3JyZWN0IGZvciBrZXl3b3JkIGZvbGxvd2VkIGJ5IHN0cmluZyBvciByZWdleHAKKwkJaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTQ3CisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5zeW50YXhIaWdobGlnaHRKYXZhc2NyaXB0KToKKwogMjAwOS0w
Ny0wOSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3Qg
cmV2aWV3ZWQsIGZpeCBmb3IgcHJldmlvdXMgY29tbWl0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IDE4ZDkwNzMuLjNjYjU5YTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTU3OSw3ICs1NzksNyBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZmluZE11
bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nRW5kID0gZ2VuZXJhdGVGaW5kZXIoL14oPzpbXidcXF18
XFwuKSo/Jy8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKICAgICAgICAgdmFyIGZp
bmRNdWx0aWxpbmVEb3VibGVRdW90ZVN0cmluZ1N0YXJ0ID0gZ2VuZXJhdGVGaW5kZXIoL14iKD86
W14iXFxdfFxcLikqXFwkLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwogICAgICAg
ICB2YXIgZmluZE11bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nRW5kID0gZ2VuZXJhdGVGaW5kZXIo
L14oPzpbXiJcXF18XFwuKSo/Ii8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKLSAg
ICAgICAgdmFyIGZpbmRNdWx0aWxpbmVSZWdFeHBFbmQgPSBnZW5lcmF0ZUZpbmRlcigvXig/Olte
XC9cXF18XFwuKSo/XC8oW2dpbV17MCwzfSkvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhw
Iik7CisgICAgICAgIHZhciBmaW5kTXVsdGlsaW5lUmVnRXhwRW5kID0gZ2VuZXJhdGVGaW5kZXIo
L14oPzpbXlwvXFxdfFxcLikqP1wvKFtnaW1dezAsM30pKD86W15cd1wvXXwkKS8sIDAsICJ3ZWJr
aXQtamF2YXNjcmlwdC1yZWdleHAiKTsKICAgICAgICAgdmFyIGZpbmRTaW5nbGVMaW5lQ29tbWVu
dCA9IGdlbmVyYXRlRmluZGVyKC9eXC9cLy4qfF5cL1wqLio/XCpcLy8sIDAsICJ3ZWJraXQtamF2
YXNjcmlwdC1jb21tZW50Iik7CiAKICAgICAgICAgZnVuY3Rpb24gZmluZE11bHRpbGluZVJlZ0V4
cFN0YXJ0KHN0cikKQEAgLTU5NCw3ICs1OTQsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGZpbmRTaW5nbGVMaW5lUmVnRXhwKHN0
cikKICAgICAgICAgewotICAgICAgICAgICAgdmFyIG1hdGNoID0gL14oXC8oPzpbXlwvXFxdfFxc
LikqXC8oW2dpbV17MCwzfSkpKC4/KS8uZXhlYyhzdHIpOworICAgICAgICAgICAgdmFyIG1hdGNo
ID0gL14oXC8oPzpbXlwvXFxdfFxcLikqXC8oW2dpbV17MCwzfSkpKD86W15cd1wvXXwkKS8uZXhl
YyhzdHIpOwogICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCAhKG1hdGNoWzJdLmxlbmd0aCA+IDAg
fHwgL1xcfFwkfFwuW1w/XCpcK118W15cfF1cfFteXHxdLy50ZXN0KG1hdGNoWzFdKSB8fCAvXC58
O3wsLy50ZXN0KG1hdGNoWzNdKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg
ICAgICAgICB2YXIgbm9kZSA9IGNyZWF0ZVNwYW4obWF0Y2hbMV0sICJ3ZWJraXQtamF2YXNjcmlw
dC1yZWdleHAiKTsKQEAgLTY1NiwxMCArNjU2LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBpZiAoIXRva2VuKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICgodG9rZW4gPSBmaW5kTXVsdGlsaW5lQ29tbWVudFN0YXJ0KGNvZGVGcmFn
bWVudCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5fY29tbWVudENvbnRpbnVlcyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFwcmV2Q2hhciB8fCAvXlxXLy50
ZXN0KHByZXZDaGFyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBmaW5kTnVt
YmVyKGNvZGVGcmFnbWVudCwgY29kZVtpIC0gMV0pIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmRLZXl3b3JkKGNvZGVGcmFnbWVudCwgY29kZVtpIC0gMV0pIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRTaW5nbGVMaW5lU3RyaW5nKGNvZGVGcmFn
bWVudCkgfHwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0b2tlbiA9IGZpbmRTaW5nbGVMaW5lU3RyaW5nKGNvZGVGcmFnbWVudCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZFNpbmdsZUxpbmVSZWdFeHAoY29kZUZyYWdt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9rZW4pIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPSBmaW5kTXVsdGlsaW5lU2luZ2xlUXVvdGVTdHJp
bmdTdGFydChjb2RlRnJhZ21lbnQpKQpAQCAtNjY4LDYgKzY2Niw5IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmUuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbiA9IGZpbmRNdWx0aWxpbmVSZWdFeHBTdGFydChj
b2RlRnJhZ21lbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLl9yZWdl
eHBDb250aW51ZXMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KCFwcmV2Q2hhciB8fCAvXlxXLy50ZXN0KHByZXZDaGFyKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9rZW4gPSBmaW5kTnVtYmVyKGNvZGVGcmFnbWVudCwgY29kZVtpIC0gMV0p
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZEtleXdvcmQo
Y29kZUZyYWdtZW50LCBjb2RlW2kgLSAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="20596"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41019</attachid>
            <date>2009-10-11 22:01:21 -0700</date>
            <delta_ts>2009-10-25 16:32:35 -0700</delta_ts>
            <desc>New Javascript Synax Highlighter</desc>
            <filename>new_jssh.diff</filename>
            <type>text/plain</type>
            <size>40352</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGMxZjg4Zi4uYmRlNTE1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMC0xMSAgS2Vpc2hpIEhhdHRv
cmkgIDxjYXNleS5oYXR0b3JpQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZXdyb3RlIEphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdo
bGlnaHRlciB0byBiZSBtb3JlIGFjY3VyYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE0NworCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNl
U3ludGF4SGlnaGxpZ2h0ZXIucHJvY2Vzcyk6IEFkZGVkLiBQcm9jZXNzZXMgMTAwIHRva2VucyBh
dCBhIHRpbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhp
Z2hsaWdodGVyLmxleCk6IEFkZGVkLiBTY2FucyBmb3IgYSB0b2tlbi4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIuYXBwZW5kTm9uVG9rZW4p
OiBBZGRlZC4gQXBwZW5kcyB0aGUgbm9uLXRva2VuIGNoYXJhY3RlcnMgdGhhdCBsZXggaWdub3Jl
ZC4KKwogMjAwOS0xMC0xMSAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggNzkwMDU1YS4uMTE2ZTY1NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtOTgwLDEzMiArOTgwLDM1NiBA
QCBXZWJJbnNwZWN0b3IuQ1NTU291cmNlU3ludGF4SGlnaGxpZ2hlci5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZQogV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VT
eW50YXhIaWdobGlnaHRlciA9IGZ1bmN0aW9uKHRhYmxlLCBzb3VyY2VGcmFtZSkgewogICAgIFdl
Ykluc3BlY3Rvci5Tb3VyY2VTeW50YXhIaWdobGlnaGVyLmNhbGwodGhpcywgdGFibGUsIHNvdXJj
ZUZyYW1lKTsKIAotICAgIHRoaXMuZmluZE51bWJlciA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14o
LT8oXGQrXC4/XGQqKFtlRV1bKy1dXGQrKT98MFt4WF1caCt8SW5maW5pdHkpfE5hTikoPzpcV3wk
KS8sIDEsICJ3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIiKTsKLSAgICB0aGlzLmZpbmRLZXl3b3Jk
ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXihudWxsfHRydWV8ZmFsc2V8YnJlYWt8Y2FzZXxjYXRj
aHxjb25zdHxkZWZhdWx0fGZpbmFsbHl8Zm9yfGluc3RhbmNlb2Z8bmV3fHZhcnxjb250aW51ZXxm
dW5jdGlvbnxyZXR1cm58dm9pZHxkZWxldGV8aWZ8dGhpc3xkb3x3aGlsZXxlbHNlfGlufHN3aXRj
aHx0aHJvd3x0cnl8dHlwZW9mfHdpdGh8ZGVidWdnZXJ8Y2xhc3N8ZW51bXxleHBvcnR8ZXh0ZW5k
c3xpbXBvcnR8c3VwZXJ8Z2V0fHNldCkoPzpcV3wkKS8sIDEsICJ3ZWJraXQtamF2YXNjcmlwdC1r
ZXl3b3JkIik7Ci0gICAgdGhpcy5maW5kU2luZ2xlTGluZVN0cmluZyA9IHRoaXMuZ2VuZXJhdGVG
aW5kZXIoL14iKD86W14iXFxdfFxcLikqInxeJyhbXidcXF18XFwuKSonLywgMCwgIndlYmtpdC1q
YXZhc2NyaXB0LXN0cmluZyIpOyAvLyAiIHRoaXMgcXVvdGUga2VlcHMgWGNvZGUgaGFwcHkKLSAg
ICB0aGlzLmZpbmRNdWx0aWxpbmVDb21tZW50U3RhcnQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9e
XC9cKi4qJC8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iik7Ci0gICAgdGhpcy5maW5k
TXVsdGlsaW5lQ29tbWVudEVuZCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14uKj9cKlwvLywgMCwg
IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKTsKLSAgICB0aGlzLmZpbmRNdWx0aWxpbmVTaW5n
bGVRdW90ZVN0cmluZ1N0YXJ0ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXicoPzpbXidcXF18XFwu
KSpcXCQvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVs
dGlsaW5lU2luZ2xlUXVvdGVTdHJpbmdFbmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eKD86W14n
XFxdfFxcLikqPycvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5m
aW5kTXVsdGlsaW5lRG91YmxlUXVvdGVTdHJpbmdTdGFydCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIo
L14iKD86W14iXFxdfFxcLikqXFwkLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwot
ICAgIHRoaXMuZmluZE11bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nRW5kID0gdGhpcy5nZW5lcmF0
ZUZpbmRlcigvXig/OlteIlxcXXxcXC4pKj8iLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZyIpOwotICAgIHRoaXMuZmluZE11bHRpbGluZVJlZ0V4cEVuZCA9IHRoaXMuZ2VuZXJhdGVGaW5k
ZXIoL14oPzpbXlwvXFxdfFxcLikqP1wvKFtnaW1dezAsM30pLywgMCwgIndlYmtpdC1qYXZhc2Ny
aXB0LXJlZ2V4cCIpOwotICAgIHRoaXMuZmluZFNpbmdsZUxpbmVDb21tZW50ID0gdGhpcy5nZW5l
cmF0ZUZpbmRlcigvXlwvXC8uKnxeXC9cKi4qP1wqXC8vLCAwLCAid2Via2l0LWphdmFzY3JpcHQt
Y29tbWVudCIpOwotfQotCi1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hs
aWdodGVyLnByb3RvdHlwZSA9IHsKLSAgICBkZWxldGVDb250aW51ZUZsYWdzOiBmdW5jdGlvbihj
ZWxsKQorICAgIHRoaXMuTEVYU1RBVEUgPSB7CisgICAgICAgIElOSVRJQUw6IDEsCisgICAgICAg
IERJVl9BTExPV0VEOiAyLAorICAgIH07CisgICAgdGhpcy5DT05USU5VRVNUQVRFID0geworICAg
ICAgICBOT05FOiAwLAorICAgICAgICBDT01NRU5UOiAxLAorICAgICAgICBTSU5HTEVRVU9URVNU
UklORzogMiwKKyAgICAgICAgRE9VQkxFUVVPVEVTVFJJTkc6IDMsCisgICAgICAgIFJFR0VYUDog
NAorICAgIH07CisgICAgCisgICAgdGhpcy5ub25Ub2tlbiA9ICIiOworICAgIHRoaXMuY3Vyc29y
ID0gMDsKKyAgICB0aGlzLmxpbmVJbmRleCA9IC0xOworICAgIHRoaXMubGluZUNvZGUgPSAiIjsK
KyAgICB0aGlzLmxpbmVGcmFnbWVudCA9IG51bGw7CisgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTEVY
U1RBVEUuSU5JVElBTDsKKyAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNPTlRJTlVFU1RB
VEUuTk9ORTsKKyAgICAKKyAgICB0aGlzLnJ1bGVzID0gW3sKKyAgICAgICAgcGF0dGVybjogL14o
PzpcL1wvLiopLywKKyAgICAgICAgYWN0aW9uOiBzaW5nbGVMaW5lQ29tbWVudEFjdGlvbgorICAg
IH0sIHsKKyAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86W15cKl18XCpbXlwvXSkqXCorXC8p
LywKKyAgICAgICAgYWN0aW9uOiBtdWx0aUxpbmVTaW5nbGVMaW5lQ29tbWVudEFjdGlvbgorICAg
IH0sIHsKKyAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86W15cKl18XCpbXlwvXSkqKS8sCisg
ICAgICAgIGFjdGlvbjogbXVsdGlMaW5lQ29tbWVudFN0YXJ0QWN0aW9uCisgICAgfSwgeworICAg
ICAgICBwYXR0ZXJuOiAvXig/Oig/OlteXCpdfFwqW15cL10pKlwqK1wvKS8sCisgICAgICAgIGFj
dGlvbjogbXVsdGlMaW5lQ29tbWVudEVuZEFjdGlvbiwKKyAgICAgICAgY29udGludWVTdGF0ZUNv
bmRpdGlvbjogdGhpcy5DT05USU5VRVNUQVRFLkNPTU1FTlQKKyAgICB9LCB7CisgICAgICAgIHBh
dHRlcm46IC9eLiovLAorICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1lbnRNaWRkbGVBY3Rp
b24sCisgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ09OVElOVUVTVEFURS5D
T01NRU5UCisgICAgfSwgeworICAgICAgICBwYXR0ZXJuOiAvXig/Oig/OjB8WzEtOV1cZCopXC5c
ZCs/KD86W2VFXSg/OlxkK3xcK1xkK3wtXGQrKSk/fFwuXGQrKD86W2VFXSg/OlxkK3xcK1xkK3wt
XGQrKSk/fCg/OjB8WzEtOV1cZCopKD86W2VFXSg/OlxkK3xcK1xkK3wtXGQrKSk/fDB4WzAtOWEt
ZkEtRl0rfDBYWzAtOWEtZkEtRl0rKS8sCisgICAgICAgIGFjdGlvbjogbnVtZXJpY0xpdGVyYWxB
Y3Rpb24KKyAgICB9LCB7CisgICAgICAgIHBhdHRlcm46IC9eKD86Iig/OlteIlxcXXxcXFsnIlxi
Zm5ydHZcbl18W14nIlxiZm5ydHYwLTl4dVxuXXwwfHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/
OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkpKiJ8Jyg/Olte
J1xcXXxcXFsnIlxiZm5ydHZcbl18W14nIlxiZm5ydHYwLTl4dVxuXXwwfHhbMC05YS1mQS1GXVsw
LTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1G
XSkpKicpLywKKyAgICAgICAgYWN0aW9uOiBzdHJpbmdMaXRlcmFsQWN0aW9uCisgICAgfSwgewor
ICAgICAgICBwYXR0ZXJuOiAvXig/OicoPzpbXidcXF18XFxbJyJcYmZucnR2XG5dfFteJyJcYmZu
cnR2MC05eHVcbl18MHx4WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05
YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSopXFwkLywKKyAgICAgICAgYWN0aW9uOiBz
aW5nbGVRdW90ZVN0cmluZ1N0YXJ0QWN0aW9uCisgICAgfSwgeworICAgICAgICBwYXR0ZXJuOiAv
Xig/Oig/OlteJ1xcXXxcXFsnIlxiZm5ydHZcbl18W14nIlxiZm5ydHYwLTl4dVxuXXwwfHhbMC05
YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1b
MC05YS1mQS1GXSkpKicpLywKKyAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ0VuZEFj
dGlvbiwKKyAgICAgICAgY29udGludWVTdGF0ZUNvbmRpdGlvbjogdGhpcy5DT05USU5VRVNUQVRF
LlNJTkdMRVFVT1RFU1RSSU5HCisgICAgfSwgeworICAgICAgICBwYXR0ZXJuOiAvXig/Oig/Olte
J1xcXXxcXFsnIlxiZm5ydHZcbl18W14nIlxiZm5ydHYwLTl4dVxuXXwwfHhbMC05YS1mQS1GXVsw
LTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1G
XSkpKilcXCQvLAorICAgICAgICBhY3Rpb246IHNpbmdsZVF1b3RlU3RyaW5nTWlkZGxlQWN0aW9u
LAorICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNPTlRJTlVFU1RBVEUuU0lO
R0xFUVVPVEVTVFJJTkcKKyAgICB9LCB7CisgICAgICAgIHBhdHRlcm46IC9eKD86Iig/OlteIlxc
XXxcXFsnIlxiZm5ydHZcbl18W14nIlxiZm5ydHYwLTl4dVxuXXwwfHhbMC05YS1mQS1GXVswLTlh
LWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkp
KilcXCQvLAorICAgICAgICBhY3Rpb246IGRvdWJsZVF1b3RlU3RyaW5nU3RhcnRBY3Rpb24KKyAg
ICB9LCB7CisgICAgICAgIHBhdHRlcm46IC9eKD86KD86W14iXFxdfFxcWyciXGJmbnJ0dlxuXXxb
XiciXGJmbnJ0djAtOXh1XG5dfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZB
LUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkqIikvLAorICAgICAgICBhY3Rp
b246IGRvdWJsZVF1b3RlU3RyaW5nRW5kQWN0aW9uLAorICAgICAgICBjb250aW51ZVN0YXRlQ29u
ZGl0aW9uOiB0aGlzLkNPTlRJTlVFU1RBVEUuRE9VQkxFUVVPVEVTVFJJTkcKKyAgICB9LCB7Cisg
ICAgICAgIHBhdHRlcm46IC9eKD86KD86W14iXFxdfFxcWyciXGJmbnJ0dlxuXXxbXiciXGJmbnJ0
djAtOXh1XG5dfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkqKVxcJC8sCisgICAgICAgIGFjdGlvbjogZG91
YmxlUXVvdGVTdHJpbmdNaWRkbGVBY3Rpb24sCisgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRp
b246IHRoaXMuQ09OVElOVUVTVEFURS5ET1VCTEVRVU9URVNUUklORworICAgIH0sIHsKKyAgICAg
ICAgcGF0dGVybjogL14oPzooPzpbXHUwMDQxLVx1MDA1QVx1MDA2MS1cdTAwN0FcdTAwQUFcdTAw
QjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyQzFcdTAyQzYtXHUw
MkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAz
N0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUw
M0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjNcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1
MDU4N1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjIxLVx1MDY0QVx1MDY2RVx1MDY2Rlx1
MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVcdTA2RUZcdTA2RkEtXHUwNkZDXHUw
NkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXHUw
N0Y0XHUwN0Y1XHUwN0ZBXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5
NzFcdTA5NzJcdTA5N0ItXHUwOTdGXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5
QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlE
RFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEz
LVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlc
dTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkx
XHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJE
XHUwQUQwXHUwQUUwXHUwQUUxXHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhc
dTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1
MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1c
dTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUw
QkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1
MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNEXHUwQzU4XHUwQzU5XHUwQzYwXHUw
QzYxXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1
MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBEMDUtXHUwRDBDXHUwRDBFLVx1
MEQxMFx1MEQxMi1cdTBEMjhcdTBEMkEtXHUwRDM5XHUwRDNEXHUwRDYwXHUwRDYxXHUwRDdBLVx1
MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1c
dTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1
MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUw
RUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBF
QjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURDXHUwRUREXHUwRjAwXHUwRjQwLVx1MEY0
N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhCXHUxMDAwLVx1MTAyQVx1MTAzRlx1MTA1MC1cdTEw
NTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEw
ODFcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEQwLVx1MTBGQVx1MTBGQ1x1MTEwMC1cdTExNTlcdTEx
NUYtXHUxMUEyXHUxMUE4LVx1MTFGOVx1MTIwMC1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1
MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1c
dTEyQjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgt
XHUxMkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4
Rlx1MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Nlx1MTY4MS1cdTE2OUFcdTE2
QTAtXHUxNkVBXHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1
MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1
MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEE4XHUxOEFBXHUxOTAwLVx1MTkxQ1x1MTk1MC1cdTE5NkRc
dTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBOVx1MTlDMS1cdTE5QzdcdTFBMDAtXHUxQTE2XHUxQjA1
LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXHUxQzAwLVx1MUMy
M1x1MUM0RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFG
MTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUx
RjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUx
RkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1c
dTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOTRc
dTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1
MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlc
dTIxNEVcdTIxODNcdTIxODRcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDNkZc
dTJDNzEtXHUyQzdEXHUyQzgwLVx1MkNFNFx1MkQwMC1cdTJEMjVcdTJEMzAtXHUyRDY1XHUyRDZG
XHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRC
OC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUy
RERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMw
OTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUz
MTMxLVx1MzE4RVx1MzFBMC1cdTMxQjdcdTMxRjAtXHUzMUZGXHUzNDAwXHU0REI1XHU0RTAwXHU5
RkMzXHVBMDAwLVx1QTQ4Q1x1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVB
NjQwLVx1QTY1Rlx1QTY2Mi1cdUE2NkVcdUE2N0YtXHVBNjk3XHVBNzE3LVx1QTcxRlx1QTcyMi1c
dUE3ODhcdUE3OEJcdUE3OENcdUE3RkItXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFc
dUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE5MEEtXHVBOTI1XHVBOTMw
LVx1QTk0Nlx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUMwMFx1RDdB
M1x1RjkwMC1cdUZBMkRcdUZBMzAtXHVGQTZBXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZC
MTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVG
QjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZE
NTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1
RkVGQ1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdc
dUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdfFskX118XFwoPzp1WzAtOWEt
ZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSg/Oig/OltcdTAwNDEtXHUw
MDVBXHUwMDYxLVx1MDA3QVx1MDBBQVx1MDBCNVx1MDBCQVx1MDBDMC1cdTAwRDZcdTAwRDgtXHUw
MEY2XHUwMEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUw
MzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzODZcdTAzODgtXHUwMzhBXHUw
MzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyM1x1
MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJc
dTA2MjEtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1
MDZFRVx1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1
MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFcdTA5MDQtXHUwOTM5XHUw
OTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MVx1MDk3Mlx1MDk3Qi1cdTA5N0ZcdTA5ODUtXHUw
OThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUw
OUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MEEw
NS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEz
M1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0
XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFC
Mlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBCMDUtXHUwQjBD
XHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUt
XHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1c
dTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1
MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1
MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlc
dTBDM0RcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1
MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1
MENFMVx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQyOFx1MEQyQS1cdTBEMzlc
dTBEM0RcdTBENjBcdTBENjFcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFc
dTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBFMzNc
dTBFNDAtXHUwRTQ2XHUwRTgxXHUwRTgyXHUwRTg0XHUwRTg3XHUwRTg4XHUwRThBXHUwRThEXHUw
RTk0LVx1MEU5N1x1MEU5OS1cdTBFOUZcdTBFQTEtXHUwRUEzXHUwRUE1XHUwRUE3XHUwRUFBXHUw
RUFCXHUwRUFELVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBF
RENcdTBFRERcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOEJcdTEw
MDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEw
NjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwRDAtXHUx
MEZBXHUxMEZDXHUxMTAwLVx1MTE1OVx1MTE1Ri1cdTExQTJcdTExQTgtXHUxMUY5XHUxMjAwLVx1
MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1c
dTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJF
XHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMx
NVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2
NkYtXHUxNjc2XHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE3MDAtXHUxNzBDXHUxNzBFLVx1
MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBc
dTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFc
dTE5MDAtXHUxOTFDXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUE5XHUxOUMx
LVx1MTlDN1x1MUEwMC1cdTFBMTZcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Qlx1MUI4My1cdTFC
QTBcdTFCQUVcdTFCQUZcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFE
MDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1
MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1
MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1c
dTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZD
XHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5NFx1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVc
dTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlc
dTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NFx1MkMwMC1cdTJDMkVc
dTJDMzAtXHUyQzVFXHUyQzYwLVx1MkM2Rlx1MkM3MS1cdTJDN0RcdTJDODAtXHUyQ0U0XHUyRDAw
LVx1MkQyNVx1MkQzMC1cdTJENjVcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRB
OC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUy
RENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVcdTMwMDZcdTMwMzEtXHUz
MDM1XHUzMDNCXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUz
MEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCN1x1MzFGMC1c
dTMxRkZcdTM0MDBcdTREQjVcdTRFMDBcdTlGQzNcdUEwMDAtXHVBNDhDXHVBNTAwLVx1QTYwQ1x1
QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJcdUE2NDAtXHVBNjVGXHVBNjYyLVx1QTY2RVx1QTY3Ri1c
dUE2OTdcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qlx1QTc4Q1x1QTdGQi1cdUE4MDFc
dUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgy
LVx1QThCM1x1QTkwQS1cdUE5MjVcdUE5MzAtXHVBOTQ2XHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFB
NDJcdUFBNDQtXHVBQTRCXHVBQzAwXHVEN0EzXHVGOTAwLVx1RkEyRFx1RkEzMC1cdUZBNkFcdUZB
NzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVG
QjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZC
NDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1
RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFc
dUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRB
LVx1RkZEQ118WyRfXXxcXCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05
YS1mQS1GXSkpfFswLTldKSopLywKKyAgICAgICAgYWN0aW9uOiBpZGVudE9yS2V5d29yZEFjdGlv
biwKKyAgICAgICAgZG9udEFwcGVuZE5vblRva2VuOiB0cnVlCisgICAgfSwgeworICAgICAgICBw
YXR0ZXJuOiAvXlwpLywKKyAgICAgICAgYWN0aW9uOiByaWdodFBhcmVuQWN0aW9uLAorICAgICAg
ICBkb250QXBwZW5kTm9uVG9rZW46IHRydWUKKyAgICB9LCB7CisgICAgICAgIHBhdHRlcm46IC9e
KD86PD18Pj18PT09fD09fCE9fCE9PXxcK1wrfFwtXC18PDx8Pj58Pj4+fCYmfFx8XHx8XCs9fFwt
PXxcKj18JT18PDw9fD4+PXw+Pj49fCY9fFx8PXxePXxbe31cKFxbXF1cLjssPD5cK1wtXColJlx8
XF4hflw/Oj1dKS8sCisgICAgICAgIGFjdGlvbjogcHVuY3R1YXRvckFjdGlvbiwKKyAgICAgICAg
ZG9udEFwcGVuZE5vblRva2VuOiB0cnVlCisgICAgfSwgeworICAgICAgICBwYXR0ZXJuOiAvXig/
OlwvPT8pLywKKyAgICAgICAgYWN0aW9uOiBkaXZQdW5jdHVhdG9yQWN0aW9uLAorICAgICAgICBz
dGF0ZUNvbmRpdGlvbjogdGhpcy5MRVhTVEFURS5ESVZfQUxMT1dFRCwKKyAgICAgICAgZG9udEFw
cGVuZE5vblRva2VuOiB0cnVlCisgICAgfSwgeworICAgICAgICBwYXR0ZXJuOiAvXig/OlwvKD86
KD86XFwuKXxbXlxcKlwvXSkoPzooPzpcXC4pfFteXFwvXSkqXC8oPzooPzpbXHUwMDQxLVx1MDA1
QVx1MDA2MS1cdTAwN0FcdTAwQUFcdTAwQjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBG
Nlx1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3
MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4
Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjNcdTA1
MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUw
NjIxLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2
RUVcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3
QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwOTA0LVx1MDkzOVx1MDkz
RFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzFcdTA5NzJcdTA5N0ItXHUwOTdGXHUwOTg1LVx1MDk4
Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlC
OVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTBBMDUt
XHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNc
dTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1
MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJc
dTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQjA1LVx1MEIwQ1x1
MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1
MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUw
QjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBC
OUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBD
MENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUw
QzNEXHUwQzU4XHUwQzU5XHUwQzYwXHUwQzYxXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBD
OTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBD
RTFcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEMjhcdTBEMkEtXHUwRDM5XHUw
RDNEXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUw
REIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUw
RTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5
NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVB
Qlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURD
XHUwRUREXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhCXHUxMDAw
LVx1MTAyQVx1MTAzRlx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2
XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEQwLVx1MTBG
QVx1MTBGQ1x1MTEwMC1cdTExNTlcdTExNUYtXHUxMUEyXHUxMUE4LVx1MTFGOVx1MTIwMC1cdTEy
NDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUx
Mjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1
MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVc
dTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXHUxNjZG
LVx1MTY3Nlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3
MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUx
NzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEE4XHUxOEFBXHUx
OTAwLVx1MTkxQ1x1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBOVx1MTlDMS1c
dTE5QzdcdTFBMDAtXHUxQTE2XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEw
XHUxQkFFXHUxQkFGXHUxQzAwLVx1MUMyM1x1MUM0RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxRDAw
LVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFG
NERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFG
QjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUx
RkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1
MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOTRcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUy
MTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUy
MTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxODNcdTIxODRcdTJDMDAtXHUyQzJFXHUy
QzMwLVx1MkM1RVx1MkM2MC1cdTJDNkZcdTJDNzEtXHUyQzdEXHUyQzgwLVx1MkNFNFx1MkQwMC1c
dTJEMjVcdTJEMzAtXHUyRDY1XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgt
XHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRD
RVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAz
NVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBG
Qy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQjdcdTMxRjAtXHUz
MUZGXHUzNDAwXHU0REI1XHU0RTAwXHU5RkMzXHVBMDAwLVx1QTQ4Q1x1QTUwMC1cdUE2MENcdUE2
MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY1Rlx1QTY2Mi1cdUE2NkVcdUE2N0YtXHVB
Njk3XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEJcdUE3OENcdUE3RkItXHVBODAxXHVB
ODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1c
dUE4QjNcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQy
XHVBQTQ0LVx1QUE0Qlx1QUMwMFx1RDdBM1x1RjkwMC1cdUZBMkRcdUZBMzAtXHVGQTZBXHVGQTcw
LVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIy
QS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2
LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZE
RkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVG
RjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1c
dUZGRENdfFskX118XFwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl0pKXxbMC05XSkqKS8sCisgICAgICAgIGFjdGlvbjogcmVnRXhwTGl0ZXJhbEFjdGlvbgor
ICAgIH0sIHsKKyAgICAgICAgcGF0dGVybjogL14oPzpcLyg/Oig/OlxcLil8W15cXCpcL10pKD86
KD86XFwuKXxbXlxcL10pKilcXCQvLAorICAgICAgICBhY3Rpb246IHJlZ0V4cFN0YXJ0QWN0aW9u
CisgICAgfSwgeworICAgICAgICBwYXR0ZXJuOiAvXig/Oig/Oig/OlxcLil8W15cXC9dKSpcLyg/
Oig/OltcdTAwNDEtXHUwMDVBXHUwMDYxLVx1MDA3QVx1MDBBQVx1MDBCNVx1MDBCQVx1MDBDMC1c
dTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0
XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzODZc
dTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgx
XHUwNDhBLVx1MDUyM1x1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNUQwLVx1MDVF
QVx1MDVGMC1cdTA1RjJcdTA2MjEtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZE
NVx1MDZFNVx1MDZFNlx1MDZFRVx1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTIt
XHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFc
dTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MVx1MDk3Mlx1MDk3Qi1c
dTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBc
dTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1
MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1
MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBB
NUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUw
QUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBB
RTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBC
MzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3
MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5
QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5
XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMz
M1x1MEMzNS1cdTBDMzlcdTBDM0RcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhD
XHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENC
RFx1MENERVx1MENFMFx1MENFMVx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQy
OFx1MEQyQS1cdTBEMzlcdTBEM0RcdTBENjBcdTBENjFcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5
Nlx1MEQ5QS1cdTBEQjFcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MEUwMS1cdTBF
MzBcdTBFMzJcdTBFMzNcdTBFNDAtXHUwRTQ2XHUwRTgxXHUwRTgyXHUwRTg0XHUwRTg3XHUwRTg4
XHUwRThBXHUwRThEXHUwRTk0LVx1MEU5N1x1MEU5OS1cdTBFOUZcdTBFQTEtXHUwRUEzXHUwRUE1
XHUwRUE3XHUwRUFBXHUwRUFCXHUwRUFELVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1c
dTBFQzRcdTBFQzZcdTBFRENcdTBFRERcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1
MEY4OC1cdTBGOEJcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURc
dTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1c
dTEwQzVcdTEwRDAtXHUxMEZBXHUxMEZDXHUxMTAwLVx1MTE1OVx1MTE1Ri1cdTExQTJcdTExQTgt
XHUxMUY5XHUxMjAwLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVB
LVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEy
QjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUx
MzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1
MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjc2XHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE3MDAt
XHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2
Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4
MC1cdTE4QThcdTE4QUFcdTE5MDAtXHUxOTFDXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5
ODAtXHUxOUE5XHUxOUMxLVx1MTlDN1x1MUEwMC1cdTFBMTZcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1
MUI0Qlx1MUI4My1cdTFCQTBcdTFCQUVcdTFCQUZcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1
MUM1QS1cdTFDN0RcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAt
XHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYt
XHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2
LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFG
RjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5NFx1MjEwMlx1MjEwN1x1MjEw
QS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEy
RFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4
NFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkM2Rlx1MkM3MS1cdTJDN0RcdTJD
ODAtXHUyQ0U0XHUyRDAwLVx1MkQyNVx1MkQzMC1cdTJENjVcdTJENkZcdTJEODAtXHUyRDk2XHUy
REEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1c
dTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVc
dTMwMDZcdTMwMzEtXHUzMDM1XHUzMDNCXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZc
dTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMUEw
LVx1MzFCN1x1MzFGMC1cdTMxRkZcdTM0MDBcdTREQjVcdTRFMDBcdTlGQzNcdUEwMDAtXHVBNDhD
XHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJcdUE2NDAtXHVBNjVGXHVBNjYy
LVx1QTY2RVx1QTY3Ri1cdUE2OTdcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qlx1QTc4
Q1x1QTdGQi1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4
NDAtXHVBODczXHVBODgyLVx1QThCM1x1QTkwQS1cdUE5MjVcdUE5MzAtXHVBOTQ2XHVBQTAwLVx1
QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQzAwXHVEN0EzXHVGOTAwLVx1RkEyRFx1
RkEzMC1cdUZBNkFcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURc
dUZCMUYtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFc
dUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTIt
XHVGREM3XHVGREYwLVx1RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjIxLVx1RkYz
QVx1RkY0MS1cdUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZG
RDItXHVGRkQ3XHVGRkRBLVx1RkZEQ118WyRfXXxcXCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZd
WzAtOWEtZkEtRl1bMC05YS1mQS1GXSkpfFswLTldKSopLywKKyAgICAgICAgYWN0aW9uOiByZWdF
eHBFbmRBY3Rpb24sCisgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ09OVElO
VUVTVEFURS5SRUdFWFAKKyAgICB9LCB7CisgICAgICAgIHBhdHRlcm46IC8oPzooPzpcXC4pfFte
XFwvXSkqXC8oPzooPzpbXHUwMDQxLVx1MDA1QVx1MDA2MS1cdTAwN0FcdTAwQUFcdTAwQjVcdTAw
QkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUw
MkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUw
MzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUw
M0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjNcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1
MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjIxLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1c
dTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUw
NzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXHUwN0Y0XHUw
N0Y1XHUwN0ZBXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzFcdTA5
NzJcdTA5N0ItXHUwOTdGXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5
QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlE
Ri1cdTA5RTFcdTA5RjBcdTA5RjFcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEy
OFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTkt
XHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkz
LVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQw
XHUwQUUwXHUwQUUxXHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEt
XHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1c
dTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVc
dTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUw
QkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1
MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNEXHUwQzU4XHUwQzU5XHUwQzYwXHUwQzYxXHUw
Qzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1c
dTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1
MEQxMi1cdTBEMjhcdTBEMkEtXHUwRDM5XHUwRDNEXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1
MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZc
dTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1
MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1
MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBF
QkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURDXHUwRUREXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0
OS1cdTBGNkNcdTBGODgtXHUwRjhCXHUxMDAwLVx1MTAyQVx1MTAzRlx1MTA1MC1cdTEwNTVcdTEw
NUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEw
OEVcdTEwQTAtXHUxMEM1XHUxMEQwLVx1MTBGQVx1MTBGQ1x1MTEwMC1cdTExNTlcdTExNUYtXHUx
MUEyXHUxMUE4LVx1MTFGOVx1MTIwMC1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1Nlx1
MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBc
dTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2
XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1MTNB
MC1cdTEzRjRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Nlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUx
NkVBXHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1
MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1MTgyMC1c
dTE4NzdcdTE4ODAtXHUxOEE4XHUxOEFBXHUxOTAwLVx1MTkxQ1x1MTk1MC1cdTE5NkRcdTE5NzAt
XHUxOTc0XHUxOTgwLVx1MTlBOVx1MTlDMS1cdTE5QzdcdTFBMDAtXHUxQTE2XHUxQjA1LVx1MUIz
M1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXHUxQzAwLVx1MUMyM1x1MUM0
RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUx
RjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUx
RjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1
MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNc
dTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOTRcdTIxMDJc
dTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1
MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVc
dTIxODNcdTIxODRcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDNkZcdTJDNzEt
XHUyQzdEXHUyQzgwLVx1MkNFNFx1MkQwMC1cdTJEMjVcdTJEMzAtXHUyRDY1XHUyRDZGXHUyRDgw
LVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJE
QkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUy
RTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMw
OUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1
MzE4RVx1MzFBMC1cdTMxQjdcdTMxRjAtXHUzMUZGXHUzNDAwXHU0REI1XHU0RTAwXHU5RkMzXHVB
MDAwLVx1QTQ4Q1x1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1
QTY1Rlx1QTY2Mi1cdUE2NkVcdUE2N0YtXHVBNjk3XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhc
dUE3OEJcdUE3OENcdUE3RkItXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMt
XHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0
Nlx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUMwMFx1RDdBM1x1Rjkw
MC1cdUZBMkRcdUZBMzAtXHVGQTZBXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVG
QjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVG
QjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVG
RDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1
RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0Et
XHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdfFskX118XFwoPzp1WzAtOWEtZkEtRl1b
MC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKXxbMC05XSkqLywKKyAgICAgICAgYWN0
aW9uOiByZWdFeHBNaWRkbGVBY3Rpb24sCisgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246
IHRoaXMuQ09OVElOVUVTVEFURS5SRUdFWFAKKyAgICB9XTsKKyAgICAKKyAgICBmdW5jdGlvbiBz
aW5nbGVMaW5lQ29tbWVudEFjdGlvbih0b2tlbikKICAgICB7Ci0gICAgICAgIGlmICghY2VsbCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIGNlbGwuX2NvbW1lbnRDb250aW51
ZXM7Ci0gICAgICAgIGRlbGV0ZSBjZWxsLl9zaW5nbGVRdW90ZVN0cmluZ0NvbnRpbnVlczsKLSAg
ICAgICAgZGVsZXRlIGNlbGwuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVzOwotICAgICAgICBk
ZWxldGUgY2VsbC5fcmVnZXhwQ29udGludWVzOwotICAgIH0sCi0KLSAgICBmaW5kTXVsdGlsaW5l
UmVnRXhwU3RhcnQ6IGZ1bmN0aW9uKHN0cikKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4u
bGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0
ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgIH0KKyAgICAK
KyAgICBmdW5jdGlvbiBtdWx0aUxpbmVTaW5nbGVMaW5lQ29tbWVudEFjdGlvbih0b2tlbikKICAg
ICB7Ci0gICAgICAgIHZhciBtYXRjaCA9IC9eXC8oPzpbXlwvXFxdfFxcLikqXFwkLy5leGVjKHN0
cik7Ci0gICAgICAgIGlmICghbWF0Y2ggfHwgIS9cXHxcJHxcLltcP1wqXCtdfFteXHxdXHxbXlx8
XS8udGVzdChtYXRjaFswXSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGhp
cy5wcmV2aW91c01hdGNoTGVuZ3RoID0gbWF0Y2hbMF0ubGVuZ3RoOwotICAgICAgICByZXR1cm4g
dGhpcy5jcmVhdGVTcGFuKG1hdGNoWzBdLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0g
ICAgfSwKLQotICAgIGZpbmRTaW5nbGVMaW5lUmVnRXhwOiBmdW5jdGlvbihzdHIpCisgICAgICAg
IHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQu
YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29t
bWVudCIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudFN0YXJ0
QWN0aW9uKHRva2VuKQogICAgIHsKLSAgICAgICAgdmFyIG1hdGNoID0gL14oXC8oPzpbXlwvXFxd
fFxcLikqXC8oW2dpbV17MCwzfSkpKC4/KS8uZXhlYyhzdHIpOwotICAgICAgICBpZiAoIW1hdGNo
IHx8ICEobWF0Y2hbMl0ubGVuZ3RoID4gMCB8fCAvXFx8XCR8XC5bXD9cKlwrXXxbXlx8XVx8W15c
fF0vLnRlc3QobWF0Y2hbMV0pIHx8IC9cLnw7fCwvLnRlc3QobWF0Y2hbM10pKSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotICAgICAgICB0aGlzLnByZXZpb3VzTWF0Y2hMZW5ndGggPSBtYXRj
aFsxXS5sZW5ndGg7Ci0gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNwYW4obWF0Y2hbMV0sICJ3
ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKTsKLSAgICB9LAorICAgICAgICB0aGlzLmN1cnNvciAr
PSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRo
aXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7CisgICAg
ICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ09OVElOVUVTVEFURS5DT01NRU5UOworICAg
IH0KKyAgICAKKyAgICBmdW5jdGlvbiBtdWx0aUxpbmVDb21tZW50RW5kQWN0aW9uKHRva2VuKQor
ICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlz
LmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQt
amF2YXNjcmlwdC1jb21tZW50IikpOworICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlz
LkNPTlRJTlVFU1RBVEUuTk9ORTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbXVsdGlMaW5l
Q29tbWVudE1pZGRsZUFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9
IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhp
cy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICB9
CisgICAgCisgICAgZnVuY3Rpb24gbnVtZXJpY0xpdGVyYWxBY3Rpb24odG9rZW4pCisgICAgewor
ICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZy
YWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2Ny
aXB0LW51bWJlciIpKTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTEVYU1RBVEUuRElWX0FM
TE9XRUQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0cmluZ0xpdGVyYWxBY3Rpb24odG9r
ZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAg
IHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndl
YmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTEVY
U1RBVEUuSU5JVElBTDsKKyAgICB9CisgICAgCisgICAgCisgICAgZnVuY3Rpb24gc2luZ2xlUXVv
dGVTdHJpbmdTdGFydEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9
IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhp
cy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAgICAg
ICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNPTlRJTlVFU1RBVEUuU0lOR0xFUVVPVEVTVFJJ
Tkc7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNpbmdsZVF1b3RlU3RyaW5nRW5kQWN0aW9u
KHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAg
ICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4s
ICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMuY29udGludWVTdGF0
ZSA9IHRoaXMuQ09OVElOVUVTVEFURS5OT05FOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBz
aW5nbGVRdW90ZVN0cmluZ01pZGRsZUFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMu
Y3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikp
OworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ1N0YXJ0QWN0aW9u
KHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAg
ICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4s
ICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMuY29udGludWVTdGF0
ZSA9IHRoaXMuQ09OVElOVUVTVEFURS5ET1VCTEVRVU9URVNUUklORzsKKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gZG91YmxlUXVvdGVTdHJpbmdFbmRBY3Rpb24odG9rZW4pCisgICAgeworICAg
ICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdt
ZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0
LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5DT05USU5VRVNU
QVRFLk5PTkU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3RyaW5nTWlk
ZGxlQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVu
Z3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNw
YW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIHJlZ0V4cExpdGVyYWxBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlz
LmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVu
ZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIp
KTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTEVYU1RBVEUuSU5JVElBTDsKKyAgICB9CiAK
LSAgICBzeW50YXhIaWdobGlnaHRMaW5lOiBmdW5jdGlvbihsaW5lLCBwcmV2TGluZSkKKyAgICBm
dW5jdGlvbiByZWdFeHBTdGFydEFjdGlvbih0b2tlbikKICAgICB7Ci0gICAgICAgIHZhciBtZXNz
YWdlQnViYmxlID0gbGluZS5sYXN0Q2hpbGQ7Ci0gICAgICAgIGlmIChtZXNzYWdlQnViYmxlICYm
IG1lc3NhZ2VCdWJibGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG1lc3NhZ2VC
dWJibGUuaGFzU3R5bGVDbGFzcygid2Via2l0LWh0bWwtbWVzc2FnZS1idWJibGUiKSkKLSAgICAg
ICAgICAgIGxpbmUucmVtb3ZlQ2hpbGQobWVzc2FnZUJ1YmJsZSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1lc3NhZ2VCdWJibGUgPSBudWxsOworICAgICAgICB0aGlzLmN1cnNvciArPSB0
b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMu
Y3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKKyAgICAgICAg
dGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5DT05USU5VRVNUQVRFLlJFR0VYUDsKKyAgICB9CiAK
LSAgICAgICAgdmFyIGNvZGUgPSBsaW5lLnRleHRDb250ZW50OworICAgIGZ1bmN0aW9uIHJlZ0V4
cEVuZEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxl
bmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVT
cGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOworICAgICAgICB0aGlzLmNv
bnRpbnVlU3RhdGUgPSB0aGlzLkNPTlRJTlVFU1RBVEUuTk9ORTsKKyAgICB9CiAKLSAgICAgICAg
d2hpbGUgKGxpbmUuZmlyc3RDaGlsZCkKLSAgICAgICAgICAgIGxpbmUucmVtb3ZlQ2hpbGQobGlu
ZS5maXJzdENoaWxkKTsKKyAgICBmdW5jdGlvbiByZWdFeHBNaWRkbGVBY3Rpb24odG9rZW4pCisg
ICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMu
bGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1q
YXZhc2NyaXB0LXJlZ2V4cCIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gaWRlbnRPcktl
eXdvcmRBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB2YXIga2V5d29yZHMgPSBbIm51bGwi
LCAidHJ1ZSIsICJmYWxzZSIsICJicmVhayIsICJjYXNlIiwgImNhdGNoIiwgImNvbnN0IiwgImRl
ZmF1bHQiLCAiZmluYWxseSIsICJmb3IiLCAiaW5zdGFuY2VvZiIsICJuZXciLCAidmFyIiwgImNv
bnRpbnVlIiwgImZ1bmN0aW9uIiwgInJldHVybiIsICJ2b2lkIiwgImRlbGV0ZSIsICJpZiIsICJ0
aGlzIiwgImRvIiwgIndoaWxlIiwgImVsc2UiLCAiaW4iLCAic3dpdGNoIiwgInRocm93IiwgInRy
eSIsICJ0eXBlb2YiLCAid2l0aCIsICJkZWJ1Z2dlciIsICJjbGFzcyIsICJlbnVtIiwgImV4cG9y
dCIsICJleHRlbmRzIiwgImltcG9ydCIsICJzdXBlciIsICJnZXQiLCAic2V0Il07CisgICAgICAg
IHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgaWYgKGtleXdvcmRzLmluZGV4
T2YodG9rZW4pIDwgMCkgeworICAgICAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAg
ICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxFWFNUQVRFLkRJVl9BTExPV0VEOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbi5jYWxsKHRoaXMpOwor
ICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFu
KHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQta2V5d29yZCIpKTsKKyAgICAgICAgICAgIHRoaXMu
c3RhdGUgPSB0aGlzLkxFWFNUQVRFLklOSVRJQUw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gZGl2UHVuY3R1YXRvckFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRo
aXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tl
bjsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTEVYU1RBVEUuSU5JVElBTDsKKyAgICB9Cisg
ICAgCisgICAgZnVuY3Rpb24gcmlnaHRQYXJlbkFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAg
IHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0
b2tlbjsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTEVYU1RBVEUuRElWX0FMTE9XRUQ7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHB1bmN0dWF0b3JBY3Rpb24odG9rZW4pCisgICAgewor
ICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubm9uVG9r
ZW4gKz0gdG9rZW47CisgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxFWFNUQVRFLklOSVRJQUw7
CisgICAgfQorfQogCi0gICAgICAgIHZhciB0b2tlbjsKLSAgICAgICAgdmFyIHRtcCA9IDA7Ci0g
ICAgICAgIHZhciBpID0gMDsKLSAgICAgICAgdGhpcy5wcmV2aW91c01hdGNoTGVuZ3RoID0gMDsK
K1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBl
ID0geworICAgIHByb2Nlc3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFNwbGl0IHVw
IHRoZSB3b3JrIGludG8gY2h1bmtzIHNvIHdlIGRvbid0IGJsb2NrIHRoZQorICAgICAgICAvLyBV
SSB0aHJlYWQgd2hpbGUgcHJvY2Vzc2luZy4KIAotICAgICAgICBpZiAocHJldkxpbmUpIHsKLSAg
ICAgICAgICAgIGlmIChwcmV2TGluZS5fY29tbWVudENvbnRpbnVlcykgewotICAgICAgICAgICAg
ICAgIGlmICghKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVudEVuZChjb2RlKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0ZVNwYW4oY29kZSwgIndlYmtp
dC1qYXZhc2NyaXB0LWNvbW1lbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5fY29tbWVu
dENvbnRpbnVlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
IGlmIChwcmV2TGluZS5fc2luZ2xlUXVvdGVTdHJpbmdDb250aW51ZXMpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoISh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nRW5k
KGNvZGUpKSkgewotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMuY3JlYXRlU3Bhbihj
b2RlLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgICAgIGxp
bmUuX3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHByZXZMaW5lLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRp
bnVlcykgewotICAgICAgICAgICAgICAgIGlmICghKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5l
RG91YmxlUXVvdGVTdHJpbmdFbmQoY29kZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vu
ID0gdGhpcy5jcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGluZS5fZG91YmxlUXVvdGVTdHJpbmdDb250aW51ZXMgPSB0cnVl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxpbmUuX3Jl
Z2V4cENvbnRpbnVlcykgewotICAgICAgICAgICAgICAgIGlmICghKHRva2VuID0gdGhpcy5maW5k
TXVsdGlsaW5lUmVnRXhwRW5kKGNvZGUpKSkgewotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9
IHRoaXMuY3JlYXRlU3Bhbihjb2RlLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGxpbmUuX3JlZ2V4cENvbnRpbnVlcyA9IHRydWU7CisgICAgICAgIHZh
ciByb3dzID0gdGhpcy50YWJsZS5yb3dzOworICAgICAgICB2YXIgcm93c0xlbmd0aCA9IHJvd3Mu
bGVuZ3RoOworICAgICAgICBjb25zdCB0b2tlbnNQZXJDaHVuayA9IDEwMDsKKyAgICAgICAgY29u
c3QgbGluZUxlbmd0aExpbWl0ID0gMjAwMDA7CisgICAgICAgIAorICAgICAgICB2YXIgYm91bmRQ
cm9jZXNzQ2h1bmsgPSBwcm9jZXNzQ2h1bmsuYmluZCh0aGlzKTsKKyAgICAgICAgdmFyIHByb2Nl
c3NDaHVua0ludGVydmFsID0gc2V0SW50ZXJ2YWwoYm91bmRQcm9jZXNzQ2h1bmssIDI1KTsKKyAg
ICAgICAgYm91bmRQcm9jZXNzQ2h1bmsoKTsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHBy
b2Nlc3NDaHVuaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IHRva2Vuc1BlckNodW5rOyBpKyspIHsKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5jdXJzb3IgPj0gdGhpcy5saW5lQ29kZS5sZW5ndGgpCisgICAgICAgICAgICAgICAg
ICAgIG1vdmVUb05leHRMaW5lLmNhbGwodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
bGluZUluZGV4ID49IHJvd3NMZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3IgPiBsaW5lTGVuZ3RoTGltaXQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGNvZGVGcmFnbWVudCA9IHRoaXMubGluZUNvZGUuc3Vic3RyaW5n
KHRoaXMuY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5ub25Ub2tlbiArPSBjb2Rl
RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yICs9IGNvZGVGcmFnbWVu
dC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB0aGlzLmxleC5jYWxsKHRoaXMpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHRva2VuKSB7Ci0gICAgICAgICAgICAgICAgaSArPSB0aGlzLnByZXZp
b3VzTWF0Y2hMZW5ndGggPyB0aGlzLnByZXZpb3VzTWF0Y2hMZW5ndGggOiBjb2RlLmxlbmd0aDsK
LSAgICAgICAgICAgICAgICB0bXAgPSBpOwotICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hp
bGQodG9rZW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBtb3ZlVG9O
ZXh0TGluZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kTm9uVG9rZW4uY2Fs
bCh0aGlzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbdGhpcy5s
aW5lSW5kZXhdOworICAgICAgICAgICAgdmFyIGxpbmUgPSByb3cgPyByb3cuY2VsbHNbMV0gOiBu
dWxsOworICAgICAgICAgICAgaWYgKGxpbmUgJiYgdGhpcy5saW5lRnJhZ21lbnQpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbWVzc2FnZUJ1YmJsZSA9IGxpbmUubGFzdENoaWxkOworICAgICAgICAg
ICAgICAgIGlmIChtZXNzYWdlQnViYmxlICYmIG1lc3NhZ2VCdWJibGUubm9kZVR5cGUgPT09IE5v
ZGUuRUxFTUVOVF9OT0RFICYmIG1lc3NhZ2VCdWJibGUuaGFzU3R5bGVDbGFzcygid2Via2l0LWh0
bWwtbWVzc2FnZS1idWJibGUiKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZS5yZW1vdmVDaGls
ZChtZXNzYWdlQnViYmxlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2VCdWJibGUgPSBudWxsOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIHdoaWxlIChsaW5lLmZpcnN0Q2hpbGQpCisgICAgICAgICAgICAgICAgICAgIGxpbmUucmVt
b3ZlQ2hpbGQobGluZS5maXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBsaW5lLmFwcGVuZENoaWxkKHRoaXMubGluZUZyYWdtZW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAobWVzc2FnZUJ1YmJsZSkKKyAgICAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGls
ZChtZXNzYWdlQnViYmxlKTsKKyAgICAgICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudCA9bnVs
bDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMubGluZUluZGV4Kys7CisgICAgICAg
ICAgICBpZiAodGhpcy5saW5lSW5kZXggPj0gcm93c0xlbmd0aCAmJiBwcm9jZXNzQ2h1bmtJbnRl
cnZhbCkgeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocHJvY2Vzc0NodW5rSW50ZXJ2
YWwpOworICAgICAgICAgICAgICAgIHRoaXMuc291cmNlRnJhbWUuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKCJzeW50YXggaGlnaGxpZ2h0aW5nIGNvbXBsZXRlIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcm93ID0gcm93c1t0aGlzLmxpbmVJ
bmRleF07CisgICAgICAgICAgICBsaW5lID0gcm93ID8gcm93LmNlbGxzWzFdIDogbnVsbDsKKyAg
ICAgICAgICAgIHRoaXMubGluZUNvZGUgPSBsaW5lLnRleHRDb250ZW50OworICAgICAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Cisg
ICAgICAgICAgICB0aGlzLmN1cnNvciA9IDA7CisgICAgICAgICAgICBpZiAoIWxpbmUpCisgICAg
ICAgICAgICAgICAgbW92ZVRvTmV4dExpbmUoKTsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAo
IDsgaSA8IGNvZGUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjb2RlRnJhZ21lbnQg
PSBjb2RlLnN1YnN0cihpKTsKLSAgICAgICAgICAgIHZhciBwcmV2Q2hhciA9IGNvZGVbaSAtIDFd
OwotICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmZpbmRTaW5nbGVMaW5lQ29tbWVudChjb2RlRnJh
Z21lbnQpOwotICAgICAgICAgICAgaWYgKCF0b2tlbikgewotICAgICAgICAgICAgICAgIGlmICgo
dG9rZW4gPSB0aGlzLmZpbmRNdWx0aWxpbmVDb21tZW50U3RhcnQoY29kZUZyYWdtZW50KSkpCi0g
ICAgICAgICAgICAgICAgICAgIGxpbmUuX2NvbW1lbnRDb250aW51ZXMgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKCFwcmV2Q2hhciB8fCAvXlxXLy50ZXN0KHByZXZDaGFyKSkgewot
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMuZmluZE51bWJlcihjb2RlRnJhZ21lbnQp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kS2V5d29yZChjb2RlRnJh
Z21lbnQpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kU2luZ2xlTGlu
ZVN0cmluZyhjb2RlRnJhZ21lbnQpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5maW5kU2luZ2xlTGluZVJlZ0V4cChjb2RlRnJhZ21lbnQpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIXRva2VuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPSB0aGlz
LmZpbmRNdWx0aWxpbmVTaW5nbGVRdW90ZVN0cmluZ1N0YXJ0KGNvZGVGcmFnbWVudCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5fc2luZ2xlUXVvdGVTdHJpbmdDb250aW51ZXMg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPSB0aGlzLmZp
bmRNdWx0aWxpbmVEb3VibGVRdW90ZVN0cmluZ1N0YXJ0KGNvZGVGcmFnbWVudCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZS5fZG91YmxlUXVvdGVTdHJpbmdDb250aW51ZXMgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPSB0aGlzLmZpbmRN
dWx0aWxpbmVSZWdFeHBTdGFydChjb2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmUuX3JlZ2V4cENvbnRpbnVlcyA9IHRydWU7CisgICAgfSwKKyAgICAKKyAgICBs
ZXg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0b2tlbiA9IG51bGw7CisgICAgICAg
IHZhciBjb2RlRnJhZ21lbnQgPSB0aGlzLmxpbmVDb2RlLnN1YnN0cmluZyh0aGlzLmN1cnNvcik7
CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucnVsZXMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgICAgIHZhciBydWxlID0gdGhpcy5ydWxlc1tpXTsKKyAgICAgICAg
ICAgIHZhciBydWxlQ29udGludWVTdGF0ZUNvbmRpdGlvbiA9IHR5cGVvZiBydWxlLmNvbnRpbnVl
U3RhdGVDb25kaXRpb24gPT09ICJ1bmRlZmluZWQiID8gdGhpcy5DT05USU5VRVNUQVRFLk5PTkUg
OiBydWxlLmNvbnRpbnVlU3RhdGVDb25kaXRpb247CisgICAgICAgICAgICBpZiAodGhpcy5jb250
aW51ZVN0YXRlID09PSBydWxlQ29udGludWVTdGF0ZUNvbmRpdGlvbikgeworICAgICAgICAgICAg
ICAgIGlmICh0eXBlb2YgcnVsZS5zdGF0ZUNvbmRpdGlvbiAhPT0gInVuZGVmaW5lZCIgJiYgdGhp
cy5zdGF0ZSAhPT0gcnVsZS5zdGF0ZUNvbmRpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gcnVsZS5wYXR0ZXJuLmV4ZWMoY29k
ZUZyYWdtZW50KTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJ1bGUuZG9udEFwcGVuZE5vblRva2VuKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kTm9uVG9rZW4uY2FsbCh0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmFjdGlvbi5jYWxsKHRoaXMs
IHRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRva2VuKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHRtcCAhPT0gaSkKLSAgICAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShjb2RlLnN1YnN0cmluZyh0bXAsIGkpKSk7Ci0gICAgICAgICAgICAg
ICAgbGluZS5hcHBlbmRDaGlsZCh0b2tlbik7Ci0gICAgICAgICAgICAgICAgaSArPSB0aGlzLnBy
ZXZpb3VzTWF0Y2hMZW5ndGggLSAxOwotICAgICAgICAgICAgICAgIHRtcCA9IGkgKyAxOwotICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRtcCA8IGNvZGUubGVuZ3RoKQot
ICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb2Rl
LnN1YnN0cmluZyh0bXAsIGkpKSk7Ci0KLSAgICAgICAgaWYgKG1lc3NhZ2VCdWJibGUpCi0gICAg
ICAgICAgICBsaW5lLmFwcGVuZENoaWxkKG1lc3NhZ2VCdWJibGUpOworICAgICAgICB0aGlzLm5v
blRva2VuICs9IGNvZGVGcmFnbWVudFswXTsKKyAgICAgICAgdGhpcy5jdXJzb3IrKzsKKyAgICB9
LAorICAgIAorICAgIGFwcGVuZE5vblRva2VuOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmICh0
aGlzLm5vblRva2VuLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMubm9uVG9rZW4pKTsKKyAg
ICAgICAgICAgIHRoaXMubm9uVG9rZW4gPSAiIjsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41833</attachid>
            <date>2009-10-25 16:32:35 -0700</date>
            <delta_ts>2009-10-25 21:47:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>sh.diff</filename>
            <type>text/plain</type>
            <size>23699</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDA0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMTAtMjUgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV3cm90ZSBKYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgdG8gYmUgbW9y
ZSBhY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjcxNDcKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlci5w
cm9jZXNzKTogQWRkZWQuIFByb2Nlc3NlcyAxMDAgdG9rZW5zIGF0IGEgdGltZS4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIubGV4KTogQWRk
ZWQuIFNjYW5zIGZvciBhIHRva2VuLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VTeW50YXhIaWdobGlnaHRlci5hcHBlbmROb25Ub2tlbik6IEFkZGVkLiBBcHBlbmRzIHRo
ZSBub24tdG9rZW4gY2hhcmFjdGVycyB0aGF0IGxleCBpZ25vcmVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlci5zeW50YXhIaWdobGlnaHRO
b2RlKTogQWRkZWQuIFRvIHN5bnRheCBoaWdobGlnaHQgbm9kZSBpbiBFbGVtZW50c1RyZWVPdXRs
aW5lLgorCiAyMDA5LTEwLTI1ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCShyZXZpc2lv
biA1MDA0NikKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNyArODQwLDcgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eQogICAgICAgICAgICAgICAgICAgICAgICAgbmV3Tm9k
ZS50ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqYXZhc2NyaXB0U3ludGF4SGlnaGxpZ2h0
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlcihu
dWxsLCBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGphdmFzY3JpcHRTeW50YXhIaWdo
bGlnaHRlci5zeW50YXhIaWdobGlnaHRMaW5lKG5ld05vZGUsIG51bGwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgamF2YXNjcmlwdFN5bnRheEhpZ2hsaWdodGVyLnN5bnRheEhpZ2hsaWdodE5v
ZGUobmV3Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm8udGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJ3ZWJraXQtaHRtbC10ZXh0LW5vZGUg
d2Via2l0LWh0bWwtanMtbm9kZVwiPiIgKyBuZXdOb2RlLmlubmVySFRNTC5yZXBsYWNlKC9eW1xu
XHJdKi8sICIiKS5yZXBsYWNlKC9ccyokLywgIiIpICsgIjwvc3Bhbj4iOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PSAic3R5bGUiKSB7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCShyZXZpc2lvbiA1MDA0NikKKysrIFdlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwkod29ya2luZyBjb3B5KQpAQCAtOTgw
LDEzMiArOTgwLDM3NyBAQCBXZWJJbnNwZWN0b3IuQ1NTU291cmNlU3ludGF4SGlnaGxpZ2hlci5w
CiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyID0gZnVuY3Rp
b24odGFibGUsIHNvdXJjZUZyYW1lKSB7CiAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZVN5bnRheEhp
Z2hsaWdoZXIuY2FsbCh0aGlzLCB0YWJsZSwgc291cmNlRnJhbWUpOwogCi0gICAgdGhpcy5maW5k
TnVtYmVyID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXigtPyhcZCtcLj9cZCooW2VFXVsrLV1cZCsp
P3wwW3hYXVxoK3xJbmZpbml0eSl8TmFOKSg/OlxXfCQpLywgMSwgIndlYmtpdC1qYXZhc2NyaXB0
LW51bWJlciIpOwotICAgIHRoaXMuZmluZEtleXdvcmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9e
KG51bGx8dHJ1ZXxmYWxzZXxicmVha3xjYXNlfGNhdGNofGNvbnN0fGRlZmF1bHR8ZmluYWxseXxm
b3J8aW5zdGFuY2VvZnxuZXd8dmFyfGNvbnRpbnVlfGZ1bmN0aW9ufHJldHVybnx2b2lkfGRlbGV0
ZXxpZnx0aGlzfGRvfHdoaWxlfGVsc2V8aW58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8d2l0aHxk
ZWJ1Z2dlcnxjbGFzc3xlbnVtfGV4cG9ydHxleHRlbmRzfGltcG9ydHxzdXBlcnxnZXR8c2V0KSg/
OlxXfCQpLywgMSwgIndlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQiKTsKLSAgICB0aGlzLmZpbmRT
aW5nbGVMaW5lU3RyaW5nID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXiIoPzpbXiJcXF18XFwuKSoi
fF4nKFteJ1xcXXxcXC4pKicvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7IC8vICIg
dGhpcyBxdW90ZSBrZWVwcyBYY29kZSBoYXBweQotICAgIHRoaXMuZmluZE11bHRpbGluZUNvbW1l
bnRTdGFydCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL15cL1wqLiokLywgMCwgIndlYmtpdC1qYXZh
c2NyaXB0LWNvbW1lbnQiKTsKLSAgICB0aGlzLmZpbmRNdWx0aWxpbmVDb21tZW50RW5kID0gdGhp
cy5nZW5lcmF0ZUZpbmRlcigvXi4qP1wqXC8vLCAwLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVu
dCIpOwotICAgIHRoaXMuZmluZE11bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nU3RhcnQgPSB0aGlz
LmdlbmVyYXRlRmluZGVyKC9eJyg/OlteJ1xcXXxcXC4pKlxcJC8sIDAsICJ3ZWJraXQtamF2YXNj
cmlwdC1zdHJpbmciKTsKLSAgICB0aGlzLmZpbmRNdWx0aWxpbmVTaW5nbGVRdW90ZVN0cmluZ0Vu
ZCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14oPzpbXidcXF18XFwuKSo/Jy8sIDAsICJ3ZWJraXQt
amF2YXNjcmlwdC1zdHJpbmciKTsKLSAgICB0aGlzLmZpbmRNdWx0aWxpbmVEb3VibGVRdW90ZVN0
cmluZ1N0YXJ0ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXiIoPzpbXiJcXF18XFwuKSpcXCQvLCAw
LCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lRG91
YmxlUXVvdGVTdHJpbmdFbmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eKD86W14iXFxdfFxcLikq
PyIvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVsdGls
aW5lUmVnRXhwRW5kID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXig/OlteXC9cXF18XFwuKSo/XC8o
W2dpbV17MCwzfSkvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0gICAgdGhpcy5m
aW5kU2luZ2xlTGluZUNvbW1lbnQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eXC9cLy4qfF5cL1wq
Lio/XCpcLy8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iik7Ci19CisgICAgdGhpcy5M
RVhTVEFURSA9IHsKKyAgICAgICAgSU5JVElBTDogMSwKKyAgICAgICAgRElWX0FMTE9XRUQ6IDIs
CisgICAgfTsKKyAgICB0aGlzLkNPTlRJTlVFU1RBVEUgPSB7CisgICAgICAgIE5PTkU6IDAsCisg
ICAgICAgIENPTU1FTlQ6IDEsCisgICAgICAgIFNJTkdMRVFVT1RFU1RSSU5HOiAyLAorICAgICAg
ICBET1VCTEVRVU9URVNUUklORzogMywKKyAgICAgICAgUkVHRVhQOiA0CisgICAgfTsKKyAgICAK
KyAgICB0aGlzLm5vblRva2VuID0gIiI7CisgICAgdGhpcy5jdXJzb3IgPSAwOworICAgIHRoaXMu
bGluZUluZGV4ID0gLTE7CisgICAgdGhpcy5saW5lQ29kZSA9ICIiOworICAgIHRoaXMubGluZUZy
YWdtZW50ID0gbnVsbDsKKyAgICB0aGlzLnN0YXRlID0gdGhpcy5MRVhTVEFURS5JTklUSUFMOwor
ICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ09OVElOVUVTVEFURS5OT05FOworICAgIAor
ICAgIHRoaXMucnVsZXMgPSBbeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wvLiopLywK
KyAgICAgICAgICAgIGFjdGlvbjogc2luZ2xlTGluZUNvbW1lbnRBY3Rpb24KKyAgICAgICAgfSwg
eworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86W15cKl18XCpbXlwvXSkqXCorXC8p
LywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lU2luZ2xlTGluZUNvbW1lbnRBY3Rpb24K
KyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86W15cKl18XCpb
XlwvXSkqKS8sCisgICAgICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1lbnRTdGFydEFjdGlv
bgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/OlteXCpdfFwqW15c
L10pKlwqK1wvKS8sCisgICAgICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1lbnRFbmRBY3Rp
b24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNPTlRJTlVFU1RB
VEUuQ09NTUVOVAorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXi4qLywKKyAg
ICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lQ29tbWVudE1pZGRsZUFjdGlvbiwKKyAgICAgICAg
ICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ09OVElOVUVTVEFURS5DT01NRU5UCisg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86MHxbMS05XVxkKilcLlxk
Kz8oPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98XC5cZCsoPzpbZUVdKD86XGQrfFwrXGQrfC1c
ZCspKT98KD86MHxbMS05XVxkKikoPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98MHhbMC05YS1m
QS1GXSt8MFhbMC05YS1mQS1GXSspLywKKyAgICAgICAgICAgIGFjdGlvbjogbnVtZXJpY0xpdGVy
YWxBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzoiKD86W14i
XFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEtZkEtRl1bMC05
YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0p
KSkqInwnKD86W14nXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAt
OWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZd
WzAtOWEtZkEtRl0pKSkqJykvLAorICAgICAgICAgICAgYWN0aW9uOiBzdHJpbmdMaXRlcmFsQWN0
aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86Jyg/OlteJ1xcXXxc
XCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEt
Rl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkpKilc
XCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ1N0YXJ0QWN0aW9uCisg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86W14nXFxdfFxcKD86Wyci
XGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1
WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkqJykvLAorICAg
ICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ0VuZEFjdGlvbiwKKyAgICAgICAgICAg
IGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ09OVElOVUVTVEFURS5TSU5HTEVRVU9URVNU
UklORworICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/OlteJ1xcXXxc
XCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEt
Rl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkpKilc
XCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ01pZGRsZUFjdGlvbiwK
KyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ09OVElOVUVTVEFURS5T
SU5HTEVRVU9URVNUUklORworICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/
OiIoPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxbXiciXGJmbnJ0djAtOXh1XXwwfHhbMC05YS1m
QS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05
YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdT
dGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/Olte
IlxcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZdWzAt
OWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZd
KSkpKiIpLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdFbmRBY3Rpb24s
CisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNPTlRJTlVFU1RBVEUu
RE9VQkxFUVVPVEVTVFJJTkcKKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14o
PzooPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxbXiciXGJmbnJ0djAtOXh1XXwwfHhbMC05YS1m
QS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05
YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdN
aWRkbGVBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNP
TlRJTlVFU1RBVEUuRE9VQkxFUVVPVEVTVFJJTkcKKyAgICAgICAgfSwgeworICAgICAgICAgICAg
cGF0dGVybjogL14oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlhLWZBLUZdWzAtOWEtZkEt
Rl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkoPzooPzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlh
LWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0pKikvLAorICAg
ICAgICAgICAgYWN0aW9uOiBpZGVudE9yS2V5d29yZEFjdGlvbiwKKyAgICAgICAgICAgIGRvbnRB
cHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAv
XlwpLywKKyAgICAgICAgICAgIGFjdGlvbjogcmlnaHRQYXJlbkFjdGlvbiwKKyAgICAgICAgICAg
IGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0
ZXJuOiAvXig/Ojw9fD49fD09PXw9PXwhPXwhPT18XCtcK3xcLVwtfDw8fD4+fD4+PnwmJnxcfFx8
fFwrPXxcLT18XCo9fCU9fDw8PXw+Pj18Pj4+PXwmPXxcfD18Xj18W3t9XChcW1xdXC47LDw+XCtc
LVwqJSZcfFxeIX5cPzo9XSkvLAorICAgICAgICAgICAgYWN0aW9uOiBwdW5jdHVhdG9yQWN0aW9u
LAorICAgICAgICAgICAgZG9udEFwcGVuZE5vblRva2VuOiB0cnVlCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgIHBhdHRlcm46IC9eKD86XC89PykvLAorICAgICAgICAgICAgYWN0aW9uOiBkaXZQ
dW5jdHVhdG9yQWN0aW9uLAorICAgICAgICAgICAgc3RhdGVDb25kaXRpb246IHRoaXMuTEVYU1RB
VEUuRElWX0FMTE9XRUQsCisgICAgICAgICAgICBkb250QXBwZW5kTm9uVG9rZW46IHRydWUKKyAg
ICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcLyg/Oig/OlxcLil8W15cXCpc
L10pKD86KD86XFwuKXxbXlxcL10pKlwvKD86KD86W2EtekEtWl18WyRfXXxcXCg/OnVbMC05YS1m
QS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkpfFswLTldKSopLywKKyAgICAg
ICAgICAgIGFjdGlvbjogcmVnRXhwTGl0ZXJhbEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAg
ICAgICBwYXR0ZXJuOiAvXig/OlwvKD86KD86XFwuKXxbXlxcKlwvXSkoPzooPzpcXC4pfFteXFwv
XSkqKVxcJC8sCisgICAgICAgICAgICBhY3Rpb246IHJlZ0V4cFN0YXJ0QWN0aW9uCisgICAgICAg
IH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86KD86XFwuKXxbXlxcL10pKlwvKD86
KD86W2EtekEtWl18WyRfXXxcXCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl1b
MC05YS1mQS1GXSkpfFswLTldKSopLywKKyAgICAgICAgICAgIGFjdGlvbjogcmVnRXhwRW5kQWN0
aW9uLAorICAgICAgICAgICAgY29udGludWVTdGF0ZUNvbmRpdGlvbjogdGhpcy5DT05USU5VRVNU
QVRFLlJFR0VYUAorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/Oig/
OlxcLil8W15cXC9dKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogcmVnRXhwTWlkZGxlQWN0
aW9uLAorICAgICAgICAgICAgY29udGludWVTdGF0ZUNvbmRpdGlvbjogdGhpcy5DT05USU5VRVNU
QVRFLlJFR0VYUAorICAgICAgICB9XTsKKyAgICAKKyAgICBmdW5jdGlvbiBzaW5nbGVMaW5lQ29t
bWVudEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxl
bmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVT
cGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gbXVsdGlMaW5lU2luZ2xlTGluZUNvbW1lbnRBY3Rpb24odG9rZW4pCisgICAg
eworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGlu
ZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZh
c2NyaXB0LWNvbW1lbnQiKSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIG11bHRpTGluZUNv
bW1lbnRTdGFydEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRv
a2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5j
cmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICAgICAg
dGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5DT05USU5VRVNUQVRFLkNPTU1FTlQ7CisgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIG11bHRpTGluZUNvbW1lbnRFbmRBY3Rpb24odG9rZW4pCisgICAg
eworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGlu
ZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZh
c2NyaXB0LWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ09O
VElOVUVTVEFURS5OT05FOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBtdWx0aUxpbmVDb21t
ZW50TWlkZGxlQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9r
ZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNy
ZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgIH0KKyAg
ICAKKyAgICBmdW5jdGlvbiBudW1lcmljTGl0ZXJhbEFjdGlvbih0b2tlbikKKyAgICB7CisgICAg
ICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21l
bnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQt
bnVtYmVyIikpOworICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5MRVhTVEFURS5ESVZfQUxMT1dF
RDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc3RyaW5nTGl0ZXJhbEFjdGlvbih0b2tlbikK
KyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhp
cy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0
LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5MRVhTVEFU
RS5JTklUSUFMOworICAgIH0KKyAgICAKKyAgICAKKyAgICBmdW5jdGlvbiBzaW5nbGVRdW90ZVN0
cmluZ1N0YXJ0QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9r
ZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNy
ZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRo
aXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ09OVElOVUVTVEFURS5TSU5HTEVRVU9URVNUUklORzsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc2luZ2xlUXVvdGVTdHJpbmdFbmRBY3Rpb24odG9r
ZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAg
IHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndl
YmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0g
dGhpcy5DT05USU5VRVNUQVRFLk5PTkU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNpbmds
ZVF1b3RlU3RyaW5nTWlkZGxlQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJz
b3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3RyaW5nU3RhcnRBY3Rpb24odG9r
ZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAg
IHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndl
YmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0g
dGhpcy5DT05USU5VRVNUQVRFLkRPVUJMRVFVT1RFU1RSSU5HOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ0VuZEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAg
IHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQu
YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3Ry
aW5nIikpOworICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNPTlRJTlVFU1RBVEUu
Tk9ORTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZG91YmxlUXVvdGVTdHJpbmdNaWRkbGVB
Y3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7
CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0
b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gcmVnRXhwTGl0ZXJhbEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vy
c29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hp
bGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOwor
ICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5MRVhTVEFURS5JTklUSUFMOworICAgIH0KIAotV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlci5wcm90b3R5cGUgPSB7
Ci0gICAgZGVsZXRlQ29udGludWVGbGFnczogZnVuY3Rpb24oY2VsbCkKKyAgICBmdW5jdGlvbiBy
ZWdFeHBTdGFydEFjdGlvbih0b2tlbikKICAgICB7Ci0gICAgICAgIGlmICghY2VsbCkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIGNlbGwuX2NvbW1lbnRDb250aW51ZXM7Ci0g
ICAgICAgIGRlbGV0ZSBjZWxsLl9zaW5nbGVRdW90ZVN0cmluZ0NvbnRpbnVlczsKLSAgICAgICAg
ZGVsZXRlIGNlbGwuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVzOwotICAgICAgICBkZWxldGUg
Y2VsbC5fcmVnZXhwQ29udGludWVzOwotICAgIH0sCisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRv
a2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5j
cmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOworICAgICAgICB0
aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNPTlRJTlVFU1RBVEUuUkVHRVhQOworICAgIH0KIAot
ICAgIGZpbmRNdWx0aWxpbmVSZWdFeHBTdGFydDogZnVuY3Rpb24oc3RyKQorICAgIGZ1bmN0aW9u
IHJlZ0V4cEVuZEFjdGlvbih0b2tlbikKICAgICB7Ci0gICAgICAgIHZhciBtYXRjaCA9IC9eXC8o
PzpbXlwvXFxdfFxcLikqXFwkLy5leGVjKHN0cik7Ci0gICAgICAgIGlmICghbWF0Y2ggfHwgIS9c
XHxcJHxcLltcP1wqXCtdfFteXHxdXHxbXlx8XS8udGVzdChtYXRjaFswXSkpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGhpcy5wcmV2aW91c01hdGNoTGVuZ3RoID0gbWF0Y2hb
MF0ubGVuZ3RoOwotICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTcGFuKG1hdGNoWzBdLCAid2Vi
a2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0gICAgfSwKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0g
dG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CisgICAgICAg
IHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ09OVElOVUVTVEFURS5OT05FOworICAgIH0KIAot
ICAgIGZpbmRTaW5nbGVMaW5lUmVnRXhwOiBmdW5jdGlvbihzdHIpCisgICAgZnVuY3Rpb24gcmVn
RXhwTWlkZGxlQWN0aW9uKHRva2VuKQogICAgIHsKLSAgICAgICAgdmFyIG1hdGNoID0gL14oXC8o
PzpbXlwvXFxdfFxcLikqXC8oW2dpbV17MCwzfSkpKC4/KS8uZXhlYyhzdHIpOwotICAgICAgICBp
ZiAoIW1hdGNoIHx8ICEobWF0Y2hbMl0ubGVuZ3RoID4gMCB8fCAvXFx8XCR8XC5bXD9cKlwrXXxb
Xlx8XVx8W15cfF0vLnRlc3QobWF0Y2hbMV0pIHx8IC9cLnw7fCwvLnRlc3QobWF0Y2hbM10pKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB0aGlzLnByZXZpb3VzTWF0Y2hMZW5n
dGggPSBtYXRjaFsxXS5sZW5ndGg7Ci0gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNwYW4obWF0
Y2hbMV0sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKTsKLSAgICB9LAorICAgICAgICB0aGlz
LmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVu
ZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIp
KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gaWRlbnRPcktleXdvcmRBY3Rpb24odG9rZW4p
CisgICAgeworICAgICAgICB2YXIga2V5d29yZHMgPSBbIm51bGwiLCAidHJ1ZSIsICJmYWxzZSIs
ICJicmVhayIsICJjYXNlIiwgImNhdGNoIiwgImNvbnN0IiwgImRlZmF1bHQiLCAiZmluYWxseSIs
ICJmb3IiLCAiaW5zdGFuY2VvZiIsICJuZXciLCAidmFyIiwgImNvbnRpbnVlIiwgImZ1bmN0aW9u
IiwgInJldHVybiIsICJ2b2lkIiwgImRlbGV0ZSIsICJpZiIsICJ0aGlzIiwgImRvIiwgIndoaWxl
IiwgImVsc2UiLCAiaW4iLCAic3dpdGNoIiwgInRocm93IiwgInRyeSIsICJ0eXBlb2YiLCAid2l0
aCIsICJkZWJ1Z2dlciIsICJjbGFzcyIsICJlbnVtIiwgImV4cG9ydCIsICJleHRlbmRzIiwgImlt
cG9ydCIsICJzdXBlciIsICJnZXQiLCAic2V0Il07CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRv
a2VuLmxlbmd0aDsKKyAgICAgICAgaWYgKGtleXdvcmRzLmluZGV4T2YodG9rZW4pIDwgMCkgewor
ICAgICAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAgICAgIHRoaXMuc3Rh
dGUgPSB0aGlzLkxFWFNUQVRFLkRJVl9BTExPV0VEOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbi5jYWxsKHRoaXMpOworICAgICAgICAgICAgdGhpcy5s
aW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWph
dmFzY3JpcHQta2V5d29yZCIpKTsKKyAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxFWFNU
QVRFLklOSVRJQUw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZGl2UHVu
Y3R1YXRvckFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2Vu
Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAgdGhpcy5z
dGF0ZSA9IHRoaXMuTEVYU1RBVEUuSU5JVElBTDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
cmlnaHRQYXJlbkFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRv
a2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAgdGhp
cy5zdGF0ZSA9IHRoaXMuTEVYU1RBVEUuRElWX0FMTE9XRUQ7CisgICAgfQorICAgIAorICAgIGZ1
bmN0aW9uIHB1bmN0dWF0b3JBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gdG9rZW47CisgICAg
ICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxFWFNUQVRFLklOSVRJQUw7CisgICAgfQorfQogCi0gICAg
c3ludGF4SGlnaGxpZ2h0TGluZTogZnVuY3Rpb24obGluZSwgcHJldkxpbmUpCitXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnByb3RvdHlwZSA9IHsKKyAgICBw
cm9jZXNzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgbWVzc2FnZUJ1YmJsZSA9IGxp
bmUubGFzdENoaWxkOwotICAgICAgICBpZiAobWVzc2FnZUJ1YmJsZSAmJiBtZXNzYWdlQnViYmxl
Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBtZXNzYWdlQnViYmxlLmhhc1N0eWxl
Q2xhc3MoIndlYmtpdC1odG1sLW1lc3NhZ2UtYnViYmxlIikpCi0gICAgICAgICAgICBsaW5lLnJl
bW92ZUNoaWxkKG1lc3NhZ2VCdWJibGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtZXNz
YWdlQnViYmxlID0gbnVsbDsKLQotICAgICAgICB2YXIgY29kZSA9IGxpbmUudGV4dENvbnRlbnQ7
Ci0KLSAgICAgICAgd2hpbGUgKGxpbmUuZmlyc3RDaGlsZCkKLSAgICAgICAgICAgIGxpbmUucmVt
b3ZlQ2hpbGQobGluZS5maXJzdENoaWxkKTsKLQotICAgICAgICB2YXIgdG9rZW47Ci0gICAgICAg
IHZhciB0bXAgPSAwOwotICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgIHRoaXMucHJldmlvdXNN
YXRjaExlbmd0aCA9IDA7Ci0KLSAgICAgICAgaWYgKHByZXZMaW5lKSB7Ci0gICAgICAgICAgICBp
ZiAocHJldkxpbmUuX2NvbW1lbnRDb250aW51ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoISh0
b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZUNvbW1lbnRFbmQoY29kZSkpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gdGhpcy5jcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlw
dC1jb21tZW50Iik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuX2NvbW1lbnRDb250aW51ZXMg
PSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxp
bmUuX3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEo
dG9rZW4gPSB0aGlzLmZpbmRNdWx0aWxpbmVTaW5nbGVRdW90ZVN0cmluZ0VuZChjb2RlKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0ZVNwYW4oY29kZSwgIndlYmtp
dC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgICAgICAgICAgICAgICAgICBsaW5lLl9zaW5nbGVR
dW90ZVN0cmluZ0NvbnRpbnVlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlIGlmIChwcmV2TGluZS5fZG91YmxlUXVvdGVTdHJpbmdDb250aW51ZXMpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoISh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZURvdWJsZVF1b3Rl
U3RyaW5nRW5kKGNvZGUpKSkgewotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMuY3Jl
YXRlU3Bhbihjb2RlLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGxpbmUuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHByZXZMaW5lLl9yZWdleHBDb250aW51
ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoISh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZVJl
Z0V4cEVuZChjb2RlKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0
ZVNwYW4oY29kZSwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpOwotICAgICAgICAgICAgICAg
ICAgICBsaW5lLl9yZWdleHBDb250aW51ZXMgPSB0cnVlOworICAgICAgICAvLyBTcGxpdCB1cCB0
aGUgd29yayBpbnRvIGNodW5rcyBzbyB3ZSBkb24ndCBibG9jayB0aGUKKyAgICAgICAgLy8gVUkg
dGhyZWFkIHdoaWxlIHByb2Nlc3NpbmcuCisKKyAgICAgICAgdmFyIHJvd3MgPSB0aGlzLnRhYmxl
LnJvd3M7CisgICAgICAgIHZhciByb3dzTGVuZ3RoID0gcm93cy5sZW5ndGg7CisgICAgICAgIGNv
bnN0IHRva2Vuc1BlckNodW5rID0gMTAwOworICAgICAgICBjb25zdCBsaW5lTGVuZ3RoTGltaXQg
PSAyMDAwMDsKKyAgICAgICAgCisgICAgICAgIHZhciBib3VuZFByb2Nlc3NDaHVuayA9IHByb2Nl
c3NDaHVuay5iaW5kKHRoaXMpOworICAgICAgICB2YXIgcHJvY2Vzc0NodW5rSW50ZXJ2YWwgPSBz
ZXRJbnRlcnZhbChib3VuZFByb2Nlc3NDaHVuaywgMjUpOworICAgICAgICBib3VuZFByb2Nlc3ND
aHVuaygpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc0NodW5rKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9r
ZW5zUGVyQ2h1bms7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvciA+PSB0
aGlzLmxpbmVDb2RlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgbW92ZVRvTmV4dExpbmUu
Y2FsbCh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5saW5lSW5kZXggPj0gcm93c0xl
bmd0aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGlmICh0
aGlzLmN1cnNvciA+IGxpbmVMZW5ndGhMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICB2YXIg
Y29kZUZyYWdtZW50ID0gdGhpcy5saW5lQ29kZS5zdWJzdHJpbmcodGhpcy5jdXJzb3IpOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLm5vblRva2VuICs9IGNvZGVGcmFnbWVudDsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5jdXJzb3IgKz0gY29kZUZyYWdtZW50Lmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHRoaXMubGV4LmNhbGwodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGZ1bmN0aW9uIG1vdmVUb05leHRMaW5lKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdGhpcy5hcHBlbmROb25Ub2tlbi5jYWxsKHRoaXMpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICB2YXIgcm93ID0gcm93c1t0aGlzLmxpbmVJbmRleF07CisgICAgICAgICAgICB2YXIgbGlu
ZSA9IHJvdyA/IHJvdy5jZWxsc1sxXSA6IG51bGw7CisgICAgICAgICAgICBpZiAobGluZSAmJiB0
aGlzLmxpbmVGcmFnbWVudCkgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlQnViYmxlID0g
bGluZS5sYXN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VCdWJibGUgJiYgbWVz
c2FnZUJ1YmJsZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgbWVzc2FnZUJ1YmJs
ZS5oYXNTdHlsZUNsYXNzKCJ3ZWJraXQtaHRtbC1tZXNzYWdlLWJ1YmJsZSIpKQorICAgICAgICAg
ICAgICAgICAgICBsaW5lLnJlbW92ZUNoaWxkKG1lc3NhZ2VCdWJibGUpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUJ1YmJsZSA9IG51bGw7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgd2hpbGUgKGxpbmUuZmlyc3RDaGlsZCkKKyAg
ICAgICAgICAgICAgICAgICAgbGluZS5yZW1vdmVDaGlsZChsaW5lLmZpcnN0Q2hpbGQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5saW5l
RnJhZ21lbnQpOworICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlQnViYmxlKQorICAgICAgICAg
ICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKG1lc3NhZ2VCdWJibGUpOworICAgICAgICAgICAg
ICAgIHRoaXMubGluZUZyYWdtZW50ID1udWxsOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKHRva2VuKSB7Ci0gICAgICAgICAgICAgICAgaSArPSB0aGlzLnByZXZpb3VzTWF0Y2hMZW5n
dGggPyB0aGlzLnByZXZpb3VzTWF0Y2hMZW5ndGggOiBjb2RlLmxlbmd0aDsKLSAgICAgICAgICAg
ICAgICB0bXAgPSBpOwotICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQodG9rZW4pOwor
ICAgICAgICAgICAgdGhpcy5saW5lSW5kZXgrKzsKKyAgICAgICAgICAgIGlmICh0aGlzLmxpbmVJ
bmRleCA+PSByb3dzTGVuZ3RoICYmIHByb2Nlc3NDaHVua0ludGVydmFsKSB7CisgICAgICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChwcm9jZXNzQ2h1bmtJbnRlcnZhbCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5zb3VyY2VGcmFtZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN5bnRheCBoaWdo
bGlnaHRpbmcgY29tcGxldGUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICByb3cgPSByb3dzW3RoaXMubGluZUluZGV4XTsKKyAgICAgICAgICAg
IGxpbmUgPSByb3cgPyByb3cuY2VsbHNbMV0gOiBudWxsOworICAgICAgICAgICAgdGhpcy5saW5l
Q29kZSA9IGxpbmUudGV4dENvbnRlbnQ7CisgICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgICAgIHRoaXMuY3Vy
c29yID0gMDsKKyAgICAgICAgICAgIGlmICghbGluZSkKKyAgICAgICAgICAgICAgICBtb3ZlVG9O
ZXh0TGluZSgpOwogICAgICAgICB9Ci0KLSAgICAgICAgZm9yICggOyBpIDwgY29kZS5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdmFyIGNvZGVGcmFnbWVudCA9IGNvZGUuc3Vic3RyKGkpOwot
ICAgICAgICAgICAgdmFyIHByZXZDaGFyID0gY29kZVtpIC0gMV07Ci0gICAgICAgICAgICB0b2tl
biA9IHRoaXMuZmluZFNpbmdsZUxpbmVDb21tZW50KGNvZGVGcmFnbWVudCk7Ci0gICAgICAgICAg
ICBpZiAoIXRva2VuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCh0b2tlbiA9IHRoaXMuZmluZE11
bHRpbGluZUNvbW1lbnRTdGFydChjb2RlRnJhZ21lbnQpKSkKLSAgICAgICAgICAgICAgICAgICAg
bGluZS5fY29tbWVudENvbnRpbnVlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
IXByZXZDaGFyIHx8IC9eXFcvLnRlc3QocHJldkNoYXIpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRva2VuID0gdGhpcy5maW5kTnVtYmVyKGNvZGVGcmFnbWVudCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmZpbmRLZXl3b3JkKGNvZGVGcmFnbWVudCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRTaW5nbGVMaW5lU3RyaW5nKGNvZGVGcmFnbWVu
dCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRTaW5nbGVMaW5lUmVn
RXhwKGNvZGVGcmFnbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdG9rZW4pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZVNpbmds
ZVF1b3RlU3RyaW5nU3RhcnQoY29kZUZyYWdtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lLl9zaW5nbGVRdW90ZVN0cmluZ0NvbnRpbnVlcyA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZURvdWJsZVF1
b3RlU3RyaW5nU3RhcnQoY29kZUZyYWdtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRpbnVlcyA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZVJlZ0V4cFN0YXJ0
KGNvZGVGcmFnbWVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5fcmVnZXhw
Q29udGludWVzID0gdHJ1ZTsKKyAgICB9LAorICAgIAorICAgIGxleDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHRva2VuID0gbnVsbDsKKyAgICAgICAgdmFyIGNvZGVGcmFnbWVudCA9
IHRoaXMubGluZUNvZGUuc3Vic3RyaW5nKHRoaXMuY3Vyc29yKTsKKyAgICAgICAgCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgdmFyIHJ1bGUgPSB0aGlzLnJ1bGVzW2ldOworICAgICAgICAgICAgdmFyIHJ1bGVDb250aW51
ZVN0YXRlQ29uZGl0aW9uID0gdHlwZW9mIHJ1bGUuY29udGludWVTdGF0ZUNvbmRpdGlvbiA9PT0g
InVuZGVmaW5lZCIgPyB0aGlzLkNPTlRJTlVFU1RBVEUuTk9ORSA6IHJ1bGUuY29udGludWVTdGF0
ZUNvbmRpdGlvbjsKKyAgICAgICAgICAgIGlmICh0aGlzLmNvbnRpbnVlU3RhdGUgPT09IHJ1bGVD
b250aW51ZVN0YXRlQ29uZGl0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBydWxl
LnN0YXRlQ29uZGl0aW9uICE9PSAidW5kZWZpbmVkIiAmJiB0aGlzLnN0YXRlICE9PSBydWxlLnN0
YXRlQ29uZGl0aW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB2YXIgbWF0Y2ggPSBydWxlLnBhdHRlcm4uZXhlYyhjb2RlRnJhZ21lbnQpOworICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IG1hdGNo
WzBdOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcnVsZS5kb250QXBwZW5kTm9uVG9rZW4pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbigpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJ1bGUuYWN0aW9uLmNhbGwodGhpcywgdG9rZW4pOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
dG9rZW4pIHsKLSAgICAgICAgICAgICAgICBpZiAodG1wICE9PSBpKQotICAgICAgICAgICAgICAg
ICAgICBsaW5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvZGUuc3Vic3Ry
aW5nKHRtcCwgaSkpKTsKLSAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKHRva2VuKTsK
LSAgICAgICAgICAgICAgICBpICs9IHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCAtIDE7Ci0gICAg
ICAgICAgICAgICAgdG1wID0gaSArIDE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAg
ICAgdGhpcy5ub25Ub2tlbiArPSBjb2RlRnJhZ21lbnRbMF07CisgICAgICAgIHRoaXMuY3Vyc29y
Kys7CisgICAgfSwKKyAgICAKKyAgICBhcHBlbmROb25Ub2tlbjogZnVuY3Rpb24gKCkgeworICAg
ICAgICBpZiAodGhpcy5ub25Ub2tlbi5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICB0aGlzLmxp
bmVGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLm5vblRv
a2VuKSk7CisgICAgICAgICAgICB0aGlzLm5vblRva2VuID0gIiI7CisgICAgICAgIH0KKyAgICB9
LAorICAgIAorICAgIHN5bnRheEhpZ2hsaWdodE5vZGU6IGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAg
ICAgdGhpcy5saW5lQ29kZSA9IG5vZGUudGV4dENvbnRlbnQ7CisgICAgICAgIHRoaXMubGluZUZy
YWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICB0aGlz
LmN1cnNvciA9IDA7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBpZiAodGhpcy5j
dXJzb3IgPj0gdGhpcy5saW5lQ29kZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29k
ZUZyYWdtZW50ID0gdGhpcy5saW5lQ29kZS5zdWJzdHJpbmcodGhpcy5jdXJzb3IpOworICAgICAg
ICAgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gY29kZUZyYWdtZW50OworICAgICAgICAgICAgICAg
IHRoaXMuY3Vyc29yICs9IGNvZGVGcmFnbWVudC5sZW5ndGg7CisgICAgICAgICAgICAgICAgdGhp
cy5hcHBlbmROb25Ub2tlbigpOworICAgICAgICAgICAgICAgIHdoaWxlIChub2RlLmZpcnN0Q2hp
bGQpCisgICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENoaWxk
KTsKKyAgICAgICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMubGluZUZyYWdtZW50KTsK
KyAgICAgICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudCA9bnVsbDsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRtcCA8IGNvZGUubGVuZ3Ro
KQotICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShj
b2RlLnN1YnN0cmluZyh0bXAsIGkpKSk7Ci0KLSAgICAgICAgaWYgKG1lc3NhZ2VCdWJibGUpCi0g
ICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKG1lc3NhZ2VCdWJibGUpOworICAgICAgICAgICAg
dGhpcy5sZXguY2FsbCh0aGlzKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="23289"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41841</attachid>
            <date>2009-10-25 21:47:56 -0700</date>
            <delta_ts>2009-10-25 21:57:39 -0700</delta_ts>
            <desc>proposed patch with tests</desc>
            <filename>sh.diff</filename>
            <type>text/plain</type>
            <size>27396</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDA0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTAtMjUgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV3cm90ZSBKYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgdG8gYmUgbW9y
ZSBhY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjcxNDcKKworICAgICAgICBUZXN0czogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2phdmFzY3Jp
cHQtc3ludGF4LWhpZ2hsaWdodC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3lu
dGF4SGlnaGxpZ2h0ZXIucHJvY2Vzcyk6IEFkZGVkLiBQcm9jZXNzZXMgMTAwIHRva2VucyBhdCBh
IHRpbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hs
aWdodGVyLmxleCk6IEFkZGVkLiBTY2FucyBmb3IgYSB0b2tlbi4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIuYXBwZW5kTm9uVG9rZW4pOiBB
ZGRlZC4gQXBwZW5kcyB0aGUgbm9uLXRva2VuIGNoYXJhY3RlcnMgdGhhdCBsZXggaWdub3JlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIu
c3ludGF4SGlnaGxpZ2h0Tm9kZSk6IEFkZGVkLiBUbyBzeW50YXggaGlnaGxpZ2h0IG5vZGUgaW4g
RWxlbWVudHNUcmVlT3V0bGluZS4KKwogMjAwOS0xMC0yNSAgQW50b24gTXVoaW4gIDxhbnRvbm1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5q
cwkocmV2aXNpb24gNTAwNDYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwkod29ya2luZyBjb3B5KQpAQCAtODQwLDcgKzg0MCw3IEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld05vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50OwogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgamF2YXNjcmlwdFN5bnRh
eEhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGln
aGxpZ2h0ZXIobnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqYXZhc2NyaXB0
U3ludGF4SGlnaGxpZ2h0ZXIuc3ludGF4SGlnaGxpZ2h0TGluZShuZXdOb2RlLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGphdmFzY3JpcHRTeW50YXhIaWdobGlnaHRlci5zeW50YXhI
aWdobGlnaHROb2RlKG5ld05vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLnRpdGxlID0gIjxzcGFuIGNsYXNzPVwid2Via2l0LWh0bWwt
dGV4dC1ub2RlIHdlYmtpdC1odG1sLWpzLW5vZGVcIj4iICsgbmV3Tm9kZS5pbm5lckhUTUwucmVw
bGFjZSgvXltcblxyXSovLCAiIikucmVwbGFjZSgvXHMqJC8sICIiKSArICI8L3NwYW4+IjsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5wYXJl
bnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gInN0eWxlIikgewpJbmRleDogV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwkocmV2aXNpb24gNTAwNDYpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTk4MCwxMzIgKzk4MCwzNzggQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhp
Z2hsaWdoZXIucAogV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRl
ciA9IGZ1bmN0aW9uKHRhYmxlLCBzb3VyY2VGcmFtZSkgewogICAgIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VTeW50YXhIaWdobGlnaGVyLmNhbGwodGhpcywgdGFibGUsIHNvdXJjZUZyYW1lKTsKIAotICAg
IHRoaXMuZmluZE51bWJlciA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14oLT8oXGQrXC4/XGQqKFtl
RV1bKy1dXGQrKT98MFt4WF1caCt8SW5maW5pdHkpfE5hTikoPzpcV3wkKS8sIDEsICJ3ZWJraXQt
amF2YXNjcmlwdC1udW1iZXIiKTsKLSAgICB0aGlzLmZpbmRLZXl3b3JkID0gdGhpcy5nZW5lcmF0
ZUZpbmRlcigvXihudWxsfHRydWV8ZmFsc2V8YnJlYWt8Y2FzZXxjYXRjaHxjb25zdHxkZWZhdWx0
fGZpbmFsbHl8Zm9yfGluc3RhbmNlb2Z8bmV3fHZhcnxjb250aW51ZXxmdW5jdGlvbnxyZXR1cm58
dm9pZHxkZWxldGV8aWZ8dGhpc3xkb3x3aGlsZXxlbHNlfGlufHN3aXRjaHx0aHJvd3x0cnl8dHlw
ZW9mfHdpdGh8ZGVidWdnZXJ8Y2xhc3N8ZW51bXxleHBvcnR8ZXh0ZW5kc3xpbXBvcnR8c3VwZXJ8
Z2V0fHNldCkoPzpcV3wkKS8sIDEsICJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIik7Ci0gICAg
dGhpcy5maW5kU2luZ2xlTGluZVN0cmluZyA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14iKD86W14i
XFxdfFxcLikqInxeJyhbXidcXF18XFwuKSonLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZyIpOyAvLyAiIHRoaXMgcXVvdGUga2VlcHMgWGNvZGUgaGFwcHkKLSAgICB0aGlzLmZpbmRNdWx0
aWxpbmVDb21tZW50U3RhcnQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eXC9cKi4qJC8sIDAsICJ3
ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVu
dEVuZCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14uKj9cKlwvLywgMCwgIndlYmtpdC1qYXZhc2Ny
aXB0LWNvbW1lbnQiKTsKLSAgICB0aGlzLmZpbmRNdWx0aWxpbmVTaW5nbGVRdW90ZVN0cmluZ1N0
YXJ0ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXicoPzpbXidcXF18XFwuKSpcXCQvLCAwLCAid2Vi
a2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lU2luZ2xlUXVv
dGVTdHJpbmdFbmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eKD86W14nXFxdfFxcLikqPycvLCAw
LCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lRG91
YmxlUXVvdGVTdHJpbmdTdGFydCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14iKD86W14iXFxdfFxc
LikqXFwkLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgIHRoaXMuZmluZE11
bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nRW5kID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXig/Olte
IlxcXXxcXC4pKj8iLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgIHRoaXMu
ZmluZE11bHRpbGluZVJlZ0V4cEVuZCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14oPzpbXlwvXFxd
fFxcLikqP1wvKFtnaW1dezAsM30pLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpOwot
ICAgIHRoaXMuZmluZFNpbmdsZUxpbmVDb21tZW50ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXlwv
XC8uKnxeXC9cKi4qP1wqXC8vLCAwLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpOwotfQor
ICAgIHRoaXMuTGV4U3RhdGUgPSB7CisgICAgICAgIEluaXRpYWw6IDEsCisgICAgICAgIERpdkFs
bG93ZWQ6IDIsCisgICAgfTsKKyAgICB0aGlzLkNvbnRpbnVlU3RhdGUgPSB7CisgICAgICAgIE5v
bmU6IDAsCisgICAgICAgIENvbW1lbnQ6IDEsCisgICAgICAgIFNpbmdsZVF1b3RlU3RyaW5nOiAy
LAorICAgICAgICBTb3VibGVRdW90ZVN0cmluZzogMywKKyAgICAgICAgUmVnRXhwOiA0CisgICAg
fTsKKyAgICAKKyAgICB0aGlzLm5vblRva2VuID0gIiI7CisgICAgdGhpcy5jdXJzb3IgPSAwOwor
ICAgIHRoaXMubGluZUluZGV4ID0gLTE7CisgICAgdGhpcy5saW5lQ29kZSA9ICIiOworICAgIHRo
aXMubGluZUZyYWdtZW50ID0gbnVsbDsKKyAgICB0aGlzLnN0YXRlID0gdGhpcy5MZXhTdGF0ZS5J
bml0aWFsOworICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25l
OworICAgIAorICAgIHRoaXMucnVsZXMgPSBbeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpc
L1wvLiopLywKKyAgICAgICAgICAgIGFjdGlvbjogc2luZ2xlTGluZUNvbW1lbnRBY3Rpb24KKyAg
ICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86W15cKl18XCpbXlwv
XSkqXCorXC8pLywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lU2luZ2xlTGluZUNvbW1l
bnRBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86
W15cKl18XCpbXlwvXSkqKS8sCisgICAgICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1lbnRT
dGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/Olte
XCpdfFwqW15cL10pKlwqK1wvKS8sCisgICAgICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1l
bnRFbmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNv
bnRpbnVlU3RhdGUuQ29tbWVudAorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAv
Xi4qLywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lQ29tbWVudE1pZGRsZUFjdGlvbiwK
KyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5D
b21tZW50CisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86MHxbMS05
XVxkKilcLlxkKz8oPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98XC5cZCsoPzpbZUVdKD86XGQr
fFwrXGQrfC1cZCspKT98KD86MHxbMS05XVxkKikoPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98
MHhbMC05YS1mQS1GXSt8MFhbMC05YS1mQS1GXSspLywKKyAgICAgICAgICAgIGFjdGlvbjogbnVt
ZXJpY0xpdGVyYWxBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14o
PzoiKD86W14iXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEt
ZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAt
OWEtZkEtRl0pKSkqInwnKD86W14nXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4
dV18MHx4WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVsw
LTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkqJykvLAorICAgICAgICAgICAgYWN0aW9uOiBzdHJpbmdM
aXRlcmFsQWN0aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86Jyg/
OlteJ1xcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZd
WzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZB
LUZdKSkpKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ1N0YXJ0
QWN0aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86W14nXFxd
fFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEtZkEtRl1bMC05YS1m
QS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkq
JykvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ0VuZEFjdGlvbiwKKyAg
ICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5TaW5n
bGVRdW90ZVN0cmluZworICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/
OlteJ1xcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZd
WzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZB
LUZdKSkpKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ01pZGRs
ZUFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ29udGlu
dWVTdGF0ZS5TaW5nbGVRdW90ZVN0cmluZworICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0
ZXJuOiAvXig/OiIoPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxbXiciXGJmbnJ0djAtOXh1XXww
fHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl1bMC05YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVv
dGVTdHJpbmdTdGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAv
Xig/Oig/OlteIlxcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlh
LWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVsw
LTlhLWZBLUZdKSkpKiIpLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdF
bmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNvbnRp
bnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcKKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0
dGVybjogL14oPzooPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxbXiciXGJmbnJ0djAtOXh1XXww
fHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl1bMC05YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVv
dGVTdHJpbmdNaWRkbGVBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9u
OiB0aGlzLkNvbnRpbnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcKKyAgICAgICAgfSwgeworICAg
ICAgICAgICAgcGF0dGVybjogL14oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlhLWZBLUZd
WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkoPzooPzpbYS16QS1aXXxbJF9dfFxc
KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0p
KikvLAorICAgICAgICAgICAgYWN0aW9uOiBpZGVudE9yS2V5d29yZEFjdGlvbiwKKyAgICAgICAg
ICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9LCB7CisgICAgICAgICAgICBw
YXR0ZXJuOiAvXlwpLywKKyAgICAgICAgICAgIGFjdGlvbjogcmlnaHRQYXJlbkFjdGlvbiwKKyAg
ICAgICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9LCB7CisgICAgICAg
ICAgICBwYXR0ZXJuOiAvXig/Ojw9fD49fD09PXw9PXwhPXwhPT18XCtcK3xcLVwtfDw8fD4+fD4+
PnwmJnxcfFx8fFwrPXxcLT18XCo9fCU9fDw8PXw+Pj18Pj4+PXwmPXxcfD18Xj18W3t9XChcW1xd
XC47LDw+XCtcLVwqJSZcfFxeIX5cPzo9XSkvLAorICAgICAgICAgICAgYWN0aW9uOiBwdW5jdHVh
dG9yQWN0aW9uLAorICAgICAgICAgICAgZG9udEFwcGVuZE5vblRva2VuOiB0cnVlCisgICAgICAg
IH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86XC89PykvLAorICAgICAgICAgICAgYWN0
aW9uOiBkaXZQdW5jdHVhdG9yQWN0aW9uLAorICAgICAgICAgICAgc3RhdGVDb25kaXRpb246IHRo
aXMuTGV4U3RhdGUuRGl2QWxsb3dlZCwKKyAgICAgICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjog
dHJ1ZQorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/OlwvKD86KD86XFwu
KXxbXlxcKlwvXSkoPzooPzpcXC4pfFteXFwvXSkqXC8oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86
dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0pKikv
LAorICAgICAgICAgICAgYWN0aW9uOiByZWdFeHBMaXRlcmFsQWN0aW9uCisgICAgICAgIH0sIHsK
KyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86XC8oPzooPzpcXC4pfFteXFwqXC9dKSg/Oig/Olxc
Lil8W15cXC9dKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogcmVnRXhwU3RhcnRBY3Rpb24K
KyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzooPzooPzpcXC4pfFteXFwv
XSkqXC8oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05
YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0pKikvLAorICAgICAgICAgICAgYWN0aW9uOiByZWdF
eHBFbmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNv
bnRpbnVlU3RhdGUuUmVnRXhwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9e
KD86KD86KD86XFwuKXxbXlxcL10pKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiByZWdFeHBN
aWRkbGVBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNv
bnRpbnVlU3RhdGUuUmVnRXhwCisgICAgICAgIH1dOworICAgIAorICAgIGZ1bmN0aW9uIHNpbmds
ZUxpbmVDb21tZW50QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0g
dG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgIH0K
KyAgICAKKyAgICBmdW5jdGlvbiBtdWx0aUxpbmVTaW5nbGVMaW5lQ29tbWVudEFjdGlvbih0b2tl
bikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Vi
a2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbXVs
dGlMaW5lQ29tbWVudFN0YXJ0QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJz
b3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOwor
ICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuQ29tbWVudDsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudEVuZEFjdGlvbih0b2tl
bikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Vi
a2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0g
dGhpcy5Db250aW51ZVN0YXRlLk5vbmU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIG11bHRp
TGluZUNvbW1lbnRNaWRkbGVBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIG51bWVyaWNMaXRlcmFsQWN0aW9uKHRva2VuKQorICAg
IHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxp
bmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2
YXNjcmlwdC1udW1iZXIiKSk7CisgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxleFN0YXRlLkRp
dkFsbG93ZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0cmluZ0xpdGVyYWxBY3Rpb24o
dG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAg
ICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwg
IndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMu
TGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9CisgICAgCisgICAgCisgICAgZnVuY3Rpb24gc2luZ2xl
UXVvdGVTdHJpbmdTdGFydEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29y
ICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAg
ICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuU2luZ2xlUXVvdGVT
dHJpbmc7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNpbmdsZVF1b3RlU3RyaW5nRW5kQWN0
aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwor
ICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9r
ZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMuY29udGludWVT
dGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25lOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlv
biBzaW5nbGVRdW90ZVN0cmluZ01pZGRsZUFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRo
aXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5n
IikpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ1N0YXJ0QWN0
aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwor
ICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9r
ZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMuY29udGludWVT
dGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Eb3VibGVRdW90ZVN0cmluZzsKKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gZG91YmxlUXVvdGVTdHJpbmdFbmRBY3Rpb24odG9rZW4pCisgICAgewor
ICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZy
YWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2Ny
aXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51
ZVN0YXRlLk5vbmU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3RyaW5n
TWlkZGxlQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4u
bGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0
ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgfQorICAgIAor
ICAgIGZ1bmN0aW9uIHJlZ0V4cExpdGVyYWxBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0
aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFw
cGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4
cCIpKTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90
eXBlID0gewotICAgIGRlbGV0ZUNvbnRpbnVlRmxhZ3M6IGZ1bmN0aW9uKGNlbGwpCisgICAgZnVu
Y3Rpb24gcmVnRXhwU3RhcnRBY3Rpb24odG9rZW4pCiAgICAgewotICAgICAgICBpZiAoIWNlbGwp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlbGV0ZSBjZWxsLl9jb21tZW50Q29udGlu
dWVzOwotICAgICAgICBkZWxldGUgY2VsbC5fc2luZ2xlUXVvdGVTdHJpbmdDb250aW51ZXM7Ci0g
ICAgICAgIGRlbGV0ZSBjZWxsLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRpbnVlczsKLSAgICAgICAg
ZGVsZXRlIGNlbGwuX3JlZ2V4cENvbnRpbnVlczsKLSAgICB9LAorICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKKyAg
ICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLlJlZ0V4cDsKKyAg
ICB9CiAKLSAgICBmaW5kTXVsdGlsaW5lUmVnRXhwU3RhcnQ6IGZ1bmN0aW9uKHN0cikKKyAgICBm
dW5jdGlvbiByZWdFeHBFbmRBY3Rpb24odG9rZW4pCiAgICAgewotICAgICAgICB2YXIgbWF0Y2gg
PSAvXlwvKD86W15cL1xcXXxcXC4pKlxcJC8uZXhlYyhzdHIpOwotICAgICAgICBpZiAoIW1hdGNo
IHx8ICEvXFx8XCR8XC5bXD9cKlwrXXxbXlx8XVx8W15cfF0vLnRlc3QobWF0Y2hbMF0pKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCA9
IG1hdGNoWzBdLmxlbmd0aDsKLSAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU3BhbihtYXRjaFsw
XSwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpOwotICAgIH0sCisgICAgICAgIHRoaXMuY3Vy
c29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hp
bGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOwor
ICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9uZTsKKyAg
ICB9CiAKLSAgICBmaW5kU2luZ2xlTGluZVJlZ0V4cDogZnVuY3Rpb24oc3RyKQorICAgIGZ1bmN0
aW9uIHJlZ0V4cE1pZGRsZUFjdGlvbih0b2tlbikKICAgICB7Ci0gICAgICAgIHZhciBtYXRjaCA9
IC9eKFwvKD86W15cL1xcXXxcXC4pKlwvKFtnaW1dezAsM30pKSguPykvLmV4ZWMoc3RyKTsKLSAg
ICAgICAgaWYgKCFtYXRjaCB8fCAhKG1hdGNoWzJdLmxlbmd0aCA+IDAgfHwgL1xcfFwkfFwuW1w/
XCpcK118W15cfF1cfFteXHxdLy50ZXN0KG1hdGNoWzFdKSB8fCAvXC58O3wsLy50ZXN0KG1hdGNo
WzNdKSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGhpcy5wcmV2aW91c01h
dGNoTGVuZ3RoID0gbWF0Y2hbMV0ubGVuZ3RoOwotICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVT
cGFuKG1hdGNoWzFdLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0gICAgfSwKKyAgICAg
ICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1y
ZWdleHAiKSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGlkZW50T3JLZXl3b3JkQWN0aW9u
KHRva2VuKQorICAgIHsKKyAgICAgICAgdmFyIGtleXdvcmRzID0gWyJudWxsIiwgInRydWUiLCAi
ZmFsc2UiLCAiYnJlYWsiLCAiY2FzZSIsICJjYXRjaCIsICJjb25zdCIsICJkZWZhdWx0IiwgImZp
bmFsbHkiLCAiZm9yIiwgImluc3RhbmNlb2YiLCAibmV3IiwgInZhciIsICJjb250aW51ZSIsICJm
dW5jdGlvbiIsICJyZXR1cm4iLCAidm9pZCIsICJkZWxldGUiLCAiaWYiLCAidGhpcyIsICJkbyIs
ICJ3aGlsZSIsICJlbHNlIiwgImluIiwgInN3aXRjaCIsICJ0aHJvdyIsICJ0cnkiLCAidHlwZW9m
IiwgIndpdGgiLCAiZGVidWdnZXIiLCAiY2xhc3MiLCAiZW51bSIsICJleHBvcnQiLCAiZXh0ZW5k
cyIsICJpbXBvcnQiLCAic3VwZXIiLCAiZ2V0IiwgInNldCJdOworICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIGlmIChrZXl3b3Jkcy5pbmRleE9mKHRva2VuKSA8
IDApIHsKKyAgICAgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gdG9rZW47CisgICAgICAgICAgICB0
aGlzLnN0YXRlID0gdGhpcy5MZXhTdGF0ZS5EaXZBbGxvd2VkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbi5jYWxsKHRoaXMpOworICAgICAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Vi
a2l0LWphdmFzY3JpcHQta2V5d29yZCIpKTsKKyAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlz
LkxleFN0YXRlLkluaXRpYWw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
ZGl2UHVuY3R1YXRvckFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9
IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAg
dGhpcy5zdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gcmlnaHRQYXJlbkFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29y
ICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAg
ICAgdGhpcy5zdGF0ZSA9IHRoaXMuTGV4U3RhdGUuRGl2QWxsb3dlZDsKKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gcHVuY3R1YXRvckFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMu
Y3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsK
KyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9Cit9CiAK
LSAgICBzeW50YXhIaWdobGlnaHRMaW5lOiBmdW5jdGlvbihsaW5lLCBwcmV2TGluZSkKK1dlYklu
c3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBlID0gewor
ICAgIHByb2Nlc3M6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlQnViYmxl
ID0gbGluZS5sYXN0Q2hpbGQ7Ci0gICAgICAgIGlmIChtZXNzYWdlQnViYmxlICYmIG1lc3NhZ2VC
dWJibGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG1lc3NhZ2VCdWJibGUuaGFz
U3R5bGVDbGFzcygid2Via2l0LWh0bWwtbWVzc2FnZS1idWJibGUiKSkKLSAgICAgICAgICAgIGxp
bmUucmVtb3ZlQ2hpbGQobWVzc2FnZUJ1YmJsZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1lc3NhZ2VCdWJibGUgPSBudWxsOwotCi0gICAgICAgIHZhciBjb2RlID0gbGluZS50ZXh0Q29u
dGVudDsKLQotICAgICAgICB3aGlsZSAobGluZS5maXJzdENoaWxkKQotICAgICAgICAgICAgbGlu
ZS5yZW1vdmVDaGlsZChsaW5lLmZpcnN0Q2hpbGQpOwotCi0gICAgICAgIHZhciB0b2tlbjsKLSAg
ICAgICAgdmFyIHRtcCA9IDA7Ci0gICAgICAgIHZhciBpID0gMDsKLSAgICAgICAgdGhpcy5wcmV2
aW91c01hdGNoTGVuZ3RoID0gMDsKLQotICAgICAgICBpZiAocHJldkxpbmUpIHsKLSAgICAgICAg
ICAgIGlmIChwcmV2TGluZS5fY29tbWVudENvbnRpbnVlcykgewotICAgICAgICAgICAgICAgIGlm
ICghKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVudEVuZChjb2RlKSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0ZVNwYW4oY29kZSwgIndlYmtpdC1qYXZh
c2NyaXB0LWNvbW1lbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5fY29tbWVudENvbnRp
bnVlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChw
cmV2TGluZS5fc2luZ2xlUXVvdGVTdHJpbmdDb250aW51ZXMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoISh0b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nRW5kKGNvZGUp
KSkgewotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMuY3JlYXRlU3Bhbihjb2RlLCAi
d2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuX3Np
bmdsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKHByZXZMaW5lLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRpbnVlcykg
ewotICAgICAgICAgICAgICAgIGlmICghKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lRG91Ymxl
UXVvdGVTdHJpbmdFbmQoY29kZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhp
cy5jcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKLSAgICAgICAg
ICAgICAgICAgICAgbGluZS5fZG91YmxlUXVvdGVTdHJpbmdDb250aW51ZXMgPSB0cnVlOworICAg
ICAgICAvLyBTcGxpdCB1cCB0aGUgd29yayBpbnRvIGNodW5rcyBzbyB3ZSBkb24ndCBibG9jayB0
aGUKKyAgICAgICAgLy8gVUkgdGhyZWFkIHdoaWxlIHByb2Nlc3NpbmcuCisKKyAgICAgICAgdmFy
IHJvd3MgPSB0aGlzLnRhYmxlLnJvd3M7CisgICAgICAgIHZhciByb3dzTGVuZ3RoID0gcm93cy5s
ZW5ndGg7CisgICAgICAgIGNvbnN0IHRva2Vuc1BlckNodW5rID0gMTAwOworICAgICAgICBjb25z
dCBsaW5lTGVuZ3RoTGltaXQgPSAyMDAwMDsKKyAgICAgICAgCisgICAgICAgIHZhciBib3VuZFBy
b2Nlc3NDaHVuayA9IHByb2Nlc3NDaHVuay5iaW5kKHRoaXMpOworICAgICAgICB2YXIgcHJvY2Vz
c0NodW5rSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChib3VuZFByb2Nlc3NDaHVuaywgMjUpOworICAg
ICAgICBib3VuZFByb2Nlc3NDaHVuaygpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcHJv
Y2Vzc0NodW5rKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgdG9rZW5zUGVyQ2h1bms7IGkrKykgeworICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmN1cnNvciA+PSB0aGlzLmxpbmVDb2RlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAg
ICAgbW92ZVRvTmV4dExpbmUuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5s
aW5lSW5kZXggPj0gcm93c0xlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJj
ZUZyYW1lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3ludGF4IGhpZ2hsaWdodGluZyBjb21w
bGV0ZSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIGlmIChwcmV2TGluZS5fcmVnZXhwQ29udGludWVzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCEodG9rZW4gPSB0aGlzLmZpbmRNdWx0aWxpbmVSZWdFeHBFbmQoY29k
ZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5jcmVhdGVTcGFuKGNvZGUs
ICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5f
cmVnZXhwQ29udGludWVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3Ig
PiBsaW5lTGVuZ3RoTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVGcmFnbWVu
dCA9IHRoaXMubGluZUNvZGUuc3Vic3RyaW5nKHRoaXMuY3Vyc29yKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5ub25Ub2tlbiArPSBjb2RlRnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuY3Vyc29yICs9IGNvZGVGcmFnbWVudC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgdGhpcy5sZXguY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dExpbmUoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLmFwcGVuZE5vblRva2VuLmNhbGwodGhpcyk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHZhciByb3cgPSByb3dzW3RoaXMubGluZUluZGV4XTsKKyAg
ICAgICAgICAgIHZhciBsaW5lID0gcm93ID8gcm93LmNlbGxzWzFdIDogbnVsbDsKKyAgICAgICAg
ICAgIGlmIChsaW5lICYmIHRoaXMubGluZUZyYWdtZW50KSB7CisgICAgICAgICAgICAgICAgdmFy
IG1lc3NhZ2VCdWJibGUgPSBsaW5lLmxhc3RDaGlsZDsKKyAgICAgICAgICAgICAgICBpZiAobWVz
c2FnZUJ1YmJsZSAmJiBtZXNzYWdlQnViYmxlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9E
RSAmJiBtZXNzYWdlQnViYmxlLmhhc1N0eWxlQ2xhc3MoIndlYmtpdC1odG1sLW1lc3NhZ2UtYnVi
YmxlIikpCisgICAgICAgICAgICAgICAgICAgIGxpbmUucmVtb3ZlQ2hpbGQobWVzc2FnZUJ1YmJs
ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlQnVi
YmxlID0gbnVsbDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB3aGlsZSAobGlu
ZS5maXJzdENoaWxkKQorICAgICAgICAgICAgICAgICAgICBsaW5lLnJlbW92ZUNoaWxkKGxpbmUu
Zmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGluZS5hcHBl
bmRDaGlsZCh0aGlzLmxpbmVGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VC
dWJibGUpCisgICAgICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQobWVzc2FnZUJ1YmJs
ZSk7CisgICAgICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQgPW51bGw7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAodG9rZW4pIHsKLSAgICAgICAgICAgICAgICBpICs9IHRoaXMu
cHJldmlvdXNNYXRjaExlbmd0aCA/IHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCA6IGNvZGUubGVu
Z3RoOwotICAgICAgICAgICAgICAgIHRtcCA9IGk7Ci0gICAgICAgICAgICAgICAgbGluZS5hcHBl
bmRDaGlsZCh0b2tlbik7CisgICAgICAgICAgICB0aGlzLmxpbmVJbmRleCsrOworICAgICAgICAg
ICAgaWYgKHRoaXMubGluZUluZGV4ID49IHJvd3NMZW5ndGggJiYgcHJvY2Vzc0NodW5rSW50ZXJ2
YWwpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHByb2Nlc3NDaHVua0ludGVydmFs
KTsKKyAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycygic3ludGF4IGhpZ2hsaWdodGluZyBjb21wbGV0ZSIpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJvdyA9IHJvd3NbdGhpcy5saW5lSW5k
ZXhdOworICAgICAgICAgICAgbGluZSA9IHJvdyA/IHJvdy5jZWxsc1sxXSA6IG51bGw7CisgICAg
ICAgICAgICB0aGlzLmxpbmVDb2RlID0gbGluZS50ZXh0Q29udGVudDsKKyAgICAgICAgICAgIHRo
aXMubGluZUZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAg
ICAgICAgICAgdGhpcy5jdXJzb3IgPSAwOworICAgICAgICAgICAgaWYgKCFsaW5lKQorICAgICAg
ICAgICAgICAgIG1vdmVUb05leHRMaW5lKCk7CiAgICAgICAgIH0KLQotICAgICAgICBmb3IgKCA7
IGkgPCBjb2RlLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY29kZUZyYWdtZW50ID0g
Y29kZS5zdWJzdHIoaSk7Ci0gICAgICAgICAgICB2YXIgcHJldkNoYXIgPSBjb2RlW2kgLSAxXTsK
LSAgICAgICAgICAgIHRva2VuID0gdGhpcy5maW5kU2luZ2xlTGluZUNvbW1lbnQoY29kZUZyYWdt
ZW50KTsKLSAgICAgICAgICAgIGlmICghdG9rZW4pIHsKLSAgICAgICAgICAgICAgICBpZiAoKHRv
a2VuID0gdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVudFN0YXJ0KGNvZGVGcmFnbWVudCkpKQotICAg
ICAgICAgICAgICAgICAgICBsaW5lLl9jb21tZW50Q29udGludWVzID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBlbHNlIGlmICghcHJldkNoYXIgfHwgL15cVy8udGVzdChwcmV2Q2hhcikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmZpbmROdW1iZXIoY29kZUZyYWdtZW50KSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZEtleXdvcmQoY29kZUZyYWdt
ZW50KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZFNpbmdsZUxpbmVT
dHJpbmcoY29kZUZyYWdtZW50KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZmluZFNpbmdsZUxpbmVSZWdFeHAoY29kZUZyYWdtZW50KTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCF0b2tlbikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID0gdGhpcy5m
aW5kTXVsdGlsaW5lU2luZ2xlUXVvdGVTdHJpbmdTdGFydChjb2RlRnJhZ21lbnQpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmUuX3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID0gdGhpcy5maW5k
TXVsdGlsaW5lRG91YmxlUXVvdGVTdHJpbmdTdGFydChjb2RlRnJhZ21lbnQpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmUuX2RvdWJsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID0gdGhpcy5maW5kTXVs
dGlsaW5lUmVnRXhwU3RhcnQoY29kZUZyYWdtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lLl9yZWdleHBDb250aW51ZXMgPSB0cnVlOworICAgIH0sCisgICAgCisgICAgbGV4
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdG9rZW4gPSBudWxsOworICAgICAgICB2
YXIgY29kZUZyYWdtZW50ID0gdGhpcy5saW5lQ29kZS5zdWJzdHJpbmcodGhpcy5jdXJzb3IpOwor
ICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJ1bGVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICB2YXIgcnVsZSA9IHRoaXMucnVsZXNbaV07CisgICAgICAgICAg
ICB2YXIgcnVsZUNvbnRpbnVlU3RhdGVDb25kaXRpb24gPSB0eXBlb2YgcnVsZS5jb250aW51ZVN0
YXRlQ29uZGl0aW9uID09PSAidW5kZWZpbmVkIiA/IHRoaXMuQ29udGludWVTdGF0ZS5Ob25lIDog
cnVsZS5jb250aW51ZVN0YXRlQ29uZGl0aW9uOworICAgICAgICAgICAgaWYgKHRoaXMuY29udGlu
dWVTdGF0ZSA9PT0gcnVsZUNvbnRpbnVlU3RhdGVDb25kaXRpb24pIHsKKyAgICAgICAgICAgICAg
ICBpZiAodHlwZW9mIHJ1bGUuc3RhdGVDb25kaXRpb24gIT09ICJ1bmRlZmluZWQiICYmIHRoaXMu
c3RhdGUgIT09IHJ1bGUuc3RhdGVDb25kaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IHJ1bGUucGF0dGVybi5leGVjKGNvZGVG
cmFnbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRva2VuID0gbWF0Y2hbMF07CisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFydWxlLmRvbnRBcHBlbmROb25Ub2tlbikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZE5vblRva2VuKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5hY3Rpb24uY2FsbCh0aGlzLCB0b2tlbik7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmICh0b2tlbikgewotICAgICAgICAgICAgICAgIGlmICh0bXAgIT09IGkp
Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoY29kZS5zdWJzdHJpbmcodG1wLCBpKSkpOwotICAgICAgICAgICAgICAgIGxpbmUuYXBw
ZW5kQ2hpbGQodG9rZW4pOwotICAgICAgICAgICAgICAgIGkgKz0gdGhpcy5wcmV2aW91c01hdGNo
TGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAgICB0bXAgPSBpICsgMTsKLSAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgICAgICB0aGlzLm5vblRva2VuICs9IGNvZGVGcmFnbWVudFswXTsKKyAg
ICAgICAgdGhpcy5jdXJzb3IrKzsKKyAgICB9LAorICAgIAorICAgIGFwcGVuZE5vblRva2VuOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGlmICh0aGlzLm5vblRva2VuLmxlbmd0aCA+IDApIHsKKyAg
ICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHRoaXMubm9uVG9rZW4pKTsKKyAgICAgICAgICAgIHRoaXMubm9uVG9rZW4gPSAiIjsK
KyAgICAgICAgfQorICAgIH0sCisgICAgCisgICAgc3ludGF4SGlnaGxpZ2h0Tm9kZTogZnVuY3Rp
b24obm9kZSkgeworICAgICAgICB0aGlzLmxpbmVDb2RlID0gbm9kZS50ZXh0Q29udGVudDsKKyAg
ICAgICAgdGhpcy5saW5lRnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50
KCk7CisgICAgICAgIHRoaXMuY3Vyc29yID0gMDsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgICAgIGlmICh0aGlzLmN1cnNvciA+PSB0aGlzLmxpbmVDb2RlLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgIHZhciBjb2RlRnJhZ21lbnQgPSB0aGlzLmxpbmVDb2RlLnN1YnN0cmluZyh0aGlz
LmN1cnNvcik7CisgICAgICAgICAgICAgICAgdGhpcy5ub25Ub2tlbiArPSBjb2RlRnJhZ21lbnQ7
CisgICAgICAgICAgICAgICAgdGhpcy5jdXJzb3IgKz0gY29kZUZyYWdtZW50Lmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICB0aGlzLmFwcGVuZE5vblRva2VuKCk7CisgICAgICAgICAgICAgICAgd2hp
bGUgKG5vZGUuZmlyc3RDaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGls
ZChub2RlLmZpcnN0Q2hpbGQpOworICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhp
cy5saW5lRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50ID1udWxs
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dG1wIDwgY29kZS5sZW5ndGgpCi0gICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGNvZGUuc3Vic3RyaW5nKHRtcCwgaSkpKTsKLQotICAgICAgICBpZiAo
bWVzc2FnZUJ1YmJsZSkKLSAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQobWVzc2FnZUJ1YmJs
ZSk7CisgICAgICAgICAgICB0aGlzLmxleC5jYWxsKHRoaXMpOworICAgICAgICB9CiAgICAgfQog
fQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDA0OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA5LTEwLTI1ICBLZWlzaGkgSGF0dG9y
aSAgPGNhc2V5LmhhdHRvcmlAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJld3JvdGUgSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hs
aWdodGVyIHRvIGJlIG1vcmUgYWNjdXJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3MTQ3CisKKyAgICAgICAgKiBpbnNwZWN0b3IvamF2YXNjcmlw
dC1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0y
NSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5lIHRlc3QgYWZ0ZXIgNDk5OTguCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlw
dC1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IEphdmFTY3JpcHRTb3VyY2VT
eW50YXhIaWdobGlnaHRlciBkZXRlY3RzIHRoZSB0b2tlbnMuCisKK3dlYmtpdC1qYXZhc2NyaXB0
LWtleXdvcmQsd2Via2l0LWphdmFzY3JpcHQtc3RyaW5nLCoKK3dlYmtpdC1qYXZhc2NyaXB0LXJl
Z2V4cAord2Via2l0LWphdmFzY3JpcHQtY29tbWVudAord2Via2l0LWphdmFzY3JpcHQtbnVtYmVy
LCosd2Via2l0LWphdmFzY3JpcHQtbnVtYmVyLCosd2Via2l0LWphdmFzY3JpcHQtcmVnZXhwLCos
d2Via2l0LWphdmFzY3JpcHQtc3RyaW5nLCoKK3dlYmtpdC1qYXZhc2NyaXB0LXN0cmluZywqLHdl
YmtpdC1qYXZhc2NyaXB0LW51bWJlcgord2Via2l0LWphdmFzY3JpcHQta2V5d29yZCwqLHdlYmtp
dC1qYXZhc2NyaXB0LW51bWJlcix3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50LCosd2Via2l0LWph
dmFzY3JpcHQtbnVtYmVyCit3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50LHdlYmtpdC1qYXZhc2Ny
aXB0LXJlZ2V4cCwqLHdlYmtpdC1qYXZhc2NyaXB0LXN0cmluZywqCisKSW5kZXg6IExheW91dFRl
c3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlwdC1zeW50
YXgtaGlnaGxpZ2h0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKworZnVuY3Rpb24gZG9pdCgpCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2socmVz
dWx0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldKTsKKyAgICAgICAgbm90aWZ5RG9uZSgp
OworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJkb2l0QW5kRHVtcCIsIGNhbGxi
YWNrKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCki
PgorPHA+CitUZXN0cyB0aGF0IEphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlciBkZXRl
Y3RzIHRoZSB0b2tlbnMuCis8L3A+CisKKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9
ImRpc3BsYXk6bm9uZSI+CitmdW5jdGlvbiBkb2l0QW5kRHVtcCh0ZXN0Q29udHJvbGxlcikgewor
ICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIHJlc3VsdC5wdXNoKGR1
bXBTeW50YXhIaWdobGlnaHQoInJldHVybidmb28nOyIpKTsKKyAgICAgICAgcmVzdWx0LnB1c2go
ZHVtcFN5bnRheEhpZ2hsaWdodCgiL1xcXC8vIikpOworICAgICAgICByZXN1bHQucHVzaChkdW1w
U3ludGF4SGlnaGxpZ2h0KCIvL2lnJzsiKSk7CisgICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50
YXhIaWdobGlnaHQoIjEgLyAyICsgL2EvLnRlc3QoJ2EnKTsiKSk7CisgICAgICAgIHJlc3VsdC5w
dXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIlwiXFxcIi9cIi5sZW5ndGggLyAyIikpOworICAgICAg
ICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCJ2YXIgZm9vID0gMS8qKioqLy8yIikp
OworICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCIvKmNvbW1lbnQqLy8u
Ki8udGVzdCgnYScpIikpOworICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHJlc3Vs
dCk7CisgICAgfSwgMCk7Cit9CitmdW5jdGlvbiBkdW1wU3ludGF4SGlnaGxpZ2h0KHN0cikgewor
ICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIG5vZGUu
dGV4dENvbnRlbnQgPSBzdHI7CisgICAgdmFyIGphdmFzY3JpcHRTeW50YXhIaWdobGlnaHRlciA9
IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyKG51bGws
IG51bGwpOworICAgIGphdmFzY3JpcHRTeW50YXhIaWdobGlnaHRlci5zeW50YXhIaWdobGlnaHRO
b2RlKG5vZGUpOworICAgIHZhciBub2RlX3BhcnRzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG5vZGUuY2hp
bGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgIG5vZGVfcGFydHMucHVzaChu
b2RlLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG5vZGVfcGFydHMucHVzaCgiKiIpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBub2RlX3BhcnRzLmpvaW4oIiwiKTsKK30KKzwvZGl2PgorCis8ZGl2IGlkPSJv
dXRwdXQiPgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41842</attachid>
            <date>2009-10-25 21:57:39 -0700</date>
            <delta_ts>2009-10-27 08:03:53 -0700</delta_ts>
            <desc>fixed some minor stuff</desc>
            <filename>sh.diff</filename>
            <type>text/plain</type>
            <size>27360</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDA0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTAtMjUgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV3cm90ZSBKYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgdG8gYmUgbW9y
ZSBhY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjcxNDcKKworICAgICAgICBUZXN0czogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2phdmFzY3Jp
cHQtc3ludGF4LWhpZ2hsaWdodC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3lu
dGF4SGlnaGxpZ2h0ZXIucHJvY2Vzcyk6IEFkZGVkLiBQcm9jZXNzZXMgMTAwIHRva2VucyBhdCBh
IHRpbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hs
aWdodGVyLmxleCk6IEFkZGVkLiBTY2FucyBmb3IgYSB0b2tlbi4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIuYXBwZW5kTm9uVG9rZW4pOiBB
ZGRlZC4gQXBwZW5kcyB0aGUgbm9uLXRva2VuIGNoYXJhY3RlcnMgdGhhdCBsZXggaWdub3JlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIu
c3ludGF4SGlnaGxpZ2h0Tm9kZSk6IEFkZGVkLiBUbyBzeW50YXggaGlnaGxpZ2h0IG5vZGUgaW4g
RWxlbWVudHNUcmVlT3V0bGluZS4KKwogMjAwOS0xMC0yNSAgQW50b24gTXVoaW4gIDxhbnRvbm1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5q
cwkocmV2aXNpb24gNTAwNDYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwkod29ya2luZyBjb3B5KQpAQCAtODQwLDcgKzg0MCw3IEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld05vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50OwogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgamF2YXNjcmlwdFN5bnRh
eEhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGln
aGxpZ2h0ZXIobnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqYXZhc2NyaXB0
U3ludGF4SGlnaGxpZ2h0ZXIuc3ludGF4SGlnaGxpZ2h0TGluZShuZXdOb2RlLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGphdmFzY3JpcHRTeW50YXhIaWdobGlnaHRlci5zeW50YXhI
aWdobGlnaHROb2RlKG5ld05vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLnRpdGxlID0gIjxzcGFuIGNsYXNzPVwid2Via2l0LWh0bWwt
dGV4dC1ub2RlIHdlYmtpdC1odG1sLWpzLW5vZGVcIj4iICsgbmV3Tm9kZS5pbm5lckhUTUwucmVw
bGFjZSgvXltcblxyXSovLCAiIikucmVwbGFjZSgvXHMqJC8sICIiKSArICI8L3NwYW4+IjsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5wYXJl
bnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gInN0eWxlIikgewpJbmRleDogV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwkocmV2aXNpb24gNTAwNDYpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTk4MCwxMzIgKzk4MCwzNzggQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhp
Z2hsaWdoZXIucAogV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRl
ciA9IGZ1bmN0aW9uKHRhYmxlLCBzb3VyY2VGcmFtZSkgewogICAgIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VTeW50YXhIaWdobGlnaGVyLmNhbGwodGhpcywgdGFibGUsIHNvdXJjZUZyYW1lKTsKIAotICAg
IHRoaXMuZmluZE51bWJlciA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14oLT8oXGQrXC4/XGQqKFtl
RV1bKy1dXGQrKT98MFt4WF1caCt8SW5maW5pdHkpfE5hTikoPzpcV3wkKS8sIDEsICJ3ZWJraXQt
amF2YXNjcmlwdC1udW1iZXIiKTsKLSAgICB0aGlzLmZpbmRLZXl3b3JkID0gdGhpcy5nZW5lcmF0
ZUZpbmRlcigvXihudWxsfHRydWV8ZmFsc2V8YnJlYWt8Y2FzZXxjYXRjaHxjb25zdHxkZWZhdWx0
fGZpbmFsbHl8Zm9yfGluc3RhbmNlb2Z8bmV3fHZhcnxjb250aW51ZXxmdW5jdGlvbnxyZXR1cm58
dm9pZHxkZWxldGV8aWZ8dGhpc3xkb3x3aGlsZXxlbHNlfGlufHN3aXRjaHx0aHJvd3x0cnl8dHlw
ZW9mfHdpdGh8ZGVidWdnZXJ8Y2xhc3N8ZW51bXxleHBvcnR8ZXh0ZW5kc3xpbXBvcnR8c3VwZXJ8
Z2V0fHNldCkoPzpcV3wkKS8sIDEsICJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIik7Ci0gICAg
dGhpcy5maW5kU2luZ2xlTGluZVN0cmluZyA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14iKD86W14i
XFxdfFxcLikqInxeJyhbXidcXF18XFwuKSonLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZyIpOyAvLyAiIHRoaXMgcXVvdGUga2VlcHMgWGNvZGUgaGFwcHkKLSAgICB0aGlzLmZpbmRNdWx0
aWxpbmVDb21tZW50U3RhcnQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eXC9cKi4qJC8sIDAsICJ3
ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVu
dEVuZCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14uKj9cKlwvLywgMCwgIndlYmtpdC1qYXZhc2Ny
aXB0LWNvbW1lbnQiKTsKLSAgICB0aGlzLmZpbmRNdWx0aWxpbmVTaW5nbGVRdW90ZVN0cmluZ1N0
YXJ0ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXicoPzpbXidcXF18XFwuKSpcXCQvLCAwLCAid2Vi
a2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lU2luZ2xlUXVv
dGVTdHJpbmdFbmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eKD86W14nXFxdfFxcLikqPycvLCAw
LCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lRG91
YmxlUXVvdGVTdHJpbmdTdGFydCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14iKD86W14iXFxdfFxc
LikqXFwkLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgIHRoaXMuZmluZE11
bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nRW5kID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXig/Olte
IlxcXXxcXC4pKj8iLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgIHRoaXMu
ZmluZE11bHRpbGluZVJlZ0V4cEVuZCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14oPzpbXlwvXFxd
fFxcLikqP1wvKFtnaW1dezAsM30pLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpOwot
ICAgIHRoaXMuZmluZFNpbmdsZUxpbmVDb21tZW50ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXlwv
XC8uKnxeXC9cKi4qP1wqXC8vLCAwLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpOwotfQor
ICAgIHRoaXMuTGV4U3RhdGUgPSB7CisgICAgICAgIEluaXRpYWw6IDEsCisgICAgICAgIERpdkFs
bG93ZWQ6IDIsCisgICAgfTsKKyAgICB0aGlzLkNvbnRpbnVlU3RhdGUgPSB7CisgICAgICAgIE5v
bmU6IDAsCisgICAgICAgIENvbW1lbnQ6IDEsCisgICAgICAgIFNpbmdsZVF1b3RlU3RyaW5nOiAy
LAorICAgICAgICBTb3VibGVRdW90ZVN0cmluZzogMywKKyAgICAgICAgUmVnRXhwOiA0CisgICAg
fTsKKyAgICAKKyAgICB0aGlzLm5vblRva2VuID0gIiI7CisgICAgdGhpcy5jdXJzb3IgPSAwOwor
ICAgIHRoaXMubGluZUluZGV4ID0gLTE7CisgICAgdGhpcy5saW5lQ29kZSA9ICIiOworICAgIHRo
aXMubGluZUZyYWdtZW50ID0gbnVsbDsKKyAgICB0aGlzLnN0YXRlID0gdGhpcy5MZXhTdGF0ZS5J
bml0aWFsOworICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25l
OworICAgIAorICAgIHRoaXMucnVsZXMgPSBbeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpc
L1wvLiopLywKKyAgICAgICAgICAgIGFjdGlvbjogc2luZ2xlTGluZUNvbW1lbnRBY3Rpb24KKyAg
ICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86W15cKl18XCpbXlwv
XSkqXCorXC8pLywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lU2luZ2xlTGluZUNvbW1l
bnRBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcL1wqKD86
W15cKl18XCpbXlwvXSkqKS8sCisgICAgICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1lbnRT
dGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/Olte
XCpdfFwqW15cL10pKlwqK1wvKS8sCisgICAgICAgICAgICBhY3Rpb246IG11bHRpTGluZUNvbW1l
bnRFbmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNv
bnRpbnVlU3RhdGUuQ29tbWVudAorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAv
Xi4qLywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lQ29tbWVudE1pZGRsZUFjdGlvbiwK
KyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5D
b21tZW50CisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86MHxbMS05
XVxkKilcLlxkKz8oPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98XC5cZCsoPzpbZUVdKD86XGQr
fFwrXGQrfC1cZCspKT98KD86MHxbMS05XVxkKikoPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98
MHhbMC05YS1mQS1GXSt8MFhbMC05YS1mQS1GXSspLywKKyAgICAgICAgICAgIGFjdGlvbjogbnVt
ZXJpY0xpdGVyYWxBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14o
PzoiKD86W14iXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEt
ZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAt
OWEtZkEtRl0pKSkqInwnKD86W14nXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4
dV18MHx4WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVsw
LTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkqJykvLAorICAgICAgICAgICAgYWN0aW9uOiBzdHJpbmdM
aXRlcmFsQWN0aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86Jyg/
OlteJ1xcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZd
WzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZB
LUZdKSkpKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ1N0YXJ0
QWN0aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86W14nXFxd
fFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEtZkEtRl1bMC05YS1m
QS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkq
JykvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ0VuZEFjdGlvbiwKKyAg
ICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5TaW5n
bGVRdW90ZVN0cmluZworICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Oig/
OlteJ1xcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlhLWZBLUZd
WzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZB
LUZdKSkpKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0cmluZ01pZGRs
ZUFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMuQ29udGlu
dWVTdGF0ZS5TaW5nbGVRdW90ZVN0cmluZworICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0
ZXJuOiAvXig/OiIoPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxbXiciXGJmbnJ0djAtOXh1XXww
fHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl1bMC05YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVv
dGVTdHJpbmdTdGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAv
Xig/Oig/OlteIlxcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05eHVdfDB8eFswLTlh
LWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVsw
LTlhLWZBLUZdKSkpKiIpLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdF
bmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNvbnRp
bnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcKKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0
dGVybjogL14oPzooPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxbXiciXGJmbnJ0djAtOXh1XXww
fHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl1bMC05YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogZG91YmxlUXVv
dGVTdHJpbmdNaWRkbGVBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9u
OiB0aGlzLkNvbnRpbnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcKKyAgICAgICAgfSwgeworICAg
ICAgICAgICAgcGF0dGVybjogL14oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlhLWZBLUZd
WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkoPzooPzpbYS16QS1aXXxbJF9dfFxc
KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0p
KikvLAorICAgICAgICAgICAgYWN0aW9uOiBpZGVudE9yS2V5d29yZEFjdGlvbiwKKyAgICAgICAg
ICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9LCB7CisgICAgICAgICAgICBw
YXR0ZXJuOiAvXlwpLywKKyAgICAgICAgICAgIGFjdGlvbjogcmlnaHRQYXJlbkFjdGlvbiwKKyAg
ICAgICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9LCB7CisgICAgICAg
ICAgICBwYXR0ZXJuOiAvXig/Ojw9fD49fD09PXw9PXwhPXwhPT18XCtcK3xcLVwtfDw8fD4+fD4+
PnwmJnxcfFx8fFwrPXxcLT18XCo9fCU9fDw8PXw+Pj18Pj4+PXwmPXxcfD18Xj18W3t9XChcW1xd
XC47LDw+XCtcLVwqJSZcfFxeIX5cPzo9XSkvLAorICAgICAgICAgICAgYWN0aW9uOiBwdW5jdHVh
dG9yQWN0aW9uLAorICAgICAgICAgICAgZG9udEFwcGVuZE5vblRva2VuOiB0cnVlCisgICAgICAg
IH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86XC89PykvLAorICAgICAgICAgICAgYWN0
aW9uOiBkaXZQdW5jdHVhdG9yQWN0aW9uLAorICAgICAgICAgICAgc3RhdGVDb25kaXRpb246IHRo
aXMuTGV4U3RhdGUuRGl2QWxsb3dlZCwKKyAgICAgICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjog
dHJ1ZQorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/OlwvKD86KD86XFwu
KXxbXlxcKlwvXSkoPzooPzpcXC4pfFteXFwvXSkqXC8oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86
dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0pKikv
LAorICAgICAgICAgICAgYWN0aW9uOiByZWdFeHBMaXRlcmFsQWN0aW9uCisgICAgICAgIH0sIHsK
KyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86XC8oPzooPzpcXC4pfFteXFwqXC9dKSg/Oig/Olxc
Lil8W15cXC9dKSopXFwkLywKKyAgICAgICAgICAgIGFjdGlvbjogcmVnRXhwU3RhcnRBY3Rpb24K
KyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzooPzooPzpcXC4pfFteXFwv
XSkqXC8oPzooPzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05
YS1mQS1GXVswLTlhLWZBLUZdKSl8WzAtOV0pKikvLAorICAgICAgICAgICAgYWN0aW9uOiByZWdF
eHBFbmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNv
bnRpbnVlU3RhdGUuUmVnRXhwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9e
KD86KD86KD86XFwuKXxbXlxcL10pKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiByZWdFeHBN
aWRkbGVBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNv
bnRpbnVlU3RhdGUuUmVnRXhwCisgICAgICAgIH1dOworICAgIAorICAgIGZ1bmN0aW9uIHNpbmds
ZUxpbmVDb21tZW50QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0g
dG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgIH0K
KyAgICAKKyAgICBmdW5jdGlvbiBtdWx0aUxpbmVTaW5nbGVMaW5lQ29tbWVudEFjdGlvbih0b2tl
bikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Vi
a2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbXVs
dGlMaW5lQ29tbWVudFN0YXJ0QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJz
b3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOwor
ICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuQ29tbWVudDsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudEVuZEFjdGlvbih0b2tl
bikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Vi
a2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0g
dGhpcy5Db250aW51ZVN0YXRlLk5vbmU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIG11bHRp
TGluZUNvbW1lbnRNaWRkbGVBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIG51bWVyaWNMaXRlcmFsQWN0aW9uKHRva2VuKQorICAg
IHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxp
bmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2
YXNjcmlwdC1udW1iZXIiKSk7CisgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxleFN0YXRlLkRp
dkFsbG93ZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0cmluZ0xpdGVyYWxBY3Rpb24o
dG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAg
ICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwg
IndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMu
TGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9CisgICAgCisgICAgCisgICAgZnVuY3Rpb24gc2luZ2xl
UXVvdGVTdHJpbmdTdGFydEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29y
ICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAg
ICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuU2luZ2xlUXVvdGVT
dHJpbmc7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNpbmdsZVF1b3RlU3RyaW5nRW5kQWN0
aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwor
ICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9r
ZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMuY29udGludWVT
dGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25lOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlv
biBzaW5nbGVRdW90ZVN0cmluZ01pZGRsZUFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRo
aXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5n
IikpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ1N0YXJ0QWN0
aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwor
ICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9r
ZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMuY29udGludWVT
dGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Eb3VibGVRdW90ZVN0cmluZzsKKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gZG91YmxlUXVvdGVTdHJpbmdFbmRBY3Rpb24odG9rZW4pCisgICAgewor
ICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZy
YWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2Ny
aXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51
ZVN0YXRlLk5vbmU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3RyaW5n
TWlkZGxlQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4u
bGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0
ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgfQorICAgIAor
ICAgIGZ1bmN0aW9uIHJlZ0V4cExpdGVyYWxBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0
aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFw
cGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4
cCIpKTsKKyAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90
eXBlID0gewotICAgIGRlbGV0ZUNvbnRpbnVlRmxhZ3M6IGZ1bmN0aW9uKGNlbGwpCisgICAgZnVu
Y3Rpb24gcmVnRXhwU3RhcnRBY3Rpb24odG9rZW4pCiAgICAgewotICAgICAgICBpZiAoIWNlbGwp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlbGV0ZSBjZWxsLl9jb21tZW50Q29udGlu
dWVzOwotICAgICAgICBkZWxldGUgY2VsbC5fc2luZ2xlUXVvdGVTdHJpbmdDb250aW51ZXM7Ci0g
ICAgICAgIGRlbGV0ZSBjZWxsLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRpbnVlczsKLSAgICAgICAg
ZGVsZXRlIGNlbGwuX3JlZ2V4cENvbnRpbnVlczsKLSAgICB9LAorICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKKyAg
ICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLlJlZ0V4cDsKKyAg
ICB9CiAKLSAgICBmaW5kTXVsdGlsaW5lUmVnRXhwU3RhcnQ6IGZ1bmN0aW9uKHN0cikKKyAgICBm
dW5jdGlvbiByZWdFeHBFbmRBY3Rpb24odG9rZW4pCiAgICAgewotICAgICAgICB2YXIgbWF0Y2gg
PSAvXlwvKD86W15cL1xcXXxcXC4pKlxcJC8uZXhlYyhzdHIpOwotICAgICAgICBpZiAoIW1hdGNo
IHx8ICEvXFx8XCR8XC5bXD9cKlwrXXxbXlx8XVx8W15cfF0vLnRlc3QobWF0Y2hbMF0pKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCA9
IG1hdGNoWzBdLmxlbmd0aDsKLSAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU3BhbihtYXRjaFsw
XSwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpOwotICAgIH0sCisgICAgICAgIHRoaXMuY3Vy
c29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hp
bGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOwor
ICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9uZTsKKyAg
ICB9CiAKLSAgICBmaW5kU2luZ2xlTGluZVJlZ0V4cDogZnVuY3Rpb24oc3RyKQorICAgIGZ1bmN0
aW9uIHJlZ0V4cE1pZGRsZUFjdGlvbih0b2tlbikKICAgICB7Ci0gICAgICAgIHZhciBtYXRjaCA9
IC9eKFwvKD86W15cL1xcXXxcXC4pKlwvKFtnaW1dezAsM30pKSguPykvLmV4ZWMoc3RyKTsKLSAg
ICAgICAgaWYgKCFtYXRjaCB8fCAhKG1hdGNoWzJdLmxlbmd0aCA+IDAgfHwgL1xcfFwkfFwuW1w/
XCpcK118W15cfF1cfFteXHxdLy50ZXN0KG1hdGNoWzFdKSB8fCAvXC58O3wsLy50ZXN0KG1hdGNo
WzNdKSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGhpcy5wcmV2aW91c01h
dGNoTGVuZ3RoID0gbWF0Y2hbMV0ubGVuZ3RoOwotICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVT
cGFuKG1hdGNoWzFdLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0gICAgfSwKKyAgICAg
ICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1y
ZWdleHAiKSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGlkZW50T3JLZXl3b3JkQWN0aW9u
KHRva2VuKQorICAgIHsKKyAgICAgICAgdmFyIGtleXdvcmRzID0gWyJudWxsIiwgInRydWUiLCAi
ZmFsc2UiLCAiYnJlYWsiLCAiY2FzZSIsICJjYXRjaCIsICJjb25zdCIsICJkZWZhdWx0IiwgImZp
bmFsbHkiLCAiZm9yIiwgImluc3RhbmNlb2YiLCAibmV3IiwgInZhciIsICJjb250aW51ZSIsICJm
dW5jdGlvbiIsICJyZXR1cm4iLCAidm9pZCIsICJkZWxldGUiLCAiaWYiLCAidGhpcyIsICJkbyIs
ICJ3aGlsZSIsICJlbHNlIiwgImluIiwgInN3aXRjaCIsICJ0aHJvdyIsICJ0cnkiLCAidHlwZW9m
IiwgIndpdGgiLCAiZGVidWdnZXIiLCAiY2xhc3MiLCAiZW51bSIsICJleHBvcnQiLCAiZXh0ZW5k
cyIsICJpbXBvcnQiLCAic3VwZXIiLCAiZ2V0IiwgInNldCJdOworICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIGlmIChrZXl3b3Jkcy5pbmRleE9mKHRva2VuKSA8
IDApIHsKKyAgICAgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gdG9rZW47CisgICAgICAgICAgICB0
aGlzLnN0YXRlID0gdGhpcy5MZXhTdGF0ZS5EaXZBbGxvd2VkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbigpOworICAgICAgICAgICAgdGhpcy5saW5l
RnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFz
Y3JpcHQta2V5d29yZCIpKTsKKyAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLkxleFN0YXRl
LkluaXRpYWw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZGl2UHVuY3R1
YXRvckFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxl
bmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAgdGhpcy5zdGF0
ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcmln
aHRQYXJlbkFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2Vu
Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAgdGhpcy5z
dGF0ZSA9IHRoaXMuTGV4U3RhdGUuRGl2QWxsb3dlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gcHVuY3R1YXRvckFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9
IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKKyAgICAgICAg
dGhpcy5zdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKKyAgICB9Cit9CiAKLSAgICBzeW50
YXhIaWdobGlnaHRMaW5lOiBmdW5jdGlvbihsaW5lLCBwcmV2TGluZSkKK1dlYkluc3BlY3Rvci5K
YXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBlID0geworICAgIHByb2Nl
c3M6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlQnViYmxlID0gbGluZS5s
YXN0Q2hpbGQ7Ci0gICAgICAgIGlmIChtZXNzYWdlQnViYmxlICYmIG1lc3NhZ2VCdWJibGUubm9k
ZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG1lc3NhZ2VCdWJibGUuaGFzU3R5bGVDbGFz
cygid2Via2l0LWh0bWwtbWVzc2FnZS1idWJibGUiKSkKLSAgICAgICAgICAgIGxpbmUucmVtb3Zl
Q2hpbGQobWVzc2FnZUJ1YmJsZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lc3NhZ2VC
dWJibGUgPSBudWxsOwotCi0gICAgICAgIHZhciBjb2RlID0gbGluZS50ZXh0Q29udGVudDsKLQot
ICAgICAgICB3aGlsZSAobGluZS5maXJzdENoaWxkKQotICAgICAgICAgICAgbGluZS5yZW1vdmVD
aGlsZChsaW5lLmZpcnN0Q2hpbGQpOwotCi0gICAgICAgIHZhciB0b2tlbjsKLSAgICAgICAgdmFy
IHRtcCA9IDA7Ci0gICAgICAgIHZhciBpID0gMDsKLSAgICAgICAgdGhpcy5wcmV2aW91c01hdGNo
TGVuZ3RoID0gMDsKLQotICAgICAgICBpZiAocHJldkxpbmUpIHsKLSAgICAgICAgICAgIGlmIChw
cmV2TGluZS5fY29tbWVudENvbnRpbnVlcykgewotICAgICAgICAgICAgICAgIGlmICghKHRva2Vu
ID0gdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVudEVuZChjb2RlKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0ZVNwYW4oY29kZSwgIndlYmtpdC1qYXZhc2NyaXB0LWNv
bW1lbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5fY29tbWVudENvbnRpbnVlcyA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChwcmV2TGluZS5f
c2luZ2xlUXVvdGVTdHJpbmdDb250aW51ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoISh0b2tl
biA9IHRoaXMuZmluZE11bHRpbGluZVNpbmdsZVF1b3RlU3RyaW5nRW5kKGNvZGUpKSkgewotICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMuY3JlYXRlU3Bhbihjb2RlLCAid2Via2l0LWph
dmFzY3JpcHQtc3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuX3NpbmdsZVF1b3Rl
U3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHByZXZMaW5lLl9kb3VibGVRdW90ZVN0cmluZ0NvbnRpbnVlcykgewotICAgICAg
ICAgICAgICAgIGlmICghKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lRG91YmxlUXVvdGVTdHJp
bmdFbmQoY29kZSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5jcmVhdGVT
cGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKLSAgICAgICAgICAgICAgICAg
ICAgbGluZS5fZG91YmxlUXVvdGVTdHJpbmdDb250aW51ZXMgPSB0cnVlOworICAgICAgICAvLyBT
cGxpdCB1cCB0aGUgd29yayBpbnRvIGNodW5rcyBzbyB3ZSBkb24ndCBibG9jayB0aGUKKyAgICAg
ICAgLy8gVUkgdGhyZWFkIHdoaWxlIHByb2Nlc3NpbmcuCisKKyAgICAgICAgdmFyIHJvd3MgPSB0
aGlzLnRhYmxlLnJvd3M7CisgICAgICAgIHZhciByb3dzTGVuZ3RoID0gcm93cy5sZW5ndGg7Cisg
ICAgICAgIGNvbnN0IHRva2Vuc1BlckNodW5rID0gMTAwOworICAgICAgICBjb25zdCBsaW5lTGVu
Z3RoTGltaXQgPSAyMDAwMDsKKyAgICAgICAgCisgICAgICAgIHZhciBib3VuZFByb2Nlc3NDaHVu
ayA9IHByb2Nlc3NDaHVuay5iaW5kKHRoaXMpOworICAgICAgICB2YXIgcHJvY2Vzc0NodW5rSW50
ZXJ2YWwgPSBzZXRJbnRlcnZhbChib3VuZFByb2Nlc3NDaHVuaywgMjUpOworICAgICAgICBib3Vu
ZFByb2Nlc3NDaHVuaygpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc0NodW5r
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgdG9rZW5zUGVyQ2h1bms7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1
cnNvciA+PSB0aGlzLmxpbmVDb2RlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgbW92ZVRv
TmV4dExpbmUuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5saW5lSW5kZXgg
Pj0gcm93c0xlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3ludGF4IGhpZ2hsaWdodGluZyBjb21wbGV0ZSIpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlIGlmIChwcmV2TGluZS5fcmVnZXhwQ29udGludWVzKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCEodG9rZW4gPSB0aGlzLmZpbmRNdWx0aWxpbmVSZWdFeHBFbmQoY29kZSkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5jcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQt
amF2YXNjcmlwdC1yZWdleHAiKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5fcmVnZXhwQ29u
dGludWVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3IgPiBsaW5lTGVu
Z3RoTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVGcmFnbWVudCA9IHRoaXMu
bGluZUNvZGUuc3Vic3RyaW5nKHRoaXMuY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5ub25Ub2tlbiArPSBjb2RlRnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vy
c29yICs9IGNvZGVGcmFnbWVudC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdGhpcy5sZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dExpbmUoKQorICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLmFwcGVuZE5vblRva2VuKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBy
b3cgPSByb3dzW3RoaXMubGluZUluZGV4XTsKKyAgICAgICAgICAgIHZhciBsaW5lID0gcm93ID8g
cm93LmNlbGxzWzFdIDogbnVsbDsKKyAgICAgICAgICAgIGlmIChsaW5lICYmIHRoaXMubGluZUZy
YWdtZW50KSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VCdWJibGUgPSBsaW5lLmxhc3RD
aGlsZDsKKyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZUJ1YmJsZSAmJiBtZXNzYWdlQnViYmxl
Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBtZXNzYWdlQnViYmxlLmhhc1N0eWxl
Q2xhc3MoIndlYmtpdC1odG1sLW1lc3NhZ2UtYnViYmxlIikpCisgICAgICAgICAgICAgICAgICAg
IGxpbmUucmVtb3ZlQ2hpbGQobWVzc2FnZUJ1YmJsZSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlQnViYmxlID0gbnVsbDsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICB3aGlsZSAobGluZS5maXJzdENoaWxkKQorICAgICAgICAgICAg
ICAgICAgICBsaW5lLnJlbW92ZUNoaWxkKGxpbmUuZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0aGlzLmxpbmVGcmFnbWVudCk7
CisgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VCdWJibGUpCisgICAgICAgICAgICAgICAgICAg
IGxpbmUuYXBwZW5kQ2hpbGQobWVzc2FnZUJ1YmJsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5s
aW5lRnJhZ21lbnQgPW51bGw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodG9rZW4p
IHsKLSAgICAgICAgICAgICAgICBpICs9IHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCA/IHRoaXMu
cHJldmlvdXNNYXRjaExlbmd0aCA6IGNvZGUubGVuZ3RoOwotICAgICAgICAgICAgICAgIHRtcCA9
IGk7Ci0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0b2tlbik7CisgICAgICAgICAg
ICB0aGlzLmxpbmVJbmRleCsrOworICAgICAgICAgICAgaWYgKHRoaXMubGluZUluZGV4ID49IHJv
d3NMZW5ndGggJiYgcHJvY2Vzc0NodW5rSW50ZXJ2YWwpIHsKKyAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKHByb2Nlc3NDaHVua0ludGVydmFsKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNv
dXJjZUZyYW1lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3ludGF4IGhpZ2hsaWdodGluZyBj
b21wbGV0ZSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJvdyA9IHJvd3NbdGhpcy5saW5lSW5kZXhdOworICAgICAgICAgICAgbGluZSA9IHJv
dyA/IHJvdy5jZWxsc1sxXSA6IG51bGw7CisgICAgICAgICAgICB0aGlzLmxpbmVDb2RlID0gbGlu
ZS50ZXh0Q29udGVudDsKKyAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICAgICAgdGhpcy5jdXJzb3IgPSAwOwor
ICAgICAgICAgICAgaWYgKCFsaW5lKQorICAgICAgICAgICAgICAgIG1vdmVUb05leHRMaW5lKCk7
CiAgICAgICAgIH0KLQotICAgICAgICBmb3IgKCA7IGkgPCBjb2RlLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICB2YXIgY29kZUZyYWdtZW50ID0gY29kZS5zdWJzdHIoaSk7Ci0gICAgICAgICAg
ICB2YXIgcHJldkNoYXIgPSBjb2RlW2kgLSAxXTsKLSAgICAgICAgICAgIHRva2VuID0gdGhpcy5m
aW5kU2luZ2xlTGluZUNvbW1lbnQoY29kZUZyYWdtZW50KTsKLSAgICAgICAgICAgIGlmICghdG9r
ZW4pIHsKLSAgICAgICAgICAgICAgICBpZiAoKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lQ29t
bWVudFN0YXJ0KGNvZGVGcmFnbWVudCkpKQotICAgICAgICAgICAgICAgICAgICBsaW5lLl9jb21t
ZW50Q29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghcHJldkNoYXIg
fHwgL15cVy8udGVzdChwcmV2Q2hhcikpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0
aGlzLmZpbmROdW1iZXIoY29kZUZyYWdtZW50KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuZmluZEtleXdvcmQoY29kZUZyYWdtZW50KSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuZmluZFNpbmdsZUxpbmVTdHJpbmcoY29kZUZyYWdtZW50KSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZFNpbmdsZUxpbmVSZWdFeHAoY29kZUZy
YWdtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0b2tlbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lU2luZ2xlUXVvdGVTdHJp
bmdTdGFydChjb2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUu
X3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lRG91YmxlUXVvdGVTdHJpbmdT
dGFydChjb2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuX2Rv
dWJsZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lUmVnRXhwU3RhcnQoY29kZUZyYWdt
ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLl9yZWdleHBDb250aW51ZXMg
PSB0cnVlOworICAgIH0sCisgICAgCisgICAgbGV4OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgdG9rZW4gPSBudWxsOworICAgICAgICB2YXIgY29kZUZyYWdtZW50ID0gdGhpcy5saW5l
Q29kZS5zdWJzdHJpbmcodGhpcy5jdXJzb3IpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLnJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgcnVs
ZSA9IHRoaXMucnVsZXNbaV07CisgICAgICAgICAgICB2YXIgcnVsZUNvbnRpbnVlU3RhdGVDb25k
aXRpb24gPSB0eXBlb2YgcnVsZS5jb250aW51ZVN0YXRlQ29uZGl0aW9uID09PSAidW5kZWZpbmVk
IiA/IHRoaXMuQ29udGludWVTdGF0ZS5Ob25lIDogcnVsZS5jb250aW51ZVN0YXRlQ29uZGl0aW9u
OworICAgICAgICAgICAgaWYgKHRoaXMuY29udGludWVTdGF0ZSA9PT0gcnVsZUNvbnRpbnVlU3Rh
dGVDb25kaXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJ1bGUuc3RhdGVDb25k
aXRpb24gIT09ICJ1bmRlZmluZWQiICYmIHRoaXMuc3RhdGUgIT09IHJ1bGUuc3RhdGVDb25kaXRp
b24pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHZhciBt
YXRjaCA9IHJ1bGUucGF0dGVybi5leGVjKGNvZGVGcmFnbWVudCk7CisgICAgICAgICAgICAgICAg
aWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIHRva2VuID0gbWF0Y2hbMF07CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0b2tlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFydWxlLmRvbnRBcHBlbmROb25Ub2tlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmFwcGVuZE5vblRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVs
ZS5hY3Rpb24uY2FsbCh0aGlzLCB0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0b2tlbikgewot
ICAgICAgICAgICAgICAgIGlmICh0bXAgIT09IGkpCi0gICAgICAgICAgICAgICAgICAgIGxpbmUu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29kZS5zdWJzdHJpbmcodG1wLCBp
KSkpOwotICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQodG9rZW4pOwotICAgICAgICAg
ICAgICAgIGkgKz0gdGhpcy5wcmV2aW91c01hdGNoTGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAg
ICB0bXAgPSBpICsgMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICB0aGlzLm5v
blRva2VuICs9IGNvZGVGcmFnbWVudFswXTsKKyAgICAgICAgdGhpcy5jdXJzb3IrKzsKKyAgICB9
LAorICAgIAorICAgIGFwcGVuZE5vblRva2VuOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmICh0
aGlzLm5vblRva2VuLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMubm9uVG9rZW4pKTsKKyAg
ICAgICAgICAgIHRoaXMubm9uVG9rZW4gPSAiIjsKKyAgICAgICAgfQorICAgIH0sCisgICAgCisg
ICAgc3ludGF4SGlnaGxpZ2h0Tm9kZTogZnVuY3Rpb24obm9kZSkgeworICAgICAgICB0aGlzLmxp
bmVDb2RlID0gbm9kZS50ZXh0Q29udGVudDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuY3Vyc29yID0g
MDsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvciA+PSB0
aGlzLmxpbmVDb2RlLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHZhciBjb2RlRnJhZ21lbnQg
PSB0aGlzLmxpbmVDb2RlLnN1YnN0cmluZyh0aGlzLmN1cnNvcik7CisgICAgICAgICAgICAgICAg
dGhpcy5ub25Ub2tlbiArPSBjb2RlRnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgdGhpcy5jdXJz
b3IgKz0gY29kZUZyYWdtZW50Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZE5v
blRva2VuKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKG5vZGUuZmlyc3RDaGlsZCkKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZChub2RlLmZpcnN0Q2hpbGQpOworICAgICAg
ICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5saW5lRnJhZ21lbnQpOworICAgICAgICAg
ICAgICAgIHRoaXMubGluZUZyYWdtZW50ID1udWxsOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAodG1wIDwgY29kZS5sZW5ndGgpCi0gICAgICAg
ICAgICBsaW5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvZGUuc3Vic3Ry
aW5nKHRtcCwgaSkpKTsKLQotICAgICAgICBpZiAobWVzc2FnZUJ1YmJsZSkKLSAgICAgICAgICAg
IGxpbmUuYXBwZW5kQ2hpbGQobWVzc2FnZUJ1YmJsZSk7CisgICAgICAgICAgICB0aGlzLmxleCgp
OworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDA0OSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA5
LTEwLTI1ICBLZWlzaGkgSGF0dG9yaSAgPGNhc2V5LmhhdHRvcmlAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld3JvdGUgSmF2YVNj
cmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyIHRvIGJlIG1vcmUgYWNjdXJhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTQ3CisKKyAgICAgICAg
KiBpbnNwZWN0b3IvamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC5odG1s
OiBBZGRlZC4KKwogMjAwOS0xMC0yNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5l
IHRlc3QgYWZ0ZXIgNDk5OTguCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlw
dC1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdo
bGlnaHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0
aGF0IEphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlciBkZXRlY3RzIHRoZSB0b2tlbnMu
CisKK3dlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQsd2Via2l0LWphdmFzY3JpcHQtc3RyaW5nLCoK
K3dlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cAord2Via2l0LWphdmFzY3JpcHQtY29tbWVudAord2Vi
a2l0LWphdmFzY3JpcHQtbnVtYmVyLCosd2Via2l0LWphdmFzY3JpcHQtbnVtYmVyLCosd2Via2l0
LWphdmFzY3JpcHQtcmVnZXhwLCosd2Via2l0LWphdmFzY3JpcHQtc3RyaW5nLCoKK3dlYmtpdC1q
YXZhc2NyaXB0LXN0cmluZywqLHdlYmtpdC1qYXZhc2NyaXB0LW51bWJlcgord2Via2l0LWphdmFz
Y3JpcHQta2V5d29yZCwqLHdlYmtpdC1qYXZhc2NyaXB0LW51bWJlcix3ZWJraXQtamF2YXNjcmlw
dC1jb21tZW50LCosd2Via2l0LWphdmFzY3JpcHQtbnVtYmVyCit3ZWJraXQtamF2YXNjcmlwdC1j
b21tZW50LHdlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCwqLHdlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZywqCisKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdo
bGlnaHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlw
dC1zeW50YXgtaGlnaGxpZ2h0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iZXZhbHVhdGUtaW4tZnJv
bnRlbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZG9pdCgpCit7CisgICAg
ZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldKTsK
KyAgICAgICAgbm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9y
KCJkb2l0QW5kRHVtcCIsIGNhbGxiYWNrKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IEphdmFTY3JpcHRTb3VyY2VT
eW50YXhIaWdobGlnaHRlciBkZXRlY3RzIHRoZSB0b2tlbnMuCis8L3A+CisKKzxkaXYgaWQ9ImZy
b250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CitmdW5jdGlvbiBkb2l0QW5kRHVt
cCh0ZXN0Q29udHJvbGxlcikgeworICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107Cisg
ICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoInJldHVybidmb28nOyIpKTsK
KyAgICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hsaWdodCgiL1xcXC8vIikpOworICAg
ICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCIvL2lnJzsiKSk7CisgICAgICAg
IHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIjEgLyAyICsgL2EvLnRlc3QoJ2EnKTsi
KSk7CisgICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIlwiXFxcIi9cIi5s
ZW5ndGggLyAyIikpOworICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCJ2
YXIgZm9vID0gMS8qKioqLy8yIikpOworICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGln
aGxpZ2h0KCIvKmNvbW1lbnQqLy8uKi8udGVzdCgnYScpIikpOworICAgICAgICB0ZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKHJlc3VsdCk7CisgICAgfSwgMCk7Cit9CitmdW5jdGlvbiBkdW1wU3lu
dGF4SGlnaGxpZ2h0KHN0cikgeworICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOworICAgIG5vZGUudGV4dENvbnRlbnQgPSBzdHI7CisgICAgdmFyIGphdmFzY3Jp
cHRTeW50YXhIaWdobGlnaHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5
bnRheEhpZ2hsaWdodGVyKG51bGwsIG51bGwpOworICAgIGphdmFzY3JpcHRTeW50YXhIaWdobGln
aHRlci5zeW50YXhIaWdobGlnaHROb2RlKG5vZGUpOworICAgIHZhciBub2RlX3BhcnRzID0gW107
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaWYgKG5vZGUuY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUpIHsKKyAgICAgICAg
ICAgIG5vZGVfcGFydHMucHVzaChub2RlLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJjbGFz
cyIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vZGVfcGFydHMucHVzaCgiKiIp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBub2RlX3BhcnRzLmpvaW4oIiwiKTsKK30K
KzwvZGl2PgorCis8ZGl2IGlkPSJvdXRwdXQiPgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="23297"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41953</attachid>
            <date>2009-10-27 08:03:53 -0700</date>
            <delta_ts>2009-10-27 11:10:43 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>sh.diff</filename>
            <type>text/plain</type>
            <size>27869</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDE0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTAtMjcgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV3cm90ZSBKYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgdG8gYmUgbW9y
ZSBhY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjcxNDcKKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBMYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
amF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0Lmh0bWwKKyAgICAgICAgCisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnByb2Nlc3MpOiBBZGRlZC4gUHJvY2Vzc2Vz
IDEwMCB0b2tlbnMgYXQgYSB0aW1lLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VTeW50YXhIaWdobGlnaHRlci5sZXgpOiBBZGRlZC4gU2NhbnMgZm9yIGEgdG9rZW4uCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLmFw
cGVuZE5vblRva2VuKTogQWRkZWQuIEFwcGVuZHMgdGhlIG5vbi10b2tlbiBjaGFyYWN0ZXJzIHRo
YXQgbGV4IGlnbm9yZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZVN5
bnRheEhpZ2hsaWdodGVyLnN5bnRheEhpZ2hsaWdodE5vZGUpOiBBZGRlZC4gVG8gc3ludGF4IGhp
Z2hsaWdodCBub2RlIGluIEVsZW1lbnRzVHJlZU91dGxpbmUuCisKIDIwMDktMTAtMjcgIEpvYW5t
YXJpZSBEaWdncyAgPGpvYW5tYXJpZS5kaWdnc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzVHJlZU91dGxpbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMJKHJldmlzaW9uIDUwMTMwKQorKysgV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMJKHdvcmtpbmcgY29weSkK
QEAgLTgzOCw5ICs4MzgsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5wYXJl
bnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gInNjcmlwdCIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBuZXdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZS50ZXh0Q29udGVudCA9IG5vZGUudGV4
dENvbnRlbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnNvbGUubG9nKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGphdmFz
Y3JpcHRTeW50YXhIaWdobGlnaHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJj
ZVN5bnRheEhpZ2hsaWdodGVyKG51bGwsIG51bGwpOwotICAgICAgICAgICAgICAgICAgICAgICAg
amF2YXNjcmlwdFN5bnRheEhpZ2hsaWdodGVyLnN5bnRheEhpZ2hsaWdodExpbmUobmV3Tm9kZSwg
bnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqYXZhc2NyaXB0U3ludGF4SGlnaGxpZ2h0
ZXIuc3ludGF4SGlnaGxpZ2h0Tm9kZShuZXdOb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50aXRsZSA9ICI8c3BhbiBjbGFzcz1cIndl
YmtpdC1odG1sLXRleHQtbm9kZSB3ZWJraXQtaHRtbC1qcy1ub2RlXCI+IiArIG5ld05vZGUuaW5u
ZXJIVE1MLnJlcGxhY2UoL15bXG5ccl0qLywgIiIpLnJlcGxhY2UoL1xzKiQvLCAiIikgKyAiPC9z
cGFuPiI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlICYm
IG5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09ICJzdHlsZSIpIHsKSW5k
ZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMJKHJldmlzaW9u
IDUwMTMwKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC05ODAsMTMyICs5ODAsMzc3IEBAIFdlYkluc3BlY3Rvci5DU1NTb3Vy
Y2VTeW50YXhIaWdobGlnaGVyLnAKIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4
SGlnaGxpZ2h0ZXIgPSBmdW5jdGlvbih0YWJsZSwgc291cmNlRnJhbWUpIHsKICAgICBXZWJJbnNw
ZWN0b3IuU291cmNlU3ludGF4SGlnaGxpZ2hlci5jYWxsKHRoaXMsIHRhYmxlLCBzb3VyY2VGcmFt
ZSk7CiAKLSAgICB0aGlzLmZpbmROdW1iZXIgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eKC0/KFxk
K1wuP1xkKihbZUVdWystXVxkKyk/fDBbeFhdXGgrfEluZmluaXR5KXxOYU4pKD86XFd8JCkvLCAx
LCAid2Via2l0LWphdmFzY3JpcHQtbnVtYmVyIik7Ci0gICAgdGhpcy5maW5kS2V5d29yZCA9IHRo
aXMuZ2VuZXJhdGVGaW5kZXIoL14obnVsbHx0cnVlfGZhbHNlfGJyZWFrfGNhc2V8Y2F0Y2h8Y29u
c3R8ZGVmYXVsdHxmaW5hbGx5fGZvcnxpbnN0YW5jZW9mfG5ld3x2YXJ8Y29udGludWV8ZnVuY3Rp
b258cmV0dXJufHZvaWR8ZGVsZXRlfGlmfHRoaXN8ZG98d2hpbGV8ZWxzZXxpbnxzd2l0Y2h8dGhy
b3d8dHJ5fHR5cGVvZnx3aXRofGRlYnVnZ2VyfGNsYXNzfGVudW18ZXhwb3J0fGV4dGVuZHN8aW1w
b3J0fHN1cGVyfGdldHxzZXQpKD86XFd8JCkvLCAxLCAid2Via2l0LWphdmFzY3JpcHQta2V5d29y
ZCIpOwotICAgIHRoaXMuZmluZFNpbmdsZUxpbmVTdHJpbmcgPSB0aGlzLmdlbmVyYXRlRmluZGVy
KC9eIig/OlteIlxcXXxcXC4pKiJ8XicoW14nXFxdfFxcLikqJy8sIDAsICJ3ZWJraXQtamF2YXNj
cmlwdC1zdHJpbmciKTsgLy8gIiB0aGlzIHF1b3RlIGtlZXBzIFhjb2RlIGhhcHB5Ci0gICAgdGhp
cy5maW5kTXVsdGlsaW5lQ29tbWVudFN0YXJ0ID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXlwvXCou
KiQvLCAwLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpOwotICAgIHRoaXMuZmluZE11bHRp
bGluZUNvbW1lbnRFbmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eLio/XCpcLy8sIDAsICJ3ZWJr
aXQtamF2YXNjcmlwdC1jb21tZW50Iik7Ci0gICAgdGhpcy5maW5kTXVsdGlsaW5lU2luZ2xlUXVv
dGVTdHJpbmdTdGFydCA9IHRoaXMuZ2VuZXJhdGVGaW5kZXIoL14nKD86W14nXFxdfFxcLikqXFwk
LywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgIHRoaXMuZmluZE11bHRpbGlu
ZVNpbmdsZVF1b3RlU3RyaW5nRW5kID0gdGhpcy5nZW5lcmF0ZUZpbmRlcigvXig/OlteJ1xcXXxc
XC4pKj8nLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgIHRoaXMuZmluZE11
bHRpbGluZURvdWJsZVF1b3RlU3RyaW5nU3RhcnQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9eIig/
OlteIlxcXXxcXC4pKlxcJC8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsKLSAgICB0
aGlzLmZpbmRNdWx0aWxpbmVEb3VibGVRdW90ZVN0cmluZ0VuZCA9IHRoaXMuZ2VuZXJhdGVGaW5k
ZXIoL14oPzpbXiJcXF18XFwuKSo/Ii8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKTsK
LSAgICB0aGlzLmZpbmRNdWx0aWxpbmVSZWdFeHBFbmQgPSB0aGlzLmdlbmVyYXRlRmluZGVyKC9e
KD86W15cL1xcXXxcXC4pKj9cLyhbZ2ltXXswLDN9KS8sIDAsICJ3ZWJraXQtamF2YXNjcmlwdC1y
ZWdleHAiKTsKLSAgICB0aGlzLmZpbmRTaW5nbGVMaW5lQ29tbWVudCA9IHRoaXMuZ2VuZXJhdGVG
aW5kZXIoL15cL1wvLip8XlwvXCouKj9cKlwvLywgMCwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1l
bnQiKTsKLX0KKyAgICB0aGlzLkxleFN0YXRlID0geworICAgICAgICBJbml0aWFsOiAxLAorICAg
ICAgICBEaXZpc2lvbkFsbG93ZWQ6IDIsCisgICAgfTsKKyAgICB0aGlzLkNvbnRpbnVlU3RhdGUg
PSB7CisgICAgICAgIE5vbmU6IDAsCisgICAgICAgIENvbW1lbnQ6IDEsCisgICAgICAgIFNpbmds
ZVF1b3RlU3RyaW5nOiAyLAorICAgICAgICBEb3VibGVRdW90ZVN0cmluZzogMywKKyAgICAgICAg
UmVnRXhwOiA0CisgICAgfTsKKyAgICAKKyAgICB0aGlzLm5vblRva2VuID0gIiI7CisgICAgdGhp
cy5jdXJzb3IgPSAwOworICAgIHRoaXMubGluZUluZGV4ID0gLTE7CisgICAgdGhpcy5saW5lQ29k
ZSA9ICIiOworICAgIHRoaXMubGluZUZyYWdtZW50ID0gbnVsbDsKKyAgICB0aGlzLmxleFN0YXRl
ID0gdGhpcy5MZXhTdGF0ZS5Jbml0aWFsOworICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMu
Q29udGludWVTdGF0ZS5Ob25lOworICAgIAorICAgIHRoaXMucnVsZXMgPSBbeworICAgICAgICAg
ICAgcGF0dGVybjogL14oPzpcL1wvLiopLywKKyAgICAgICAgICAgIGFjdGlvbjogc2luZ2xlTGlu
ZUNvbW1lbnRBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpc
L1wqKD86W15cKl18XCpbXlwvXSkqXCorXC8pLywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlM
aW5lU2luZ2xlTGluZUNvbW1lbnRBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0
dGVybjogL14oPzpcL1wqKD86W15cKl18XCpbXlwvXSkqKS8sCisgICAgICAgICAgICBhY3Rpb246
IG11bHRpTGluZUNvbW1lbnRTdGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBw
YXR0ZXJuOiAvXig/Oig/OlteXCpdfFwqW15cL10pKlwqK1wvKS8sCisgICAgICAgICAgICBhY3Rp
b246IG11bHRpTGluZUNvbW1lbnRFbmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRl
Q29uZGl0aW9uOiB0aGlzLkNvbnRpbnVlU3RhdGUuQ29tbWVudAorICAgICAgICB9LCB7CisgICAg
ICAgICAgICBwYXR0ZXJuOiAvXi4qLywKKyAgICAgICAgICAgIGFjdGlvbjogbXVsdGlMaW5lQ29t
bWVudE1pZGRsZUFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRo
aXMuQ29udGludWVTdGF0ZS5Db21tZW50CisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRl
cm46IC9eKD86KD86MHxbMS05XVxkKilcLlxkKz8oPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98
XC5cZCsoPzpbZUVdKD86XGQrfFwrXGQrfC1cZCspKT98KD86MHxbMS05XVxkKikoPzpbZUVdKD86
XGQrfFwrXGQrfC1cZCspKT98MHhbMC05YS1mQS1GXSt8MFhbMC05YS1mQS1GXSspLywKKyAgICAg
ICAgICAgIGFjdGlvbjogbnVtZXJpY0xpdGVyYWxBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAg
ICAgICAgcGF0dGVybjogL14oPzoiKD86W14iXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5y
dHYwLTl4dV18MHx4WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1m
QS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkqInwnKD86W14nXFxdfFxcKD86WyciXGJmbnJ0
dl18W14nIlxiZm5ydHYwLTl4dV18MHx4WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEt
ZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKSkqJykvLAorICAgICAgICAg
ICAgYWN0aW9uOiBzdHJpbmdMaXRlcmFsQWN0aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAg
IHBhdHRlcm46IC9eKD86Jyg/OlteJ1xcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05
eHVdfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1b
MC05YS1mQS1GXVswLTlhLWZBLUZdKSkpKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5n
bGVRdW90ZVN0cmluZ1N0YXJ0QWN0aW9uCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRl
cm46IC9eKD86KD86W14nXFxdfFxcKD86WyciXGJmbnJ0dl18W14nIlxiZm5ydHYwLTl4dV18MHx4
WzAtOWEtZkEtRl1bMC05YS1mQS1GXXwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZB
LUZdWzAtOWEtZkEtRl0pKSkqJykvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5nbGVRdW90ZVN0
cmluZ0VuZEFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25kaXRpb246IHRoaXMu
Q29udGludWVTdGF0ZS5TaW5nbGVRdW90ZVN0cmluZworICAgICAgICB9LCB7CisgICAgICAgICAg
ICBwYXR0ZXJuOiAvXig/Oig/OlteJ1xcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZucnR2MC05
eHVdfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1b
MC05YS1mQS1GXVswLTlhLWZBLUZdKSkpKilcXCQvLAorICAgICAgICAgICAgYWN0aW9uOiBzaW5n
bGVRdW90ZVN0cmluZ01pZGRsZUFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVlU3RhdGVDb25k
aXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5TaW5nbGVRdW90ZVN0cmluZworICAgICAgICB9LCB7
CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/OiIoPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxb
XiciXGJmbnJ0djAtOXh1XXwwfHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1G
XVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAg
IGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdTdGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAg
ICAgICAgICBwYXR0ZXJuOiAvXig/Oig/OlteIlxcXXxcXCg/OlsnIlxiZm5ydHZdfFteJyJcYmZu
cnR2MC05eHVdfDB8eFswLTlhLWZBLUZdWzAtOWEtZkEtRl18KD86dVswLTlhLWZBLUZdWzAtOWEt
ZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkpKiIpLywKKyAgICAgICAgICAgIGFjdGlvbjog
ZG91YmxlUXVvdGVTdHJpbmdFbmRBY3Rpb24sCisgICAgICAgICAgICBjb250aW51ZVN0YXRlQ29u
ZGl0aW9uOiB0aGlzLkNvbnRpbnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcKKyAgICAgICAgfSwg
eworICAgICAgICAgICAgcGF0dGVybjogL14oPzooPzpbXiJcXF18XFwoPzpbJyJcYmZucnR2XXxb
XiciXGJmbnJ0djAtOXh1XXwwfHhbMC05YS1mQS1GXVswLTlhLWZBLUZdfCg/OnVbMC05YS1mQS1G
XVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkpKSopXFwkLywKKyAgICAgICAgICAg
IGFjdGlvbjogZG91YmxlUXVvdGVTdHJpbmdNaWRkbGVBY3Rpb24sCisgICAgICAgICAgICBjb250
aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNvbnRpbnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcK
KyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzooPzpbYS16QS1aXXxbJF9d
fFxcKD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdKSkoPzoo
PzpbYS16QS1aXXxbJF9dfFxcKD86dVswLTlhLWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXVsw
LTlhLWZBLUZdKSl8WzAtOV0pKikvLAorICAgICAgICAgICAgYWN0aW9uOiBpZGVudE9yS2V5d29y
ZEFjdGlvbiwKKyAgICAgICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAgICAgICB9
LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXlwpLywKKyAgICAgICAgICAgIGFjdGlvbjogcmln
aHRQYXJlbkFjdGlvbiwKKyAgICAgICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1ZQorICAg
ICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJuOiAvXig/Ojw9fD49fD09PXw9PXwhPXwhPT18
XCtcK3xcLVwtfDw8fD4+fD4+PnwmJnxcfFx8fFwrPXxcLT18XCo9fCU9fDw8PXw+Pj18Pj4+PXwm
PXxcfD18Xj18W3t9XChcW1xdXC47LDw+XCtcLVwqJSZcfFxeIX5cPzo9XSkvLAorICAgICAgICAg
ICAgYWN0aW9uOiBwdW5jdHVhdG9yQWN0aW9uLAorICAgICAgICAgICAgZG9udEFwcGVuZE5vblRv
a2VuOiB0cnVlCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBhdHRlcm46IC9eKD86XC89Pykv
LAorICAgICAgICAgICAgYWN0aW9uOiBkaXZQdW5jdHVhdG9yQWN0aW9uLAorICAgICAgICAgICAg
c3RhdGVDb25kaXRpb246IHRoaXMuTGV4U3RhdGUuRGl2aXNpb25BbGxvd2VkLAorICAgICAgICAg
ICAgZG9udEFwcGVuZE5vblRva2VuOiB0cnVlCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHBh
dHRlcm46IC9eKD86XC8oPzooPzpcXC4pfFteXFwqXC9dKSg/Oig/OlxcLil8W15cXC9dKSpcLyg/
Oig/OlthLXpBLVpdfFskX118XFwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZd
WzAtOWEtZkEtRl0pKXxbMC05XSkqKS8sCisgICAgICAgICAgICBhY3Rpb246IHJlZ0V4cExpdGVy
YWxBY3Rpb24KKyAgICAgICAgfSwgeworICAgICAgICAgICAgcGF0dGVybjogL14oPzpcLyg/Oig/
OlxcLil8W15cXCpcL10pKD86KD86XFwuKXxbXlxcL10pKilcXCQvLAorICAgICAgICAgICAgYWN0
aW9uOiByZWdFeHBTdGFydEFjdGlvbgorICAgICAgICB9LCB7CisgICAgICAgICAgICBwYXR0ZXJu
OiAvXig/Oig/Oig/OlxcLil8W15cXC9dKSpcLyg/Oig/OlthLXpBLVpdfFskX118XFwoPzp1WzAt
OWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKXxbMC05XSkqKS8sCisg
ICAgICAgICAgICBhY3Rpb246IHJlZ0V4cEVuZEFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVl
U3RhdGVDb25kaXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5SZWdFeHAKKyAgICAgICAgfSwgewor
ICAgICAgICAgICAgcGF0dGVybjogL14oPzooPzooPzpcXC4pfFteXFwvXSkqKVxcJC8sCisgICAg
ICAgICAgICBhY3Rpb246IHJlZ0V4cE1pZGRsZUFjdGlvbiwKKyAgICAgICAgICAgIGNvbnRpbnVl
U3RhdGVDb25kaXRpb246IHRoaXMuQ29udGludWVTdGF0ZS5SZWdFeHAKKyAgICAgICAgfV07Cisg
ICAgCisgICAgZnVuY3Rpb24gc2luZ2xlTGluZUNvbW1lbnRBY3Rpb24odG9rZW4pCisgICAgewor
ICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZy
YWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2Ny
aXB0LWNvbW1lbnQiKSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIG11bHRpTGluZVNpbmds
ZUxpbmVDb21tZW50QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0g
dG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgIH0K
KyAgICAKKyAgICBmdW5jdGlvbiBtdWx0aUxpbmVDb21tZW50U3RhcnRBY3Rpb24odG9rZW4pCisg
ICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMu
bGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1q
YXZhc2NyaXB0LWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMu
Q29udGludWVTdGF0ZS5Db21tZW50OworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBtdWx0aUxp
bmVDb21tZW50RW5kQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0g
dG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgICAg
ICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9uZTsKKyAgICB9Cisg
ICAgCisgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudE1pZGRsZUFjdGlvbih0b2tlbikKKyAg
ICB7CisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5s
aW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWph
dmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gbnVtZXJpY0xp
dGVyYWxBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5s
ZW5ndGg7CisgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRl
U3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LW51bWJlciIpKTsKKyAgICAgICAgdGhpcy5s
ZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUuRGl2aXNpb25BbGxvd2VkOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBzdHJpbmdMaXRlcmFsQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhp
cy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBl
bmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmci
KSk7CisgICAgICAgIHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIHNpbmdsZVF1b3RlU3RyaW5nU3RhcnRBY3Rpb24odG9rZW4p
CisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRo
aXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtp
dC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhp
cy5Db250aW51ZVN0YXRlLlNpbmdsZVF1b3RlU3RyaW5nOworICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBzaW5nbGVRdW90ZVN0cmluZ0VuZEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRo
aXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5n
IikpOworICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9u
ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc2luZ2xlUXVvdGVTdHJpbmdNaWRkbGVBY3Rp
b24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Cisg
ICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tl
biwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gZG91YmxlUXVvdGVTdHJpbmdTdGFydEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIHRo
aXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5n
IikpOworICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuRG91
YmxlUXVvdGVTdHJpbmc7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3Ry
aW5nRW5kQWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4u
bGVuZ3RoOworICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0
ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMu
Y29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25lOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ01pZGRsZUFjdGlvbih0b2tlbikKKyAgICB7Cisg
ICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJh
Z21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3Jp
cHQtc3RyaW5nIikpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiByZWdFeHBMaXRlcmFsQWN0
aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwor
ICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9r
ZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CisgICAgICAgIHRoaXMubGV4U3RhdGUg
PSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuSmF2YVNjcmlw
dFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnByb3RvdHlwZSA9IHsKLSAgICBkZWxldGVDb250aW51
ZUZsYWdzOiBmdW5jdGlvbihjZWxsKQorICAgIGZ1bmN0aW9uIHJlZ0V4cFN0YXJ0QWN0aW9uKHRv
a2VuKQogICAgIHsKLSAgICAgICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBkZWxldGUgY2VsbC5fY29tbWVudENvbnRpbnVlczsKLSAgICAgICAgZGVsZXRlIGNlbGwu
X3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzOwotICAgICAgICBkZWxldGUgY2VsbC5fZG91Ymxl
UXVvdGVTdHJpbmdDb250aW51ZXM7Ci0gICAgICAgIGRlbGV0ZSBjZWxsLl9yZWdleHBDb250aW51
ZXM7Ci0gICAgfSwKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAgICAg
ICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3
ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CisgICAgICAgIHRoaXMuY29udGludWVTdGF0ZSA9
IHRoaXMuQ29udGludWVTdGF0ZS5SZWdFeHA7CisgICAgfQogCi0gICAgZmluZE11bHRpbGluZVJl
Z0V4cFN0YXJ0OiBmdW5jdGlvbihzdHIpCisgICAgZnVuY3Rpb24gcmVnRXhwRW5kQWN0aW9uKHRv
a2VuKQogICAgIHsKLSAgICAgICAgdmFyIG1hdGNoID0gL15cLyg/OlteXC9cXF18XFwuKSpcXCQv
LmV4ZWMoc3RyKTsKLSAgICAgICAgaWYgKCFtYXRjaCB8fCAhL1xcfFwkfFwuW1w/XCpcK118W15c
fF1cfFteXHxdLy50ZXN0KG1hdGNoWzBdKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAg
ICAgICB0aGlzLnByZXZpb3VzTWF0Y2hMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7Ci0gICAgICAg
IHJldHVybiB0aGlzLmNyZWF0ZVNwYW4obWF0Y2hbMF0sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdl
eHAiKTsKLSAgICB9LAorICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAg
ICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwg
IndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKKyAgICAgICAgdGhpcy5jb250aW51ZVN0YXRl
ID0gdGhpcy5Db250aW51ZVN0YXRlLk5vbmU7CisgICAgfQogCi0gICAgZmluZFNpbmdsZUxpbmVS
ZWdFeHA6IGZ1bmN0aW9uKHN0cikKKyAgICBmdW5jdGlvbiByZWdFeHBNaWRkbGVBY3Rpb24odG9r
ZW4pCiAgICAgewotICAgICAgICB2YXIgbWF0Y2ggPSAvXihcLyg/OlteXC9cXF18XFwuKSpcLyhb
Z2ltXXswLDN9KSkoLj8pLy5leGVjKHN0cik7Ci0gICAgICAgIGlmICghbWF0Y2ggfHwgIShtYXRj
aFsyXS5sZW5ndGggPiAwIHx8IC9cXHxcJHxcLltcP1wqXCtdfFteXHxdXHxbXlx8XS8udGVzdCht
YXRjaFsxXSkgfHwgL1wufDt8LC8udGVzdChtYXRjaFszXSkpKQotICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0gICAgICAgIHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCA9IG1hdGNoWzFdLmxlbmd0
aDsKLSAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU3BhbihtYXRjaFsxXSwgIndlYmtpdC1qYXZh
c2NyaXB0LXJlZ2V4cCIpOwotICAgIH0sCisgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxl
bmd0aDsKKyAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVT
cGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBpZGVudE9yS2V5d29yZEFjdGlvbih0b2tlbikKKyAgICB7CisgICAgICAgIGNv
bnN0IGtleXdvcmRzID0gWyJudWxsIiwgInRydWUiLCAiZmFsc2UiLCAiYnJlYWsiLCAiY2FzZSIs
ICJjYXRjaCIsICJjb25zdCIsICJkZWZhdWx0IiwgImZpbmFsbHkiLCAiZm9yIiwgImluc3RhbmNl
b2YiLCAibmV3IiwgInZhciIsICJjb250aW51ZSIsICJmdW5jdGlvbiIsICJyZXR1cm4iLCAidm9p
ZCIsICJkZWxldGUiLCAiaWYiLCAidGhpcyIsICJkbyIsICJ3aGlsZSIsICJlbHNlIiwgImluIiwg
InN3aXRjaCIsICJ0aHJvdyIsICJ0cnkiLCAidHlwZW9mIiwgIndpdGgiLCAiZGVidWdnZXIiLCAi
Y2xhc3MiLCAiZW51bSIsICJleHBvcnQiLCAiZXh0ZW5kcyIsICJpbXBvcnQiLCAic3VwZXIiLCAi
Z2V0IiwgInNldCJdOworICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CisgICAg
ICAgIGlmIChrZXl3b3Jkcy5pbmRleE9mKHRva2VuKSA9PT0gLTEpIHsKKyAgICAgICAgICAgIHRo
aXMubm9uVG9rZW4gKz0gdG9rZW47CisgICAgICAgICAgICB0aGlzLmxleFN0YXRlID0gdGhpcy5M
ZXhTdGF0ZS5EaXZpc2lvbkFsbG93ZWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0
aGlzLmFwcGVuZE5vblRva2VuKCk7CisgICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBl
bmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3Jk
IikpOworICAgICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBkaXZQdW5jdHVhdG9yQWN0aW9u
KHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOworICAg
ICAgICB0aGlzLm5vblRva2VuICs9IHRva2VuOworICAgICAgICB0aGlzLmxleFN0YXRlID0gdGhp
cy5MZXhTdGF0ZS5Jbml0aWFsOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiByaWdodFBhcmVu
QWN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3Ro
OworICAgICAgICB0aGlzLm5vblRva2VuICs9IHRva2VuOworICAgICAgICB0aGlzLmxleFN0YXRl
ID0gdGhpcy5MZXhTdGF0ZS5EaXZpc2lvbkFsbG93ZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIHB1bmN0dWF0b3JBY3Rpb24odG9rZW4pCisgICAgeworICAgICAgICB0aGlzLmN1cnNvciAr
PSB0b2tlbi5sZW5ndGg7CisgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gdG9rZW47CisgICAgICAg
IHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CisgICAgfQorfQogCi0gICAg
c3ludGF4SGlnaGxpZ2h0TGluZTogZnVuY3Rpb24obGluZSwgcHJldkxpbmUpCitXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnByb3RvdHlwZSA9IHsKKyAgICBw
cm9jZXNzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgbWVzc2FnZUJ1YmJsZSA9IGxp
bmUubGFzdENoaWxkOwotICAgICAgICBpZiAobWVzc2FnZUJ1YmJsZSAmJiBtZXNzYWdlQnViYmxl
Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBtZXNzYWdlQnViYmxlLmhhc1N0eWxl
Q2xhc3MoIndlYmtpdC1odG1sLW1lc3NhZ2UtYnViYmxlIikpCi0gICAgICAgICAgICBsaW5lLnJl
bW92ZUNoaWxkKG1lc3NhZ2VCdWJibGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtZXNz
YWdlQnViYmxlID0gbnVsbDsKLQotICAgICAgICB2YXIgY29kZSA9IGxpbmUudGV4dENvbnRlbnQ7
Ci0KLSAgICAgICAgd2hpbGUgKGxpbmUuZmlyc3RDaGlsZCkKLSAgICAgICAgICAgIGxpbmUucmVt
b3ZlQ2hpbGQobGluZS5maXJzdENoaWxkKTsKLQotICAgICAgICB2YXIgdG9rZW47Ci0gICAgICAg
IHZhciB0bXAgPSAwOwotICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgIHRoaXMucHJldmlvdXNN
YXRjaExlbmd0aCA9IDA7Ci0KLSAgICAgICAgaWYgKHByZXZMaW5lKSB7Ci0gICAgICAgICAgICBp
ZiAocHJldkxpbmUuX2NvbW1lbnRDb250aW51ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoISh0
b2tlbiA9IHRoaXMuZmluZE11bHRpbGluZUNvbW1lbnRFbmQoY29kZSkpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gdGhpcy5jcmVhdGVTcGFuKGNvZGUsICJ3ZWJraXQtamF2YXNjcmlw
dC1jb21tZW50Iik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuX2NvbW1lbnRDb250aW51ZXMg
PSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxp
bmUuX3NpbmdsZVF1b3RlU3RyaW5nQ29udGludWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEo
dG9rZW4gPSB0aGlzLmZpbmRNdWx0aWxpbmVTaW5nbGVRdW90ZVN0cmluZ0VuZChjb2RlKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0ZVNwYW4oY29kZSwgIndlYmtp
dC1qYXZhc2NyaXB0LXN0cmluZyIpOwotICAgICAgICAgICAgICAgICAgICBsaW5lLl9zaW5nbGVR
dW90ZVN0cmluZ0NvbnRpbnVlcyA9IHRydWU7CisgICAgICAgIC8vIFNwbGl0IHVwIHRoZSB3b3Jr
IGludG8gY2h1bmtzIHNvIHdlIGRvbid0IGJsb2NrIHRoZQorICAgICAgICAvLyBVSSB0aHJlYWQg
d2hpbGUgcHJvY2Vzc2luZy4KKworICAgICAgICB2YXIgcm93cyA9IHRoaXMudGFibGUucm93czsK
KyAgICAgICAgdmFyIHJvd3NMZW5ndGggPSByb3dzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgdG9r
ZW5zUGVyQ2h1bmsgPSAxMDA7CisgICAgICAgIGNvbnN0IGxpbmVMZW5ndGhMaW1pdCA9IDIwMDAw
OworICAgICAgICAKKyAgICAgICAgdmFyIGJvdW5kUHJvY2Vzc0NodW5rID0gcHJvY2Vzc0NodW5r
LmJpbmQodGhpcyk7CisgICAgICAgIHZhciBwcm9jZXNzQ2h1bmtJbnRlcnZhbCA9IHNldEludGVy
dmFsKGJvdW5kUHJvY2Vzc0NodW5rLCAyNSk7CisgICAgICAgIGJvdW5kUHJvY2Vzc0NodW5rKCk7
CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQ2h1bmsoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vuc1BlckNodW5rOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3IgPj0gdGhpcy5saW5lQ29kZS5sZW5ndGgpCisg
ICAgICAgICAgICAgICAgICAgIG1vdmVUb05leHRMaW5lLmNhbGwodGhpcyk7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMubGluZUluZGV4ID49IHJvd3NMZW5ndGgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5zb3VyY2VGcmFtZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN5bnRheCBo
aWdobGlnaHRpbmcgY29tcGxldGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxpbmUuX2RvdWJsZVF1
b3RlU3RyaW5nQ29udGludWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEodG9rZW4gPSB0aGlz
LmZpbmRNdWx0aWxpbmVEb3VibGVRdW90ZVN0cmluZ0VuZChjb2RlKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSB0aGlzLmNyZWF0ZVNwYW4oY29kZSwgIndlYmtpdC1qYXZhc2NyaXB0
LXN0cmluZyIpOwotICAgICAgICAgICAgICAgICAgICBsaW5lLl9kb3VibGVRdW90ZVN0cmluZ0Nv
bnRpbnVlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yID4gbGluZUxl
bmd0aExpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2RlRnJhZ21lbnQgPSB0aGlz
LmxpbmVDb2RlLnN1YnN0cmluZyh0aGlzLmN1cnNvcik7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMubm9uVG9rZW4gKz0gY29kZUZyYWdtZW50OworICAgICAgICAgICAgICAgICAgICB0aGlzLmN1
cnNvciArPSBjb2RlRnJhZ21lbnQubGVuZ3RoOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAocHJldkxpbmUuX3JlZ2V4cENvbnRpbnVlcykgewotICAgICAgICAgICAg
ICAgIGlmICghKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lUmVnRXhwRW5kKGNvZGUpKSkgewot
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMuY3JlYXRlU3Bhbihjb2RlLCAid2Via2l0
LWphdmFzY3JpcHQtcmVnZXhwIik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUuX3JlZ2V4cENv
bnRpbnVlcyA9IHRydWU7CisKKyAgICAgICAgICAgICAgICB0aGlzLmxleCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0TGlu
ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kTm9uVG9rZW4oKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbdGhpcy5saW5lSW5kZXhdOworICAg
ICAgICAgICAgdmFyIGxpbmUgPSByb3cgPyByb3cuY2VsbHNbMV0gOiBudWxsOworICAgICAgICAg
ICAgaWYgKGxpbmUgJiYgdGhpcy5saW5lRnJhZ21lbnQpIHsKKyAgICAgICAgICAgICAgICB2YXIg
bWVzc2FnZUJ1YmJsZSA9IG51bGw7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUubGFzdENoaWxk
ICYmIGxpbmUubGFzdENoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBsaW5l
Lmxhc3RDaGlsZC5oYXNTdHlsZUNsYXNzKCJ3ZWJraXQtaHRtbC1tZXNzYWdlLWJ1YmJsZSIpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VCdWJibGUgPSBsaW5lLmxhc3RDaGlsZDsKKyAg
ICAgICAgICAgICAgICAgICAgbGluZS5yZW1vdmVDaGlsZChtZXNzYWdlQnViYmxlKTsKICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgRWxlbWVudC5w
cm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4uY2FsbChsaW5lKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKHRoaXMubGluZUZyYWdtZW50KTsKKyAgICAg
ICAgICAgICAgICBpZiAobWVzc2FnZUJ1YmJsZSkKKyAgICAgICAgICAgICAgICAgICAgbGluZS5h
cHBlbmRDaGlsZChtZXNzYWdlQnViYmxlKTsKKyAgICAgICAgICAgICAgICB0aGlzLmxpbmVGcmFn
bWVudCA9IG51bGw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodG9rZW4pIHsKLSAg
ICAgICAgICAgICAgICBpICs9IHRoaXMucHJldmlvdXNNYXRjaExlbmd0aCA/IHRoaXMucHJldmlv
dXNNYXRjaExlbmd0aCA6IGNvZGUubGVuZ3RoOwotICAgICAgICAgICAgICAgIHRtcCA9IGk7Ci0g
ICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0b2tlbik7CisgICAgICAgICAgICB0aGlz
LmxpbmVJbmRleCsrOworICAgICAgICAgICAgaWYgKHRoaXMubGluZUluZGV4ID49IHJvd3NMZW5n
dGggJiYgcHJvY2Vzc0NodW5rSW50ZXJ2YWwpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVy
dmFsKHByb2Nlc3NDaHVua0ludGVydmFsKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZy
YW1lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3ludGF4IGhpZ2hsaWdodGluZyBjb21wbGV0
ZSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJvdyA9IHJvd3NbdGhpcy5saW5lSW5kZXhdOworICAgICAgICAgICAgbGluZSA9IHJvdyA/IHJv
dy5jZWxsc1sxXSA6IG51bGw7CisgICAgICAgICAgICB0aGlzLmxpbmVDb2RlID0gbGluZS50ZXh0
Q29udGVudDsKKyAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICAgICAgdGhpcy5jdXJzb3IgPSAwOworICAgICAg
ICAgICAgaWYgKCFsaW5lKQorICAgICAgICAgICAgICAgIG1vdmVUb05leHRMaW5lKCk7CiAgICAg
ICAgIH0KLQotICAgICAgICBmb3IgKCA7IGkgPCBjb2RlLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgY29kZUZyYWdtZW50ID0gY29kZS5zdWJzdHIoaSk7Ci0gICAgICAgICAgICB2YXIg
cHJldkNoYXIgPSBjb2RlW2kgLSAxXTsKLSAgICAgICAgICAgIHRva2VuID0gdGhpcy5maW5kU2lu
Z2xlTGluZUNvbW1lbnQoY29kZUZyYWdtZW50KTsKLSAgICAgICAgICAgIGlmICghdG9rZW4pIHsK
LSAgICAgICAgICAgICAgICBpZiAoKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lQ29tbWVudFN0
YXJ0KGNvZGVGcmFnbWVudCkpKQotICAgICAgICAgICAgICAgICAgICBsaW5lLl9jb21tZW50Q29u
dGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghcHJldkNoYXIgfHwgL15c
Vy8udGVzdChwcmV2Q2hhcikpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmZp
bmROdW1iZXIoY29kZUZyYWdtZW50KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuZmluZEtleXdvcmQoY29kZUZyYWdtZW50KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuZmluZFNpbmdsZUxpbmVTdHJpbmcoY29kZUZyYWdtZW50KSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZFNpbmdsZUxpbmVSZWdFeHAoY29kZUZyYWdtZW50
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0b2tlbikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lU2luZ2xlUXVvdGVTdHJpbmdTdGFy
dChjb2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuX3Npbmds
ZVF1b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lRG91YmxlUXVvdGVTdHJpbmdTdGFydChj
b2RlRnJhZ21lbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuX2RvdWJsZVF1
b3RlU3RyaW5nQ29udGludWVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHRva2VuID0gdGhpcy5maW5kTXVsdGlsaW5lUmVnRXhwU3RhcnQoY29kZUZyYWdtZW50KSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLl9yZWdleHBDb250aW51ZXMgPSB0cnVl
OworICAgIH0sCisgICAgCisgICAgbGV4OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
dG9rZW4gPSBudWxsOworICAgICAgICB2YXIgY29kZUZyYWdtZW50ID0gdGhpcy5saW5lQ29kZS5z
dWJzdHJpbmcodGhpcy5jdXJzb3IpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLnJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgcnVsZSA9IHRo
aXMucnVsZXNbaV07CisgICAgICAgICAgICB2YXIgcnVsZUNvbnRpbnVlU3RhdGVDb25kaXRpb24g
PSB0eXBlb2YgcnVsZS5jb250aW51ZVN0YXRlQ29uZGl0aW9uID09PSAidW5kZWZpbmVkIiA/IHRo
aXMuQ29udGludWVTdGF0ZS5Ob25lIDogcnVsZS5jb250aW51ZVN0YXRlQ29uZGl0aW9uOworICAg
ICAgICAgICAgaWYgKHRoaXMuY29udGludWVTdGF0ZSA9PT0gcnVsZUNvbnRpbnVlU3RhdGVDb25k
aXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJ1bGUuc3RhdGVDb25kaXRpb24g
IT09ICJ1bmRlZmluZWQiICYmIHRoaXMubGV4U3RhdGUgIT09IHJ1bGUuc3RhdGVDb25kaXRpb24p
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHZhciBtYXRj
aCA9IHJ1bGUucGF0dGVybi5leGVjKGNvZGVGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgaWYg
KG1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIHRva2VuID0gbWF0Y2hbMF07CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0b2tlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFy
dWxlLmRvbnRBcHBlbmROb25Ub2tlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LmFwcGVuZE5vblRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5h
Y3Rpb24uY2FsbCh0aGlzLCB0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0b2tlbikgewotICAg
ICAgICAgICAgICAgIGlmICh0bXAgIT09IGkpCi0gICAgICAgICAgICAgICAgICAgIGxpbmUuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29kZS5zdWJzdHJpbmcodG1wLCBpKSkp
OwotICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQodG9rZW4pOwotICAgICAgICAgICAg
ICAgIGkgKz0gdGhpcy5wcmV2aW91c01hdGNoTGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAgICB0
bXAgPSBpICsgMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICB0aGlzLm5vblRv
a2VuICs9IGNvZGVGcmFnbWVudFswXTsKKyAgICAgICAgdGhpcy5jdXJzb3IrKzsKKyAgICB9LAor
ICAgIAorICAgIGFwcGVuZE5vblRva2VuOiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMubm9uVG9rZW4ubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5ub25Ub2tlbikpOwor
ICAgICAgICAgICAgdGhpcy5ub25Ub2tlbiA9ICIiOworICAgICAgICB9CisgICAgfSwKKyAgICAK
KyAgICBzeW50YXhIaWdobGlnaHROb2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAg
dGhpcy5saW5lQ29kZSA9IG5vZGUudGV4dENvbnRlbnQ7CisgICAgICAgIHRoaXMubGluZUZyYWdt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICB0aGlzLmN1
cnNvciA9IDA7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5j
dXJzb3IgPj0gdGhpcy5saW5lQ29kZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29k
ZUZyYWdtZW50ID0gdGhpcy5saW5lQ29kZS5zdWJzdHJpbmcodGhpcy5jdXJzb3IpOworICAgICAg
ICAgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gY29kZUZyYWdtZW50OworICAgICAgICAgICAgICAg
IHRoaXMuY3Vyc29yICs9IGNvZGVGcmFnbWVudC5sZW5ndGg7CisgICAgICAgICAgICAgICAgdGhp
cy5hcHBlbmROb25Ub2tlbigpOworICAgICAgICAgICAgICAgIHdoaWxlIChub2RlLmZpcnN0Q2hp
bGQpCisgICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENoaWxk
KTsKKyAgICAgICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKHRoaXMubGluZUZyYWdtZW50KTsK
KyAgICAgICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudCA9bnVsbDsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRtcCA8IGNvZGUubGVuZ3Ro
KQotICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShj
b2RlLnN1YnN0cmluZyh0bXAsIGkpKSk7Ci0KLSAgICAgICAgaWYgKG1lc3NhZ2VCdWJibGUpCi0g
ICAgICAgICAgICBsaW5lLmFwcGVuZENoaWxkKG1lc3NhZ2VCdWJibGUpOworICAgICAgICAgICAg
dGhpcy5sZXgoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTAx
NDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MiBAQAorMjAwOS0xMC0yNyAgS2Vpc2hpIEhhdHRvcmkgIDxjYXNleS5oYXR0b3JpQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVk
IGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogaW5z
cGVjdG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQuaHRtbDogQWRk
ZWQuCisKIDIwMDktMTAtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvamF2YXNjcmlw
dC1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCBKYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgZGV0ZWN0
cyB0aGUgdG9rZW5zLgorCit3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkLHdlYmtpdC1qYXZhc2Ny
aXB0LXN0cmluZywqCit3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAKK3dlYmtpdC1qYXZhc2NyaXB0
LWNvbW1lbnQKK3dlYmtpdC1qYXZhc2NyaXB0LW51bWJlciwqLHdlYmtpdC1qYXZhc2NyaXB0LW51
bWJlciwqLHdlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCwqLHdlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZywqCit3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmcsKix3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIK
K3dlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQsKix3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIsd2Vi
a2l0LWphdmFzY3JpcHQtY29tbWVudCwqLHdlYmtpdC1qYXZhc2NyaXB0LW51bWJlcgord2Via2l0
LWphdmFzY3JpcHQtY29tbWVudCx3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAsKix3ZWJraXQtamF2
YXNjcmlwdC1zdHJpbmcsKgord2Via2l0LWphdmFzY3JpcHQtc3RyaW5nLCoKK3dlYmtpdC1qYXZh
c2NyaXB0LXN0cmluZywqCit3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmcsKgorKix3ZWJraXQtamF2
YXNjcmlwdC1jb21tZW50LCoKKwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2phdmFzY3Jp
cHQtc3ludGF4LWhpZ2hsaWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3Bl
Y3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJl
dmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBk
b2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG91dHB1
dChyZXN1bHRbaV0pOworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQorICAgIGV2YWx1YXRl
SW5XZWJJbnNwZWN0b3IoImRvaXRBbmREdW1wIiwgY2FsbGJhY2spOworfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgSmF2
YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyIGRldGVjdHMgdGhlIHRva2Vucy4KKzwvcD4K
KworPGRpdiBpZD0iZnJvbnRlbmQtc2NyaXB0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KK2Z1bmN0
aW9uIGRvaXRBbmREdW1wKHRlc3RDb250cm9sbGVyKSB7CisgICAgdGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBbXTsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdo
bGlnaHQoInJldHVybidmb28nOyIpKTsKKyAgICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhp
Z2hsaWdodCgiL1xcXC8vZyIpKTsKKyAgICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hs
aWdodCgiLy9pZyc7IikpOworICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0
KCIxIC8gMiArIC9hLy50ZXN0KCdhJyk7IikpOworICAgICAgICByZXN1bHQucHVzaChkdW1wU3lu
dGF4SGlnaGxpZ2h0KCJcIlxcXCIvXCIubGVuZ3RoIC8gMiIpKTsKKyAgICAgICAgcmVzdWx0LnB1
c2goZHVtcFN5bnRheEhpZ2hsaWdodCgidmFyIGZvbyA9IDEvKi8qKiovLzIiKSk7CisgICAgICAg
IHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIi8qY29tbWVudCovLy4qLy50ZXN0KCdh
JykiKSk7CisgICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIidmXFxcbm9v
JzsiKSk7CisgICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIidcXGZcXGJc
XHQnOyIpKTsKKyAgICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hsaWdodCgiJy9cXFxu
Lyc7IikpOworICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCJmb28vKipc
bi9cbiovZm9vIikpOworICAgICAgICAKKyAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZShyZXN1bHQpOworICAgICAgICAKKyAgICB9LCAwKTsKK30KK2Z1bmN0aW9uIGR1bXBTeW50YXhI
aWdobGlnaHQoc3RyKSB7CisgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgbm9kZS50ZXh0Q29udGVudCA9IHN0cjsKKyAgICB2YXIgamF2YXNjcmlwdFN5
bnRheEhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4
SGlnaGxpZ2h0ZXIobnVsbCwgbnVsbCk7CisgICAgamF2YXNjcmlwdFN5bnRheEhpZ2hsaWdodGVy
LnN5bnRheEhpZ2hsaWdodE5vZGUobm9kZSk7CisgICAgdmFyIG5vZGVfcGFydHMgPSBbXTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgeworICAg
ICAgICBpZiAobm9kZS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSkgeworICAgICAgICAgICAg
bm9kZV9wYXJ0cy5wdXNoKG5vZGUuY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImNsYXNzIikp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm9kZV9wYXJ0cy5wdXNoKCIqIik7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG5vZGVfcGFydHMuam9pbigiLCIpOworfQorPC9k
aXY+CisKKzxkaXYgaWQ9Im91dHB1dCI+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="23429"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="23430"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>