<?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>159380</bug_id>
          
          <creation_ts>2016-07-01 18:30:56 -0700</creation_ts>
          <short_desc>Web Inspector: ER: Copy as cURL</short_desc>
          <delta_ts>2022-06-02 00:01:38 -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</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=241216</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Johan K. Jensen">jj</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jj</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207391</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-01 18:30:56 -0700</bug_when>
    <thetext>Summary:
This is a frequent request for developers that want to test network / server side issues.

Other browser tools, like Firefox and Chrome have &quot;Copy as cURL&quot; functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207392</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-01 18:31:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/17508156&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208067</commentid>
    <comment_count>2</comment_count>
      <attachid>282849</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-05 21:12:34 -0700</bug_when>
    <thetext>Created attachment 282849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208069</commentid>
    <comment_count>3</comment_count>
      <attachid>282849</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-05 21:47:40 -0700</bug_when>
    <thetext>Comment on attachment 282849
Patch

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

I know you wrote tests for this! So r- until we see the tests. And try to rebaseline (update your repository) so the patch applies on the bots.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:687
&gt; +         * Credit: Google DevTools

The Copyright at the top should be enough.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:709
&gt; +                return &quot;&apos;&quot; + str + &quot;&apos;&quot;;

Style: Using template strings this reads better:

    return `&apos;${str}&apos;`;

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js:154
&gt; +        let disableFocus = false;
&gt; +        contextMenu.appendItem(WebInspector.UIString(&quot;Copy as cURL&quot;), () =&gt; {
&gt; +            this._resource.generateCURLCommand();
&gt; +        }, disableFocus);

You can leave off the boolean, enabled is the default. This could just be:

    contextMenu.appendItem(WebInspector.UIString(&quot;Copy as cURL&quot;), () =&gt; { this._resource.generateCURLCommand(); });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208070</commentid>
    <comment_count>4</comment_count>
      <attachid>282850</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-05 21:47:49 -0700</bug_when>
    <thetext>Created attachment 282850
Patch

New patch, now with tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208071</commentid>
    <comment_count>5</comment_count>
      <attachid>282851</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-05 21:53:45 -0700</bug_when>
    <thetext>Created attachment 282851
Patch

Updated with feedback from review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208072</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-05 21:54:47 -0700</bug_when>
    <thetext>Attachment 282851 did not pass style-queue:


ERROR: Source/WebInspectorUI/UserInterface/Models/Resource.js:708:  Line contains single-quote character.  [js/syntax] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208831</commentid>
    <comment_count>7</comment_count>
      <attachid>282851</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-07 15:28:44 -0700</bug_when>
    <thetext>Comment on attachment 282851
Patch

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

Nice! r=me

&gt; Source/WebInspectorUI/ChangeLog:6
&gt; +        Reviewed by Joseph Pecoraro.

This is not yet reviewed by me, so it should have the NOBODY OOPS line here.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:687
&gt; +        /**
&gt; +         * Escape util function for POSIX oriented operating systems.
&gt; +         */

This is just repeating the name of the function, no need of this comment.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:696
&gt; +            function escapeCharacter(x) {
&gt; +                let code = x.charCodeAt(0);
&gt; +                if (code &lt; 256) {
&gt; +                    // Add leading zero when needed to not care about the next character.
&gt; +                    return code &lt; 16 ? &quot;\\x0&quot; + code.toString(16) : &quot;\\x&quot; + code.toString(16);
&gt; +                }
&gt; +                code = code.toString(16);
&gt; +                return &quot;\\u&quot; + (&quot;0000&quot; + code).substr(code.length, 4);

This could reach much nicer as:

    let code = x.charCodeAt(0);
    let hex = code.toString(16);
    if (code &lt; 16)
        return &quot;\\x0&quot; + hex;
    if (code &lt; 256)
        return &quot;\\x&quot; + hex;
    return &quot;\\u&quot; + (&quot;0000&quot; + hex).substr(hex.length, 4);

And it might be even better with a leftPad like function.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:699
&gt; +            if (/[^\x20-\x7E]|\&apos;/.test(str)) {

Should be no need to escape this single quote.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:701
&gt; +                return &quot;$\&apos;&quot; + str.replace(/\\/g, &quot;\\\\&quot;)

Should be no need to escape this single quote.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:702
&gt; +                                  .replace(/\&apos;/g, &quot;\\\&apos;&quot;)

This could be:

    .replace(/&apos;/g, &quot;\\&apos;&quot;)

Escaping a single quote in the JavaScript RegExp or string does nothing.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:712
&gt; +        var command = [&quot;curl &quot; + escapeStringPosix(this.url).replace(/[[{}\]]/g, &quot;\\$&amp;&quot;)];

Style: `let` instead of `var`

&gt; LayoutTests/http/tests/inspector/network/copy-as-curl.html:33
&gt; +    request.open(&quot;GET&quot;, &quot;resources/url?utf8=ð&quot;, true);

This html file should probably have the appropriate meta tag if you are embedding UTF8 content in it:

  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;

&gt; LayoutTests/http/tests/inspector/network/copy-as-curl.html:108
&gt; +                InspectorTest.expectThat(curl.find((cmd) =&gt; cmd.includes(&apos;X-Custom1&apos;)) === &quot;-H &apos;X-Custom1: test1&apos;&quot;, &quot;Command should have correct custom header 1.&quot;);
&gt; +                InspectorTest.expectThat(curl.find((cmd) =&gt; cmd.includes(&apos;X-Custom2&apos;)) === &quot;-H $&apos;X-Custom2\\&apos;%: \\&apos;Test\\&apos;\\&apos;1\\\\\\&apos;2&apos;&quot;, &quot;Command should have correct custom header 2.&quot;);
&gt; +                InspectorTest.expectThat(curl.find((cmd) =&gt; cmd.includes(&apos;X-Custom3&apos;)) === &quot;-H $&apos;X-Custom3: \\&apos;${PWD}&apos;&quot;, &quot;Command should have correct custom header 3.&quot;);

Nice! This is easy to read!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208843</commentid>
    <comment_count>8</comment_count>
      <attachid>282851</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-07 15:41:01 -0700</bug_when>
    <thetext>Comment on attachment 282851
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:696
&gt;&gt; +                return &quot;\\u&quot; + (&quot;0000&quot; + code).substr(code.length, 4);
&gt; 
&gt; This could reach much nicer as:
&gt; 
&gt;     let code = x.charCodeAt(0);
&gt;     let hex = code.toString(16);
&gt;     if (code &lt; 16)
&gt;         return &quot;\\x0&quot; + hex;
&gt;     if (code &lt; 256)
&gt;         return &quot;\\x&quot; + hex;
&gt;     return &quot;\\u&quot; + (&quot;0000&quot; + hex).substr(hex.length, 4);
&gt; 
&gt; And it might be even better with a leftPad like function.

Even better, String.prototype.padStart exists!

    let code = x.charCodeAt(0);
    let hex = code.toString(16);
    if (code &lt; 256)
        return &quot;\\x&quot; + hex.padStart(2, &quot;0&quot;);
    return &quot;\\u&quot; + hax.padStart(4, &quot;0&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209265</commentid>
    <comment_count>9</comment_count>
      <attachid>283197</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-08 13:59:03 -0700</bug_when>
    <thetext>Created attachment 283197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209266</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 14:00:43 -0700</bug_when>
    <thetext>Attachment 283197 did not pass style-queue:


ERROR: Source/WebInspectorUI/UserInterface/Models/Resource.js:703:  Line contains single-quote character.  [js/syntax] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209714</commentid>
    <comment_count>11</comment_count>
      <attachid>283197</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-11 11:33:45 -0700</bug_when>
    <thetext>Comment on attachment 283197
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:696
&gt; +                return &quot;$\&apos;&quot; + str.replace(/\\/g, &quot;\\\\&quot;)

Can still remove the \ in \&apos; here.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:720
&gt; +        let curlCommand = command.join(&quot; \\\n&quot;);

I wonder if we should have some extra whitespace here.

So instead of:

    curl &apos;foo&apos; \
    -XGET \
    -H &apos;Accept: */*&apos; \
    ...

We would get:

    curl &apos;foo&apos; \
        -XGET \
        -H &apos;Accept: */*&apos; \
        ...

Not too important though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210103</commentid>
    <comment_count>12</comment_count>
      <attachid>283430</attachid>
    <who name="Johan K. Jensen">jj</who>
    <bug_when>2016-07-12 11:17:36 -0700</bug_when>
    <thetext>Created attachment 283430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210104</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-12 11:19:55 -0700</bug_when>
    <thetext>Attachment 283430 did not pass style-queue:


ERROR: Source/WebInspectorUI/UserInterface/Models/Resource.js:703:  Line contains single-quote character.  [js/syntax] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210180</commentid>
    <comment_count>14</comment_count>
      <attachid>283430</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-12 15:00:34 -0700</bug_when>
    <thetext>Comment on attachment 283430
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210198</commentid>
    <comment_count>15</comment_count>
      <attachid>283430</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-12 15:22:18 -0700</bug_when>
    <thetext>Comment on attachment 283430
Patch

Clearing flags on attachment: 283430

Committed r203132: &lt;http://trac.webkit.org/changeset/203132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210199</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-12 15:22:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282849</attachid>
            <date>2016-07-05 21:12:34 -0700</date>
            <delta_ts>2016-07-05 21:47:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159380-20160705211201.patch</filename>
            <type>text/plain</type>
            <size>5835</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ZmJmMTQzZTgyYWNiOGFhMmFkYmUyZjE4ZTRlZWUwNzUzMWY1N2RlLi5lM2RkNTc0MzRlY2Y5MzJk
MmM5Y2JiNGI1MjU4Y2U3NWRlOWVkNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNi0wNy0wNSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGlyZWQgYnkg
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL2I3YzExMTVk
YmFlNjUwMzBhZDk2ZTc3M2Q5YTI3MDQ2NWEwNWY1YzQvdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9kZXZ0b29scy9mcm9udF9lbmQvbmV0d29yay9OZXR3b3JrTG9nVmlldy5qcworCisgICAgICAg
IFRoaXMgIkNvcHkgYXMgY1VSTCIgZmVhdHVyZSBvbmx5IGFwcHJveGltYXRlcyB0aGUgb3JpZ2lu
YWwgcmVxdWVzdCBhcyBvbmx5IHNvbWUgcGFydHMgb2YKKyAgICAgICAgdGhhdCByZXF1ZXN0IGlz
IGtub3duIHRvIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuZ2Vu
ZXJhdGVDVVJMQ29tbWFuZC5lc2NhcGVTdHJpbmdQb3NpeC5lc2NhcGVDaGFyYWN0ZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZW5lcmF0ZUNVUkxDb21tYW5k
LmVzY2FwZVN0cmluZ1Bvc2l4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90
b3R5cGUuZ2VuZXJhdGVDVVJMQ29tbWFuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zKToKKwogMjAxNi0wNi0yOCAg
QnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBR
dWlja0NvbnNvbGUgc2hvdWxkIHVwZGF0ZSBpdHMgc2VsZWN0aW9uIHdoZW4gUnVudGltZU1hbmFn
ZXIuZGVmYXVsdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNoYW5nZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDU4YzdkMzFmMjdhMzMxZjczYWFmOGRhN2U2ZWJjZjI3
YWIxMzllNDEuLmNjOWU4MTY4MzUyODdkYmNhNDdjYmRlMDBiYmZkZjgzODE2YjIzMjAgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDQKemNtVit7ME1xfUokT1pieTErZExvbGgwUU0zdDwz
cjAzWk5rMDk2MXxsWHpKbDBiYFR3bFFEeklTK35ocTBaUiZzCkNjTSF6QAoKZGVsdGEgMTgKYWNt
ZXgkZl8ySVgpKHZNUG5+a0hrOCVIc15heyZOWG5GcGwrCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmluZGV4IDA1ZjFj
OGQwZDRkZGI2YmQ3YzA4YjNiOWI3Yjg3ODIxZTlkYjA2NjMuLjBlZTE0ZWEzZTYwMTgzNWU3ZjQ0
NDg1OWE2N2NmM2NhNjJhODlhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NzgsNiArNjc5LDU0IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGUKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5SZXNvdXJjZS5VUkxDb29raWVLZXld
ID0gdGhpcy51cmwuaGFzaDsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5SZXNvdXJjZS5N
YWluUmVzb3VyY2VDb29raWVLZXldID0gdGhpcy5pc01haW5SZXNvdXJjZSgpOwogICAgIH0KKwor
ICAgIGdlbmVyYXRlQ1VSTENvbW1hbmQoKQorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAq
IEVzY2FwZSB1dGlsIGZ1bmN0aW9uIGZvciBQT1NJWCBvcmllbnRlZCBvcGVyYXRpbmcgc3lzdGVt
cy4KKyAgICAgICAgICogQ3JlZGl0OiBHb29nbGUgRGV2VG9vbHMKKyAgICAgICAgICovCisgICAg
ICAgIGZ1bmN0aW9uIGVzY2FwZVN0cmluZ1Bvc2l4KHN0cikgeworICAgICAgICAgICAgZnVuY3Rp
b24gZXNjYXBlQ2hhcmFjdGVyKHgpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHguY2hh
ckNvZGVBdCgwKTsKKyAgICAgICAgICAgICAgICBpZiAoY29kZSA8IDI1NikgeworICAgICAgICAg
ICAgICAgICAgICAvLyBBZGQgbGVhZGluZyB6ZXJvIHdoZW4gbmVlZGVkIHRvIG5vdCBjYXJlIGFi
b3V0IHRoZSBuZXh0IGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGUg
PCAxNiA/ICJcXHgwIiArIGNvZGUudG9TdHJpbmcoMTYpIDogIlxceCIgKyBjb2RlLnRvU3RyaW5n
KDE2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUudG9T
dHJpbmcoMTYpOworICAgICAgICAgICAgICAgIHJldHVybiAiXFx1IiArICgiMDAwMCIgKyBjb2Rl
KS5zdWJzdHIoY29kZS5sZW5ndGgsIDQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoL1teXHgyMC1ceDdFXXxcJy8udGVzdChzdHIpKSB7CisgICAgICAgICAgICAgICAgLy8gVXNl
IEFOU0ktQyBxdW90aW5nIHN5bnRheC4KKyAgICAgICAgICAgICAgICByZXR1cm4gIiRcJyIgKyBz
dHIucmVwbGFjZSgvXFwvZywgIlxcXFwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5yZXBsYWNlKC9cJy9nLCAiXFxcJyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoL1xuL2csICJcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5yZXBsYWNlKC9cci9nLCAiXFxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAucmVwbGFjZSgvW15ceDIwLVx4N0VdL2csIGVzY2FwZUNoYXJhY3RlcikgKyAiJyI7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFVzZSBzaW5nbGUgcXVv
dGUgc3ludGF4LgorICAgICAgICAgICAgICAgIHJldHVybiAiJyIgKyBzdHIgKyAiJyI7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgY29tbWFuZCA9IFsiY3VybCAiICsg
ZXNjYXBlU3RyaW5nUG9zaXgodGhpcy51cmwpLnJlcGxhY2UoL1tbe31cXV0vZywgIlxcJCYiKV07
CisgICAgICAgIGNvbW1hbmQucHVzaChgLVgke3RoaXMucmVxdWVzdE1ldGhvZH1gKTsKKworICAg
ICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5yZXF1ZXN0SGVhZGVycykKKyAgICAgICAgICAgIGNv
bW1hbmQucHVzaCgiLUggIiArIGVzY2FwZVN0cmluZ1Bvc2l4KGAke2tleX06ICR7dGhpcy5yZXF1
ZXN0SGVhZGVyc1trZXldfWApKTsKKworICAgICAgICBpZiAodGhpcy5yZXF1ZXN0RGF0YUNvbnRl
bnRUeXBlICYmIHRoaXMucmVxdWVzdE1ldGhvZCAhPT0gIkdFVCIgJiYgdGhpcy5yZXF1ZXN0RGF0
YSkgeworICAgICAgICAgICAgaWYgKHRoaXMucmVxdWVzdERhdGFDb250ZW50VHlwZS5tYXRjaCgv
XmFwcGxpY2F0aW9uXC94LXd3dy1mb3JtLXVybGVuY29kZWRccyooOy4qKT8kL2kpKQorICAgICAg
ICAgICAgICAgIGNvbW1hbmQucHVzaCgiLS1kYXRhICIgKyBlc2NhcGVTdHJpbmdQb3NpeCh0aGlz
LnJlcXVlc3REYXRhKSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21tYW5k
LnB1c2goIi0tZGF0YS1iaW5hcnkgIiArIGVzY2FwZVN0cmluZ1Bvc2l4KHRoaXMucmVxdWVzdERh
dGEpKQorICAgICAgICB9CisKKyAgICAgICAgbGV0IGN1cmxDb21tYW5kID0gY29tbWFuZC5qb2lu
KCIgXFxcbiIpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoY3VybENv
bW1hbmQpOworICAgICAgICByZXR1cm4gY3VybENvbW1hbmQ7CisgICAgfQogfTsKIAogV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGVJZGVudGlmaWVyID0gInJlc291cmNlIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGZmZDEzMGRiYTMyNDEx
NmFjMzYwZGViMTZjMTJmNmNlMjY0YmE0ZDguLmJjOTFlMzY4NjQ1ZDQ0YWU1YTI2M2EyMTBiMzc0
YzJhNjQ0ODhmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlk
Tm9kZS5qcwpAQCAtMTQ2LDYgKzE0NiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGlu
ZURhdGFHcmlkTm9kZSA9IGNsYXNzIFJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgZQogICAg
ICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlJlc291cmNlSWNv
blN0eWxlQ2xhc3NOYW1lLCB0aGlzLnJlc291cmNlLnR5cGVdOwogICAgIH0KIAorICAgIGFwcGVu
ZENvbnRleHRNZW51SXRlbXMoY29udGV4dE1lbnUpCisgICAgeworICAgICAgICBsZXQgZGlzYWJs
ZUZvY3VzID0gZmFsc2U7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb3B5IGFzIGNVUkwiKSwgKCkgPT4geworICAgICAgICAgICAgdGhpcy5f
cmVzb3VyY2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpOworICAgICAgICB9LCBkaXNhYmxlRm9jdXMp
OworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZmlsdGVyYWJsZURhdGFGb3JDb2x1
bW4oY29sdW1uSWRlbnRpZmllcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282850</attachid>
            <date>2016-07-05 21:47:49 -0700</date>
            <delta_ts>2016-07-05 21:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159380-20160705214719.patch</filename>
            <type>text/plain</type>
            <size>17166</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
ZTJjMjVhMmI1Mzg3YTgwMjEwMDdmMTE3YzBiZDZhMDgxMTg1ZTU3Li4yMTQzMDQ2ZTcyYjViMTJm
NDJlMTZkNzQwZjYzYjYxOWRjOTc3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wNy0wNSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGlyZWQgYnkg
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL2I3YzExMTVk
YmFlNjUwMzBhZDk2ZTc3M2Q5YTI3MDQ2NWEwNWY1YzQvdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9kZXZ0b29scy9mcm9udF9lbmQvbmV0d29yay9OZXR3b3JrTG9nVmlldy5qcworCisgICAgICAg
IFRoaXMgIkNvcHkgYXMgY1VSTCIgZmVhdHVyZSBvbmx5IGFwcHJveGltYXRlcyB0aGUgb3JpZ2lu
YWwgcmVxdWVzdCBhcyBvbmx5IHNvbWUgcGFydHMgb2YKKyAgICAgICAgdGhhdCByZXF1ZXN0IGlz
IGtub3duIHRvIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5n
ZW5lcmF0ZUNVUkxDb21tYW5kLmVzY2FwZVN0cmluZ1Bvc2l4LmVzY2FwZUNoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdlbmVyYXRlQ1VSTENvbW1h
bmQuZXNjYXBlU3RyaW5nUG9zaXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5nZW5lcmF0ZUNVUkxDb21tYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMpOgorCiAyMDE2LTA3LTA1
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTd2l0Y2ggbGFzdCB1c2VzIG9mIC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCkgdG8g
bGluZWFyLWdyYWRpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDQ4
MmI2YWMwZjIwYjlmYTFhNjgxOTE2OWE5NGI1MzcyZGVhNTE5NGQuLmFhYjQyNmMwYzUxYjMyMDdh
MjlkZmUyNWE5OWY3YWI3YWZkZjA5MmIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTAK
emNtWD9pbnN2KD0pKHdlS2xZZDlAdXFRS3dHNlhVQk9iJjw/WEhSNChXPjg+QXA0PjNTYUJfWSRU
WFM7TV9UKHRXCkdZO0ZNM2ZlYGlwCgpkZWx0YSAxOAphY21kbVRoVnxUTykod2VLJkJ2cCpBQ0Y/
cDxwdXkqeENuIyoKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggMDVmMWM4ZDBkNGRkYjZiZDdjMDhiM2I5Yjdi
ODc4MjFlOWRiMDY2My4uMGVlMTRlYTNlNjAxODM1ZTdmNDQ0ODU5YTY3Y2YzY2E2MmE4OWE0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jl
c291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9SZXNvdXJjZS5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY3OCw2ICs2NzksNTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gY2xhc3Mg
UmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAgICAgICBjb29raWVb
V2ViSW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleV0gPSB0aGlzLnVybC5oYXNoOwogICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJjZUNvb2tpZUtleV0g
PSB0aGlzLmlzTWFpblJlc291cmNlKCk7CiAgICAgfQorCisgICAgZ2VuZXJhdGVDVVJMQ29tbWFu
ZCgpCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogRXNjYXBlIHV0aWwgZnVuY3Rpb24g
Zm9yIFBPU0lYIG9yaWVudGVkIG9wZXJhdGluZyBzeXN0ZW1zLgorICAgICAgICAgKiBDcmVkaXQ6
IEdvb2dsZSBEZXZUb29scworICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZXNjYXBlU3Ry
aW5nUG9zaXgoc3RyKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBlc2NhcGVDaGFyYWN0ZXIoeCkg
eworICAgICAgICAgICAgICAgIGxldCBjb2RlID0geC5jaGFyQ29kZUF0KDApOworICAgICAgICAg
ICAgICAgIGlmIChjb2RlIDwgMjU2KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBsZWFk
aW5nIHplcm8gd2hlbiBuZWVkZWQgdG8gbm90IGNhcmUgYWJvdXQgdGhlIG5leHQgY2hhcmFjdGVy
LgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZSA8IDE2ID8gIlxceDAiICsgY29kZS50
b1N0cmluZygxNikgOiAiXFx4IiArIGNvZGUudG9TdHJpbmcoMTYpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjb2RlID0gY29kZS50b1N0cmluZygxNik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuICJcXHUiICsgKCIwMDAwIiArIGNvZGUpLnN1YnN0cihjb2RlLmxlbmd0aCwg
NCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgvW15ceDIwLVx4N0VdfFwnLy50
ZXN0KHN0cikpIHsKKyAgICAgICAgICAgICAgICAvLyBVc2UgQU5TSS1DIHF1b3Rpbmcgc3ludGF4
LgorICAgICAgICAgICAgICAgIHJldHVybiAiJFwnIiArIHN0ci5yZXBsYWNlKC9cXC9nLCAiXFxc
XCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wnL2csICJc
XFwnIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXG4vZywg
IlxcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xyL2cs
ICJcXHIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXlx4
MjAtXHg3RV0vZywgZXNjYXBlQ2hhcmFjdGVyKSArICInIjsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gVXNlIHNpbmdsZSBxdW90ZSBzeW50YXguCisgICAgICAgICAg
ICAgICAgcmV0dXJuICInIiArIHN0ciArICInIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHZhciBjb21tYW5kID0gWyJjdXJsICIgKyBlc2NhcGVTdHJpbmdQb3NpeCh0aGlz
LnVybCkucmVwbGFjZSgvW1t7fVxdXS9nLCAiXFwkJiIpXTsKKyAgICAgICAgY29tbWFuZC5wdXNo
KGAtWCR7dGhpcy5yZXF1ZXN0TWV0aG9kfWApOworCisgICAgICAgIGZvciAobGV0IGtleSBpbiB0
aGlzLnJlcXVlc3RIZWFkZXJzKQorICAgICAgICAgICAgY29tbWFuZC5wdXNoKCItSCAiICsgZXNj
YXBlU3RyaW5nUG9zaXgoYCR7a2V5fTogJHt0aGlzLnJlcXVlc3RIZWFkZXJzW2tleV19YCkpOwor
CisgICAgICAgIGlmICh0aGlzLnJlcXVlc3REYXRhQ29udGVudFR5cGUgJiYgdGhpcy5yZXF1ZXN0
TWV0aG9kICE9PSAiR0VUIiAmJiB0aGlzLnJlcXVlc3REYXRhKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlLm1hdGNoKC9eYXBwbGljYXRpb25cL3gtd3d3LWZv
cm0tdXJsZW5jb2RlZFxzKig7LiopPyQvaSkpCisgICAgICAgICAgICAgICAgY29tbWFuZC5wdXNo
KCItLWRhdGEgIiArIGVzY2FwZVN0cmluZ1Bvc2l4KHRoaXMucmVxdWVzdERhdGEpKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbW1hbmQucHVzaCgiLS1kYXRhLWJpbmFyeSAi
ICsgZXNjYXBlU3RyaW5nUG9zaXgodGhpcy5yZXF1ZXN0RGF0YSkpCisgICAgICAgIH0KKworICAg
ICAgICBsZXQgY3VybENvbW1hbmQgPSBjb21tYW5kLmpvaW4oIiBcXFxuIik7CisgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dChjdXJsQ29tbWFuZCk7CisgICAgICAgIHJldHVy
biBjdXJsQ29tbWFuZDsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZUlk
ZW50aWZpZXIgPSAicmVzb3VyY2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVE
YXRhR3JpZE5vZGUuanMKaW5kZXggZmZkMTMwZGJhMzI0MTE2YWMzNjBkZWIxNmMxMmY2Y2UyNjRi
YTRkOC4uYmM5MWUzNjg2NDVkNDRhZTVhMjYzYTIxMGIzNzRjMmE2NDQ4OGY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1l
bGluZURhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xNDYsNiArMTQ2
LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3Mg
UmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSBlCiAgICAgICAgIHJldHVybiBbV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05hbWUsIHRoaXMu
cmVzb3VyY2UudHlwZV07CiAgICAgfQogCisgICAgYXBwZW5kQ29udGV4dE1lbnVJdGVtcyhjb250
ZXh0TWVudSkKKyAgICB7CisgICAgICAgIGxldCBkaXNhYmxlRm9jdXMgPSBmYWxzZTsKKyAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgYXMg
Y1VSTCIpLCAoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5nZW5lcmF0ZUNVUkxD
b21tYW5kKCk7CisgICAgICAgIH0sIGRpc2FibGVGb2N1cyk7CisgICAgfQorCiAgICAgLy8gUHJv
dGVjdGVkCiAKICAgICBmaWx0ZXJhYmxlRGF0YUZvckNvbHVtbihjb2x1bW5JZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDMyYTYzOGVhODhhNDM2YjZiMjZiOTAzNDQwZWRhMjdjZDhjOTVhYjguLmE4Y2FiZTk1
ZmFiNTc3OTk0ODE1MmE5NTFjMDQ2ZWM3MjU4MTkyNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNi0wNy0wNSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAgICAgICBSZXZpZXdl
ZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2NvcHktYXMtY3VybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29weS1hcy1jdXJsLmh0bWw6IEFkZGVkLgorCiAyMDE2
LTA3LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgVGhy
b3cgZXhjZXB0aW9ucyBmb3IgaW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIENvbnZvbHZl
ck5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvY29weS1hcy1jdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvY29weS1hcy1jdXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGU0
OTkxMDVjZjI0OTc5MTI5NGU5NDZiMzI0MjMwMDk4ZGE4NmY3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1cmwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3RzIHRoYXQgIkNvcHkgYXMgY1VSTCIgcmV0
dXJucyB2YWxpZCBQT1NJWCBvdXRwdXQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBHZW5l
cmF0ZUNVUkxWYWxpZFBPU0lYT3V0cHV0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogU2ltcGxlVVJM
R2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBjb250YWluIFVSTC4KK1BBU1M6IENv
bW1hbmQgc2hvdWxkIGJlIGEgR0VUIHJlcXVlc3QuCitQQVNTOiBDb21tYW5kIHNob3VsZCBjb250
YWluIFVzZXItQWdlbnQgaGVhZGVyLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU3BlY2lhbFVS
TEdlbmVyYXRlQ1VSTAorUEFTUzogQ29tbWFuZCBzaG91bGQgY29udGFpbiB2YWxpZCBQT1NJWCBl
c2NhcGVkIFVSTC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNwZWNpYWxIZWFkZXJzR2VuZXJh
dGVDVVJMVmFsaWRQT1NJWE91dHB1dAorUEFTUzogQ29tbWFuZCBzaG91bGQgaGF2ZSBjb3JyZWN0
IGN1c3RvbSBoZWFkZXIgMS4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBjdXN0
b20gaGVhZGVyIDIuCitQQVNTOiBDb21tYW5kIHNob3VsZCBoYXZlIGNvcnJlY3QgY3VzdG9tIGhl
YWRlciAzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVVJMV2l0aFVURjhHZW5lcmF0ZUNVUkwK
K1BBU1M6IENvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJMIHdpdGggVVRGOCBjaGFyYWN0ZXJzLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogUE9TVFJlcXVlc3RVUkxFbmNvZGVkRGF0YUdlbmVyYXRl
Q1VSTAorUEFTUzogQ29tbWFuZCBzaG91bGQgYmUgYSBQT1NUIHJlcXVlc3QuCitQQVNTOiBDb21t
YW5kIHNob3VsZCBoYXZlIGNvcnJlY3QgQ29udGVudC1UeXBlLgorUEFTUzogQ29tbWFuZCBzaG91
bGQgY29udGFpbiBjb3JyZWN0IGRhdGEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQT1NUUmVx
dWVzdFVSTEVuY29kZWREYXRhVVRGOEdlbmVyYXRlQ1VSTAorUEFTUzogQ29tbWFuZCBzaG91bGQg
Y29udGFpbiBVUkwgd2l0aCBVVEY4IGNoYXJhY3RlcnMuCitQQVNTOiBDb21tYW5kIHNob3VsZCBj
b250YWluIGNvcnJlY3QgVVRGOCBkYXRhLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogUFVUUmVx
dWVzdFdpdGhKU09OR2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBiZSBhIFBVVCBy
ZXF1ZXN0LgorUEFTUzogQ29tbWFuZCBzaG91bGQgaGF2ZSBKU09OIENvbnRlbnQtVHlwZS4KK1BB
U1M6IENvbW1hbmQgc2hvdWxkIGNvbnRhaW4gY29ycmVjdCBKU09OIGRhdGEuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29weS1hcy1jdXJs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NvcHktYXMt
Y3VybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1Y2M0ZmY1YmM2NTBkYzg3OTExMGJhMDJkNGE2MDBkM2Jk
Y2VmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2NvcHktYXMtY3VybC5odG1sCkBAIC0wLDAgKzEsMTg2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBjcmVhdGVTaW1wbGVHRVRS
ZXF1ZXN0KCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAg
IHJlcXVlc3Qub3BlbigiR0VUIiwgInJlc291cmNlcy91cmw/cXVlcnk9dHJ1ZSIsIHRydWUpOwor
ICAgIHJlcXVlc3Quc2VuZCgpOworfQorCitmdW5jdGlvbiBjcmVhdGVHRVRSZXF1ZXN0V2l0aFNw
ZWNpYWxVUkwoKQoreworICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgcmVxdWVzdC5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3VybCd3aXRoJHNwZWNpYWx7MS4uMjB9
Y2hhcnNbXSAuaHRtbCIsIHRydWUpOworICAgIHJlcXVlc3Quc2VuZCgpOworfQorCitmdW5jdGlv
biBjcmVhdGVHRVRSZXF1ZXN0V2l0aFNwZWNpYWxDaGFyc0luSGVhZGVycygpCit7CisgICAgdmFy
IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXF1ZXN0Lm9wZW4oIkdFVCIs
ICJyZXNvdXJjZXMvdXJsIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJY
LUN1c3RvbTEiLCAidGVzdDEiKTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIlgtQ3Vz
dG9tMiclIiwgIlwnVGVzdCdcJzFcXCcyIik7CisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVy
KCJYLUN1c3RvbTMiLCAiXCcke1BXRH0iKTsKKyAgICByZXF1ZXN0LnNlbmQoKTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlR0VUUmVxdWVzdFdpdGhVVEY4KCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgInJlc291cmNlcy91
cmw/dXRmOD3wn5GNIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZW5kKCk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZVBPU1RSZXF1ZXN0V2l0aFVSTEVuY29kZWREYXRhKCkKK3sKKyAgICB2YXIgcmVxdWVz
dCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbigiUE9TVCIsICJyZXNv
dXJjZXMvdXJsIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50
LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CisgICAgcmVxdWVz
dC5zZW5kKCJsb3JlbT1pcHN1bSYkZG9sb3I9J3NpdCcmYW1ldD17MS4uMjB9Iik7Cit9CisKK2Z1
bmN0aW9uIGNyZWF0ZVBPU1RSZXF1ZXN0V2l0aFVURjgoKQoreworICAgIHZhciByZXF1ZXN0ID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC5vcGVuKCJQT1NUIiwgInJlc291cmNl
cy91cmw/dXRmOD3wn5GNIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CisgICAg
cmVxdWVzdC5zZW5kKCLwn4yoPeKbhO+4jyIpOworfQorCitmdW5jdGlvbiBjcmVhdGVQVVRSZXF1
ZXN0V2l0aEpTT04oKQoreworICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CisgICAgcmVxdWVzdC5vcGVuKCJQVVQiLCAicmVzb3VyY2VzL3VybCIsIHRydWUpOworICAgIHJl
cXVlc3Quc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24i
KTsKKyAgICByZXF1ZXN0LnNlbmQoIntcInVwZGF0ZVwiOlwibm93XCJ9Iik7Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiR2VuZXJhdGVDVVJMVmFsaWRQT1NJWE91dHB1dCIpOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiU2ltcGxlVVJMR2VuZXJhdGVDVVJMIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJHZW5lcmF0ZSBjVVJMIGNvbW1hbmQgZnJvbSBhIHNpbXBsZSBVUkwuIiwK
KyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlU2ltcGxlR0VUUmVxdWVzdCgpIik7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIChldmVudCkgPT4geworICAgICAg
ICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAg
ICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5nZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQoIiBc
XFxuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFsw
XS5tYXRjaCgiaHR0cHM/Oi8vLio/L3Jlc291cmNlcy91cmxcXD9xdWVyeT10cnVlIikgIT09IG51
bGwsICJDb21tYW5kIHNob3VsZCBjb250YWluIFVSTC4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFsxXSA9PT0gIi1YR0VUIiwgIkNvbW1hbmQgc2hvdWxk
IGJlIGEgR0VUIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQuaW5jbHVkZXMoJ1VzZXItQWdlbnQnKSkgIT09
IG51bGwsICJDb21tYW5kIHNob3VsZCBjb250YWluIFVzZXItQWdlbnQgaGVhZGVyLiIpOworICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTcGVjaWFsVVJM
R2VuZXJhdGVDVVJMIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZW5lcmF0ZSBjVVJMIGNvbW1h
bmQgZnJvbSBhIFVSTCBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycy4iLAorICAgICAgICB0
ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJjcmVhdGVHRVRSZXF1ZXN0V2l0aFNwZWNpYWxVUkwoKSIpOworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291cmNlOworICAgICAgICAgICAg
ICAgIGxldCBjdXJsID0gcmVzb3VyY2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxc
biIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmxbMF0u
bWF0Y2goImh0dHBzPzovLy4qPy9yZXNvdXJjZXMvdXJsXFxcXCd3aXRoXFwkc3BlY2lhbFxcXFx7
MVwuXC4yMFxcXFx9Y2hhcnNcXFxcXFxbXFxcXFxcXSUyMC5odG1sIikgIT09IG51bGwsICJDb21t
YW5kIHNob3VsZCBjb250YWluIHZhbGlkIFBPU0lYIGVzY2FwZWQgVVJMLiIpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTcGVjaWFsSGVhZGVyc0dl
bmVyYXRlQ1VSTFZhbGlkUE9TSVhPdXRwdXQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVy
YXRlIGNVUkwgY29tbWFuZCBmcm9tIGEgcmVxdWVzdCBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFj
dGVycyBpbiB0aGUgaGVhZGVycyBhbmQgdmVyaWZ5IHZhbGlkIFBPU0lYIG91dHB1dC4iLAorICAg
ICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVHRVRSZXF1ZXN0V2l0aFNwZWNpYWxDaGFyc0luSGVh
ZGVycygpIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuc2luZ2xlRmlyZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3Vy
Y2U7CisgICAgICAgICAgICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5nZW5lcmF0ZUNVUkxDb21t
YW5kKCkuc3BsaXQoIiBcXFxuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnWC1DdXN0b20xJykpID09
PSAiLUggJ1gtQ3VzdG9tMTogdGVzdDEnIiwgIkNvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBj
dXN0b20gaGVhZGVyIDEuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQuaW5jbHVkZXMoJ1gtQ3VzdG9tMicpKSA9PT0gIi1I
ICQnWC1DdXN0b20yXFwnJTogXFwnVGVzdFxcJ1xcJzFcXFxcXFwnMiciLCAiQ29tbWFuZCBzaG91
bGQgaGF2ZSBjb3JyZWN0IGN1c3RvbSBoZWFkZXIgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnWC1D
dXN0b20zJykpID09PSAiLUggJCdYLUN1c3RvbTM6IFxcJyR7UFdEfSciLCAiQ29tbWFuZCBzaG91
bGQgaGF2ZSBjb3JyZWN0IGN1c3RvbSBoZWFkZXIgMy4iKTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVVJMV2l0aFVURjhHZW5lcmF0ZUNVUkwiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVyYXRlIGNVUkwgY29tbWFuZCBmcm9tIGEgVVJMIGNv
bnRhaW5pbmcgVVRGOCBjaGFyYWN0ZXJzLiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0
ZUdFVFJlcXVlc3RXaXRoVVRGOCgpIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNl
V2FzQWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2
ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAgICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5n
ZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQoIiBcXFxuIik7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFswXS5tYXRjaCgiaHR0cHM/Oi8vLio/L3Jlc291
cmNlcy91cmxcXD91dGY4PSVGMCU5RiU5MSU4RCIpICE9PSBudWxsLCAiQ29tbWFuZCBzaG91bGQg
Y29udGFpbiBVUkwgd2l0aCBVVEY4IGNoYXJhY3RlcnMuIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlBPU1RSZXF1ZXN0VVJMRW5jb2RlZERhdGFH
ZW5lcmF0ZUNVUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVyYXRlIGNVUkwgY29tbWFu
ZCBmcm9tIGEgUE9TVCByZXF1ZXN0IHdpdGggVVJMIGVuY29kZWQgZGF0YS4iLAorICAgICAgICB0
ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJjcmVhdGVQT1NUUmVxdWVzdFdpdGhVUkxFbmNvZGVkRGF0YSgpIik7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAg
ICAgICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5nZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQo
IiBcXFxuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3Vy
bFsxXSA9PT0gIi1YUE9TVCIsICJDb21tYW5kIHNob3VsZCBiZSBhIFBPU1QgcmVxdWVzdC4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybC5maW5kKChjbWQp
ID0+IGNtZC5pbmNsdWRlcygnQ29udGVudC1UeXBlJykpID09PSAiLUggJ0NvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyIsICJDb21tYW5kIHNob3VsZCBoYXZl
IGNvcnJlY3QgQ29udGVudC1UeXBlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kID09PSAiLS1kYXRhICQnbG9yZW09aXBz
dW0mJGRvbG9yPVxcJ3NpdFxcJyZhbWV0PXsxLi4yMH0nIikgIT09IG51bGwsICJDb21tYW5kIHNo
b3VsZCBjb250YWluIGNvcnJlY3QgZGF0YS4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiUE9TVFJlcXVlc3RVUkxFbmNvZGVkRGF0YVVURjhHZW5l
cmF0ZUNVUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVyYXRlIGNVUkwgY29tbWFuZCBm
cm9tIGEgUE9TVCByZXF1ZXN0IHdpdGggVVJMIGVuY29kZWQgVVRGOCBkYXRhLiIsCisgICAgICAg
IHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoImNyZWF0ZVBPU1RSZXF1ZXN0V2l0aFVURjgoKSIpOworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLkZyYW1lLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291cmNlOworICAgICAgICAgICAgICAg
IGxldCBjdXJsID0gcmVzb3VyY2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxcbiIp
OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmxbMF0ubWF0
Y2goImh0dHBzPzovLy4qPy9yZXNvdXJjZXMvdXJsXFw/dXRmOD0lRjAlOUYlOTElOEQiKSAhPT0g
bnVsbCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJMIHdpdGggVVRGOCBjaGFyYWN0ZXJzLiIp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNt
ZCkgPT4gY21kID09PSAiLS1kYXRhICfwn4yoPeKbhO+4jyciKSAhPT0gbnVsbCwgIkNvbW1hbmQg
c2hvdWxkIGNvbnRhaW4gY29ycmVjdCBVVEY4IGRhdGEuIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlBVVFJlcXVlc3RXaXRoSlNPTkdlbmVyYXRl
Q1VSTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21tYW5kIGZyb20g
YSBQVVQgcmVxdWVzdCB3aXRoIEpTT04gZGF0YS4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJj
cmVhdGVQVVRSZXF1ZXN0V2l0aEpTT04oKSIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZy
YW1lLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNv
dXJjZVdhc0FkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2Ug
PSBldmVudC5kYXRhLnJlc291cmNlOworICAgICAgICAgICAgICAgIGxldCBjdXJsID0gcmVzb3Vy
Y2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxcbiIpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmxbMV0gPT09ICItWFBVVCIsICJDb21tYW5k
IHNob3VsZCBiZSBhIFBVVCByZXF1ZXN0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdDb250ZW50LVR5
cGUnKSkgPT09ICItSCAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyIsICJDb21tYW5k
IHNob3VsZCBoYXZlIEpTT04gQ29udGVudC1UeXBlLiIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kID09PSAiLS1kYXRhLWJp
bmFyeSAne1widXBkYXRlXCI6XCJub3dcIn0nIikgIT09IG51bGwsICJDb21tYW5kIHNob3VsZCBj
b250YWluIGNvcnJlY3QgSlNPTiBkYXRhLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIHRoYXQgIkNvcHkgYXMgY1VSTCIgcmV0dXJucyB2YWxp
ZCBQT1NJWCBvdXRwdXQuPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282851</attachid>
            <date>2016-07-05 21:53:45 -0700</date>
            <delta_ts>2016-07-08 13:59:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159380-20160705215315.patch</filename>
            <type>text/plain</type>
            <size>17054</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
ZTJjMjVhMmI1Mzg3YTgwMjEwMDdmMTE3YzBiZDZhMDgxMTg1ZTU3Li4yMTQzMDQ2ZTcyYjViMTJm
NDJlMTZkNzQwZjYzYjYxOWRjOTc3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wNy0wNSAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGlyZWQgYnkg
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL2I3YzExMTVk
YmFlNjUwMzBhZDk2ZTc3M2Q5YTI3MDQ2NWEwNWY1YzQvdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9kZXZ0b29scy9mcm9udF9lbmQvbmV0d29yay9OZXR3b3JrTG9nVmlldy5qcworCisgICAgICAg
IFRoaXMgIkNvcHkgYXMgY1VSTCIgZmVhdHVyZSBvbmx5IGFwcHJveGltYXRlcyB0aGUgb3JpZ2lu
YWwgcmVxdWVzdCBhcyBvbmx5IHNvbWUgcGFydHMgb2YKKyAgICAgICAgdGhhdCByZXF1ZXN0IGlz
IGtub3duIHRvIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5n
ZW5lcmF0ZUNVUkxDb21tYW5kLmVzY2FwZVN0cmluZ1Bvc2l4LmVzY2FwZUNoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdlbmVyYXRlQ1VSTENvbW1h
bmQuZXNjYXBlU3RyaW5nUG9zaXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5nZW5lcmF0ZUNVUkxDb21tYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMpOgorCiAyMDE2LTA3LTA1
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTd2l0Y2ggbGFzdCB1c2VzIG9mIC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCkgdG8g
bGluZWFyLWdyYWRpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDQ4
MmI2YWMwZjIwYjlmYTFhNjgxOTE2OWE5NGI1MzcyZGVhNTE5NGQuLmFhYjQyNmMwYzUxYjMyMDdh
MjlkZmUyNWE5OWY3YWI3YWZkZjA5MmIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNTAK
emNtWD9pbnN2KD0pKHdlS2xZZDlAdXFRS3dHNlhVQk9iJjw/WEhSNChXPjg+QXA0PjNTYUJfWSRU
WFM7TV9UKHRXCkdZO0ZNM2ZlYGlwCgpkZWx0YSAxOAphY21kbVRoVnxUTykod2VLJkJ2cCpBQ0Y/
cDxwdXkqeENuIyoKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggMDVmMWM4ZDBkNGRkYjZiZDdjMDhiM2I5Yjdi
ODc4MjFlOWRiMDY2My4uNGJjNmViMWQ1MWVkN2M4MGZlMTRiNzNmY2RjN2E1OTcwYzgyYTQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jl
c291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9SZXNvdXJjZS5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY3OCw2ICs2NzksNTMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gY2xhc3Mg
UmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAgICAgICBjb29raWVb
V2ViSW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleV0gPSB0aGlzLnVybC5oYXNoOwogICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJjZUNvb2tpZUtleV0g
PSB0aGlzLmlzTWFpblJlc291cmNlKCk7CiAgICAgfQorCisgICAgZ2VuZXJhdGVDVVJMQ29tbWFu
ZCgpCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogRXNjYXBlIHV0aWwgZnVuY3Rpb24g
Zm9yIFBPU0lYIG9yaWVudGVkIG9wZXJhdGluZyBzeXN0ZW1zLgorICAgICAgICAgKi8KKyAgICAg
ICAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nUG9zaXgoc3RyKSB7CisgICAgICAgICAgICBmdW5jdGlv
biBlc2NhcGVDaGFyYWN0ZXIoeCkgeworICAgICAgICAgICAgICAgIGxldCBjb2RlID0geC5jaGFy
Q29kZUF0KDApOworICAgICAgICAgICAgICAgIGlmIChjb2RlIDwgMjU2KSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIEFkZCBsZWFkaW5nIHplcm8gd2hlbiBuZWVkZWQgdG8gbm90IGNhcmUgYWJv
dXQgdGhlIG5leHQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZSA8
IDE2ID8gIlxceDAiICsgY29kZS50b1N0cmluZygxNikgOiAiXFx4IiArIGNvZGUudG9TdHJpbmco
MTYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb2RlID0gY29kZS50b1N0
cmluZygxNik7CisgICAgICAgICAgICAgICAgcmV0dXJuICJcXHUiICsgKCIwMDAwIiArIGNvZGUp
LnN1YnN0cihjb2RlLmxlbmd0aCwgNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICgvW15ceDIwLVx4N0VdfFwnLy50ZXN0KHN0cikpIHsKKyAgICAgICAgICAgICAgICAvLyBVc2Ug
QU5TSS1DIHF1b3Rpbmcgc3ludGF4LgorICAgICAgICAgICAgICAgIHJldHVybiAiJFwnIiArIHN0
ci5yZXBsYWNlKC9cXC9nLCAiXFxcXCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLnJlcGxhY2UoL1wnL2csICJcXFwnIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAucmVwbGFjZSgvXG4vZywgIlxcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoL1xyL2csICJcXHIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5yZXBsYWNlKC9bXlx4MjAtXHg3RV0vZywgZXNjYXBlQ2hhcmFjdGVyKSArICInIjsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIHNpbmdsZSBxdW90
ZSBzeW50YXguCisgICAgICAgICAgICAgICAgcmV0dXJuIGAnJHtzdHJ9J2A7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgY29tbWFuZCA9IFsiY3VybCAiICsgZXNjYXBl
U3RyaW5nUG9zaXgodGhpcy51cmwpLnJlcGxhY2UoL1tbe31cXV0vZywgIlxcJCYiKV07CisgICAg
ICAgIGNvbW1hbmQucHVzaChgLVgke3RoaXMucmVxdWVzdE1ldGhvZH1gKTsKKworICAgICAgICBm
b3IgKGxldCBrZXkgaW4gdGhpcy5yZXF1ZXN0SGVhZGVycykKKyAgICAgICAgICAgIGNvbW1hbmQu
cHVzaCgiLUggIiArIGVzY2FwZVN0cmluZ1Bvc2l4KGAke2tleX06ICR7dGhpcy5yZXF1ZXN0SGVh
ZGVyc1trZXldfWApKTsKKworICAgICAgICBpZiAodGhpcy5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBl
ICYmIHRoaXMucmVxdWVzdE1ldGhvZCAhPT0gIkdFVCIgJiYgdGhpcy5yZXF1ZXN0RGF0YSkgewor
ICAgICAgICAgICAgaWYgKHRoaXMucmVxdWVzdERhdGFDb250ZW50VHlwZS5tYXRjaCgvXmFwcGxp
Y2F0aW9uXC94LXd3dy1mb3JtLXVybGVuY29kZWRccyooOy4qKT8kL2kpKQorICAgICAgICAgICAg
ICAgIGNvbW1hbmQucHVzaCgiLS1kYXRhICIgKyBlc2NhcGVTdHJpbmdQb3NpeCh0aGlzLnJlcXVl
c3REYXRhKSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21tYW5kLnB1c2go
Ii0tZGF0YS1iaW5hcnkgIiArIGVzY2FwZVN0cmluZ1Bvc2l4KHRoaXMucmVxdWVzdERhdGEpKQor
ICAgICAgICB9CisKKyAgICAgICAgbGV0IGN1cmxDb21tYW5kID0gY29tbWFuZC5qb2luKCIgXFxc
biIpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoY3VybENvbW1hbmQp
OworICAgICAgICByZXR1cm4gY3VybENvbW1hbmQ7CisgICAgfQogfTsKIAogV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGVJZGVudGlmaWVyID0gInJlc291cmNlIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGZmZDEzMGRiYTMyNDExNmFjMzYw
ZGViMTZjMTJmNmNlMjY0YmE0ZDguLmFkMDEyMzI5ZGFlZjk5NWE0M2QwNDgzMjgwOTA5NmU5Nzk3
OGUxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5q
cwpAQCAtMTQ2LDYgKzE0NiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZSA9IGNsYXNzIFJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgZQogICAgICAgICBy
ZXR1cm4gW1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxl
Q2xhc3NOYW1lLCB0aGlzLnJlc291cmNlLnR5cGVdOwogICAgIH0KIAorICAgIGFwcGVuZENvbnRl
eHRNZW51SXRlbXMoY29udGV4dE1lbnUpCisgICAgeworICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBjVVJMIiksICgpID0+IHsgdGhp
cy5fcmVzb3VyY2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpOyB9KTsKKyAgICB9CisKICAgICAvLyBQ
cm90ZWN0ZWQKIAogICAgIGZpbHRlcmFibGVEYXRhRm9yQ29sdW1uKGNvbHVtbklkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMzJhNjM4ZWE4OGE0MzZiNmIyNmI5MDM0NDBlZGEyN2NkOGM5NWFiOC4uYThjYWJl
OTVmYWI1Nzc5OTQ4MTUyYTk1MWMwNDZlYzcyNTgxOTI3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTA3LTA1ICBKb2hhbiBLLiBKZW5zZW4gIDxqb2hhbl9qZW5zZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVSOiBDb3B5IGFzIGNVUkwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTM4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvY29weS1hcy1jdXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1cmwuaHRtbDogQWRkZWQuCisKIDIw
MTYtMDctMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBU
aHJvdyBleGNlcHRpb25zIGZvciBpbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyBmb3IgQ29udm9s
dmVyTm9kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9jb3B5LWFzLWN1cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0
ZTQ5OTEwNWNmMjQ5NzkxMjk0ZTk0NmIzMjQyMzAwOThkYTg2ZjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NvcHktYXMtY3VybC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorVGVzdHMgdGhhdCAiQ29weSBhcyBjVVJMIiBy
ZXR1cm5zIHZhbGlkIFBPU0lYIG91dHB1dC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEdl
bmVyYXRlQ1VSTFZhbGlkUE9TSVhPdXRwdXQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTaW1wbGVV
UkxHZW5lcmF0ZUNVUkwKK1BBU1M6IENvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJMLgorUEFTUzog
Q29tbWFuZCBzaG91bGQgYmUgYSBHRVQgcmVxdWVzdC4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGNv
bnRhaW4gVXNlci1BZ2VudCBoZWFkZXIuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTcGVjaWFs
VVJMR2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBjb250YWluIHZhbGlkIFBPU0lY
IGVzY2FwZWQgVVJMLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU3BlY2lhbEhlYWRlcnNHZW5l
cmF0ZUNVUkxWYWxpZFBPU0lYT3V0cHV0CitQQVNTOiBDb21tYW5kIHNob3VsZCBoYXZlIGNvcnJl
Y3QgY3VzdG9tIGhlYWRlciAxLgorUEFTUzogQ29tbWFuZCBzaG91bGQgaGF2ZSBjb3JyZWN0IGN1
c3RvbSBoZWFkZXIgMi4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBjdXN0b20g
aGVhZGVyIDMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBVUkxXaXRoVVRGOEdlbmVyYXRlQ1VS
TAorUEFTUzogQ29tbWFuZCBzaG91bGQgY29udGFpbiBVUkwgd2l0aCBVVEY4IGNoYXJhY3RlcnMu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQT1NUUmVxdWVzdFVSTEVuY29kZWREYXRhR2VuZXJh
dGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBiZSBhIFBPU1QgcmVxdWVzdC4KK1BBU1M6IENv
bW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBDb250ZW50LVR5cGUuCitQQVNTOiBDb21tYW5kIHNo
b3VsZCBjb250YWluIGNvcnJlY3QgZGF0YS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFBPU1RS
ZXF1ZXN0VVJMRW5jb2RlZERhdGFVVEY4R2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3Vs
ZCBjb250YWluIFVSTCB3aXRoIFVURjggY2hhcmFjdGVycy4KK1BBU1M6IENvbW1hbmQgc2hvdWxk
IGNvbnRhaW4gY29ycmVjdCBVVEY4IGRhdGEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQVVRS
ZXF1ZXN0V2l0aEpTT05HZW5lcmF0ZUNVUkwKK1BBU1M6IENvbW1hbmQgc2hvdWxkIGJlIGEgUFVU
IHJlcXVlc3QuCitQQVNTOiBDb21tYW5kIHNob3VsZCBoYXZlIEpTT04gQ29udGVudC1UeXBlLgor
UEFTUzogQ29tbWFuZCBzaG91bGQgY29udGFpbiBjb3JyZWN0IEpTT04gZGF0YS4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1
cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29weS1h
cy1jdXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVjYzRmZjViYzY1MGRjODc5MTEwYmEwMmQ0YTYwMGQz
YmRjZWZlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvY29weS1hcy1jdXJsLmh0bWwKQEAgLTAsMCArMSwxODYgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVNpbXBsZUdF
VFJlcXVlc3QoKQoreworICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgcmVxdWVzdC5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3VybD9xdWVyeT10cnVlIiwgdHJ1ZSk7
CisgICAgcmVxdWVzdC5zZW5kKCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUdFVFJlcXVlc3RXaXRo
U3BlY2lhbFVSTCgpCit7CisgICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICByZXF1ZXN0Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvdXJsJ3dpdGgkc3BlY2lhbHsxLi4y
MH1jaGFyc1tdIC5odG1sIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZW5kKCk7Cit9CisKK2Z1bmN0
aW9uIGNyZWF0ZUdFVFJlcXVlc3RXaXRoU3BlY2lhbENoYXJzSW5IZWFkZXJzKCkKK3sKKyAgICB2
YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbigiR0VU
IiwgInJlc291cmNlcy91cmwiLCB0cnVlKTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIo
IlgtQ3VzdG9tMSIsICJ0ZXN0MSIpOworICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcigiWC1D
dXN0b20yJyUiLCAiXCdUZXN0J1wnMVxcJzIiKTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFk
ZXIoIlgtQ3VzdG9tMyIsICJcJyR7UFdEfSIpOworICAgIHJlcXVlc3Quc2VuZCgpOworfQorCitm
dW5jdGlvbiBjcmVhdGVHRVRSZXF1ZXN0V2l0aFVURjgoKQoreworICAgIHZhciByZXF1ZXN0ID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC5vcGVuKCJHRVQiLCAicmVzb3VyY2Vz
L3VybD91dGY4PfCfkY0iLCB0cnVlKTsKKyAgICByZXF1ZXN0LnNlbmQoKTsKK30KKworZnVuY3Rp
b24gY3JlYXRlUE9TVFJlcXVlc3RXaXRoVVJMRW5jb2RlZERhdGEoKQoreworICAgIHZhciByZXF1
ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC5vcGVuKCJQT1NUIiwgInJl
c291cmNlcy91cmwiLCB0cnVlKTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICByZXF1
ZXN0LnNlbmQoImxvcmVtPWlwc3VtJiRkb2xvcj0nc2l0JyZhbWV0PXsxLi4yMH0iKTsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlUE9TVFJlcXVlc3RXaXRoVVRGOCgpCit7CisgICAgdmFyIHJlcXVlc3Qg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXF1ZXN0Lm9wZW4oIlBPU1QiLCAicmVzb3Vy
Y2VzL3VybD91dGY4PfCfkY0iLCB0cnVlKTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIo
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAg
ICByZXF1ZXN0LnNlbmQoIvCfjKg94puE77iPIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVBVVFJl
cXVlc3RXaXRoSlNPTigpCit7CisgICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKKyAgICByZXF1ZXN0Lm9wZW4oIlBVVCIsICJyZXNvdXJjZXMvdXJsIiwgdHJ1ZSk7CisgICAg
cmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vanNv
biIpOworICAgIHJlcXVlc3Quc2VuZCgie1widXBkYXRlXCI6XCJub3dcIn0iKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3lu
Y1N1aXRlKCJHZW5lcmF0ZUNVUkxWYWxpZFBPU0lYT3V0cHV0Iik7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTaW1wbGVVUkxHZW5lcmF0ZUNVUkwiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIkdlbmVyYXRlIGNVUkwgY29tbWFuZCBmcm9tIGEgc2ltcGxlIFVSTC4i
LAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVTaW1wbGVHRVRSZXF1ZXN0KCkiKTsKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAg
ICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENvbW1hbmQoKS5zcGxpdCgi
IFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJs
WzBdLm1hdGNoKCJodHRwcz86Ly8uKj8vcmVzb3VyY2VzL3VybFxcP3F1ZXJ5PXRydWUiKSAhPT0g
bnVsbCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJMLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsWzFdID09PSAiLVhHRVQiLCAiQ29tbWFuZCBzaG91
bGQgYmUgYSBHRVQgcmVxdWVzdC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnVXNlci1BZ2VudCcpKSAh
PT0gbnVsbCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVXNlci1BZ2VudCBoZWFkZXIuIik7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlNwZWNpYWxV
UkxHZW5lcmF0ZUNVUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVyYXRlIGNVUkwgY29t
bWFuZCBmcm9tIGEgVVJMIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzLiIsCisgICAgICAg
IHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUdFVFJlcXVlc3RXaXRoU3BlY2lhbFVSTCgpIik7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIChldmVudCkgPT4geworICAgICAg
ICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAg
ICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5nZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQoIiBc
XFxuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFsw
XS5tYXRjaCgiaHR0cHM/Oi8vLio/L3Jlc291cmNlcy91cmxcXFxcJ3dpdGhcXCRzcGVjaWFsXFxc
XHsxXC5cLjIwXFxcXH1jaGFyc1xcXFxcXFtcXFxcXFxdJTIwLmh0bWwiKSAhPT0gbnVsbCwgIkNv
bW1hbmQgc2hvdWxkIGNvbnRhaW4gdmFsaWQgUE9TSVggZXNjYXBlZCBVUkwuIik7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlNwZWNpYWxIZWFkZXJz
R2VuZXJhdGVDVVJMVmFsaWRQT1NJWE91dHB1dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2Vu
ZXJhdGUgY1VSTCBjb21tYW5kIGZyb20gYSByZXF1ZXN0IGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFy
YWN0ZXJzIGluIHRoZSBoZWFkZXJzIGFuZCB2ZXJpZnkgdmFsaWQgUE9TSVggb3V0cHV0LiIsCisg
ICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUdFVFJlcXVlc3RXaXRoU3BlY2lhbENoYXJzSW5I
ZWFkZXJzKCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNv
dXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENv
bW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdYLUN1c3RvbTEnKSkg
PT09ICItSCAnWC1DdXN0b20xOiB0ZXN0MSciLCAiQ29tbWFuZCBzaG91bGQgaGF2ZSBjb3JyZWN0
IGN1c3RvbSBoZWFkZXIgMS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnWC1DdXN0b20yJykpID09PSAi
LUggJCdYLUN1c3RvbTJcXCclOiBcXCdUZXN0XFwnXFwnMVxcXFxcXCcyJyIsICJDb21tYW5kIHNo
b3VsZCBoYXZlIGNvcnJlY3QgY3VzdG9tIGhlYWRlciAyLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdY
LUN1c3RvbTMnKSkgPT09ICItSCAkJ1gtQ3VzdG9tMzogXFwnJHtQV0R9JyIsICJDb21tYW5kIHNo
b3VsZCBoYXZlIGNvcnJlY3QgY3VzdG9tIGhlYWRlciAzLiIpOworICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJVUkxXaXRoVVRGOEdlbmVyYXRlQ1VSTCIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21tYW5kIGZyb20gYSBVUkwg
Y29udGFpbmluZyBVVEY4IGNoYXJhY3RlcnMuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3Jl
YXRlR0VUUmVxdWVzdFdpdGhVVEY4KCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFt
ZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3Vy
Y2VXYXNBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0g
ZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNl
LmdlbmVyYXRlQ1VSTENvbW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsWzBdLm1hdGNoKCJodHRwcz86Ly8uKj8vcmVz
b3VyY2VzL3VybFxcP3V0Zjg9JUYwJTlGJTkxJThEIikgIT09IG51bGwsICJDb21tYW5kIHNob3Vs
ZCBjb250YWluIFVSTCB3aXRoIFVURjggY2hhcmFjdGVycy4iKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUE9TVFJlcXVlc3RVUkxFbmNvZGVkRGF0
YUdlbmVyYXRlQ1VSTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21t
YW5kIGZyb20gYSBQT1NUIHJlcXVlc3Qgd2l0aCBVUkwgZW5jb2RlZCBkYXRhLiIsCisgICAgICAg
IHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoImNyZWF0ZVBPU1RSZXF1ZXN0V2l0aFVSTEVuY29kZWREYXRhKCkiKTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAg
ICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENvbW1hbmQoKS5zcGxp
dCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChj
dXJsWzFdID09PSAiLVhQT1NUIiwgIkNvbW1hbmQgc2hvdWxkIGJlIGEgUE9TVCByZXF1ZXN0LiIp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNt
ZCkgPT4gY21kLmluY2x1ZGVzKCdDb250ZW50LVR5cGUnKSkgPT09ICItSCAnQ29udGVudC1UeXBl
OiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIiwgIkNvbW1hbmQgc2hvdWxkIGhh
dmUgY29ycmVjdCBDb250ZW50LVR5cGUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQgPT09ICItLWRhdGEgJCdsb3JlbT1p
cHN1bSYkZG9sb3I9XFwnc2l0XFwnJmFtZXQ9ezEuLjIwfSciKSAhPT0gbnVsbCwgIkNvbW1hbmQg
c2hvdWxkIGNvbnRhaW4gY29ycmVjdCBkYXRhLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJQT1NUUmVxdWVzdFVSTEVuY29kZWREYXRhVVRGOEdl
bmVyYXRlQ1VSTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21tYW5k
IGZyb20gYSBQT1NUIHJlcXVlc3Qgd2l0aCBVUkwgZW5jb2RlZCBVVEY4IGRhdGEuIiwKKyAgICAg
ICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlUE9TVFJlcXVlc3RXaXRoVVRGOCgpIik7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAgICAg
ICAgbGV0IGN1cmwgPSByZXNvdXJjZS5nZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQoIiBcXFxu
Iik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFswXS5t
YXRjaCgiaHR0cHM/Oi8vLio/L3Jlc291cmNlcy91cmxcXD91dGY4PSVGMCU5RiU5MSU4RCIpICE9
PSBudWxsLCAiQ29tbWFuZCBzaG91bGQgY29udGFpbiBVUkwgd2l0aCBVVEY4IGNoYXJhY3RlcnMu
Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgo
Y21kKSA9PiBjbWQgPT09ICItLWRhdGEgJ/CfjKg94puE77iPJyIpICE9PSBudWxsLCAiQ29tbWFu
ZCBzaG91bGQgY29udGFpbiBjb3JyZWN0IFVURjggZGF0YS4iKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUFVUUmVxdWVzdFdpdGhKU09OR2VuZXJh
dGVDVVJMIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZW5lcmF0ZSBjVVJMIGNvbW1hbmQgZnJv
bSBhIFBVVCByZXF1ZXN0IHdpdGggSlNPTiBkYXRhLiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImNyZWF0ZVBVVFJlcXVlc3RXaXRoSlNPTigpIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
RnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJl
c291cmNlV2FzQWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCByZXNvdXJj
ZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAgICAgICAgbGV0IGN1cmwgPSByZXNv
dXJjZS5nZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQoIiBcXFxuIik7CisKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFsxXSA9PT0gIi1YUFVUIiwgIkNvbW1h
bmQgc2hvdWxkIGJlIGEgUFVUIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQuaW5jbHVkZXMoJ0NvbnRlbnQt
VHlwZScpKSA9PT0gIi1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nIiwgIkNvbW1h
bmQgc2hvdWxkIGhhdmUgSlNPTiBDb250ZW50LVR5cGUuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQgPT09ICItLWRhdGEt
YmluYXJ5ICd7XCJ1cGRhdGVcIjpcIm5vd1wifSciKSAhPT0gbnVsbCwgIkNvbW1hbmQgc2hvdWxk
IGNvbnRhaW4gY29ycmVjdCBKU09OIGRhdGEuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgdGhhdCAiQ29weSBhcyBjVVJMIiByZXR1cm5zIHZh
bGlkIFBPU0lYIG91dHB1dC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283197</attachid>
            <date>2016-07-08 13:59:03 -0700</date>
            <delta_ts>2016-07-12 11:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159380-20160708135827.patch</filename>
            <type>text/plain</type>
            <size>17105</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
ODA3ZDM2NWVlMWY2YzBmYTQ3MTkwYjRkZjdiNzY0YzI2M2JjZGM0Li44OTNlNTVhZmM4MzM1NTI2
ZjMyM2MxZjY3ZDFkNGJlNzg3M2RmNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wNy0wNyAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGlyZWQgYnkg
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL2I3YzExMTVk
YmFlNjUwMzBhZDk2ZTc3M2Q5YTI3MDQ2NWEwNWY1YzQvdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9kZXZ0b29scy9mcm9udF9lbmQvbmV0d29yay9OZXR3b3JrTG9nVmlldy5qcworCisgICAgICAg
IFRoaXMgIkNvcHkgYXMgY1VSTCIgZmVhdHVyZSBvbmx5IGFwcHJveGltYXRlcyB0aGUgb3JpZ2lu
YWwgcmVxdWVzdCBhcyBvbmx5IHNvbWUgcGFydHMgb2YKKyAgICAgICAgdGhhdCByZXF1ZXN0IGlz
IGtub3duIHRvIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5n
ZW5lcmF0ZUNVUkxDb21tYW5kLmVzY2FwZVN0cmluZ1Bvc2l4LmVzY2FwZUNoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdlbmVyYXRlQ1VSTENvbW1h
bmQuZXNjYXBlU3RyaW5nUG9zaXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5nZW5lcmF0ZUNVUkxDb21tYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMpOgorCiAyMDE2LTA3LTA2
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OOiBIaXR0aW5nIOKMmFQgaW4gV2ViIEluc3BlY3RvciBubyBsb25n
ZXIgb3BlbnMgaW4gbmV3IHRhYiBpbiBTYWZhcmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzCmluZGV4IDQ4MmI2YWMwZjIwYjlmYTFhNjgxOTE2OWE5NGI1MzcyZGVhNTE5NGQuLmFhYjQy
NmMwYzUxYjMyMDdhMjlkZmUyNWE5OWY3YWI3YWZkZjA5MmIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNTAKemNtWD9pbnN2KD0pKHdlS2xZZDlAdXFRS3dHNlhVQk9iJjw/WEhSNChXPjg+
QXA0PjNTYUJfWSRUWFM7TV9UKHRXCkdZO0ZNM2ZlYGlwCgpkZWx0YSAxOAphY21kbVRoVnxUTyko
d2VLJkJ2cCpBQ0Y/cDxwdXkqeENuIyoKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggMDVmMWM4ZDBkNGRkYjZi
ZDdjMDhiM2I5YjdiODc4MjFlOWRiMDY2My4uNTE1YzI4YzU1NGFkMDljNmI3MmFiYzdlZTA3Mjcw
N2RkODg1NTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3OCw2ICs2NzksNDggQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleV0gPSB0aGlzLnVy
bC5oYXNoOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJj
ZUNvb2tpZUtleV0gPSB0aGlzLmlzTWFpblJlc291cmNlKCk7CiAgICAgfQorCisgICAgZ2VuZXJh
dGVDVVJMQ29tbWFuZCgpCisgICAgeworICAgICAgICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdQb3Np
eChzdHIpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVzY2FwZUNoYXJhY3Rlcih4KSB7CisgICAg
ICAgICAgICAgICAgbGV0IGNvZGUgPSB4LmNoYXJDb2RlQXQoMCk7CisgICAgICAgICAgICAgICAg
bGV0IGhleCA9IGNvZGUudG9TdHJpbmcoMTYpOworICAgICAgICAgICAgICAgIGlmIChjb2RlIDwg
MjU2KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlxceCIgKyBoZXgucGFkU3RhcnQoMiwg
IjAiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIlxcdSIgKyBoZXgucGFkU3RhcnQoNCwgIjAi
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKC9bXlx4MjAtXHg3RV18Jy8udGVz
dChzdHIpKSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIEFOU0ktQyBxdW90aW5nIHN5bnRheC4K
KyAgICAgICAgICAgICAgICByZXR1cm4gIiRcJyIgKyBzdHIucmVwbGFjZSgvXFwvZywgIlxcXFwi
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csICJcXCci
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cbi9nLCAiXFxu
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXHIvZywgIlxc
ciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1teXHgyMC1c
eDdFXS9nLCBlc2NhcGVDaGFyYWN0ZXIpICsgIiciOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBVc2Ugc2luZ2xlIHF1b3RlIHN5bnRheC4KKyAgICAgICAgICAgICAg
ICByZXR1cm4gYCcke3N0cn0nYDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGxldCBjb21tYW5kID0gWyJjdXJsICIgKyBlc2NhcGVTdHJpbmdQb3NpeCh0aGlzLnVybCkucmVw
bGFjZSgvW1t7fVxdXS9nLCAiXFwkJiIpXTsKKyAgICAgICAgY29tbWFuZC5wdXNoKGAtWCR7dGhp
cy5yZXF1ZXN0TWV0aG9kfWApOworCisgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnJlcXVl
c3RIZWFkZXJzKQorICAgICAgICAgICAgY29tbWFuZC5wdXNoKCItSCAiICsgZXNjYXBlU3RyaW5n
UG9zaXgoYCR7a2V5fTogJHt0aGlzLnJlcXVlc3RIZWFkZXJzW2tleV19YCkpOworCisgICAgICAg
IGlmICh0aGlzLnJlcXVlc3REYXRhQ29udGVudFR5cGUgJiYgdGhpcy5yZXF1ZXN0TWV0aG9kICE9
PSAiR0VUIiAmJiB0aGlzLnJlcXVlc3REYXRhKSB7CisgICAgICAgICAgICBpZiAodGhpcy5yZXF1
ZXN0RGF0YUNvbnRlbnRUeXBlLm1hdGNoKC9eYXBwbGljYXRpb25cL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZFxzKig7LiopPyQvaSkpCisgICAgICAgICAgICAgICAgY29tbWFuZC5wdXNoKCItLWRhdGEg
IiArIGVzY2FwZVN0cmluZ1Bvc2l4KHRoaXMucmVxdWVzdERhdGEpKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGNvbW1hbmQucHVzaCgiLS1kYXRhLWJpbmFyeSAiICsgZXNjYXBl
U3RyaW5nUG9zaXgodGhpcy5yZXF1ZXN0RGF0YSkpCisgICAgICAgIH0KKworICAgICAgICBsZXQg
Y3VybENvbW1hbmQgPSBjb21tYW5kLmpvaW4oIiBcXFxuIik7CisgICAgICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5jb3B5VGV4dChjdXJsQ29tbWFuZCk7CisgICAgICAgIHJldHVybiBjdXJsQ29t
bWFuZDsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZUlkZW50aWZpZXIg
PSAicmVzb3VyY2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5v
ZGUuanMKaW5kZXggZmZkMTMwZGJhMzI0MTE2YWMzNjBkZWIxNmMxMmY2Y2UyNjRiYTRkOC4uZDQ1
NmQ3OTVkNWQ0ZWVjNjFmMGM0ZDU5MjlkYTk0MTAyM2JmZTg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xNDYsNiArMTQ2LDEyIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgUmVzb3VyY2VU
aW1lbGluZURhdGFHcmlkTm9kZSBlCiAgICAgICAgIHJldHVybiBbV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05hbWUsIHRoaXMucmVzb3VyY2Uu
dHlwZV07CiAgICAgfQogCisgICAgYXBwZW5kQ29udGV4dE1lbnVJdGVtcyhjb250ZXh0TWVudSkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS51cmxDb21wb25lbnRzLnNjaGVtZSAh
PT0gImRhdGEiKQorICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvcHkgYXMgY1VSTCIpLCAoKSA9PiB7IHRoaXMuX3Jlc291cmNlLmdlbmVy
YXRlQ1VSTENvbW1hbmQoKTsgfSk7CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBm
aWx0ZXJhYmxlRGF0YUZvckNvbHVtbihjb2x1bW5JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVhOGIxMWVk
OWIxMTU3NzljZWRlOThhMzE2OWYwZjk1OTI5OTQyZGYuLjIzYTdhYzU0NmMxMjgxYmU3ZTYwNzNk
NmU4OGNmYzRjMWU4ZjBkNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0wNyAgSm9o
YW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVj
b3Jhcm8uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NvcHktYXMt
Y3VybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvY29weS1hcy1jdXJsLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTA3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHRlc3QgZm9y
IG1lZGlhIGNvbnRyb2wgZHJvcG9mZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1cmwtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIwOWJlNjM0OGUzMzg5ZTVmNDM1ZWMzZWM5NWQ5ZGFiNGVlNjMzZjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2NvcHktYXMtY3VybC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdHMgdGhhdCAi
Q29weSBhcyBjVVJMIiByZXR1cm5zIHZhbGlkIFBPU0lYIG91dHB1dC4KKworCis9PSBSdW5uaW5n
IHRlc3Qgc3VpdGU6IEdlbmVyYXRlQ1VSTFZhbGlkUE9TSVhPdXRwdXQKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBTaW1wbGVVUkxHZW5lcmF0ZUNVUkwKK1BBU1M6IENvbW1hbmQgc2hvdWxkIGNvbnRh
aW4gVVJMLgorUEFTUzogQ29tbWFuZCBzaG91bGQgYmUgYSBHRVQgcmVxdWVzdC4KK1BBU1M6IENv
bW1hbmQgc2hvdWxkIGNvbnRhaW4gVXNlci1BZ2VudCBoZWFkZXIuCitQQVNTOiBDb21tYW5kIHNo
b3VsZCBub3QgY29udGFpbiBhIGN1c3RvbSBoZWFkZXIuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBTcGVjaWFsVVJMR2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBjb250YWluIHZh
bGlkIFBPU0lYIGVzY2FwZWQgVVJMLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU3BlY2lhbEhl
YWRlcnNHZW5lcmF0ZUNVUkxWYWxpZFBPU0lYT3V0cHV0CitQQVNTOiBDb21tYW5kIHNob3VsZCBo
YXZlIGNvcnJlY3QgY3VzdG9tIGhlYWRlciAxLgorUEFTUzogQ29tbWFuZCBzaG91bGQgaGF2ZSBj
b3JyZWN0IGN1c3RvbSBoZWFkZXIgMi4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVj
dCBjdXN0b20gaGVhZGVyIDMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBVUkxXaXRoVVRGOEdl
bmVyYXRlQ1VSTAorUEFTUzogQ29tbWFuZCBzaG91bGQgY29udGFpbiBVUkwgd2l0aCBVVEY4IGNo
YXJhY3RlcnMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQT1NUUmVxdWVzdFVSTEVuY29kZWRE
YXRhR2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBiZSBhIFBPU1QgcmVxdWVzdC4K
K1BBU1M6IENvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBDb250ZW50LVR5cGUuCitQQVNTOiBD
b21tYW5kIHNob3VsZCBjb250YWluIGNvcnJlY3QgZGF0YS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IFBPU1RSZXF1ZXN0VVJMRW5jb2RlZERhdGFVVEY4R2VuZXJhdGVDVVJMCitQQVNTOiBDb21t
YW5kIHNob3VsZCBjb250YWluIFVSTCB3aXRoIFVURjggY2hhcmFjdGVycy4KK1BBU1M6IENvbW1h
bmQgc2hvdWxkIGNvbnRhaW4gY29ycmVjdCBVVEY4IGRhdGEuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBQVVRSZXF1ZXN0V2l0aEpTT05HZW5lcmF0ZUNVUkwKK1BBU1M6IENvbW1hbmQgc2hvdWxk
IGJlIGEgUFVUIHJlcXVlc3QuCitQQVNTOiBDb21tYW5kIHNob3VsZCBoYXZlIEpTT04gQ29udGVu
dC1UeXBlLgorUEFTUzogQ29tbWFuZCBzaG91bGQgY29udGFpbiBjb3JyZWN0IEpTT04gZGF0YS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9j
b3B5LWFzLWN1cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvY29weS1hcy1jdXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjliM2EwZjA5NjFhY2MzZjVjMDBhNTlk
YmQ0YjdiNGQ5YzBlMjZmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvY29weS1hcy1jdXJsLmh0bWwKQEAgLTAsMCArMSwxODggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVNpbXBsZUdFVFJlcXVlc3QoKQoreworICAgIHZhciBy
ZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC5vcGVuKCJHRVQiLCAi
cmVzb3VyY2VzL3VybD9xdWVyeT10cnVlIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZW5kKCk7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUdFVFJlcXVlc3RXaXRoU3BlY2lhbFVSTCgpCit7CisgICAgdmFy
IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXF1ZXN0Lm9wZW4oIkdFVCIs
ICJyZXNvdXJjZXMvdXJsJ3dpdGgkc3BlY2lhbHsxLi4yMH1jaGFyc1tdIC5odG1sIiwgdHJ1ZSk7
CisgICAgcmVxdWVzdC5zZW5kKCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUdFVFJlcXVlc3RXaXRo
U3BlY2lhbENoYXJzSW5IZWFkZXJzKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgInJlc291cmNlcy91cmwiLCB0cnVl
KTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIlgtQ3VzdG9tMSIsICJ0ZXN0MSIpOwor
ICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcigiWC1DdXN0b20yJyUiLCAiXCdUZXN0J1wnMVxc
JzIiKTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIlgtQ3VzdG9tMyIsICJcJyR7UFdE
fSIpOworICAgIHJlcXVlc3Quc2VuZCgpOworfQorCitmdW5jdGlvbiBjcmVhdGVHRVRSZXF1ZXN0
V2l0aFVURjgoKQoreworICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgcmVxdWVzdC5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3VybD91dGY4PfCfkY0iLCB0cnVlKTsK
KyAgICByZXF1ZXN0LnNlbmQoKTsKK30KKworZnVuY3Rpb24gY3JlYXRlUE9TVFJlcXVlc3RXaXRo
VVJMRW5jb2RlZERhdGEoKQoreworICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CisgICAgcmVxdWVzdC5vcGVuKCJQT1NUIiwgInJlc291cmNlcy91cmwiLCB0cnVlKTsKKyAg
ICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICByZXF1ZXN0LnNlbmQoImxvcmVtPWlwc3VtJiRk
b2xvcj0nc2l0JyZhbWV0PXsxLi4yMH0iKTsKK30KKworZnVuY3Rpb24gY3JlYXRlUE9TVFJlcXVl
c3RXaXRoVVRGOCgpCit7CisgICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICByZXF1ZXN0Lm9wZW4oIlBPU1QiLCAicmVzb3VyY2VzL3VybD91dGY4PfCfkY0iLCB0cnVl
KTsKKyAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICByZXF1ZXN0LnNlbmQoIvCfjKg94puE
77iPIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVBVVFJlcXVlc3RXaXRoSlNPTigpCit7CisgICAg
dmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXF1ZXN0Lm9wZW4oIlBV
VCIsICJyZXNvdXJjZXMvdXJsIiwgdHJ1ZSk7CisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVy
KCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vanNvbiIpOworICAgIHJlcXVlc3Quc2VuZCgi
e1widXBkYXRlXCI6XCJub3dcIn0iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJHZW5lcmF0ZUNVUkxWYWxp
ZFBPU0lYT3V0cHV0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJTaW1wbGVVUkxHZW5lcmF0ZUNVUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVyYXRl
IGNVUkwgY29tbWFuZCBmcm9tIGEgc2ltcGxlIFVSTC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2
ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJjcmVhdGVTaW1wbGVHRVRSZXF1ZXN0KCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5G
cmFtZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVz
b3VyY2VXYXNBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNl
ID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291
cmNlLmdlbmVyYXRlQ1VSTENvbW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsWzBdLm1hdGNoKCJodHRwcz86Ly8uKj8v
cmVzb3VyY2VzL3VybFxcP3F1ZXJ5PXRydWUiKSAhPT0gbnVsbCwgIkNvbW1hbmQgc2hvdWxkIGNv
bnRhaW4gVVJMLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChj
dXJsWzFdID09PSAiLVhHRVQiLCAiQ29tbWFuZCBzaG91bGQgYmUgYSBHRVQgcmVxdWVzdC4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybC5maW5kKChjbWQp
ID0+IGNtZC5pbmNsdWRlcygnVXNlci1BZ2VudCcpKSAhPT0gdW5kZWZpbmVkLCAiQ29tbWFuZCBz
aG91bGQgY29udGFpbiBVc2VyLUFnZW50IGhlYWRlci4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnWC1D
dXN0b20nKSkgPT09IHVuZGVmaW5lZCwgIkNvbW1hbmQgc2hvdWxkIG5vdCBjb250YWluIGEgY3Vz
dG9tIGhlYWRlci4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiU3BlY2lhbFVSTEdlbmVyYXRlQ1VSTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
R2VuZXJhdGUgY1VSTCBjb21tYW5kIGZyb20gYSBVUkwgY29udGFpbmluZyBzcGVjaWFsIGNoYXJh
Y3RlcnMuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlR0VUUmVxdWVzdFdpdGhTcGVj
aWFsVVJMKCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNv
dXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENv
bW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChjdXJsWzBdLm1hdGNoKCJodHRwcz86Ly8uKj8vcmVzb3VyY2VzL3VybFxcXFwn
d2l0aFxcJHNwZWNpYWxcXFxcezFcLlwuMjBcXFxcfWNoYXJzXFxcXFxcW1xcXFxcXF0lMjAuaHRt
bCIpICE9PSBudWxsLCAiQ29tbWFuZCBzaG91bGQgY29udGFpbiB2YWxpZCBQT1NJWCBlc2NhcGVk
IFVSTC4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiU3BlY2lhbEhlYWRlcnNHZW5lcmF0ZUNVUkxWYWxpZFBPU0lYT3V0cHV0IiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJHZW5lcmF0ZSBjVVJMIGNvbW1hbmQgZnJvbSBhIHJlcXVlc3QgY29udGFp
bmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGhlYWRlcnMgYW5kIHZlcmlmeSB2YWxpZCBQ
T1NJWCBvdXRwdXQuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlR0VUUmVxdWVzdFdp
dGhTcGVjaWFsQ2hhcnNJbkhlYWRlcnMoKSIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZy
YW1lLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNv
dXJjZVdhc0FkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2Ug
PSBldmVudC5kYXRhLnJlc291cmNlOworICAgICAgICAgICAgICAgIGxldCBjdXJsID0gcmVzb3Vy
Y2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxcbiIpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQuaW5jbHVk
ZXMoJ1gtQ3VzdG9tMScpKSA9PT0gIi1IICdYLUN1c3RvbTE6IHRlc3QxJyIsICJDb21tYW5kIHNo
b3VsZCBoYXZlIGNvcnJlY3QgY3VzdG9tIGhlYWRlciAxLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdY
LUN1c3RvbTInKSkgPT09ICItSCAkJ1gtQ3VzdG9tMlxcJyU6IFxcJ1Rlc3RcXCdcXCcxXFxcXFxc
JzInIiwgIkNvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBjdXN0b20gaGVhZGVyIDIuIik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9
PiBjbWQuaW5jbHVkZXMoJ1gtQ3VzdG9tMycpKSA9PT0gIi1IICQnWC1DdXN0b20zOiBcXCcke1BX
RH0nIiwgIkNvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVjdCBjdXN0b20gaGVhZGVyIDMuIik7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlVSTFdpdGhV
VEY4R2VuZXJhdGVDVVJMIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZW5lcmF0ZSBjVVJMIGNv
bW1hbmQgZnJvbSBhIFVSTCBjb250YWluaW5nIFVURjggY2hhcmFjdGVycy4iLAorICAgICAgICB0
ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJjcmVhdGVHRVRSZXF1ZXN0V2l0aFVURjgoKSIpOworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLkZyYW1lLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291cmNlOworICAgICAgICAgICAgICAgIGxl
dCBjdXJsID0gcmVzb3VyY2UuZ2VuZXJhdGVDVVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxcbiIpOwor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmxbMF0ubWF0Y2go
Imh0dHBzPzovLy4qPy9yZXNvdXJjZXMvdXJsXFw/dXRmOD0lRjAlOUYlOTElOEQiKSAhPT0gbnVs
bCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJMIHdpdGggVVRGOCBjaGFyYWN0ZXJzLiIpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJQT1NUUmVx
dWVzdFVSTEVuY29kZWREYXRhR2VuZXJhdGVDVVJMIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJH
ZW5lcmF0ZSBjVVJMIGNvbW1hbmQgZnJvbSBhIFBPU1QgcmVxdWVzdCB3aXRoIFVSTCBlbmNvZGVk
IGRhdGEuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlUE9TVFJlcXVlc3RXaXRoVVJM
RW5jb2RlZERhdGEoKSIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVk
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRh
LnJlc291cmNlOworICAgICAgICAgICAgICAgIGxldCBjdXJsID0gcmVzb3VyY2UuZ2VuZXJhdGVD
VVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxcbiIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGN1cmxbMV0gPT09ICItWFBPU1QiLCAiQ29tbWFuZCBzaG91bGQgYmUg
YSBQT1NUIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQuaW5jbHVkZXMoJ0NvbnRlbnQtVHlwZScpKSA9PT0g
Ii1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCciLCAi
Q29tbWFuZCBzaG91bGQgaGF2ZSBjb3JyZWN0IENvbnRlbnQtVHlwZS4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZCA9PT0g
Ii0tZGF0YSAkJ2xvcmVtPWlwc3VtJiRkb2xvcj1cXCdzaXRcXCcmYW1ldD17MS4uMjB9JyIpICE9
PSB1bmRlZmluZWQsICJDb21tYW5kIHNob3VsZCBjb250YWluIGNvcnJlY3QgZGF0YS4iKTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUE9TVFJlcXVl
c3RVUkxFbmNvZGVkRGF0YVVURjhHZW5lcmF0ZUNVUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IkdlbmVyYXRlIGNVUkwgY29tbWFuZCBmcm9tIGEgUE9TVCByZXF1ZXN0IHdpdGggVVJMIGVuY29k
ZWQgVVRGOCBkYXRhLiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZVBPU1RSZXF1ZXN0
V2l0aFVURjgoKSIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLnNpbmdsZUZpcmVF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJl
c291cmNlOworICAgICAgICAgICAgICAgIGxldCBjdXJsID0gcmVzb3VyY2UuZ2VuZXJhdGVDVVJM
Q29tbWFuZCgpLnNwbGl0KCIgXFxcbiIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGN1cmxbMF0ubWF0Y2goImh0dHBzPzovLy4qPy9yZXNvdXJjZXMvdXJsXFw/
dXRmOD0lRjAlOUYlOTElOEQiKSAhPT0gbnVsbCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJM
IHdpdGggVVRGOCBjaGFyYWN0ZXJzLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kID09PSAiLS1kYXRhICQnXFx1ZDgzY1xc
dWRmMjg9XFx1MjZjNFxcdWZlMGYnIikgIT09IHVuZGVmaW5lZCwgIkNvbW1hbmQgc2hvdWxkIGNv
bnRhaW4gY29ycmVjdCBVVEY4IGRhdGEuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIlBVVFJlcXVlc3RXaXRoSlNPTkdlbmVyYXRlQ1VSTCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21tYW5kIGZyb20gYSBQVVQgcmVx
dWVzdCB3aXRoIEpTT04gZGF0YS4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVQVVRS
ZXF1ZXN0V2l0aEpTT04oKSIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLnNpbmds
ZUZpcmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0Fk
ZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5k
YXRhLnJlc291cmNlOworICAgICAgICAgICAgICAgIGxldCBjdXJsID0gcmVzb3VyY2UuZ2VuZXJh
dGVDVVJMQ29tbWFuZCgpLnNwbGl0KCIgXFxcbiIpOworCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGN1cmxbMV0gPT09ICItWFBVVCIsICJDb21tYW5kIHNob3VsZCBi
ZSBhIFBVVCByZXF1ZXN0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdDb250ZW50LVR5cGUnKSkgPT09
ICItSCAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyIsICJDb21tYW5kIHNob3VsZCBo
YXZlIEpTT04gQ29udGVudC1UeXBlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kID09PSAiLS1kYXRhLWJpbmFyeSAne1wi
dXBkYXRlXCI6XCJub3dcIn0nIikgIT09IHVuZGVmaW5lZCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRh
aW4gY29ycmVjdCBKU09OIGRhdGEuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNl
c0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CisgICAgPHA+VGVzdHMgdGhhdCAiQ29weSBhcyBjVVJMIiByZXR1cm5zIHZhbGlkIFBP
U0lYIG91dHB1dC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283430</attachid>
            <date>2016-07-12 11:17:36 -0700</date>
            <delta_ts>2016-07-12 15:22:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159380-20160712111654.patch</filename>
            <type>text/plain</type>
            <size>17100</size>
            <attacher name="Johan K. Jensen">jj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
ODA3ZDM2NWVlMWY2YzBmYTQ3MTkwYjRkZjdiNzY0YzI2M2JjZGM0Li44OTNlNTVhZmM4MzM1NTI2
ZjMyM2MxZjY3ZDFkNGJlNzg3M2RmNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wNy0wNyAgSm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUjogQ29weSBhcyBjVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkzODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgSW5zcGlyZWQgYnkg
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL2I3YzExMTVk
YmFlNjUwMzBhZDk2ZTc3M2Q5YTI3MDQ2NWEwNWY1YzQvdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9kZXZ0b29scy9mcm9udF9lbmQvbmV0d29yay9OZXR3b3JrTG9nVmlldy5qcworCisgICAgICAg
IFRoaXMgIkNvcHkgYXMgY1VSTCIgZmVhdHVyZSBvbmx5IGFwcHJveGltYXRlcyB0aGUgb3JpZ2lu
YWwgcmVxdWVzdCBhcyBvbmx5IHNvbWUgcGFydHMgb2YKKyAgICAgICAgdGhhdCByZXF1ZXN0IGlz
IGtub3duIHRvIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5n
ZW5lcmF0ZUNVUkxDb21tYW5kLmVzY2FwZVN0cmluZ1Bvc2l4LmVzY2FwZUNoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdlbmVyYXRlQ1VSTENvbW1h
bmQuZXNjYXBlU3RyaW5nUG9zaXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5nZW5lcmF0ZUNVUkxDb21tYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMpOgorCiAyMDE2LTA3LTA2
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OOiBIaXR0aW5nIOKMmFQgaW4gV2ViIEluc3BlY3RvciBubyBsb25n
ZXIgb3BlbnMgaW4gbmV3IHRhYiBpbiBTYWZhcmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzCmluZGV4IDQ4MmI2YWMwZjIwYjlmYTFhNjgxOTE2OWE5NGI1MzcyZGVhNTE5NGQuLmFhYjQy
NmMwYzUxYjMyMDdhMjlkZmUyNWE5OWY3YWI3YWZkZjA5MmIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKZGVsdGEgNTAKemNtWD9pbnN2KD0pKHdlS2xZZDlAdXFRS3dHNlhVQk9iJjw/WEhSNChXPjg+
QXA0PjNTYUJfWSRUWFM7TV9UKHRXCkdZO0ZNM2ZlYGlwCgpkZWx0YSAxOAphY21kbVRoVnxUTyko
d2VLJkJ2cCpBQ0Y/cDxwdXkqeENuIyoKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggMDVmMWM4ZDBkNGRkYjZi
ZDdjMDhiM2I5YjdiODc4MjFlOWRiMDY2My4uNWVlODZlMGNlZDkxZTE2MzM2MzU5MjcyM2RmOThl
MThhNWFmY2ZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3OCw2ICs2NzksNDggQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleV0gPSB0aGlzLnVy
bC5oYXNoOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJj
ZUNvb2tpZUtleV0gPSB0aGlzLmlzTWFpblJlc291cmNlKCk7CiAgICAgfQorCisgICAgZ2VuZXJh
dGVDVVJMQ29tbWFuZCgpCisgICAgeworICAgICAgICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdQb3Np
eChzdHIpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVzY2FwZUNoYXJhY3Rlcih4KSB7CisgICAg
ICAgICAgICAgICAgbGV0IGNvZGUgPSB4LmNoYXJDb2RlQXQoMCk7CisgICAgICAgICAgICAgICAg
bGV0IGhleCA9IGNvZGUudG9TdHJpbmcoMTYpOworICAgICAgICAgICAgICAgIGlmIChjb2RlIDwg
MjU2KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlxceCIgKyBoZXgucGFkU3RhcnQoMiwg
IjAiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIlxcdSIgKyBoZXgucGFkU3RhcnQoNCwgIjAi
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKC9bXlx4MjAtXHg3RV18Jy8udGVz
dChzdHIpKSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIEFOU0ktQyBxdW90aW5nIHN5bnRheC4K
KyAgICAgICAgICAgICAgICByZXR1cm4gIiQnIiArIHN0ci5yZXBsYWNlKC9cXC9nLCAiXFxcXCIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAiXFwnIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cbi9nLCAiXFxuIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cci9nLCAiXFxyIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXlx4MjAtXHg3RV0v
ZywgZXNjYXBlQ2hhcmFjdGVyKSArICInIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgLy8gVXNlIHNpbmdsZSBxdW90ZSBzeW50YXguCisgICAgICAgICAgICAgICAgcmV0
dXJuIGAnJHtzdHJ9J2A7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQg
Y29tbWFuZCA9IFsiY3VybCAiICsgZXNjYXBlU3RyaW5nUG9zaXgodGhpcy51cmwpLnJlcGxhY2Uo
L1tbe31cXV0vZywgIlxcJCYiKV07CisgICAgICAgIGNvbW1hbmQucHVzaChgLVgke3RoaXMucmVx
dWVzdE1ldGhvZH1gKTsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5yZXF1ZXN0SGVh
ZGVycykKKyAgICAgICAgICAgIGNvbW1hbmQucHVzaCgiLUggIiArIGVzY2FwZVN0cmluZ1Bvc2l4
KGAke2tleX06ICR7dGhpcy5yZXF1ZXN0SGVhZGVyc1trZXldfWApKTsKKworICAgICAgICBpZiAo
dGhpcy5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlICYmIHRoaXMucmVxdWVzdE1ldGhvZCAhPT0gIkdF
VCIgJiYgdGhpcy5yZXF1ZXN0RGF0YSkgeworICAgICAgICAgICAgaWYgKHRoaXMucmVxdWVzdERh
dGFDb250ZW50VHlwZS5tYXRjaCgvXmFwcGxpY2F0aW9uXC94LXd3dy1mb3JtLXVybGVuY29kZWRc
cyooOy4qKT8kL2kpKQorICAgICAgICAgICAgICAgIGNvbW1hbmQucHVzaCgiLS1kYXRhICIgKyBl
c2NhcGVTdHJpbmdQb3NpeCh0aGlzLnJlcXVlc3REYXRhKSkKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBjb21tYW5kLnB1c2goIi0tZGF0YS1iaW5hcnkgIiArIGVzY2FwZVN0cmlu
Z1Bvc2l4KHRoaXMucmVxdWVzdERhdGEpKQorICAgICAgICB9CisKKyAgICAgICAgbGV0IGN1cmxD
b21tYW5kID0gY29tbWFuZC5qb2luKCIgXFxcbiIpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY29weVRleHQoY3VybENvbW1hbmQpOworICAgICAgICByZXR1cm4gY3VybENvbW1hbmQ7
CisgICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVJZGVudGlmaWVyID0gInJl
c291cmNlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpz
CmluZGV4IGZmZDEzMGRiYTMyNDExNmFjMzYwZGViMTZjMTJmNmNlMjY0YmE0ZDguLmQ0NTZkNzk1
ZDVkNGVlYzYxZjBjNGQ1OTI5ZGE5NDEwMjNiZmU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5v
ZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcwpAQCAtMTQ2LDYgKzE0NiwxMiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSA9IGNsYXNzIFJlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGUgZQogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lLCB0aGlzLnJlc291cmNlLnR5cGVd
OwogICAgIH0KIAorICAgIGFwcGVuZENvbnRleHRNZW51SXRlbXMoY29udGV4dE1lbnUpCisgICAg
eworICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UudXJsQ29tcG9uZW50cy5zY2hlbWUgIT09ICJk
YXRhIikKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb3B5IGFzIGNVUkwiKSwgKCkgPT4geyB0aGlzLl9yZXNvdXJjZS5nZW5lcmF0ZUNV
UkxDb21tYW5kKCk7IH0pOworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZmlsdGVy
YWJsZURhdGFGb3JDb2x1bW4oY29sdW1uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YThiMTFlZDliMTE1
Nzc5Y2VkZTk4YTMxNjlmMGY5NTkyOTk0MmRmLi4yM2E3YWM1NDZjMTI4MWJlN2U2MDczZDZlODhj
ZmM0YzFlOGYwZDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDctMDcgIEpvaGFuIEsu
IEplbnNlbiAgPGpvaGFuX2plbnNlbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogRVI6IENvcHkgYXMgY1VSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJv
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5LWFzLWN1cmwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2NvcHktYXMtY3VybC5odG1sOiBBZGRlZC4KKwogMjAxNi0wNy0wNyAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB0ZXN0IGZvciBtZWRp
YSBjb250cm9sIGRyb3BvZmYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvY29weS1hcy1jdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29weS1hcy1jdXJsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMDliZTYzNDhlMzM4OWU1ZjQzNWVjM2VjOTVkOWRhYjRlZTYzM2YzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb3B5
LWFzLWN1cmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1Rlc3RzIHRoYXQgIkNvcHkg
YXMgY1VSTCIgcmV0dXJucyB2YWxpZCBQT1NJWCBvdXRwdXQuCisKKworPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBHZW5lcmF0ZUNVUkxWYWxpZFBPU0lYT3V0cHV0CistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogU2ltcGxlVVJMR2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBjb250YWluIFVS
TC4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGJlIGEgR0VUIHJlcXVlc3QuCitQQVNTOiBDb21tYW5k
IHNob3VsZCBjb250YWluIFVzZXItQWdlbnQgaGVhZGVyLgorUEFTUzogQ29tbWFuZCBzaG91bGQg
bm90IGNvbnRhaW4gYSBjdXN0b20gaGVhZGVyLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU3Bl
Y2lhbFVSTEdlbmVyYXRlQ1VSTAorUEFTUzogQ29tbWFuZCBzaG91bGQgY29udGFpbiB2YWxpZCBQ
T1NJWCBlc2NhcGVkIFVSTC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNwZWNpYWxIZWFkZXJz
R2VuZXJhdGVDVVJMVmFsaWRQT1NJWE91dHB1dAorUEFTUzogQ29tbWFuZCBzaG91bGQgaGF2ZSBj
b3JyZWN0IGN1c3RvbSBoZWFkZXIgMS4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGhhdmUgY29ycmVj
dCBjdXN0b20gaGVhZGVyIDIuCitQQVNTOiBDb21tYW5kIHNob3VsZCBoYXZlIGNvcnJlY3QgY3Vz
dG9tIGhlYWRlciAzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVVJMV2l0aFVURjhHZW5lcmF0
ZUNVUkwKK1BBU1M6IENvbW1hbmQgc2hvdWxkIGNvbnRhaW4gVVJMIHdpdGggVVRGOCBjaGFyYWN0
ZXJzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogUE9TVFJlcXVlc3RVUkxFbmNvZGVkRGF0YUdl
bmVyYXRlQ1VSTAorUEFTUzogQ29tbWFuZCBzaG91bGQgYmUgYSBQT1NUIHJlcXVlc3QuCitQQVNT
OiBDb21tYW5kIHNob3VsZCBoYXZlIGNvcnJlY3QgQ29udGVudC1UeXBlLgorUEFTUzogQ29tbWFu
ZCBzaG91bGQgY29udGFpbiBjb3JyZWN0IGRhdGEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQ
T1NUUmVxdWVzdFVSTEVuY29kZWREYXRhVVRGOEdlbmVyYXRlQ1VSTAorUEFTUzogQ29tbWFuZCBz
aG91bGQgY29udGFpbiBVUkwgd2l0aCBVVEY4IGNoYXJhY3RlcnMuCitQQVNTOiBDb21tYW5kIHNo
b3VsZCBjb250YWluIGNvcnJlY3QgVVRGOCBkYXRhLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
UFVUUmVxdWVzdFdpdGhKU09OR2VuZXJhdGVDVVJMCitQQVNTOiBDb21tYW5kIHNob3VsZCBiZSBh
IFBVVCByZXF1ZXN0LgorUEFTUzogQ29tbWFuZCBzaG91bGQgaGF2ZSBKU09OIENvbnRlbnQtVHlw
ZS4KK1BBU1M6IENvbW1hbmQgc2hvdWxkIGNvbnRhaW4gY29ycmVjdCBKU09OIGRhdGEuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29weS1h
cy1jdXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Nv
cHktYXMtY3VybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YjNhMGYwOTYxYWNjM2Y1YzAwYTU5ZGJkNGI3
YjRkOWMwZTI2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2NvcHktYXMtY3VybC5odG1sCkBAIC0wLDAgKzEsMTg4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBjcmVhdGVTaW1wbGVHRVRSZXF1ZXN0KCkKK3sKKyAgICB2YXIgcmVxdWVz
dCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgInJlc291
cmNlcy91cmw/cXVlcnk9dHJ1ZSIsIHRydWUpOworICAgIHJlcXVlc3Quc2VuZCgpOworfQorCitm
dW5jdGlvbiBjcmVhdGVHRVRSZXF1ZXN0V2l0aFNwZWNpYWxVUkwoKQoreworICAgIHZhciByZXF1
ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC5vcGVuKCJHRVQiLCAicmVz
b3VyY2VzL3VybCd3aXRoJHNwZWNpYWx7MS4uMjB9Y2hhcnNbXSAuaHRtbCIsIHRydWUpOworICAg
IHJlcXVlc3Quc2VuZCgpOworfQorCitmdW5jdGlvbiBjcmVhdGVHRVRSZXF1ZXN0V2l0aFNwZWNp
YWxDaGFyc0luSGVhZGVycygpCit7CisgICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKKyAgICByZXF1ZXN0Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvdXJsIiwgdHJ1ZSk7Cisg
ICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJYLUN1c3RvbTEiLCAidGVzdDEiKTsKKyAgICBy
ZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoIlgtQ3VzdG9tMiclIiwgIlwnVGVzdCdcJzFcXCcyIik7
CisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJYLUN1c3RvbTMiLCAiXCcke1BXRH0iKTsK
KyAgICByZXF1ZXN0LnNlbmQoKTsKK30KKworZnVuY3Rpb24gY3JlYXRlR0VUUmVxdWVzdFdpdGhV
VEY4KCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJl
cXVlc3Qub3BlbigiR0VUIiwgInJlc291cmNlcy91cmw/dXRmOD3wn5GNIiwgdHJ1ZSk7CisgICAg
cmVxdWVzdC5zZW5kKCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVBPU1RSZXF1ZXN0V2l0aFVSTEVu
Y29kZWREYXRhKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgIHJlcXVlc3Qub3BlbigiUE9TVCIsICJyZXNvdXJjZXMvdXJsIiwgdHJ1ZSk7CisgICAgcmVx
dWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIik7CisgICAgcmVxdWVzdC5zZW5kKCJsb3JlbT1pcHN1bSYkZG9sb3I9
J3NpdCcmYW1ldD17MS4uMjB9Iik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVBPU1RSZXF1ZXN0V2l0
aFVURjgoKQoreworICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
cmVxdWVzdC5vcGVuKCJQT1NUIiwgInJlc291cmNlcy91cmw/dXRmOD3wn5GNIiwgdHJ1ZSk7Cisg
ICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkIik7CisgICAgcmVxdWVzdC5zZW5kKCLwn4yoPeKbhO+4jyIp
OworfQorCitmdW5jdGlvbiBjcmVhdGVQVVRSZXF1ZXN0V2l0aEpTT04oKQoreworICAgIHZhciBy
ZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC5vcGVuKCJQVVQiLCAi
cmVzb3VyY2VzL3VybCIsIHRydWUpOworICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcigiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKTsKKyAgICByZXF1ZXN0LnNlbmQoIntcInVw
ZGF0ZVwiOlwibm93XCJ9Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0
ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiR2VuZXJhdGVDVVJMVmFsaWRQT1NJ
WE91dHB1dCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiU2lt
cGxlVVJMR2VuZXJhdGVDVVJMIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZW5lcmF0ZSBjVVJM
IGNvbW1hbmQgZnJvbSBhIHNpbXBsZSBVUkwuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3Jl
YXRlU2ltcGxlR0VUUmVxdWVzdCgpIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNl
V2FzQWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2
ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAgICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5n
ZW5lcmF0ZUNVUkxDb21tYW5kKCkuc3BsaXQoIiBcXFxuIik7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFswXS5tYXRjaCgiaHR0cHM/Oi8vLio/L3Jlc291
cmNlcy91cmxcXD9xdWVyeT10cnVlIikgIT09IG51bGwsICJDb21tYW5kIHNob3VsZCBjb250YWlu
IFVSTC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY3VybFsx
XSA9PT0gIi1YR0VUIiwgIkNvbW1hbmQgc2hvdWxkIGJlIGEgR0VUIHJlcXVlc3QuIik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBj
bWQuaW5jbHVkZXMoJ1VzZXItQWdlbnQnKSkgIT09IHVuZGVmaW5lZCwgIkNvbW1hbmQgc2hvdWxk
IGNvbnRhaW4gVXNlci1BZ2VudCBoZWFkZXIuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQuaW5jbHVkZXMoJ1gtQ3VzdG9t
JykpID09PSB1bmRlZmluZWQsICJDb21tYW5kIHNob3VsZCBub3QgY29udGFpbiBhIGN1c3RvbSBo
ZWFkZXIuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIlNwZWNpYWxVUkxHZW5lcmF0ZUNVUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdlbmVy
YXRlIGNVUkwgY29tbWFuZCBmcm9tIGEgVVJMIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJz
LiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUdFVFJlcXVlc3RXaXRoU3BlY2lhbFVS
TCgpIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIChldmVudCkg
PT4geworICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7
CisgICAgICAgICAgICAgICAgbGV0IGN1cmwgPSByZXNvdXJjZS5nZW5lcmF0ZUNVUkxDb21tYW5k
KCkuc3BsaXQoIiBcXFxuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoY3VybFswXS5tYXRjaCgiaHR0cHM/Oi8vLio/L3Jlc291cmNlcy91cmxcXFxcJ3dpdGhc
XCRzcGVjaWFsXFxcXHsxXC5cLjIwXFxcXH1jaGFyc1xcXFxcXFtcXFxcXFxdJTIwLmh0bWwiKSAh
PT0gbnVsbCwgIkNvbW1hbmQgc2hvdWxkIGNvbnRhaW4gdmFsaWQgUE9TSVggZXNjYXBlZCBVUkwu
Iik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlNw
ZWNpYWxIZWFkZXJzR2VuZXJhdGVDVVJMVmFsaWRQT1NJWE91dHB1dCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21tYW5kIGZyb20gYSByZXF1ZXN0IGNvbnRhaW5pbmcg
c3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBoZWFkZXJzIGFuZCB2ZXJpZnkgdmFsaWQgUE9TSVgg
b3V0cHV0LiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUdFVFJlcXVlc3RXaXRoU3Bl
Y2lhbENoYXJzSW5IZWFkZXJzKCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VX
YXNBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZl
bnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdl
bmVyYXRlQ1VSTENvbW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdY
LUN1c3RvbTEnKSkgPT09ICItSCAnWC1DdXN0b20xOiB0ZXN0MSciLCAiQ29tbWFuZCBzaG91bGQg
aGF2ZSBjb3JyZWN0IGN1c3RvbSBoZWFkZXIgMS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnWC1DdXN0
b20yJykpID09PSAiLUggJCdYLUN1c3RvbTJcXCclOiBcXCdUZXN0XFwnXFwnMVxcXFxcXCcyJyIs
ICJDb21tYW5kIHNob3VsZCBoYXZlIGNvcnJlY3QgY3VzdG9tIGhlYWRlciAyLiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsLmZpbmQoKGNtZCkgPT4gY21k
LmluY2x1ZGVzKCdYLUN1c3RvbTMnKSkgPT09ICItSCAkJ1gtQ3VzdG9tMzogXFwnJHtQV0R9JyIs
ICJDb21tYW5kIHNob3VsZCBoYXZlIGNvcnJlY3QgY3VzdG9tIGhlYWRlciAzLiIpOworICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJVUkxXaXRoVVRGOEdl
bmVyYXRlQ1VSTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJhdGUgY1VSTCBjb21tYW5k
IGZyb20gYSBVUkwgY29udGFpbmluZyBVVEY4IGNoYXJhY3RlcnMuIiwKKyAgICAgICAgdGVzdDog
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiY3JlYXRlR0VUUmVxdWVzdFdpdGhVVEY4KCkiKTsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUu
RXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0
IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3Vy
bCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENvbW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjdXJsWzBdLm1hdGNoKCJodHRw
cz86Ly8uKj8vcmVzb3VyY2VzL3VybFxcP3V0Zjg9JUYwJTlGJTkxJThEIikgIT09IG51bGwsICJD
b21tYW5kIHNob3VsZCBjb250YWluIFVSTCB3aXRoIFVURjggY2hhcmFjdGVycy4iKTsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUE9TVFJlcXVlc3RV
UkxFbmNvZGVkRGF0YUdlbmVyYXRlQ1VSTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2VuZXJh
dGUgY1VSTCBjb21tYW5kIGZyb20gYSBQT1NUIHJlcXVlc3Qgd2l0aCBVUkwgZW5jb2RlZCBkYXRh
LiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZVBPU1RSZXF1ZXN0V2l0aFVSTEVuY29k
ZWREYXRhKCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNv
dXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENv
bW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChjdXJsWzFdID09PSAiLVhQT1NUIiwgIkNvbW1hbmQgc2hvdWxkIGJlIGEgUE9T
VCByZXF1ZXN0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChj
dXJsLmZpbmQoKGNtZCkgPT4gY21kLmluY2x1ZGVzKCdDb250ZW50LVR5cGUnKSkgPT09ICItSCAn
Q29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIiwgIkNvbW1h
bmQgc2hvdWxkIGhhdmUgY29ycmVjdCBDb250ZW50LVR5cGUuIik7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGN1cmwuZmluZCgoY21kKSA9PiBjbWQgPT09ICItLWRh
dGEgJCdsb3JlbT1pcHN1bSYkZG9sb3I9XFwnc2l0XFwnJmFtZXQ9ezEuLjIwfSciKSAhPT0gdW5k
ZWZpbmVkLCAiQ29tbWFuZCBzaG91bGQgY29udGFpbiBjb3JyZWN0IGRhdGEuIik7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlBPU1RSZXF1ZXN0VVJM
RW5jb2RlZERhdGFVVEY4R2VuZXJhdGVDVVJMIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZW5l
cmF0ZSBjVVJMIGNvbW1hbmQgZnJvbSBhIFBPU1QgcmVxdWVzdCB3aXRoIFVSTCBlbmNvZGVkIFVU
RjggZGF0YS4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVQT1NUUmVxdWVzdFdpdGhV
VEY4KCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJlRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJj
ZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VSTENvbW1h
bmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChjdXJsWzBdLm1hdGNoKCJodHRwcz86Ly8uKj8vcmVzb3VyY2VzL3VybFxcP3V0Zjg9
JUYwJTlGJTkxJThEIikgIT09IG51bGwsICJDb21tYW5kIHNob3VsZCBjb250YWluIFVSTCB3aXRo
IFVURjggY2hhcmFjdGVycy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZCA9PT0gIi0tZGF0YSAkJ1xcdWQ4M2NcXHVkZjI4
PVxcdTI2YzRcXHVmZTBmJyIpICE9PSB1bmRlZmluZWQsICJDb21tYW5kIHNob3VsZCBjb250YWlu
IGNvcnJlY3QgVVRGOCBkYXRhLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJQVVRSZXF1ZXN0V2l0aEpTT05HZW5lcmF0ZUNVUkwiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIkdlbmVyYXRlIGNVUkwgY29tbWFuZCBmcm9tIGEgUFVUIHJlcXVlc3Qg
d2l0aCBKU09OIGRhdGEuIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlUFVUUmVxdWVz
dFdpdGhKU09OKCkiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5zaW5nbGVGaXJl
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5y
ZXNvdXJjZTsKKyAgICAgICAgICAgICAgICBsZXQgY3VybCA9IHJlc291cmNlLmdlbmVyYXRlQ1VS
TENvbW1hbmQoKS5zcGxpdCgiIFxcXG4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChjdXJsWzFdID09PSAiLVhQVVQiLCAiQ29tbWFuZCBzaG91bGQgYmUgYSBQ
VVQgcmVxdWVzdC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
Y3VybC5maW5kKChjbWQpID0+IGNtZC5pbmNsdWRlcygnQ29udGVudC1UeXBlJykpID09PSAiLUgg
J0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiciLCAiQ29tbWFuZCBzaG91bGQgaGF2ZSBK
U09OIENvbnRlbnQtVHlwZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoY3VybC5maW5kKChjbWQpID0+IGNtZCA9PT0gIi0tZGF0YS1iaW5hcnkgJ3tcInVwZGF0
ZVwiOlwibm93XCJ9JyIpICE9PSB1bmRlZmluZWQsICJDb21tYW5kIHNob3VsZCBjb250YWluIGNv
cnJlY3QgSlNPTiBkYXRhLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorICAgIDxwPlRlc3RzIHRoYXQgIkNvcHkgYXMgY1VSTCIgcmV0dXJucyB2YWxpZCBQT1NJWCBv
dXRwdXQuPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>